From 04330f4794116c22c5345c38606790da2a9e978c Mon Sep 17 00:00:00 2001 From: Benjamin Dauvergne Date: Sat, 10 Oct 2020 08:26:00 +0200 Subject: [PATCH 1/4] lingo: refactor unique item payment request (#47506) --- combo/apps/lingo/views.py | 11 ++++++----- tests/test_lingo_payment.py | 20 +++++++++++--------- 2 files changed, 17 insertions(+), 14 deletions(-) diff --git a/combo/apps/lingo/views.py b/combo/apps/lingo/views.py index 9a1b191c..15bb83fd 100644 --- a/combo/apps/lingo/views.py +++ b/combo/apps/lingo/views.py @@ -411,11 +411,12 @@ class PayMixin(object): capture_date = items[0].capture_date if capture_date: kwargs['capture_date'] = capture_date - if regie.can_pay_only_one_basket_item: - if items and len(items) == 1: - kwargs['subject'] = items[0].subject - if remote_items and len(remote_items) == 1: - kwargs['subject'] = remote_items[0].subject + if regie.can_pay_only_one_basket_item and (remote_items or items): + assert (len(items) == 1) != (len(remote_items) == 1) + assert not remote_items, 'remote items are not supported on can_pay_only_one_basket_item regies' + + item = (items or remote_items)[0] + kwargs['subject'] = item.subject if regie.transaction_options: kwargs.update(regie.transaction_options) try: diff --git a/tests/test_lingo_payment.py b/tests/test_lingo_payment.py index 48c2645a..f1d6ff90 100644 --- a/tests/test_lingo_payment.py +++ b/tests/test_lingo_payment.py @@ -1548,11 +1548,16 @@ def test_bank_transaction_date(app, key, regie, user, john_doe, caplog, transact assert 'new transaction_date for transaction' in caplog.text -def test_successfull_items_can_pay_only_one_basket_item(app, basket_page, regie, user): +@pytest.fixture +def mono_regie(regie): regie.can_pay_only_one_basket_item = True regie.save() - item = BasketItem.objects.create(user=user, regie=regie, amount=42, subject='foo item') - BasketItem.objects.create(user=user, regie=regie, amount=84, subject='bar item') + return regie + + +def test_successfull_items_can_pay_only_one_basket_item(app, basket_page, mono_regie, user): + item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item') + BasketItem.objects.create(user=user, regie=mono_regie, amount=84, subject='bar item') resp = login(app).get('/test_basket_cell/') assert 'foo item' in resp.text @@ -1565,7 +1570,7 @@ def test_successfull_items_can_pay_only_one_basket_item(app, basket_page, regie, assert qs['subject'][0] == 'foo item', 'item.subject was not provided to eopayment' args = {'transaction_id': qs['transaction_id'][0], 'signed': True, 'ok': True, 'reason': 'Paid'} with mock.patch('combo.utils.requests_wrapper.RequestsSession.request'): - resp = app.get(get_url(True, 'lingo-callback', regie), params=args) + resp = app.get(get_url(True, 'lingo-callback', mono_regie), params=args) resp = app.get('/test_basket_cell/') assert 'foo item' not in resp.text @@ -1573,10 +1578,7 @@ def test_successfull_items_can_pay_only_one_basket_item(app, basket_page, regie, @mock.patch('combo.apps.lingo.models.BasketItem.get_items_to_be_paid') -def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, regie, user, user_name_id, caplog): - regie.can_pay_only_one_basket_item = True - regie.save() - +def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, mono_regie, user, user_name_id, caplog): item = mock.Mock(spec=['capture_date'], capture_date=None) get_items_to_be_paid.return_value.filter.return_value = [item, item] @@ -1586,7 +1588,7 @@ def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, regie, assert '_messages' not in app.session assert len(caplog.records) == 0 response = app.post('/lingo/pay', params={ - 'regie': regie.id, + 'regie': mono_regie.id, 'csrfmiddlewaretoken': token, }) assert 'Grouping basket items is not allowed.' in app.session['_messages'] -- 2.28.0