Fixed #24812 -- Fixed app registry RuntimeWarnings in schema and migrations tests.

This commit is contained in:
Tim Graham 2015-05-18 09:09:13 -04:00
parent e4f0e5a981
commit f5da438072
2 changed files with 19 additions and 3 deletions

View File

@ -396,17 +396,22 @@ class StateTests(TestCase):
#24573 - Adding relations to existing models should reload the #24573 - Adding relations to existing models should reload the
referenced models too. referenced models too.
""" """
new_apps = Apps()
class A(models.Model): class A(models.Model):
class Meta: class Meta:
app_label = 'something' app_label = 'something'
apps = new_apps
class B(A): class B(A):
class Meta: class Meta:
app_label = 'something' app_label = 'something'
apps = new_apps
class C(models.Model): class C(models.Model):
class Meta: class Meta:
app_label = 'something' app_label = 'something'
apps = new_apps
project_state = ProjectState() project_state = ProjectState()
project_state.add_model(ModelState.from_model(A)) project_state.add_model(ModelState.from_model(A))
@ -447,15 +452,19 @@ class StateTests(TestCase):
#24225 - Tests that relations between models are updated while #24225 - Tests that relations between models are updated while
remaining the relations and references for models of an old state. remaining the relations and references for models of an old state.
""" """
new_apps = Apps()
class A(models.Model): class A(models.Model):
class Meta: class Meta:
app_label = "something" app_label = "something"
apps = new_apps
class B(models.Model): class B(models.Model):
to_a = models.ForeignKey(A) to_a = models.ForeignKey(A)
class Meta: class Meta:
app_label = "something" app_label = "something"
apps = new_apps
def get_model_a(state): def get_model_a(state):
return [mod for mod in state.apps.get_models() if mod._meta.model_name == 'a'][0] return [mod for mod in state.apps.get_models() if mod._meta.model_name == 'a'][0]

View File

@ -765,8 +765,10 @@ class SchemaTests(TransactionTestCase):
app_label = 'schema' app_label = 'schema'
apps = new_apps apps = new_apps
self.local_models = [LocalBookWithM2M] self.local_models = [
LocalBookWithM2M,
LocalBookWithM2M._meta.get_field('tags').remote_field.through,
]
# Create the tables # Create the tables
with connection.schema_editor() as editor: with connection.schema_editor() as editor:
editor.create_model(Author) editor.create_model(Author)
@ -845,6 +847,7 @@ class SchemaTests(TransactionTestCase):
# Create an M2M field # Create an M2M field
new_field = M2MFieldClass("schema.TagM2MTest", related_name="authors") new_field = M2MFieldClass("schema.TagM2MTest", related_name="authors")
new_field.contribute_to_class(LocalAuthorWithM2M, "tags") new_field.contribute_to_class(LocalAuthorWithM2M, "tags")
self.local_models += [new_field.remote_field.through]
# Ensure there's no m2m table there # Ensure there's no m2m table there
self.assertRaises(DatabaseError, self.column_classes, new_field.remote_field.through) self.assertRaises(DatabaseError, self.column_classes, new_field.remote_field.through)
# Add the field # Add the field
@ -934,7 +937,10 @@ class SchemaTests(TransactionTestCase):
app_label = 'schema' app_label = 'schema'
apps = new_apps apps = new_apps
self.local_models = [LocalBookWithM2M] self.local_models = [
LocalBookWithM2M,
LocalBookWithM2M._meta.get_field('tags').remote_field.through,
]
# Create the tables # Create the tables
with connection.schema_editor() as editor: with connection.schema_editor() as editor:
@ -955,6 +961,7 @@ class SchemaTests(TransactionTestCase):
old_field = LocalBookWithM2M._meta.get_field("tags") old_field = LocalBookWithM2M._meta.get_field("tags")
new_field = M2MFieldClass(UniqueTest) new_field = M2MFieldClass(UniqueTest)
new_field.contribute_to_class(LocalBookWithM2M, "uniques") new_field.contribute_to_class(LocalBookWithM2M, "uniques")
self.local_models += [new_field.remote_field.through]
with connection.schema_editor() as editor: with connection.schema_editor() as editor:
editor.alter_field(LocalBookWithM2M, old_field, new_field) editor.alter_field(LocalBookWithM2M, old_field, new_field)
# Ensure old M2M is gone # Ensure old M2M is gone