diff --git a/la_chariotte/order/templates/order/grouped_order_add_items.html b/la_chariotte/order/templates/order/grouped_order_add_items.html
index d886aa1..fb6e902 100644
--- a/la_chariotte/order/templates/order/grouped_order_add_items.html
+++ b/la_chariotte/order/templates/order/grouped_order_add_items.html
@@ -6,14 +6,6 @@
{% block content_title %}Ajouter des produits à votre commande groupée{% endblock %}
-
Gestion des produits - {{ grouped_order.name }}
diff --git a/la_chariotte/order/templates/order/grouped_order_confirm_delete.html b/la_chariotte/order/templates/order/grouped_order_confirm_delete.html
new file mode 100644
index 0000000..3d33745
--- /dev/null
+++ b/la_chariotte/order/templates/order/grouped_order_confirm_delete.html
@@ -0,0 +1,18 @@
+{% extends 'base.html' %}
+
+{% block title %}Supprimer la commande groupée{% endblock %}
+
+{% block content %}
+
+ {% block content_title %}Supprimer la commande groupée{% endblock %}
+
+
+
Voulez-vous vraiment supprimer la commande groupée {{ grouped_order }} définitivement ?
+
Cela supprimera toutes les commandes des participants et tous les produits de la commande.
+
+
+{% endblock %}
diff --git a/la_chariotte/order/templates/order/grouped_order_overview.html b/la_chariotte/order/templates/order/grouped_order_overview.html
index 1a78d96..1d16f53 100644
--- a/la_chariotte/order/templates/order/grouped_order_overview.html
+++ b/la_chariotte/order/templates/order/grouped_order_overview.html
@@ -32,7 +32,11 @@
diff --git a/la_chariotte/order/tests/test_views.py b/la_chariotte/order/tests/test_views.py
index 1227d32..a5012fd 100644
--- a/la_chariotte/order/tests/test_views.py
+++ b/la_chariotte/order/tests/test_views.py
@@ -1203,6 +1203,91 @@ class TestGroupedOrderAddItemsView:
assert grouped_order.item_set.count() == 1
+class TestGroupedOrderDeleteView:
+ def test_delete_grouped_order(self, client_log):
+ """The orga of the GO deletes it.
+ The GO and related Order, OrderAuthor, OrderedItems, Items are deleted."""
+ 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
+
+ # get the delete view
+ delete_view_url = reverse(
+ "order:delete_grouped_order", kwargs={"pk": grouped_order.pk}
+ )
+ response = client_log.get(delete_view_url)
+ assert response.status_code == 200
+
+ # post the delete view
+ response = client_log.post(delete_view_url)
+ assert response.status_code == 302
+ assert response.url == reverse("order:index")
+
+ # check everything is deleted
+ assert models.GroupedOrder.objects.count() == 0
+ assert models.Order.objects.count() == 0
+ assert models.OrderedItem.objects.count() == 0
+ assert models.OrderAuthor.objects.count() == 0
+ assert models.Item.objects.count() == 0
+
+ def test_delete_grouped_order__not_orga(self, client_log, other_user):
+ """A user that is not orga gets or posts the delete 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 delete view
+ delete_view_url = reverse(
+ "order:delete_grouped_order", kwargs={"pk": grouped_order.pk}
+ )
+ response = client_log.get(delete_view_url)
+ assert response.status_code == 403
+
+ # post the delete view
+ response = client_log.post(delete_view_url)
+ assert response.status_code == 403
+
+ assert models.GroupedOrder.objects.count() == 1
+
+ def test_delete_grouped_order__anonymous(self, client, other_user):
+ """An anonymous user gets the delete 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 delete view
+ delete_view_url = reverse(
+ "order:delete_grouped_order", kwargs={"pk": grouped_order.pk}
+ )
+ response = client.get(delete_view_url)
+ assert response.status_code == 302
+ assert response.url == f"{reverse('accounts:login')}?next={delete_view_url}"
+
+ # post the delete view
+ response = client.post(delete_view_url)
+ assert response.status_code == 302
+ assert response.url == f"{reverse('accounts:login')}?next={delete_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."""
diff --git a/la_chariotte/order/urls.py b/la_chariotte/order/urls.py
index 33dda0e..f31d2f8 100644
--- a/la_chariotte/order/urls.py
+++ b/la_chariotte/order/urls.py
@@ -30,6 +30,11 @@ urlpatterns = [
views.GroupedOrderUpdateView.as_view(),
name="update_grouped_order",
),
+ path(
+ "