mirror of
https://github.com/django/django.git
synced 2025-10-31 09:41:08 +00:00
Improved test isolation of the admin tests and assigned custom admin sites to
prevent test order dependant failures. This involves introducing usage of `TestCase.urls` and implementing proper admin.py modules for some of the test apps. Thanks Florian Apolloner for finding the issue and contributing the patch. Refs #15294 (it solves these problems so the fix for that ticket we are going to commit doesn't introduce obscure and hard to reproduce test failures when running the Django test suite.) git-svn-id: http://code.djangoproject.com/svn/django/trunk@16856 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
@@ -3,18 +3,20 @@ from django.contrib.contenttypes.models import ContentType
|
||||
from django.test import TestCase
|
||||
|
||||
# local test models
|
||||
from models import (Holder, Inner, InnerInline, Holder2, Inner2, Holder3,
|
||||
from models import (Holder, Inner, Holder2, Inner2, Holder3,
|
||||
Inner3, Person, OutfitItem, Fashionista, Teacher, Parent, Child)
|
||||
from admin import InnerInline
|
||||
|
||||
|
||||
class TestInline(TestCase):
|
||||
urls = "regressiontests.admin_inlines.urls"
|
||||
fixtures = ['admin-views-users.xml']
|
||||
|
||||
def setUp(self):
|
||||
holder = Holder(dummy=13)
|
||||
holder.save()
|
||||
Inner(dummy=42, holder=holder).save()
|
||||
self.change_url = '/test_admin/admin/admin_inlines/holder/%i/' % holder.id
|
||||
self.change_url = '/admin/admin_inlines/holder/%i/' % holder.id
|
||||
|
||||
result = self.client.login(username='super', password='secret')
|
||||
self.assertEqual(result, True)
|
||||
@@ -36,13 +38,13 @@ class TestInline(TestCase):
|
||||
"""Bug #13174."""
|
||||
holder = Holder.objects.create(dummy=42)
|
||||
inner = Inner.objects.create(holder=holder, dummy=42, readonly='')
|
||||
response = self.client.get('/test_admin/admin/admin_inlines/holder/%i/'
|
||||
response = self.client.get('/admin/admin_inlines/holder/%i/'
|
||||
% holder.id)
|
||||
self.assertContains(response, '<label>Inner readonly label:</label>')
|
||||
|
||||
def test_many_to_many_inlines(self):
|
||||
"Autogenerated many-to-many inlines are displayed correctly (#13407)"
|
||||
response = self.client.get('/test_admin/admin/admin_inlines/author/add/')
|
||||
response = self.client.get('/admin/admin_inlines/author/add/')
|
||||
# The heading for the m2m inline block uses the right text
|
||||
self.assertContains(response, '<h2>Author-book relationships</h2>')
|
||||
# The "add another" label is correct
|
||||
@@ -63,7 +65,7 @@ class TestInline(TestCase):
|
||||
'max_weight': 0,
|
||||
'shoppingweakness_set-0-item': item.id,
|
||||
}
|
||||
response = self.client.post('/test_admin/admin/admin_inlines/fashionista/add/', data)
|
||||
response = self.client.post('/admin/admin_inlines/fashionista/add/', data)
|
||||
self.assertEqual(response.status_code, 302)
|
||||
self.assertEqual(len(Fashionista.objects.filter(person__firstname='Imelda')), 1)
|
||||
|
||||
@@ -80,7 +82,7 @@ class TestInline(TestCase):
|
||||
'title_set-0-title1': 'a title',
|
||||
'title_set-0-title2': 'a different title',
|
||||
}
|
||||
response = self.client.post('/test_admin/admin/admin_inlines/titlecollection/add/', data)
|
||||
response = self.client.post('/admin/admin_inlines/titlecollection/add/', data)
|
||||
# Here colspan is "4": two fields (title1 and title2), one hidden field and the delete checkbock.
|
||||
self.assertContains(response, '<tr><td colspan="4"><ul class="errorlist"><li>The two titles must be the same</li></ul></td></tr>')
|
||||
|
||||
@@ -88,14 +90,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('/test_admin/admin/admin_inlines/novel/add/')
|
||||
response = self.client.get('/admin/admin_inlines/novel/add/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# View should have the child inlines section
|
||||
self.assertContains(response, '<div class="inline-group" id="chapter_set-group">')
|
||||
|
||||
def test_callable_lookup(self):
|
||||
"""Admin inline should invoke local callable when its name is listed in readonly_fields"""
|
||||
response = self.client.get('/test_admin/admin/admin_inlines/poll/add/')
|
||||
response = self.client.get('/admin/admin_inlines/poll/add/')
|
||||
self.assertEqual(response.status_code, 200)
|
||||
# Add parent object view should have the child inlines section
|
||||
self.assertContains(response, '<div class="inline-group" id="question_set-group">')
|
||||
@@ -109,11 +111,12 @@ class TestInline(TestCase):
|
||||
using both the stacked and tabular layouts.
|
||||
Ref #8190.
|
||||
"""
|
||||
response = self.client.get('/test_admin/admin/admin_inlines/holder4/add/')
|
||||
response = self.client.get('/admin/admin_inlines/holder4/add/')
|
||||
self.assertContains(response, '<p class="help">Awesome stacked help text is awesome.</p>', 4)
|
||||
self.assertContains(response, '<img src="/static/admin/img/icon-unknown.gif" class="help help-tooltip" width="10" height="10" alt="(Awesome tabular help text is awesome.)" title="Awesome tabular help text is awesome." />', 1)
|
||||
|
||||
class TestInlineMedia(TestCase):
|
||||
urls = "regressiontests.admin_inlines.urls"
|
||||
fixtures = ['admin-views-users.xml']
|
||||
|
||||
def setUp(self):
|
||||
@@ -128,7 +131,7 @@ class TestInlineMedia(TestCase):
|
||||
holder = Holder(dummy=13)
|
||||
holder.save()
|
||||
Inner(dummy=42, holder=holder).save()
|
||||
change_url = '/test_admin/admin/admin_inlines/holder/%i/' % holder.id
|
||||
change_url = '/admin/admin_inlines/holder/%i/' % holder.id
|
||||
response = self.client.get(change_url)
|
||||
self.assertContains(response, 'my_awesome_admin_scripts.js')
|
||||
|
||||
@@ -136,7 +139,7 @@ class TestInlineMedia(TestCase):
|
||||
holder = Holder3(dummy=13)
|
||||
holder.save()
|
||||
Inner3(dummy=42, holder=holder).save()
|
||||
change_url = '/test_admin/admin/admin_inlines/holder3/%i/' % holder.id
|
||||
change_url = '/admin/admin_inlines/holder3/%i/' % holder.id
|
||||
response = self.client.get(change_url)
|
||||
self.assertContains(response, 'my_awesome_inline_scripts.js')
|
||||
|
||||
@@ -144,12 +147,13 @@ class TestInlineMedia(TestCase):
|
||||
holder = Holder2(dummy=13)
|
||||
holder.save()
|
||||
Inner2(dummy=42, holder=holder).save()
|
||||
change_url = '/test_admin/admin/admin_inlines/holder2/%i/' % holder.id
|
||||
change_url = '/admin/admin_inlines/holder2/%i/' % holder.id
|
||||
response = self.client.get(change_url)
|
||||
self.assertContains(response, 'my_awesome_admin_scripts.js')
|
||||
self.assertContains(response, 'my_awesome_inline_scripts.js')
|
||||
|
||||
class TestInlineAdminForm(TestCase):
|
||||
urls = "regressiontests.admin_inlines.urls"
|
||||
|
||||
def test_immutable_content_type(self):
|
||||
"""Regression for #9362
|
||||
|
||||
Reference in New Issue
Block a user