diff options
| author | Andrew Godwin <andrew@aeracode.org> | 2014-06-22 11:23:45 -0700 |
|---|---|---|
| committer | Andrew Godwin <andrew@aeracode.org> | 2014-06-22 11:23:45 -0700 |
| commit | b30d32ff24096e4191d661e2aaa734c92795237f (patch) | |
| tree | e0ec74e97c443461782ae03501abc33c286078a8 /tests | |
| parent | f07735c619c121d8785082972acd8fbad8b236af (diff) | |
Fixed #22875: Optimizer did not take through= into account.
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/migrations/test_optimizer.py | 38 |
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. |
