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:23:45 -0700
commitb30d32ff24096e4191d661e2aaa734c92795237f (patch)
treee0ec74e97c443461782ae03501abc33c286078a8 /tests
parentf07735c619c121d8785082972acd8fbad8b236af (diff)
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.