summaryrefslogtreecommitdiff
path: root/tests/regressiontests/admin_views
diff options
context:
space:
mode:
authorJannis Leidel <jannis@leidel.info>2010-05-02 23:02:16 +0000
committerJannis Leidel <jannis@leidel.info>2010-05-02 23:02:16 +0000
commitcce32a9b0900210d524b80160209c3e2b5dfb156 (patch)
tree2c33a1d0deba4fd9e288f32f3bea55f3c32a894a /tests/regressiontests/admin_views
parentbcc9db82cec4af44491e9c831ab6830e7dceed54 (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.py77
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']