[1.2.X] Migrated admin_inlines doctest. Thanks to Sebastian Hillig.

Backport of r13880 from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.2.X@13900 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Russell Keith-Magee 2010-09-27 15:25:57 +00:00
parent bb857bf4d4
commit 3640abd976
2 changed files with 21 additions and 22 deletions

View File

@ -123,25 +123,3 @@ class InlineWeakness(admin.TabularInline):
extra = 1
admin.site.register(Fashionista, inlines=[InlineWeakness])
__test__ = {'API_TESTS': """
# Regression test for #9362
>>> sally = Teacher.objects.create(name='Sally')
>>> john = Parent.objects.create(name='John')
>>> joe = Child.objects.create(name='Joe', teacher=sally, parent=john)
The problem depends only on InlineAdminForm and its "original" argument, so
we can safely set the other arguments to None/{}. We just need to check that
the content_type argument of Child isn't altered by the internals of the
inline form.
>>> from django.contrib.admin.helpers import InlineAdminForm
>>> iaf = InlineAdminForm(None, None, {}, {}, joe)
>>> iaf.original
<Child: I am Joe, a child of John>
"""
}

View File

@ -1,9 +1,13 @@
from django.test import TestCase
from django.contrib.admin.helpers import InlineAdminForm
from django.contrib.contenttypes.models import ContentType
# local test models
from models import Holder, Inner, InnerInline
from models import Holder2, Inner2, Holder3, Inner3
from models import Person, OutfitItem, Fashionista
from models import Teacher, Parent, Child
class TestInline(TestCase):
fixtures = ['admin-views-users.xml']
@ -100,3 +104,20 @@ class TestInlineMedia(TestCase):
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):
def test_immutable_content_type(self):
"""Regression for #9362
The problem depends only on InlineAdminForm and its "original"
argument, so we can safely set the other arguments to None/{}. We just
need to check that the content_type argument of Child isn't altered by
the internals of the inline form."""
sally = Teacher.objects.create(name='Sally')
john = Parent.objects.create(name='John')
joe = Child.objects.create(name='Joe', teacher=sally, parent=john)
iaf = InlineAdminForm(None, None, {}, {}, joe)
parent_ct = ContentType.objects.get_for_model(Parent)
self.assertEqual(iaf.original.content_type, parent_ct)