From 604ba778423b50a28b7892d14b655248abe785de Mon Sep 17 00:00:00 2001 From: Laetitia Getti Date: Thu, 6 Jul 2023 16:32:16 +0200 Subject: [PATCH] duplicate grouped order part 3 --- la_chariotte/order/tests/test_views.py | 84 ++++++++++++++++++++++++++ 1 file changed, 84 insertions(+) diff --git a/la_chariotte/order/tests/test_views.py b/la_chariotte/order/tests/test_views.py index a5012fd..6a092a5 100644 --- a/la_chariotte/order/tests/test_views.py +++ b/la_chariotte/order/tests/test_views.py @@ -1288,6 +1288,90 @@ class TestGroupedOrderDeleteView: assert models.GroupedOrder.objects.count() == 1 +class TestGroupedOrderDuplicateView: + def test_duplicate_grouped_order(self, client_log): + """The orga of the GO duplicates it. + A new GO is created without any order but with the same item_set. + The user gets redirected to the update view. The old GO remains the same""" + grouped_order = create_grouped_order( + days_before_delivery_date=5, + days_before_deadline=2, + name="gr order test", + orga_user=auth.get_user(client_log), + ) + assert models.GroupedOrder.objects.count() == 1 + order = order_items_in_grouped_order(grouped_order) + assert models.Item.objects.count() == 2 + assert models.OrderedItem.objects.count() == 2 + assert models.OrderAuthor.objects.count() == 1 + assert grouped_order.item_set.first().ordered_nb == 3 + + # duplicate + duplicate_view_url = reverse( + "order:duplicate_grouped_order", kwargs={"pk": grouped_order.pk} + ) + response = client_log.get(duplicate_view_url) + assert models.GroupedOrder.objects.count() == 2 + new_grouped_order = models.GroupedOrder.objects.all()[1] + assert new_grouped_order.name == "gr order test - copie" + assert new_grouped_order.delivery_date == grouped_order.delivery_date + assert new_grouped_order.deadline == grouped_order.deadline + assert new_grouped_order.place == grouped_order.place + assert new_grouped_order.orga == auth.get_user(client_log) + assert new_grouped_order.description == grouped_order.description + assert new_grouped_order.item_set.count() == grouped_order.item_set.count() + assert new_grouped_order.item_set.first().ordered_nb == 0 + assert models.GroupedOrder.objects.count() == 2 + + # redirection + assert response.status_code == 302 + assert response.url == reverse( + "order:update_grouped_order", kwargs={"pk": new_grouped_order.pk} + ) + + # The initial grouped order did not change + assert grouped_order.item_set.first().ordered_nb == 3 + + def test_duplicate_grouped_order__not_orga(self, client_log, other_user): + """A user that is not orga gets the duplicate view. They get a 403 error.""" + grouped_order = create_grouped_order( + days_before_delivery_date=5, + days_before_deadline=2, + name="gr order test", + orga_user=other_user, + ) + assert models.GroupedOrder.objects.count() == 1 + + # get the duplicate view + duplicate_view_url = reverse( + "order:duplicate_grouped_order", kwargs={"pk": grouped_order.pk} + ) + response = client_log.get(duplicate_view_url) + assert response.status_code == 403 + + assert models.GroupedOrder.objects.count() == 1 + + def test_duplicate_grouped_order__anonymous(self, client, other_user): + """An anonymous user gets the duplicate view. They get redirected to login page""" + grouped_order = create_grouped_order( + days_before_delivery_date=5, + days_before_deadline=2, + name="gr order test", + orga_user=other_user, + ) + assert models.GroupedOrder.objects.count() == 1 + + # get the duplicate view + duplicate_view_url = reverse( + "order:duplicate_grouped_order", kwargs={"pk": grouped_order.pk} + ) + response = client.get(duplicate_view_url) + assert response.status_code == 302 + assert response.url == f"{reverse('accounts:login')}?next={duplicate_view_url}" + + assert models.GroupedOrder.objects.count() == 1 + + class TestItemCreateView: def test_create_item(self, client_log): """A user that has created a grouped order adds an item to it."""