From 6f41e6cfdbafb997ee2638bd20b70dff14251f88 Mon Sep 17 00:00:00 2001 From: Thu Trang Pham Date: Sat, 20 Feb 2021 08:14:31 -0800 Subject: [PATCH] Update tests and remove print stmt (#14) Co-authored-by: Thu Trang Pham --- admin_confirm/admin.py | 1 - .../test_confirm_change_and_add_m2m_field.py | 52 +++++++++++++++++-- 2 files changed, 49 insertions(+), 4 deletions(-) diff --git a/admin_confirm/admin.py b/admin_confirm/admin.py index 0ca24c4..a2c0052 100644 --- a/admin_confirm/admin.py +++ b/admin_confirm/admin.py @@ -135,7 +135,6 @@ class AdminConfirmMixin: if initial_value != new_value: changed_data[name] = [initial_value, new_value] - print(changed_data) return changed_data def _get_form_data(self, request): diff --git a/admin_confirm/tests/test_confirm_change_and_add_m2m_field.py b/admin_confirm/tests/test_confirm_change_and_add_m2m_field.py index aa4de11..33f4b4b 100644 --- a/admin_confirm/tests/test_confirm_change_and_add_m2m_field.py +++ b/admin_confirm/tests/test_confirm_change_and_add_m2m_field.py @@ -34,7 +34,12 @@ class TestConfirmChangeAndAddM2MField(TestCase): ShoppingMallAdmin.confirmation_fields = ["shops"] shops = [ShopFactory() for i in range(3)] - data = {"name": "name", "shops": [s.id for s in shops], "_confirm_add": True} + data = { + "name": "name", + "shops": [s.id for s in shops], + "_confirm_add": True, + "_save": True, + } response = self.client.post(reverse("admin:market_shoppingmall_add"), data) # Ensure not redirected (confirmation page does not redirect) @@ -51,10 +56,27 @@ class TestConfirmChangeAndAddM2MField(TestCase): f'', response.rendered_content, ) + # Submit should conserve the save action + self.assertIn( + '', + response.rendered_content, + ) + # There should not be _confirm_add sent in the form on confirmaiton page + self.assertNotIn("_confirm_add", response.rendered_content) # Should not have been added yet self.assertEqual(ShoppingMall.objects.count(), 0) + # Confirmation page would not have the _confirm_add sent on submit + del data["_confirm_add"] + # Selecting to "Yes, I'm sure" on the confirmation page + # Would post to the same endpoint + response = self.client.post(reverse("admin:market_shoppingmall_add"), data) + self.assertEqual(response.status_code, 302) + self.assertEqual(response.url, "/admin/market/shoppingmall/") + self.assertEqual(ShoppingMall.objects.count(), 1) + self.assertEqual(ShoppingMall.objects.all().first().shops.count(), 3) + def test_m2m_field_post_change_with_confirm_change(self): shops = [ShopFactory() for i in range(10)] shopping_mall = ShoppingMall.objects.create(name="My Mall") @@ -62,11 +84,11 @@ class TestConfirmChangeAndAddM2MField(TestCase): # Currently ShoppingMall configured with confirmation_fields = ['name'] data = { "name": "Not My Mall", - "shops": "1", + "shops": ["1", "2"], "id": shopping_mall.id, "_confirm_change": True, "csrfmiddlewaretoken": "fake token", - "_save": True, + "_continue": True, } response = self.client.post( f"/admin/market/shoppingmall/{shopping_mall.id}/change/", data @@ -82,6 +104,7 @@ class TestConfirmChangeAndAddM2MField(TestCase): form_data = { "name": "Not My Mall", "shops": "1", + "shops": "2", "id": str(shopping_mall.id), } @@ -90,11 +113,34 @@ class TestConfirmChangeAndAddM2MField(TestCase): f'', response.rendered_content, ) + # Submit should conserve the save action + self.assertIn( + '', + response.rendered_content, + ) + # There should not be _confirm_change sent in the form on confirmaiton page + self.assertNotIn("_confirm_change", response.rendered_content) # Hasn't changed item yet shopping_mall.refresh_from_db() self.assertEqual(shopping_mall.name, "My Mall") + # Selecting to "Yes, I'm sure" on the confirmation page + # Would post to the same endpoint + del data["_confirm_change"] + response = self.client.post( + f"/admin/market/shoppingmall/{shopping_mall.id}/change/", data + ) + # will show the change page for this shopping_mall + self.assertEqual(response.status_code, 302) + self.assertEqual( + response.url, f"/admin/market/shoppingmall/{shopping_mall.id}/change/" + ) + # Should not be the confirmation page, we already confirmed change + self.assertNotEqual(response.templates, expected_templates) + self.assertEqual(ShoppingMall.objects.count(), 1) + self.assertEqual(ShoppingMall.objects.all().first().shops.count(), 2) + def test_m2m_field_post_change_with_confirm_change_multiple_selected(self): shops = [ShopFactory() for i in range(10)] shopping_mall = ShoppingMall.objects.create(name="My Mall")