diff --git a/la_chariotte/order/tests/test_models.py b/la_chariotte/order/tests/test_models.py index cd3b691..7cba6fe 100644 --- a/la_chariotte/order/tests/test_models.py +++ b/la_chariotte/order/tests/test_models.py @@ -15,49 +15,32 @@ class TestGroupedOrderModel: """Tests for Grouped orders model""" 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) - ongoing_gr_order = GroupedOrder(deadline=deadline) assert ongoing_gr_order.is_open() 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) old_gr_order = GroupedOrder(deadline=deadline) assert not old_gr_order.is_open() 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() gr_order = GroupedOrder(delivery_date=del_date) assert gr_order.is_to_be_delivered() 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) old_gr_order = GroupedOrder(delivery_date=del_date) assert not old_gr_order.is_to_be_delivered() 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) del_date = timezone.now().date() + datetime.timedelta(days=1) old_gr_order = GroupedOrder(deadline=deadline, delivery_date=del_date) assert old_gr_order.is_to_be_delivered() - def test_deadline_after_delivery_date(self, client_log): - """If the deadline is set after the delivery date, an validation error is raised""" + def test_deadline_after_delivery_date_returns_an_error(self, client_log): assert GroupedOrder.objects.count() == 0 create_gorder_url = reverse("order:create_grouped_order") response = client_log.get(create_gorder_url) @@ -75,15 +58,13 @@ class TestGroupedOrderModel: ) assert response.status_code == 200 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 ( response.context.get("form").errors["__all__"][0] == "La date limite de commande doit être avant la date de livraison" ) assert GroupedOrder.objects.count() == 0 - def test_deadline_same_day_as_delivery_date(self, client_log): - """If the deadline is set the seame day as delivery date, no validation error is raised""" + def test_deadline_same_day_as_delivery_date_does_not_raise(self, client_log): assert GroupedOrder.objects.count() == 0 create_gorder_url = reverse("order:create_grouped_order") response = client_log.get(create_gorder_url) @@ -102,8 +83,7 @@ class TestGroupedOrderModel: assert response.status_code == 302 assert GroupedOrder.objects.count() == 1 - def test_delivery_date_in_past(self, client_log): - """If the delivery date is set into the past, a validation error is raised""" + def test_delivery_date_in_past_raise_error(self, client_log): assert GroupedOrder.objects.count() == 0 create_gorder_url = reverse("order:create_grouped_order") response = client_log.get(create_gorder_url) @@ -139,11 +119,7 @@ class TestGroupedOrderModel: class TestItemModel: - """Tests for Item model""" - - 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""" - + def test_items_are_sorted_by_name(self, client_log): date = timezone.now() + datetime.timedelta(days=3) grouped_order = GroupedOrder.objects.create( name="test", diff --git a/la_chariotte/order/tests/test_views/test_views_grouped_order.py b/la_chariotte/order/tests/test_views/test_views_grouped_order.py index 879c82d..09af565 100644 --- a/la_chariotte/order/tests/test_views/test_views_grouped_order.py +++ b/la_chariotte/order/tests/test_views/test_views_grouped_order.py @@ -1,4 +1,3 @@ -# fmt: off import csv import datetime from io import StringIO @@ -9,28 +8,23 @@ from django.urls import reverse from django.utils import timezone from la_chariotte.order import models -from la_chariotte.order.tests.utils import (create_grouped_order, - order_items_in_grouped_order) +from la_chariotte.order.tests.utils import ( + create_grouped_order, + order_items_in_grouped_order, +) -# fmt: on pytestmark = pytest.mark.django_db class TestGroupedOrderIndexView: - def test_anonymous_user_redirection(self, client): - """ - If the user is anonymous, they are redirected to login view - """ + def test_anonymous_user_gets_redirected(self, client): assert auth.get_user(client).is_anonymous response = client.get(reverse("order:index")) assert response.status_code == 302 assert response.url.startswith(reverse("accounts:login")) assert response.url.endswith(reverse("order:index")) - def test_no_grouped_orders(self, client_log): - """ - If no grouped order exist, an appropriate message is displayed - """ + def test_no_grouped_orders_displays_a_message(self, client_log): response = client_log.get(reverse("order:index")) assert response.status_code == 200 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 ) - 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( days_before_delivery_date=5, diff --git a/la_chariotte/order/tests/test_views/test_views_order.py b/la_chariotte/order/tests/test_views/test_views_order.py index fb3d18c..a2fdd7a 100644 --- a/la_chariotte/order/tests/test_views/test_views_order.py +++ b/la_chariotte/order/tests/test_views/test_views_order.py @@ -7,8 +7,10 @@ from django.urls import reverse from django.utils import timezone from la_chariotte.order import models -from la_chariotte.order.tests.utils import (create_grouped_order, - order_items_in_grouped_order) +from la_chariotte.order.tests.utils import ( + create_grouped_order, + order_items_in_grouped_order, +) # fmt: on pytestmark = pytest.mark.django_db diff --git a/la_chariotte/order/views/order.py b/la_chariotte/order/views/order.py index dd39081..3754fa2 100644 --- a/la_chariotte/order/views/order.py +++ b/la_chariotte/order/views/order.py @@ -10,10 +10,10 @@ from ..models import GroupedOrder, Order, OrderAuthor, OrderedItem 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) - # 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 is_to_be_delivered = grouped_order.is_to_be_delivered() is_open = grouped_order.is_open() @@ -101,9 +101,8 @@ def place_order(request, code): grouped_order.compute_items_ordered_nb() send_order_confirmation_mail(order) - # Always return an http.HttpResponseRedirect after successfully dealing - # with POST data. This prevents data from being posted twice if a - # user hits the Back button. + # Redirect to prevent data from being posted twice when the user hits the Back + # button. return http.HttpResponseRedirect( reverse("order:order_confirm", args=(grouped_order.code, order.pk)) ) @@ -125,14 +124,10 @@ def validate_articles_ordered_nb(order): class OrderDetailView(generic.DetailView): - """Confirmation page after a user orders""" - model = Order class OrderDeleteView(UserPassesTestMixin, generic.DeleteView): - """DeleteView for an order""" - model = Order def get_success_url(self):