From 32e6a7d3a57b2287d55e8b8efa4e8cb7643b1720 Mon Sep 17 00:00:00 2001 From: Claude Paroz Date: Fri, 6 Feb 2015 23:25:15 +0100 Subject: Replaced hardcoded URLs in admin_* tests Refs #15779. This will allow easier admin URL changes, when needed. Thanks Simon Charette for the review. --- tests/admin_inlines/tests.py | 90 +++++++++++++++++++++++--------------------- 1 file changed, 47 insertions(+), 43 deletions(-) (limited to 'tests/admin_inlines') diff --git a/tests/admin_inlines/tests.py b/tests/admin_inlines/tests.py index 78889be30e..bad1508948 100644 --- a/tests/admin_inlines/tests.py +++ b/tests/admin_inlines/tests.py @@ -7,6 +7,7 @@ from django.contrib.admin.helpers import InlineAdminForm from django.contrib.admin.tests import AdminSeleniumWebDriverTestCase from django.contrib.auth.models import Permission, User from django.contrib.contenttypes.models import ContentType +from django.core.urlresolvers import reverse from django.test import RequestFactory, TestCase, override_settings from django.utils.encoding import force_text @@ -31,7 +32,6 @@ class TestInline(TestCase): holder = Holder(dummy=13) holder.save() Inner(dummy=42, holder=holder).save() - self.change_url = '/admin/admin_inlines/holder/%i/' % holder.id result = self.client.login(username='super', password='secret') self.assertEqual(result, True) @@ -41,7 +41,10 @@ class TestInline(TestCase): """ can_delete should be passed to inlineformset factory. """ - response = self.client.get(self.change_url) + holder = Holder.objects.get(dummy=13) + response = self.client.get( + reverse('admin:admin_inlines_holder_change', args=(holder.id,)) + ) inner_formset = response.context['inline_admin_formsets'][0].formset expected = InnerInline.can_delete actual = inner_formset.can_delete @@ -51,13 +54,14 @@ class TestInline(TestCase): """Bug #13174.""" holder = Holder.objects.create(dummy=42) Inner.objects.create(holder=holder, dummy=42, readonly='') - response = self.client.get('/admin/admin_inlines/holder/%i/' - % holder.id) + response = self.client.get( + reverse('admin:admin_inlines_holder_change', args=(holder.id,)) + ) self.assertContains(response, '') def test_many_to_many_inlines(self): "Autogenerated many-to-many inlines are displayed correctly (#13407)" - response = self.client.get('/admin/admin_inlines/author/add/') + response = self.client.get(reverse('admin:admin_inlines_author_add')) # The heading for the m2m inline block uses the right text self.assertContains(response, '

Author-book relationships

') # The "add another" label is correct @@ -78,7 +82,7 @@ class TestInline(TestCase): 'max_weight': 0, 'shoppingweakness_set-0-item': item.id, } - response = self.client.post('/admin/admin_inlines/fashionista/add/', data) + response = self.client.post(reverse('admin:admin_inlines_fashionista_add'), data) self.assertEqual(response.status_code, 302) self.assertEqual(len(Fashionista.objects.filter(person__firstname='Imelda')), 1) @@ -95,7 +99,7 @@ class TestInline(TestCase): 'title_set-0-title1': 'a title', 'title_set-0-title2': 'a different title', } - response = self.client.post('/admin/admin_inlines/titlecollection/add/', data) + response = self.client.post(reverse('admin:admin_inlines_titlecollection_add'), data) # Here colspan is "4": two fields (title1 and title2), one hidden field and the delete checkbox. self.assertContains(response, '') @@ -103,14 +107,14 @@ class TestInline(TestCase): """Admin inline `readonly_field` shouldn't invoke parent ModelAdmin callable""" # Identically named callable isn't present in the parent ModelAdmin, # rendering of the add view shouldn't explode - response = self.client.get('/admin/admin_inlines/novel/add/') + response = self.client.get(reverse('admin:admin_inlines_novel_add')) self.assertEqual(response.status_code, 200) # View should have the child inlines section self.assertContains(response, '
') def test_callable_lookup(self): """Admin inline should invoke local callable when its name is listed in readonly_fields""" - response = self.client.get('/admin/admin_inlines/poll/add/') + response = self.client.get(reverse('admin:admin_inlines_poll_add')) self.assertEqual(response.status_code, 200) # Add parent object view should have the child inlines section self.assertContains(response, '
') @@ -124,11 +128,11 @@ class TestInline(TestCase): using both the stacked and tabular layouts. Ref #8190. """ - response = self.client.get('/admin/admin_inlines/holder4/add/') + response = self.client.get(reverse('admin:admin_inlines_holder4_add')) self.assertContains(response, '

Awesome stacked help text is awesome.

', 4) self.assertContains(response, '(Awesome tabular help text is awesome.)', 1) # ReadOnly fields - response = self.client.get('/admin/admin_inlines/capofamiglia/add/') + response = self.client.get(reverse('admin:admin_inlines_capofamiglia_add')) self.assertContains(response, '(Help text for ReadOnlyInline)', 1) def test_inline_hidden_field_no_column(self): @@ -136,7 +140,7 @@ class TestInline(TestCase): parent = SomeParentModel.objects.create(name='a') SomeChildModel.objects.create(name='b', position='0', parent=parent) SomeChildModel.objects.create(name='c', position='1', parent=parent) - response = self.client.get('/admin/admin_inlines/someparentmodel/%s/' % parent.pk) + response = self.client.get(reverse('admin:admin_inlines_someparentmodel_change', args=(parent.pk,))) self.assertNotContains(response, '') self.assertContains(response, ( '', html=True) @@ -173,7 +177,7 @@ class TestInline(TestCase): """ holder = Holder.objects.create(pk=123456789, dummy=42) inner = Inner.objects.create(pk=987654321, holder=holder, dummy=42, readonly='') - response = self.client.get('/admin/admin_inlines/holder/%i/' % holder.id) + response = self.client.get(reverse('admin:admin_inlines_holder_change', args=(holder.id,))) inner_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(inner).pk, inner.pk) self.assertContains(response, inner_shortcut) @@ -185,7 +189,7 @@ class TestInline(TestCase): parent = ParentModelWithCustomPk.objects.create(my_own_pk="foo", name="Foo") child1 = ChildModel1.objects.create(my_own_pk="bar", name="Bar", parent=parent) child2 = ChildModel2.objects.create(my_own_pk="baz", name="Baz", parent=parent) - response = self.client.get('/admin/admin_inlines/parentmodelwithcustompk/foo/') + response = self.client.get(reverse('admin:admin_inlines_parentmodelwithcustompk_change', args=('foo',))) child1_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(child1).pk, child1.pk) child2_shortcut = 'r/%s/%s/' % (ContentType.objects.get_for_model(child2).pk, child2.pk) self.assertContains(response, child1_shortcut) @@ -204,7 +208,7 @@ class TestInline(TestCase): 'sighting_set-0-place': 'Zone 51', '_save': 'Save', } - response = self.client.post('/admin/admin_inlines/extraterrestrial/add/', data) + response = self.client.post(reverse('admin:admin_inlines_extraterrestrial_add'), data) self.assertEqual(response.status_code, 302) self.assertEqual(Sighting.objects.filter(et__name='Martian').count(), 1) @@ -218,11 +222,11 @@ class TestInline(TestCase): # The total number of forms will remain the same in either case total_forms_hidden = '' - response = self.client.get('/admin/admin_inlines/binarytree/add/') + response = self.client.get(reverse('admin:admin_inlines_binarytree_add')) self.assertContains(response, max_forms_input % 3) self.assertContains(response, total_forms_hidden) - response = self.client.get("/admin/admin_inlines/binarytree/%d/" % bt_head.id) + response = self.client.get(reverse('admin:admin_inlines_binarytree_change', args=(bt_head.id,))) self.assertContains(response, max_forms_input % 2) self.assertContains(response, total_forms_hidden) @@ -241,7 +245,7 @@ class TestInline(TestCase): min_forms = '' total_forms = '' - request = self.factory.get('/admin/admin_inlines/binarytree/add/') + request = self.factory.get(reverse('admin:admin_inlines_binarytree_add')) request.user = User(username='super', is_superuser=True) response = modeladmin.changeform_view(request) self.assertContains(response, min_forms) @@ -269,20 +273,20 @@ class TestInline(TestCase): min_forms = '' total_forms = '' - request = self.factory.get('/admin/admin_inlines/binarytree/add/') + request = self.factory.get(reverse('admin:admin_inlines_binarytree_add')) request.user = User(username='super', is_superuser=True) response = modeladmin.changeform_view(request) self.assertContains(response, min_forms % 2) self.assertContains(response, total_forms % 5) - request = self.factory.get("/admin/admin_inlines/binarytree/%d/" % bt_head.id) + request = self.factory.get(reverse('admin:admin_inlines_binarytree_change', args=(bt_head.id,))) request.user = User(username='super', is_superuser=True) response = modeladmin.changeform_view(request, object_id=str(bt_head.id)) self.assertContains(response, min_forms % 5) self.assertContains(response, total_forms % 8) def test_inline_nonauto_noneditable_pk(self): - response = self.client.get('/admin/admin_inlines/author/add/') + response = self.client.get(reverse('admin:admin_inlines_author_add')) self.assertContains(response, '', html=True) @@ -291,7 +295,7 @@ class TestInline(TestCase): html=True) def test_inline_editable_pk(self): - response = self.client.get('/admin/admin_inlines/author/add/') + response = self.client.get(reverse('admin:admin_inlines_author_add')) self.assertContains(response, '', html=True, count=1) @@ -302,7 +306,7 @@ class TestInline(TestCase): def test_stacked_inline_edit_form_contains_has_original_class(self): holder = Holder.objects.create(dummy=1) holder.inner_set.create(dummy=1) - response = self.client.get('/admin/admin_inlines/holder/%s/' % holder.pk) + response = self.client.get(reverse('admin:admin_inlines_holder_change', args=(holder.pk,))) self.assertContains( response, '