mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-03 12:21:52 +02:00
no ordereditems created when quantity is 0
This commit is contained in:
parent
04d3ab69a2
commit
7db5eb17f8
2 changed files with 73 additions and 1 deletions
|
@ -542,6 +542,77 @@ class TestGroupedOrderDetailView:
|
||||||
== "Trop de test item 1 commandés pour la quantité disponible"
|
== "Trop de test item 1 commandés pour la quantité disponible"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
def test_order_item_no_ordered_item_created_for_empty_order(
|
||||||
|
self, client, other_user
|
||||||
|
):
|
||||||
|
"""
|
||||||
|
when a user does not order all items, those that are not ordered don't have a related OrderedItem
|
||||||
|
"""
|
||||||
|
grouped_order = create_grouped_order(
|
||||||
|
days_before_delivery_date=5,
|
||||||
|
days_before_deadline=2,
|
||||||
|
name="gr order test",
|
||||||
|
orga_user=other_user,
|
||||||
|
)
|
||||||
|
item = models.Item.objects.create(
|
||||||
|
name="test item 1", grouped_order=grouped_order, price=1, max_limit=20
|
||||||
|
)
|
||||||
|
item2 = models.Item.objects.create(
|
||||||
|
name="test item 2", grouped_order=grouped_order, price=5
|
||||||
|
)
|
||||||
|
detail_url = reverse(
|
||||||
|
"order:grouped_order_detail",
|
||||||
|
kwargs={
|
||||||
|
"pk": grouped_order.pk,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
response = client.get(detail_url)
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert "test item" in response.content.decode()
|
||||||
|
assert "gr order test" in response.content.decode()
|
||||||
|
assert "20 disponibles" in response.content.decode()
|
||||||
|
assert item.ordered_nb == 0
|
||||||
|
assert item2.ordered_nb == 0
|
||||||
|
order_url = reverse(
|
||||||
|
"order:order",
|
||||||
|
kwargs={
|
||||||
|
"grouped_order_id": grouped_order.pk,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
response = client.post(
|
||||||
|
order_url,
|
||||||
|
{
|
||||||
|
f"quantity_{item.pk}": 4,
|
||||||
|
f"quantity_{item2.pk}": 0,
|
||||||
|
"first_name": "Prénom",
|
||||||
|
"last_name": "Nom",
|
||||||
|
"phone": "0645632569",
|
||||||
|
"email": "test@mail.fr",
|
||||||
|
},
|
||||||
|
)
|
||||||
|
assert response.status_code == 302
|
||||||
|
order = models.Order.objects.get(grouped_order=grouped_order.pk)
|
||||||
|
assert response.url == reverse(
|
||||||
|
"order:order_confirm",
|
||||||
|
kwargs={
|
||||||
|
"grouped_order_id": grouped_order.pk,
|
||||||
|
"pk": order.pk,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
item.refresh_from_db()
|
||||||
|
item2.refresh_from_db()
|
||||||
|
assert models.OrderAuthor.objects.first().first_name == "Prénom"
|
||||||
|
assert models.OrderAuthor.objects.first().email == "test@mail.fr"
|
||||||
|
assert models.OrderAuthor.objects.first().phone == "0645632569"
|
||||||
|
assert item.ordered_nb == 4
|
||||||
|
assert item2.ordered_nb == 0
|
||||||
|
order = models.Order.objects.first()
|
||||||
|
assert order.ordered_items.count() == 1
|
||||||
|
assert models.OrderedItem.objects.filter(item=item2.pk).count() == 0
|
||||||
|
assert order.articles_nb == 4
|
||||||
|
assert order.price == 4
|
||||||
|
assert item.get_remaining_nb() == 16
|
||||||
|
|
||||||
|
|
||||||
class TestGroupedOrderOverview:
|
class TestGroupedOrderOverview:
|
||||||
def test_get_overview(self, client_log):
|
def test_get_overview(self, client_log):
|
||||||
|
|
|
@ -197,7 +197,8 @@ def order(request, grouped_order_id):
|
||||||
error_message = validate_item_ordered_nb(item, quantity)
|
error_message = validate_item_ordered_nb(item, quantity)
|
||||||
if error_message:
|
if error_message:
|
||||||
break # stop creating items if there is an error
|
break # stop creating items if there is an error
|
||||||
OrderedItem.objects.create(nb=quantity, order=order, item=item)
|
if quantity > 0:
|
||||||
|
OrderedItem.objects.create(nb=quantity, order=order, item=item)
|
||||||
|
|
||||||
# Redisplay the form with error messages if there is an error
|
# Redisplay the form with error messages if there is an error
|
||||||
if error_message:
|
if error_message:
|
||||||
|
|
Loading…
Reference in a new issue