diff options
| author | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-06-18 13:07:28 -0700 |
|---|---|---|
| committer | Aymeric Augustin <aymeric.augustin@m4x.org> | 2013-06-18 13:07:28 -0700 |
| commit | 9da9b3eb0454fa3dea228b16c6e35b01db5eee69 (patch) | |
| tree | f894376d33a3576436bc333a1f07aeb0ae7d9a67 /tests | |
| parent | a01b1ee6881cc4ce6c8bee771bb5b463bc16dd77 (diff) | |
| parent | c86a9b63984f6692d478f6f70e3c78de4ec41814 (diff) | |
Merge pull request #1281 from loic/ticket6903
Fixed #6903 - Preserved admin changelist filters.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/admin_views/tests.py | 153 |
1 files changed, 153 insertions, 0 deletions
diff --git a/tests/admin_views/tests.py b/tests/admin_views/tests.py index 9a7ec7d331..44d56fd04a 100644 --- a/tests/admin_views/tests.py +++ b/tests/admin_views/tests.py @@ -4157,3 +4157,156 @@ class AdminUserMessageTest(TestCase): self.assertContains(response, '<li class="extra_tag info">Test tags</li>', html=True) + + +@override_settings(PASSWORD_HASHERS=('django.contrib.auth.hashers.SHA1PasswordHasher',)) +class AdminKeepChangeListFiltersTests(TestCase): + urls = "admin_views.urls" + fixtures = ['admin-views-users.xml'] + + def setUp(self): + self.client.login(username='super', password='secret') + + def tearDown(self): + self.client.logout() + + def get_changelist_filters_querystring(self): + return urlencode({ + 'is_superuser__exact': 0, + 'is_staff__exact': 0, + }) + + def get_preserved_filters_querystring(self): + return urlencode({ + '_changelist_filters': self.get_changelist_filters_querystring() + }) + + def get_sample_user_id(self): + return 104 + + def get_changelist_url(self): + return '%s?%s' % ( + reverse('admin:auth_user_changelist'), + self.get_changelist_filters_querystring(), + ) + + def get_add_url(self): + return '%s?%s' % ( + reverse('admin:auth_user_add'), + self.get_preserved_filters_querystring(), + ) + + def get_change_url(self, user_id=None): + if user_id is None: + user_id = self.get_sample_user_id() + return "%s?%s" % ( + reverse('admin:auth_user_change', args=(user_id,)), + self.get_preserved_filters_querystring(), + ) + + def get_history_url(self, user_id=None): + if user_id is None: + user_id = self.get_sample_user_id() + return "%s?%s" % ( + reverse('admin:auth_user_history', args=(user_id,)), + self.get_preserved_filters_querystring(), + ) + + def get_delete_url(self, user_id=None): + if user_id is None: + user_id = self.get_sample_user_id() + return "%s?%s" % ( + reverse('admin:auth_user_delete', args=(user_id,)), + self.get_preserved_filters_querystring(), + ) + + def test_changelist_view(self): + response = self.client.get(self.get_changelist_url()) + self.assertEqual(response.status_code, 200) + + # Check the `change_view` link has the correct querystring. + detail_link = """<a href="%s">joepublic</a>""" % self.get_change_url() + self.assertContains(response, detail_link, count=1) + + def test_change_view(self): + # Get the `change_view`. + response = self.client.get(self.get_change_url()) + self.assertEqual(response.status_code, 200) + + # Check the form action. + form_action = """<form enctype="multipart/form-data" action="?%s" method="post" id="user_form">""" % self.get_preserved_filters_querystring() + self.assertContains(response, form_action, count=1) + + # Check the history link. + history_link = """<a href="%s" class="historylink">History</a>""" % self.get_history_url() + self.assertContains(response, history_link, count=1) + + # Check the delete link. + delete_link = """<a href="%s" class="deletelink">Delete</a>""" % (self.get_delete_url()) + self.assertContains(response, delete_link, count=1) + + # Test redirect on "Save". + post_data = { + 'username': 'joepublic', + 'last_login_0': '2007-05-30', + 'last_login_1': '13:20:10', + 'date_joined_0': '2007-05-30', + 'date_joined_1': '13:20:10', + } + + post_data['_save'] = 1 + response = self.client.post(self.get_change_url(), data=post_data) + self.assertRedirects(response, self.get_changelist_url()) + post_data.pop('_save') + + # Test redirect on "Save and continue". + post_data['_continue'] = 1 + response = self.client.post(self.get_change_url(), data=post_data) + self.assertRedirects(response, self.get_change_url()) + post_data.pop('_continue') + + # Test redirect on "Save and add new". + post_data['_addanother'] = 1 + response = self.client.post(self.get_change_url(), data=post_data) + self.assertRedirects(response, self.get_add_url()) + post_data.pop('_addanother') + + def test_add_view(self): + # Get the `add_view`. + response = self.client.get(self.get_add_url()) + self.assertEqual(response.status_code, 200) + + # Check the form action. + form_action = """<form enctype="multipart/form-data" action="?%s" method="post" id="user_form">""" % self.get_preserved_filters_querystring() + self.assertContains(response, form_action, count=1) + + # Test redirect on "Save". + post_data = { + 'username': 'dummy', + 'password1': 'test', + 'password2': 'test', + } + + post_data['_save'] = 1 + response = self.client.post(self.get_add_url(), data=post_data) + self.assertRedirects(response, self.get_change_url(self.get_sample_user_id() + 1)) + post_data.pop('_save') + + # Test redirect on "Save and continue". + post_data['username'] = 'dummy2' + post_data['_continue'] = 1 + response = self.client.post(self.get_add_url(), data=post_data) + self.assertRedirects(response, self.get_change_url(self.get_sample_user_id() + 2)) + post_data.pop('_continue') + + # Test redirect on "Save and add new". + post_data['username'] = 'dummy3' + post_data['_addanother'] = 1 + response = self.client.post(self.get_add_url(), data=post_data) + self.assertRedirects(response, self.get_add_url()) + post_data.pop('_addanother') + + def test_delete_view(self): + # Test redirect on "Delete". + response = self.client.post(self.get_delete_url(), {'post': 'yes'}) + self.assertRedirects(response, self.get_changelist_url()) |
