diff options
| author | Jannis Leidel <jannis@leidel.info> | 2010-05-02 23:02:16 +0000 |
|---|---|---|
| committer | Jannis Leidel <jannis@leidel.info> | 2010-05-02 23:02:16 +0000 |
| commit | cce32a9b0900210d524b80160209c3e2b5dfb156 (patch) | |
| tree | 2c33a1d0deba4fd9e288f32f3bea55f3c32a894a /tests/regressiontests/admin_views | |
| parent | bcc9db82cec4af44491e9c831ab6830e7dceed54 (diff) | |
Fixed #13166 - Added JavaScript warnings to admin changelist to help against ambiguity between action and list_editable form submission. Thanks to blinkylights and aaugustin for the report and initial patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@13072 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'tests/regressiontests/admin_views')
| -rw-r--r-- | tests/regressiontests/admin_views/tests.py | 77 |
1 files changed, 76 insertions, 1 deletions
diff --git a/tests/regressiontests/admin_views/tests.py b/tests/regressiontests/admin_views/tests.py index c676555fa7..a516cf1b64 100644 --- a/tests/regressiontests/admin_views/tests.py +++ b/tests/regressiontests/admin_views/tests.py @@ -1120,6 +1120,8 @@ class AdminViewListEditable(TestCase): "form-2-alive": "checked", "form-2-gender": "1", "form-2-id": "3", + + "_save": "Save", } response = self.client.post('/test_admin/admin/admin_views/person/', data, follow=True) @@ -1140,6 +1142,8 @@ class AdminViewListEditable(TestCase): "form-2-alive": "checked", "form-2-gender": "1", "form-2-id": "3", + + "_save": "Save", } self.client.post('/test_admin/admin/admin_views/person/', data) @@ -1159,6 +1163,8 @@ class AdminViewListEditable(TestCase): "form-1-id": "3", "form-1-gender": "1", "form-1-alive": "checked", + + "_save": "Save", } self.client.post('/test_admin/admin/admin_views/person/?gender__exact=1', data) @@ -1171,7 +1177,9 @@ class AdminViewListEditable(TestCase): "form-MAX_NUM_FORMS": "0", "form-0-id": "1", - "form-0-gender": "1" + "form-0-gender": "1", + + "_save": "Save", } self.client.post('/test_admin/admin/admin_views/person/?q=mauchly', data) @@ -1187,6 +1195,10 @@ class AdminViewListEditable(TestCase): "form-0-id": "2", "form-0-alive": "1", "form-0-gender": "2", + + # Ensure that the form processing understands this as a list_editable "Save" + # and not an action "Go". + "_save": "Save", } response = self.client.post('/test_admin/admin/admin_views/person/', data) self.assertContains(response, "Grace is not a Zombie") @@ -1201,6 +1213,8 @@ class AdminViewListEditable(TestCase): "form-0-id": "2", "form-0-alive": "1", "form-0-gender": "2", + + "_save": "Save", } response = self.client.post('/test_admin/admin/admin_views/person/', data) non_form_errors = response.context['cl'].formset.non_form_errors() @@ -1236,6 +1250,10 @@ class AdminViewListEditable(TestCase): "form-3-order": "0", "form-3-id": "4", "form-3-collector": "1", + + # Ensure that the form processing understands this as a list_editable "Save" + # and not an action "Go". + "_save": "Save", } response = self.client.post('/test_admin/admin/admin_views/category/', data) # Successful post will redirect @@ -1247,6 +1265,63 @@ class AdminViewListEditable(TestCase): self.failUnlessEqual(Category.objects.get(id=3).order, 1) self.failUnlessEqual(Category.objects.get(id=4).order, 0) + def test_list_editable_action_submit(self): + # List editable changes should not be executed if the action "Go" button is + # used to submit the form. + data = { + "form-TOTAL_FORMS": "3", + "form-INITIAL_FORMS": "3", + "form-MAX_NUM_FORMS": "0", + + "form-0-gender": "1", + "form-0-id": "1", + + "form-1-gender": "2", + "form-1-id": "2", + + "form-2-alive": "checked", + "form-2-gender": "1", + "form-2-id": "3", + + "index": "0", + "_selected_action": [u'3'], + "action": [u'', u'delete_selected'], + } + self.client.post('/test_admin/admin/admin_views/person/', data) + + self.failUnlessEqual(Person.objects.get(name="John Mauchly").alive, True) + self.failUnlessEqual(Person.objects.get(name="Grace Hopper").gender, 1) + + def test_list_editable_action_choices(self): + # List editable changes should be executed if the "Save" button is + # used to submit the form - any action choices should be ignored. + data = { + "form-TOTAL_FORMS": "3", + "form-INITIAL_FORMS": "3", + "form-MAX_NUM_FORMS": "0", + + "form-0-gender": "1", + "form-0-id": "1", + + "form-1-gender": "2", + "form-1-id": "2", + + "form-2-alive": "checked", + "form-2-gender": "1", + "form-2-id": "3", + + "_save": "Save", + "_selected_action": [u'1'], + "action": [u'', u'delete_selected'], + } + self.client.post('/test_admin/admin/admin_views/person/', data) + + self.failUnlessEqual(Person.objects.get(name="John Mauchly").alive, False) + self.failUnlessEqual(Person.objects.get(name="Grace Hopper").gender, 2) + + + + class AdminSearchTest(TestCase): fixtures = ['admin-views-users','multiple-child-classes'] |
