mirror of
https://framagit.org/la-chariotte/la-chariotte.git
synced 2025-05-05 13:21:49 +02:00
updating tests
This commit is contained in:
parent
008b2b36ea
commit
c2cb862e43
4 changed files with 68 additions and 15 deletions
|
@ -23,6 +23,18 @@ def other_user(django_user_model):
|
||||||
return user
|
return user
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def authenticated_user(django_user_model):
|
||||||
|
username = "toto@gmail.com"
|
||||||
|
password = "tata"
|
||||||
|
first_name = "boule"
|
||||||
|
last_name = "bill"
|
||||||
|
user = django_user_model.objects.create_user(
|
||||||
|
username=username, password=password, first_name=first_name, last_name=last_name
|
||||||
|
)
|
||||||
|
return user
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture
|
@pytest.fixture
|
||||||
def simple_grouped_order(other_user):
|
def simple_grouped_order(other_user):
|
||||||
date = timezone.now().date() + datetime.timedelta(days=30)
|
date = timezone.now().date() + datetime.timedelta(days=30)
|
||||||
|
@ -39,6 +51,23 @@ def simple_grouped_order(other_user):
|
||||||
return grouped_order
|
return grouped_order
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.fixture
|
||||||
|
def connected_grouped_order(client, authenticated_user):
|
||||||
|
client.force_login(authenticated_user)
|
||||||
|
date = timezone.now().date() + datetime.timedelta(days=30)
|
||||||
|
deadline = timezone.now() + datetime.timedelta(days=5)
|
||||||
|
grouped_order = GroupedOrder.objects.create(
|
||||||
|
name="Test grouped order",
|
||||||
|
orga=authenticated_user,
|
||||||
|
delivery_date=date,
|
||||||
|
deadline=deadline,
|
||||||
|
)
|
||||||
|
grouped_order.create_code_from_pk()
|
||||||
|
grouped_order.save()
|
||||||
|
item = Item.objects.create(name="test item", grouped_order=grouped_order, price=2)
|
||||||
|
return grouped_order
|
||||||
|
|
||||||
|
|
||||||
@pytest.fixture(autouse=True)
|
@pytest.fixture(autouse=True)
|
||||||
def password_hasher_setup(settings):
|
def password_hasher_setup(settings):
|
||||||
# Use a weaker password hasher during tests, for speed
|
# Use a weaker password hasher during tests, for speed
|
||||||
|
|
|
@ -9,6 +9,7 @@ from django.utils import timezone
|
||||||
|
|
||||||
from la_chariotte.settings import AUTH_USER_MODEL
|
from la_chariotte.settings import AUTH_USER_MODEL
|
||||||
|
|
||||||
|
|
||||||
class GroupedOrder(models.Model):
|
class GroupedOrder(models.Model):
|
||||||
name = models.CharField(
|
name = models.CharField(
|
||||||
max_length=100, null=True, verbose_name="Titre de la commande"
|
max_length=100, null=True, verbose_name="Titre de la commande"
|
||||||
|
@ -93,8 +94,8 @@ class GroupedOrder(models.Model):
|
||||||
|
|
||||||
class OrderAuthor(models.Model):
|
class OrderAuthor(models.Model):
|
||||||
|
|
||||||
|
|
||||||
"""Used when a user orders (with or without an account)"""
|
"""Used when a user orders (with or without an account)"""
|
||||||
|
|
||||||
first_name = models.CharField(verbose_name="Prénom")
|
first_name = models.CharField(verbose_name="Prénom")
|
||||||
last_name = models.CharField(verbose_name="Nom")
|
last_name = models.CharField(verbose_name="Nom")
|
||||||
phone = models.CharField(
|
phone = models.CharField(
|
||||||
|
@ -106,7 +107,6 @@ class OrderAuthor(models.Model):
|
||||||
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
help_text="Pour que l'organisateur·ice vous contacte en cas de besoin",
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
def __str__(self): # pragma: no cover
|
def __str__(self): # pragma: no cover
|
||||||
return f"{self.first_name} {self.last_name}"
|
return f"{self.first_name} {self.last_name}"
|
||||||
|
|
||||||
|
|
|
@ -4,6 +4,7 @@ from io import StringIO
|
||||||
|
|
||||||
import pytest
|
import pytest
|
||||||
from django.contrib import auth
|
from django.contrib import auth
|
||||||
|
from django.contrib.auth import get_user
|
||||||
from django.urls import reverse
|
from django.urls import reverse
|
||||||
from django.utils import timezone
|
from django.utils import timezone
|
||||||
|
|
||||||
|
@ -213,13 +214,33 @@ class TestJoinGroupedOrderView:
|
||||||
|
|
||||||
join_url = reverse("dashboard")
|
join_url = reverse("dashboard")
|
||||||
response = client.post(join_url, {"code": "123456"})
|
response = client.post(join_url, {"code": "123456"})
|
||||||
|
|
||||||
assert (
|
assert (
|
||||||
"nous ne trouvons aucune commande avec ce code" in response.content.decode()
|
"Désolé, nous ne trouvons aucune commande avec ce code"
|
||||||
|
in response.content.decode()
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class TestGroupedOrderDetailView:
|
class TestGroupedOrderDetailView:
|
||||||
|
def test_order_item_with_authenticated_user(self, client, connected_grouped_order):
|
||||||
|
detail_url = reverse(
|
||||||
|
"order:grouped_order_detail",
|
||||||
|
kwargs={
|
||||||
|
"code": connected_grouped_order.code,
|
||||||
|
},
|
||||||
|
)
|
||||||
|
response = client.get(detail_url)
|
||||||
|
|
||||||
|
assert response.status_code == 200
|
||||||
|
|
||||||
|
order_author = response.context[0]["order_author"]
|
||||||
|
current_user = get_user(client)
|
||||||
|
|
||||||
|
assert order_author is not None
|
||||||
|
|
||||||
|
assert order_author.first_name == current_user.first_name
|
||||||
|
assert order_author.email == current_user.username
|
||||||
|
assert order_author.last_name == current_user.last_name
|
||||||
|
|
||||||
def test_order_item(self, client, other_user):
|
def test_order_item(self, client, other_user):
|
||||||
"""
|
"""
|
||||||
From the OrderDetailView, we order an item using the order form, and it creates an models.Order with an Ordered_item inside
|
From the OrderDetailView, we order an item using the order form, and it creates an models.Order with an Ordered_item inside
|
||||||
|
@ -300,7 +321,7 @@ class TestGroupedOrderDetailView:
|
||||||
# OrderedItems are not created when the ordered quantity is 0
|
# OrderedItems are not created when the ordered quantity is 0
|
||||||
assert models.OrderedItem.objects.count() == 2
|
assert models.OrderedItem.objects.count() == 2
|
||||||
|
|
||||||
def test_order_item__no_articles_ordered(self, client, other_user):
|
def test_order_item__no_articles_ordered(self, client, authenticated_user):
|
||||||
"""
|
"""
|
||||||
From the OrderDetailView, we order without having changed any item quantity.
|
From the OrderDetailView, we order without having changed any item quantity.
|
||||||
An error is raised.
|
An error is raised.
|
||||||
|
@ -310,7 +331,7 @@ class TestGroupedOrderDetailView:
|
||||||
days_before_delivery_date=5,
|
days_before_delivery_date=5,
|
||||||
days_before_deadline=2,
|
days_before_deadline=2,
|
||||||
name="gr order test",
|
name="gr order test",
|
||||||
orga_user=other_user,
|
orga_user=authenticated_user,
|
||||||
)
|
)
|
||||||
item = models.Item.objects.create(
|
item = models.Item.objects.create(
|
||||||
name="test item 1", grouped_order=grouped_order, price=1
|
name="test item 1", grouped_order=grouped_order, price=1
|
||||||
|
@ -336,10 +357,10 @@ class TestGroupedOrderDetailView:
|
||||||
order_url,
|
order_url,
|
||||||
{
|
{
|
||||||
f"quantity_{item.pk}": [0, 0],
|
f"quantity_{item.pk}": [0, 0],
|
||||||
"first_name": "Prénom test",
|
"first_name": {authenticated_user.first_name},
|
||||||
"last_name": "Nom test",
|
"last_name": {authenticated_user.last_name},
|
||||||
"phone": "0645632569",
|
"phone": "0645632569",
|
||||||
"email": "test@mail.fr",
|
"email": {authenticated_user.email},
|
||||||
"note": "test note",
|
"note": "test note",
|
||||||
},
|
},
|
||||||
)
|
)
|
||||||
|
@ -348,12 +369,11 @@ class TestGroupedOrderDetailView:
|
||||||
response.context["error_message"]
|
response.context["error_message"]
|
||||||
== "Veuillez commander au moins un produit"
|
== "Veuillez commander au moins un produit"
|
||||||
)
|
)
|
||||||
assert response.context["author"].first_name == "Prénom test"
|
assert response.context["author"].first_name == authenticated_user.first_name
|
||||||
content = response.content.decode()
|
content = response.content.decode()
|
||||||
assert "Prénom test" in content
|
assert authenticated_user.first_name in content
|
||||||
assert "Nom test" in content
|
assert authenticated_user.last_name in content
|
||||||
assert "0645632569" in content
|
assert authenticated_user.email in content
|
||||||
assert "test@mail.fr" in content
|
|
||||||
assert "test note" in content
|
assert "test note" in content
|
||||||
assert not models.Order.objects.first()
|
assert not models.Order.objects.first()
|
||||||
assert not models.OrderAuthor.objects.first()
|
assert not models.OrderAuthor.objects.first()
|
||||||
|
|
|
@ -111,7 +111,11 @@ class GroupedOrderDetailView(generic.DetailView):
|
||||||
remaining_qty = {item.id: item.get_remaining_nb() for item in items}
|
remaining_qty = {item.id: item.get_remaining_nb() for item in items}
|
||||||
prices_dict = {item.id: item.price for item in items}
|
prices_dict = {item.id: item.price for item in items}
|
||||||
if self.request.user.is_authenticated:
|
if self.request.user.is_authenticated:
|
||||||
order_author = OrderAuthor.objects.create(first_name=self.request.user.first_name, last_name=self.request.user.last_name, email=self.request.user.username)
|
order_author = OrderAuthor.objects.create(
|
||||||
|
first_name=self.request.user.first_name,
|
||||||
|
last_name=self.request.user.last_name,
|
||||||
|
email=self.request.user.username,
|
||||||
|
)
|
||||||
order_author.save()
|
order_author.save()
|
||||||
else:
|
else:
|
||||||
order_author = None
|
order_author = None
|
||||||
|
|
Loading…
Reference in a new issue