Remove extraneous comments, rename test functions.

- Removed uneeded comments (like previous commits).
- Renamed some test functions to make them more explicit, and remove the
  associated docstring.
This commit is contained in:
Alexis Métaireau 2023-08-12 18:46:22 +02:00
parent 71cff89a00
commit 53d35094c0
4 changed files with 21 additions and 53 deletions

View file

@ -15,49 +15,32 @@ class TestGroupedOrderModel:
"""Tests for Grouped orders model""" """Tests for Grouped orders model"""
def test_is_open_with_ongoing_grouped_order(self): def test_is_open_with_ongoing_grouped_order(self):
"""
is_open() returns True if the deadline is not crossed
"""
deadline = timezone.now() + datetime.timedelta(days=10) deadline = timezone.now() + datetime.timedelta(days=10)
ongoing_gr_order = GroupedOrder(deadline=deadline) ongoing_gr_order = GroupedOrder(deadline=deadline)
assert ongoing_gr_order.is_open() assert ongoing_gr_order.is_open()
def test_is_open_with_old_grouped_order(self): def test_is_open_with_old_grouped_order(self):
"""
is_open() returns False if the deadline is crossed
"""
deadline = timezone.now() - datetime.timedelta(hours=1) deadline = timezone.now() - datetime.timedelta(hours=1)
old_gr_order = GroupedOrder(deadline=deadline) old_gr_order = GroupedOrder(deadline=deadline)
assert not old_gr_order.is_open() assert not old_gr_order.is_open()
def test_is_to_be_delivered_with_today_delivery(self): def test_is_to_be_delivered_with_today_delivery(self):
"""
is_to_be_delivered() returns True if the delivery date is today
"""
del_date = timezone.now().date() del_date = timezone.now().date()
gr_order = GroupedOrder(delivery_date=del_date) gr_order = GroupedOrder(delivery_date=del_date)
assert gr_order.is_to_be_delivered() assert gr_order.is_to_be_delivered()
def test_is_to_be_delivered_with_old_grouped_order(self): def test_is_to_be_delivered_with_old_grouped_order(self):
"""
is_to_be_delivered() returns False if the delivery date is passed
"""
del_date = timezone.now().date() - datetime.timedelta(days=1) del_date = timezone.now().date() - datetime.timedelta(days=1)
old_gr_order = GroupedOrder(delivery_date=del_date) old_gr_order = GroupedOrder(delivery_date=del_date)
assert not old_gr_order.is_to_be_delivered() assert not old_gr_order.is_to_be_delivered()
def test_is_to_be_delivered_with_crossed_deadline_grouped_order(self): def test_is_to_be_delivered_with_crossed_deadline_grouped_order(self):
"""
is_to_be_delivered() returns True even if the deadline is crossed
"""
deadline = timezone.now() - datetime.timedelta(hours=1) deadline = timezone.now() - datetime.timedelta(hours=1)
del_date = timezone.now().date() + datetime.timedelta(days=1) del_date = timezone.now().date() + datetime.timedelta(days=1)
old_gr_order = GroupedOrder(deadline=deadline, delivery_date=del_date) old_gr_order = GroupedOrder(deadline=deadline, delivery_date=del_date)
assert old_gr_order.is_to_be_delivered() assert old_gr_order.is_to_be_delivered()
def test_deadline_after_delivery_date(self, client_log): def test_deadline_after_delivery_date_returns_an_error(self, client_log):
"""If the deadline is set after the delivery date, an validation error is raised"""
assert GroupedOrder.objects.count() == 0 assert GroupedOrder.objects.count() == 0
create_gorder_url = reverse("order:create_grouped_order") create_gorder_url = reverse("order:create_grouped_order")
response = client_log.get(create_gorder_url) response = client_log.get(create_gorder_url)
@ -75,15 +58,13 @@ class TestGroupedOrderModel:
) )
assert response.status_code == 200 assert response.status_code == 200
assert not response.context.get("form").is_valid() assert not response.context.get("form").is_valid()
"La date limite de commande doit être avant la date de livraison" in response.content.decode()
assert ( assert (
response.context.get("form").errors["__all__"][0] response.context.get("form").errors["__all__"][0]
== "La date limite de commande doit être avant la date de livraison" == "La date limite de commande doit être avant la date de livraison"
) )
assert GroupedOrder.objects.count() == 0 assert GroupedOrder.objects.count() == 0
def test_deadline_same_day_as_delivery_date(self, client_log): def test_deadline_same_day_as_delivery_date_does_not_raise(self, client_log):
"""If the deadline is set the seame day as delivery date, no validation error is raised"""
assert GroupedOrder.objects.count() == 0 assert GroupedOrder.objects.count() == 0
create_gorder_url = reverse("order:create_grouped_order") create_gorder_url = reverse("order:create_grouped_order")
response = client_log.get(create_gorder_url) response = client_log.get(create_gorder_url)
@ -102,8 +83,7 @@ class TestGroupedOrderModel:
assert response.status_code == 302 assert response.status_code == 302
assert GroupedOrder.objects.count() == 1 assert GroupedOrder.objects.count() == 1
def test_delivery_date_in_past(self, client_log): def test_delivery_date_in_past_raise_error(self, client_log):
"""If the delivery date is set into the past, a validation error is raised"""
assert GroupedOrder.objects.count() == 0 assert GroupedOrder.objects.count() == 0
create_gorder_url = reverse("order:create_grouped_order") create_gorder_url = reverse("order:create_grouped_order")
response = client_log.get(create_gorder_url) response = client_log.get(create_gorder_url)
@ -139,11 +119,7 @@ class TestGroupedOrderModel:
class TestItemModel: class TestItemModel:
"""Tests for Item model""" def test_items_are_sorted_by_name(self, client_log):
def test_items_sorted_by_name(self, client_log):
"""On the grouped order detail view and other views where items are listed, they appear in alphabetical order"""
date = timezone.now() + datetime.timedelta(days=3) date = timezone.now() + datetime.timedelta(days=3)
grouped_order = GroupedOrder.objects.create( grouped_order = GroupedOrder.objects.create(
name="test", name="test",

View file

@ -1,4 +1,3 @@
# fmt: off
import csv import csv
import datetime import datetime
from io import StringIO from io import StringIO
@ -9,28 +8,23 @@ from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from la_chariotte.order import models from la_chariotte.order import models
from la_chariotte.order.tests.utils import (create_grouped_order, from la_chariotte.order.tests.utils import (
order_items_in_grouped_order) create_grouped_order,
order_items_in_grouped_order,
)
# fmt: on
pytestmark = pytest.mark.django_db pytestmark = pytest.mark.django_db
class TestGroupedOrderIndexView: class TestGroupedOrderIndexView:
def test_anonymous_user_redirection(self, client): def test_anonymous_user_gets_redirected(self, client):
"""
If the user is anonymous, they are redirected to login view
"""
assert auth.get_user(client).is_anonymous assert auth.get_user(client).is_anonymous
response = client.get(reverse("order:index")) response = client.get(reverse("order:index"))
assert response.status_code == 302 assert response.status_code == 302
assert response.url.startswith(reverse("accounts:login")) assert response.url.startswith(reverse("accounts:login"))
assert response.url.endswith(reverse("order:index")) assert response.url.endswith(reverse("order:index"))
def test_no_grouped_orders(self, client_log): def test_no_grouped_orders_displays_a_message(self, client_log):
"""
If no grouped order exist, an appropriate message is displayed
"""
response = client_log.get(reverse("order:index")) response = client_log.get(reverse("order:index"))
assert response.status_code == 200 assert response.status_code == 200
assert "Pas de commande groupée pour l'instant" in response.content.decode() assert "Pas de commande groupée pour l'instant" in response.content.decode()
@ -47,9 +41,10 @@ class TestGroupedOrderIndexView:
len(response.context["grouped_order_list"]["incoming_grouped_orders"]) == 0 len(response.context["grouped_order_list"]["incoming_grouped_orders"]) == 0
) )
def test_grouped_orders_in_right_section(self, client_log): def test_grouped_orders_appears_in_right_section(self, client_log):
""" """
According to their delivery date and deadline, grouped orders are placed in the correct section : several gr orders According to their delivery date and deadline, grouped orders are placed
in the correct section : several gr orders
""" """
future_grouped_order = create_grouped_order( future_grouped_order = create_grouped_order(
days_before_delivery_date=5, days_before_delivery_date=5,

View file

@ -7,8 +7,10 @@ from django.urls import reverse
from django.utils import timezone from django.utils import timezone
from la_chariotte.order import models from la_chariotte.order import models
from la_chariotte.order.tests.utils import (create_grouped_order, from la_chariotte.order.tests.utils import (
order_items_in_grouped_order) create_grouped_order,
order_items_in_grouped_order,
)
# fmt: on # fmt: on
pytestmark = pytest.mark.django_db pytestmark = pytest.mark.django_db

View file

@ -10,10 +10,10 @@ from ..models import GroupedOrder, Order, OrderAuthor, OrderedItem
def place_order(request, code): def place_order(request, code):
"""Creates an AnonymousUser, and an Order for this GroupedOrder, with related OrderedItems""" # Creates an AnonymousUser and an Order with related OrderedItems
grouped_order = get_object_or_404(GroupedOrder, code=code) grouped_order = get_object_or_404(GroupedOrder, code=code)
# check if the grouped order is ongoing or if the user is allowed to order # Handle permissions
user_is_orga = request.user == grouped_order.orga user_is_orga = request.user == grouped_order.orga
is_to_be_delivered = grouped_order.is_to_be_delivered() is_to_be_delivered = grouped_order.is_to_be_delivered()
is_open = grouped_order.is_open() is_open = grouped_order.is_open()
@ -101,9 +101,8 @@ def place_order(request, code):
grouped_order.compute_items_ordered_nb() grouped_order.compute_items_ordered_nb()
send_order_confirmation_mail(order) send_order_confirmation_mail(order)
# Always return an http.HttpResponseRedirect after successfully dealing # Redirect to prevent data from being posted twice when the user hits the Back
# with POST data. This prevents data from being posted twice if a # button.
# user hits the Back button.
return http.HttpResponseRedirect( return http.HttpResponseRedirect(
reverse("order:order_confirm", args=(grouped_order.code, order.pk)) reverse("order:order_confirm", args=(grouped_order.code, order.pk))
) )
@ -125,14 +124,10 @@ def validate_articles_ordered_nb(order):
class OrderDetailView(generic.DetailView): class OrderDetailView(generic.DetailView):
"""Confirmation page after a user orders"""
model = Order model = Order
class OrderDeleteView(UserPassesTestMixin, generic.DeleteView): class OrderDeleteView(UserPassesTestMixin, generic.DeleteView):
"""DeleteView for an order"""
model = Order model = Order
def get_success_url(self): def get_success_url(self):