summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorAndrew Godwin <andrew@aeracode.org>2014-06-22 11:23:45 -0700
committerAndrew Godwin <andrew@aeracode.org>2014-06-22 11:24:46 -0700
commitaa0886e7ae1f372488210e4e51ee6901af8ec643 (patch)
treec02c2e6b7b70339dd45d3ce3f6e4eea6cb17b87b /tests
parent0cabf3aefb9d8d261841af089e872b6e08d9e29d (diff)
[1.7.x] Fixed #22875: Optimizer did not take through= into account.
Diffstat (limited to 'tests')
-rw-r--r--tests/migrations/test_optimizer.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/tests/migrations/test_optimizer.py b/tests/migrations/test_optimizer.py
index 346d30ae28..d36b93355e 100644
--- a/tests/migrations/test_optimizer.py
+++ b/tests/migrations/test_optimizer.py
@@ -201,6 +201,44 @@ class OptimizerTests(TestCase):
],
)
+ def test_create_model_add_field_not_through_fk(self):
+ """
+ AddField should NOT optimize into CreateModel if it's an FK to a model
+ that's between them.
+ """
+ self.assertOptimizesTo(
+ [
+ migrations.CreateModel("Foo", [("name", models.CharField(max_length=255))]),
+ migrations.CreateModel("Link", [("url", models.TextField())]),
+ migrations.AddField("Foo", "link", models.ForeignKey("migrations.Link")),
+ ],
+ [
+ migrations.CreateModel("Foo", [("name", models.CharField(max_length=255))]),
+ migrations.CreateModel("Link", [("url", models.TextField())]),
+ migrations.AddField("Foo", "link", models.ForeignKey("migrations.Link")),
+ ],
+ )
+
+ def test_create_model_add_field_not_through_m2m_through(self):
+ """
+ AddField should NOT optimize into CreateModel if it's an M2M using a
+ through that's created between them.
+ """
+ # Note: The middle model is not actually a valid through model,
+ # but that doesn't matter, as we never render it.
+ self.assertOptimizesTo(
+ [
+ migrations.CreateModel("Foo", [("name", models.CharField(max_length=255))]),
+ migrations.CreateModel("LinkThrough", []),
+ migrations.AddField("Foo", "link", models.ManyToManyField("migrations.Link", through="migrations.LinkThrough")),
+ ],
+ [
+ migrations.CreateModel("Foo", [("name", models.CharField(max_length=255))]),
+ migrations.CreateModel("LinkThrough", []),
+ migrations.AddField("Foo", "link", models.ManyToManyField("migrations.Link", through="migrations.LinkThrough")),
+ ],
+ )
+
def test_create_model_alter_field(self):
"""
AlterField should optimize into CreateModel.