0005-lingo-allow-passing-custom-kwargs-to-eopayment.reque.patch
combo/apps/lingo/views.py | ||
---|---|---|
416 | 416 |
if regie.can_pay_only_one_basket_item: |
417 | 417 |
item = (items or remote_items)[0] |
418 | 418 |
kwargs['subject'] = item.subject |
419 |
# allow easy testing/use of backend specific keyword arguments |
|
420 |
EOPAYMENT_REQUEST_KWARGS_PREFIX = 'eopayment_request_kwargs_' |
|
421 |
if hasattr(item, 'request_data'): |
|
422 |
for key in item.request_data: |
|
423 |
if key.startswith(EOPAYMENT_REQUEST_KWARGS_PREFIX): |
|
424 |
arg_name = key[len(EOPAYMENT_REQUEST_KWARGS_PREFIX):] |
|
425 |
kwargs[arg_name] = item.request_data[key] |
|
419 | 426 |
if regie.transaction_options: |
420 | 427 |
kwargs.update(regie.transaction_options) |
421 | 428 |
try: |
tests/test_lingo_payment.py | ||
---|---|---|
1590 | 1590 |
assert 'bar item' in resp.text |
1591 | 1591 | |
1592 | 1592 | |
1593 |
def test_extra_kwargs_can_pay_only_one_basket_item(app, basket_page, mono_regie, user): |
|
1594 |
item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item', |
|
1595 |
request_data={'eopayment_request_kwargs_info3': 'très fragile'}) |
|
1596 | ||
1597 |
resp = login(app).get(item.payment_url) |
|
1598 |
qs = urlparse.parse_qs(urlparse.urlparse(resp.location).query) |
|
1599 |
assert qs['subject'][0] == 'foo item', 'item.subject was not provided to eopayment' |
|
1600 |
assert qs['info3'][0] == 'très fragile' |
|
1601 | ||
1602 | ||
1593 | 1603 |
@mock.patch('combo.apps.lingo.models.BasketItem.get_items_to_be_paid') |
1594 | 1604 |
def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, mono_regie, user, user_name_id, caplog): |
1595 | 1605 |
item = mock.Mock(spec=['capture_date'], capture_date=None) |
1596 |
- |