mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-02 11:52:27 +02:00
install pytest
This commit is contained in:
parent
d4872c372e
commit
2c5eda993a
4 changed files with 107 additions and 92 deletions
|
@ -1,92 +0,0 @@
|
||||||
import datetime
|
|
||||||
|
|
||||||
from django.test import TestCase
|
|
||||||
from django.urls import reverse
|
|
||||||
from django.utils import timezone
|
|
||||||
from .models import Grouped_order
|
|
||||||
|
|
||||||
|
|
||||||
def create_grouped_order(days_before_delivery_date,days_before_deadline,name):
|
|
||||||
"""
|
|
||||||
Create a question with the given `question_text` and published the
|
|
||||||
given number of `days` offset to now (negative for questions published
|
|
||||||
in the past, positive for questions that have yet to be published).
|
|
||||||
"""
|
|
||||||
date = timezone.now().date() + datetime.timedelta(days=days_before_delivery_date)
|
|
||||||
deadline = timezone.now() + datetime.timedelta(days=days_before_deadline)
|
|
||||||
return Grouped_order.objects.create(name=name, orga="test orga",delivery_date=date,deadline=deadline)
|
|
||||||
|
|
||||||
|
|
||||||
class GroupedOrderModelTests(TestCase):
|
|
||||||
|
|
||||||
def test_is_ongoing_with_ongoing_grouped_order(self):
|
|
||||||
"""
|
|
||||||
is_ongoing() returns True if the deadline is not crossed
|
|
||||||
"""
|
|
||||||
deadline = timezone.now() + datetime.timedelta(days=10)
|
|
||||||
ongoing_gr_order = Grouped_order(deadline=deadline)
|
|
||||||
self.assertIs(ongoing_gr_order.is_ongoing(), True)
|
|
||||||
|
|
||||||
def test_is_ongoing_with_old_grouped_order(self):
|
|
||||||
"""
|
|
||||||
is_ongoing() returns False if the deadline is crossed
|
|
||||||
"""
|
|
||||||
deadline = timezone.now() - datetime.timedelta(hours=1)
|
|
||||||
ongoing_gr_order = Grouped_order(deadline=deadline)
|
|
||||||
self.assertIs(ongoing_gr_order.is_ongoing(), False)
|
|
||||||
|
|
||||||
class GroupedOrderIndexViewTests(TestCase):
|
|
||||||
|
|
||||||
def test_no_grouped_orders(self):
|
|
||||||
"""
|
|
||||||
If no grouped order exist, an appropriate message is displayed
|
|
||||||
"""
|
|
||||||
response = self.client.get(reverse('order:index'))
|
|
||||||
self.assertEqual(response.status_code, 200)
|
|
||||||
self.assertContains(response, "Pas de commande groupée pour l'instant")
|
|
||||||
self.assertQuerysetEqual(response.context['grouped_order_list']['old_grouped_orders'], [])
|
|
||||||
self.assertQuerysetEqual(response.context['grouped_order_list']['orders_over_grouped_orders'], [])
|
|
||||||
self.assertQuerysetEqual(response.context['grouped_order_list']['incoming_grouped_orders'], [])
|
|
||||||
|
|
||||||
def test_grouped_orders_in_right_section(self):
|
|
||||||
"""
|
|
||||||
According to their delivery date and deadline, grouped orders are placed in correct section
|
|
||||||
"""
|
|
||||||
future_grouped_order = create_grouped_order(days_before_delivery_date=5,days_before_deadline=2,name="future")
|
|
||||||
crossed_deadline_gr_order = create_grouped_order(days_before_delivery_date=2, days_before_deadline=-1,name="crossed deadline")
|
|
||||||
passed_deadline_gr_order = create_grouped_order(days_before_delivery_date=-1, days_before_deadline=-3,name="passée")
|
|
||||||
response = self.client.get(reverse('order:index'))
|
|
||||||
self.assertEqual(response.status_code, 200)
|
|
||||||
self.assertNotContains(response, "Pas de commande groupée pour l'instant")
|
|
||||||
self.assertContains(response, "Commandes groupées à venir")
|
|
||||||
self.assertContains(response, "Livraison à venir")
|
|
||||||
self.assertContains(response, "Livraison passée")
|
|
||||||
self.assertIs(len(response.context['grouped_order_list']['old_grouped_orders']), 1)
|
|
||||||
self.assertIs(len(response.context['grouped_order_list']['orders_over_grouped_orders']), 1)
|
|
||||||
self.assertIs(len(response.context['grouped_order_list']['incoming_grouped_orders']), 1)
|
|
||||||
|
|
||||||
def test_grouped_orders_in_right_section__with_only_passed(self):
|
|
||||||
"""
|
|
||||||
According to their delivery date and deadline, grouped orders are placed in correct section
|
|
||||||
"""
|
|
||||||
passed_deadline_gr_order = create_grouped_order(days_before_delivery_date=-1, days_before_deadline=-3,name="passée")
|
|
||||||
response = self.client.get(reverse('order:index'))
|
|
||||||
self.assertEqual(response.status_code, 200)
|
|
||||||
self.assertNotContains(response, "Pas de commande groupée pour l'instant")
|
|
||||||
self.assertNotContains(response, "Commandes groupées à venir")
|
|
||||||
self.assertNotContains(response, "Livraison à venir")
|
|
||||||
self.assertContains(response, "Livraison passée")
|
|
||||||
self.assertIs(len(response.context['grouped_order_list']['old_grouped_orders']), 1)
|
|
||||||
|
|
||||||
def test_grouped_orders_in_right_section__with_only_future(self):
|
|
||||||
"""
|
|
||||||
According to their delivery date and deadline, grouped orders are placed in correct section
|
|
||||||
"""
|
|
||||||
future_grouped_order = create_grouped_order(days_before_delivery_date=5,days_before_deadline=2,name="future")
|
|
||||||
response = self.client.get(reverse('order:index'))
|
|
||||||
self.assertEqual(response.status_code, 200)
|
|
||||||
self.assertNotContains(response, "Pas de commande groupée pour l'instant")
|
|
||||||
self.assertNotContains(response, "Commandes groupées à venir")
|
|
||||||
self.assertContains(response, "Livraison à venir")
|
|
||||||
self.assertNotContains(response, "Livraison passée")
|
|
||||||
self.assertIs(len(response.context['grouped_order_list']['incoming_grouped_orders']), 1)
|
|
24
la_chariotte/order/tests/test_models.py
Normal file
24
la_chariotte/order/tests/test_models.py
Normal file
|
@ -0,0 +1,24 @@
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
from django.utils import timezone
|
||||||
|
from la_chariotte.order.models import Grouped_order
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
class TestGroupedOrdersModel():
|
||||||
|
"""Tests for Grouped orders model"""
|
||||||
|
def test_is_ongoing_with_ongoing_grouped_order(self):
|
||||||
|
"""
|
||||||
|
is_ongoing() returns True if the deadline is not crossed
|
||||||
|
"""
|
||||||
|
deadline = timezone.now() + datetime.timedelta(days=10)
|
||||||
|
ongoing_gr_order = Grouped_order(deadline=deadline)
|
||||||
|
assert ongoing_gr_order.is_ongoing() == True
|
||||||
|
|
||||||
|
def test_is_ongoing_with_old_grouped_order(self):
|
||||||
|
"""
|
||||||
|
is_ongoing() returns False if the deadline is crossed
|
||||||
|
"""
|
||||||
|
deadline = timezone.now() - datetime.timedelta(hours=1)
|
||||||
|
ongoing_gr_order = Grouped_order(deadline=deadline)
|
||||||
|
assert not ongoing_gr_order.is_ongoing()
|
81
la_chariotte/order/tests/test_views.py
Normal file
81
la_chariotte/order/tests/test_views.py
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
import datetime
|
||||||
|
|
||||||
|
import pytest
|
||||||
|
|
||||||
|
from django.urls import reverse
|
||||||
|
from django.utils import timezone
|
||||||
|
from la_chariotte.order.models import Grouped_order
|
||||||
|
|
||||||
|
pytestmark = pytest.mark.django_db
|
||||||
|
|
||||||
|
def create_grouped_order(days_before_delivery_date,days_before_deadline,name):
|
||||||
|
"""
|
||||||
|
Creates a grouped order.
|
||||||
|
"""
|
||||||
|
date = timezone.now().date() + datetime.timedelta(days=days_before_delivery_date)
|
||||||
|
deadline = timezone.now() + datetime.timedelta(days=days_before_deadline)
|
||||||
|
return Grouped_order.objects.create(name=name, orga="test orga",delivery_date=date,deadline=deadline)
|
||||||
|
|
||||||
|
class TestGroupedOrderIndexView:
|
||||||
|
def test_no_grouped_orders(self,client):
|
||||||
|
"""
|
||||||
|
If no grouped order exist, an appropriate message is displayed
|
||||||
|
"""
|
||||||
|
response = client.get(reverse('order:index'))
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert "Pas de commande groupée pour l'instant" in response.content.decode()
|
||||||
|
assert len(response.context['grouped_order_list']['old_grouped_orders']) == 0
|
||||||
|
assert len(response.context['grouped_order_list']['orders_over_grouped_orders']) == 0
|
||||||
|
assert len(response.context['grouped_order_list']['incoming_grouped_orders']) == 0
|
||||||
|
|
||||||
|
def test_grouped_orders_in_right_section(self,client):
|
||||||
|
"""
|
||||||
|
According to their delivery date and deadline, grouped orders are placed in the correct section : several gr orders
|
||||||
|
"""
|
||||||
|
future_grouped_order = create_grouped_order(days_before_delivery_date=5,days_before_deadline=2,name="future")
|
||||||
|
crossed_deadline_gr_order = create_grouped_order(days_before_delivery_date=2, days_before_deadline=-1,name="crossed deadline")
|
||||||
|
old_gr_order = create_grouped_order(days_before_delivery_date=-1, days_before_deadline=-3,name="old")
|
||||||
|
response = client.get(reverse('order:index'))
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert "Pas de commande groupée pour l'instant" not in response.content.decode()
|
||||||
|
assert "Commandes groupées à venir" in response.content.decode()
|
||||||
|
assert "Livraison à venir" in response.content.decode()
|
||||||
|
assert "Livraison passée" in response.content.decode()
|
||||||
|
assert len(response.context['grouped_order_list']['old_grouped_orders']) == 1
|
||||||
|
assert len(response.context['grouped_order_list']['orders_over_grouped_orders']) == 1
|
||||||
|
assert len(response.context['grouped_order_list']['incoming_grouped_orders']) == 1
|
||||||
|
assert response.context['grouped_order_list']['old_grouped_orders'][0] == old_gr_order
|
||||||
|
assert response.context['grouped_order_list']['orders_over_grouped_orders'][0] == crossed_deadline_gr_order
|
||||||
|
assert response.context['grouped_order_list']['incoming_grouped_orders'][0] == future_grouped_order
|
||||||
|
|
||||||
|
def test_grouped_orders_in_right_section__with_only_old(self,client):
|
||||||
|
"""
|
||||||
|
According to their delivery date and deadline, grouped orders are placed in correct section : only old gr order
|
||||||
|
"""
|
||||||
|
old_gr_order = create_grouped_order(days_before_delivery_date=-1, days_before_deadline=-3,name="passée")
|
||||||
|
response = client.get(reverse('order:index'))
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert "Pas de commande groupée pour l'instant" not in response.content.decode()
|
||||||
|
assert "Commandes groupées à venir" not in response.content.decode()
|
||||||
|
assert "Livraison à venir" not in response.content.decode()
|
||||||
|
assert "Livraison passée" in response.content.decode()
|
||||||
|
assert len(response.context['grouped_order_list']['old_grouped_orders']) == 1
|
||||||
|
assert len(response.context['grouped_order_list']['orders_over_grouped_orders']) == 0
|
||||||
|
assert len(response.context['grouped_order_list']['incoming_grouped_orders']) == 0
|
||||||
|
assert response.context['grouped_order_list']['old_grouped_orders'][0] == old_gr_order
|
||||||
|
|
||||||
|
def test_grouped_orders_in_right_section__with_only_future(self,client):
|
||||||
|
"""
|
||||||
|
According to their delivery date and deadline, grouped orders are placed in correct section : only incoming gr order
|
||||||
|
"""
|
||||||
|
future_grouped_order = create_grouped_order(days_before_delivery_date=5,days_before_deadline=2,name="future")
|
||||||
|
response = client.get(reverse('order:index'))
|
||||||
|
assert response.status_code == 200
|
||||||
|
assert "Pas de commande groupée pour l'instant" not in response.content.decode()
|
||||||
|
assert "Commandes groupées à venir" in response.content.decode()
|
||||||
|
assert "Livraison à venir" not in response.content.decode()
|
||||||
|
assert "Livraison passée" not in response.content.decode()
|
||||||
|
assert len(response.context['grouped_order_list']['old_grouped_orders']) == 0
|
||||||
|
assert len(response.context['grouped_order_list']['orders_over_grouped_orders']) == 0
|
||||||
|
assert len(response.context['grouped_order_list']['incoming_grouped_orders']) == 1
|
||||||
|
assert response.context['grouped_order_list']['incoming_grouped_orders'][0] == future_grouped_order
|
2
setup.cfg
Normal file
2
setup.cfg
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
[tool:pytest]
|
||||||
|
DJANGO_SETTINGS_MODULE = la_chariotte.settings
|
Loading…
Reference in a new issue