mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-02 03:42:26 +02:00
tests on GroupedOrderDetailView
This commit is contained in:
parent
1b10530c5c
commit
8648fee786
5 changed files with 55 additions and 9 deletions
|
@ -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}"
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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>
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue