Order creation API: Do not consume expired carts

This commit is contained in:
Raphael Michel
2019-08-12 15:57:40 +02:00
parent 9d6ff20191
commit bc9d8f5bd8
2 changed files with 32 additions and 1 deletions

View File

@@ -2441,6 +2441,35 @@ def test_order_create_quota_consume_cart(token_client, organizer, event, item, q
assert not CartPosition.objects.filter(pk=cr.pk).exists()
@pytest.mark.django_db
def test_order_create_quota_consume_cart_expired(token_client, organizer, event, item, quota, question):
res = copy.deepcopy(ORDER_CREATE_PAYLOAD)
res['positions'][0]['item'] = item.pk
res['positions'][0]['answers'][0]['question'] = question.pk
with scopes_disabled():
cr = CartPosition.objects.create(
event=event, cart_id="uxLJBUMEcnxOLI2EuxLYN1hWJq9GKu4yWL9FEgs2m7M0vdFi@api", item=item,
price=23,
expires=now() - datetime.timedelta(hours=3)
)
quota.size = 0
quota.save()
res['consume_carts'] = [cr.cart_id]
resp = token_client.post(
'/api/v1/organizers/{}/events/{}/orders/'.format(
organizer.slug, event.slug
), format='json', data=res
)
assert resp.status_code == 400
assert resp.data == {
'positions': [
{'item': ['There is not enough quota available on quota "Budget Quota" to perform the operation.']},
]
}
@pytest.mark.django_db
def test_order_create_free(token_client, organizer, event, item, quota, question):
res = copy.deepcopy(ORDER_CREATE_PAYLOAD)