Projet

Général

Profil

0005-lingo-allow-passing-custom-kwargs-to-eopayment.reque.patch

Benjamin Dauvergne, 26 octobre 2020 20:37

Télécharger (2,36 ko)

Voir les différences:

Subject: [PATCH 5/7] lingo: allow passing custom kwargs to eopayment.request
 (#47506)

 combo/apps/lingo/views.py   |  7 +++++++
 tests/test_lingo_payment.py | 10 ++++++++++
 2 files changed, 17 insertions(+)
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
-