Projet

Général

Profil

0001-lingo-refactor-unique-item-payment-request-47506.patch

Benjamin Dauvergne, 10 octobre 2020 12:10

Télécharger (4,13 ko)

Voir les différences:

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(-)
combo/apps/lingo/views.py
411 411
            capture_date = items[0].capture_date
412 412
            if capture_date:
413 413
                kwargs['capture_date'] = capture_date
414
        if regie.can_pay_only_one_basket_item:
415
            if items and len(items) == 1:
416
                kwargs['subject'] = items[0].subject
417
            if remote_items and len(remote_items) == 1:
418
                kwargs['subject'] = remote_items[0].subject
414
        if regie.can_pay_only_one_basket_item and (remote_items or items):
415
            assert (len(items) == 1) != (len(remote_items) == 1)
416
            assert not remote_items, 'remote items are not supported on can_pay_only_one_basket_item regies'
417

  
418
            item = (items or remote_items)[0]
419
            kwargs['subject'] = item.subject
419 420
        if regie.transaction_options:
420 421
            kwargs.update(regie.transaction_options)
421 422
        try:
tests/test_lingo_payment.py
1548 1548
        assert 'new transaction_date for transaction' in caplog.text
1549 1549

  
1550 1550

  
1551
def test_successfull_items_can_pay_only_one_basket_item(app, basket_page, regie, user):
1551
@pytest.fixture
1552
def mono_regie(regie):
1552 1553
    regie.can_pay_only_one_basket_item = True
1553 1554
    regie.save()
1554
    item = BasketItem.objects.create(user=user, regie=regie, amount=42, subject='foo item')
1555
    BasketItem.objects.create(user=user, regie=regie, amount=84, subject='bar item')
1555
    return regie
1556

  
1557

  
1558
def test_successfull_items_can_pay_only_one_basket_item(app, basket_page, mono_regie, user):
1559
    item = BasketItem.objects.create(user=user, regie=mono_regie, amount=42, subject='foo item')
1560
    BasketItem.objects.create(user=user, regie=mono_regie, amount=84, subject='bar item')
1556 1561

  
1557 1562
    resp = login(app).get('/test_basket_cell/')
1558 1563
    assert 'foo item' in resp.text
......
1565 1570
    assert qs['subject'][0] == 'foo item', 'item.subject was not provided to eopayment'
1566 1571
    args = {'transaction_id': qs['transaction_id'][0], 'signed': True, 'ok': True, 'reason': 'Paid'}
1567 1572
    with mock.patch('combo.utils.requests_wrapper.RequestsSession.request'):
1568
        resp = app.get(get_url(True, 'lingo-callback', regie), params=args)
1573
        resp = app.get(get_url(True, 'lingo-callback', mono_regie), params=args)
1569 1574

  
1570 1575
    resp = app.get('/test_basket_cell/')
1571 1576
    assert 'foo item' not in resp.text
......
1573 1578

  
1574 1579

  
1575 1580
@mock.patch('combo.apps.lingo.models.BasketItem.get_items_to_be_paid')
1576
def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, regie, user, user_name_id, caplog):
1577
    regie.can_pay_only_one_basket_item = True
1578
    regie.save()
1579

  
1581
def test_failure_can_only_pay_one_basket_item(get_items_to_be_paid, app, mono_regie, user, user_name_id, caplog):
1580 1582
    item = mock.Mock(spec=['capture_date'], capture_date=None)
1581 1583
    get_items_to_be_paid.return_value.filter.return_value = [item, item]
1582 1584

  
......
1586 1588
    assert '_messages' not in app.session
1587 1589
    assert len(caplog.records) == 0
1588 1590
    response = app.post('/lingo/pay', params={
1589
        'regie': regie.id,
1591
        'regie': mono_regie.id,
1590 1592
        'csrfmiddlewaretoken': token,
1591 1593
    })
1592 1594
    assert 'Grouping basket items is not allowed.' in app.session['_messages']
1593
-