Refs: #12286 -- Add a test to verify that a proxied model's table is created in

a situation where it did not used to be.


git-svn-id: http://code.djangoproject.com/svn/django/trunk@12828 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Karen Tracey 2010-03-21 20:29:11 +00:00
parent f88c2f16e8
commit 72ea8fc4eb
7 changed files with 45 additions and 0 deletions

View File

@ -0,0 +1,5 @@
from app2.models import NiceModel
class ProxyModel(NiceModel):
class Meta:
proxy = True

View File

@ -0,0 +1,4 @@
from django.db import models
class NiceModel(models.Model):
pass

View File

@ -0,0 +1,36 @@
"""
XX. Proxy model inheritance
Proxy model inheritance across apps can result in syncdb not creating the table
for the proxied model (as described in #12286). This test creates two dummy
apps and calls syncdb, then verifies that the table has been created.
"""
import os
import sys
from django.conf import settings, Settings
from django.core.management import call_command
from django.db.models.loading import load_app
from django.test import TestCase
class ProxyModelInheritanceTests(TestCase):
def setUp(self):
self.old_sys_path = sys.path
sys.path.append(os.path.dirname(os.path.abspath(__file__)))
self.old_installed_apps = settings.INSTALLED_APPS
settings.INSTALLED_APPS = ('app1', 'app2')
map(load_app, settings.INSTALLED_APPS)
call_command('syncdb', verbosity=0)
from app1.models import ProxyModel
from app2.models import NiceModel
global ProxyModel, NiceModel
def tearDown(self):
settings.INSTALLED_APPS = self.old_installed_apps
sys.path = self.old_sys_path
def test_table_exists(self):
self.assertEquals(NiceModel.objects.all().count(), 0)
self.assertEquals(ProxyModel.objects.all().count(), 0)