tests on GroupedOrderDetailView

This commit is contained in:
Laetitia Getti 2023-04-07 15:54:07 +02:00
parent 1b10530c5c
commit 8648fee786
5 changed files with 55 additions and 9 deletions

View file

@ -12,7 +12,7 @@ class Grouped_order(models.Model):
"""Returns True if the grouped order is open for new Orders - False if it's too late"""
return self.deadline >= timezone.now()
def __str__(self):
def __str__(self): # pragma: no cover
return (
self.name
if self.name
@ -28,7 +28,7 @@ class Order(models.Model):
max_length=100, verbose_name="Personne qui passe la commande"
) # a changer, utiliser ForeignKey de user
def __str__(self):
def __str__(self): # pragma: no cover
return f"Commande de {self.author} pour la commande groupée {self.grouped_order.pk}"
@ -39,7 +39,7 @@ class Item(models.Model):
) # à transformer en manytomany quand il y aura un catalogue
ordered_nb = models.IntegerField(default=0)
def __str__(self):
def __str__(self): # pragma: no cover
return f"{self.name} dans la commande groupée {self.grouped_order.pk}"
@ -52,5 +52,5 @@ class OrderedItem(models.Model):
)
item = models.ForeignKey(Item, on_delete=models.CASCADE, related_name="orders")
def __str__(self):
def __str__(self): # pragma: no cover
return f"{self.nb} {self.item}, dans la commande {self.order.pk}"

View file

@ -9,7 +9,7 @@
<br>
<p>{{ grouped_order }}
<p>Organisateur·ice : {{ grouped_order.orga }}</p>
<p>Date de livraison : {{ grouped_order.date }}</p>
<p>Date de livraison : {{ grouped_order.delivery_date }}</p>
les produits disponibles pour cette commande groupée :
@ -30,7 +30,7 @@
<label for="item{{ forloop.counter }}">{{ item.name }}</label><br>
{% endfor %}
</fieldset>
<input type="submit" value="Vote">
<input type="submit" value="Order">
</form>
</body>
</html>

View file

@ -9,7 +9,7 @@
<br>
<p>{{ grouped_order }}
<p>Organisateur·ice : {{ grouped_order.orga }}</p>
<p>Date de livraison : {{ grouped_order.date }}</p>
<p>Date de livraison : {{ grouped_order.delivery_date }}</p>
les produits commandés pour cette commande groupée :
<ul>

View file

@ -4,7 +4,7 @@ import pytest
from django.urls import reverse
from django.utils import timezone
from la_chariotte.order.models import Grouped_order
from la_chariotte.order.models import Grouped_order, Item, Order
pytestmark = pytest.mark.django_db
@ -130,3 +130,48 @@ class TestGroupedOrderIndexView:
response.context["grouped_order_list"]["incoming_grouped_orders"][0]
== future_grouped_order
)
class TestGroupedOrderDetailView:
def test_order_item(self, client):
"""
From the OrderDetailView, we order an item using the order form, and it creates an Order woth and Ordered_item inside
"""
grouped_order = create_grouped_order(
days_before_delivery_date=5, days_before_deadline=2, name="gr order test"
)
item = Item.objects.create(name="test item", grouped_order=grouped_order)
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 item.ordered_nb == 0
order_url = reverse(
"order:order",
kwargs={
"grouped_order_id": grouped_order.pk,
},
)
response = client.post(
order_url,
{
"item": item.pk,
},
)
assert response.status_code == 302
assert response.url == reverse(
"order:grouped_order_orga",
kwargs={
"pk": grouped_order.pk,
},
)
item.refresh_from_db()
assert item.ordered_nb == 1
order = Order.objects.first()
assert order.ordered_items.count() == 1

View file

@ -73,6 +73,7 @@ def order(
order = Order.objects.create(author="Auteur teur", grouped_order=grouped_order)
OrderedItem.objects.create(nb=1, order=order, item=selected_item)
compute_ordered_nb(selected_item)
selected_item.save()
# Always return an HttpResponseRedirect after successfully dealing
# with POST data. This prevents data from being posted twice if a
# user hits the Back button.
@ -82,7 +83,7 @@ def order(
def compute_ordered_nb(item):
"""Calcule le nombre de produits de ce produit commandés (pour cette commande groupée)"""
"""Calcule le nombre de produits de ce type commandés (pour cette commande groupée)"""
ordered_nb = 0
for order in item.orders.all():
ordered_nb += order.nb