Projet

Général

Profil

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

Benjamin Dauvergne, 10 octobre 2020 12:10

Télécharger (2,32 ko)

Voir les différences:

Subject: [PATCH 2/4] 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
417 417

  
418 418
            item = (items or remote_items)[0]
419 419
            kwargs['subject'] = item.subject
420
            # allow easy testing/use of backend specific keyword arguments
421
            EOPAYMENT_REQUEST_KWARGS_PREFIX = 'eopayment_request_kwargs_'
422
            if hasattr(item, 'request_data'):
423
                for key in item.request_data:
424
                    if key.startswith(EOPAYMENT_REQUEST_KWARGS_PREFIX):
425
                        arg_name = key[len(EOPAYMENT_REQUEST_KWARGS_PREFIX):]
426
                        kwargs[arg_name] = item.request_data[key]
420 427
        if regie.transaction_options:
421 428
            kwargs.update(regie.transaction_options)
422 429
        try:
tests/test_lingo_payment.py
1577 1577
    assert 'bar item' in resp.text
1578 1578

  
1579 1579

  
1580
def test_extra_kwargs_can_pay_only_one_basket_item(app, basket_page, mono_regie, user):
1581
    item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item',
1582
                                     request_data={'eopayment_request_kwargs_info3': 'très fragile'})
1583

  
1584
    resp = login(app).get(item.payment_url)
1585
    qs = urlparse.parse_qs(urlparse.urlparse(resp.location).query)
1586
    assert qs['subject'][0] == 'foo item', 'item.subject was not provided to eopayment'
1587
    assert qs['info3'][0] == 'très fragile'
1588

  
1589

  
1580 1590
@mock.patch('combo.apps.lingo.models.BasketItem.get_items_to_be_paid')
1581 1591
def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, mono_regie, user, user_name_id, caplog):
1582 1592
    item = mock.Mock(spec=['capture_date'], capture_date=None)
1583
-