duplicate grouped order part 3

This commit is contained in:
Laetitia Getti 2023-07-06 16:32:16 +02:00 committed by Laetitia Getti
parent 0bf680c74b
commit 604ba77842

View file

@ -1288,6 +1288,90 @@ class TestGroupedOrderDeleteView:
assert models.GroupedOrder.objects.count() == 1 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: class TestItemCreateView:
def test_create_item(self, client_log): def test_create_item(self, client_log):
"""A user that has created a grouped order adds an item to it.""" """A user that has created a grouped order adds an item to it."""