summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorSimon Charette <charette.s@gmail.com>2017-02-02 22:09:12 -0500
committerTim Graham <timograham@gmail.com>2018-07-11 10:49:50 -0400
commitad82900ad94ed4bbad050b9993373dafbe66b610 (patch)
treeb7d5fd47ddf1fbe19b2407daedb520151422e17b /tests
parenta97845a823c86b1d6e65af70fbce64e6e747e081 (diff)
Fixed #26720 -- Prevented invalid CreateModel optimizations of related fields.
Diffstat (limited to 'tests')
-rw-r--r--tests/migrations/test_optimizer.py29
1 files changed, 29 insertions, 0 deletions
diff --git a/tests/migrations/test_optimizer.py b/tests/migrations/test_optimizer.py
index 6c1c5f5c6b..973be67c80 100644
--- a/tests/migrations/test_optimizer.py
+++ b/tests/migrations/test_optimizer.py
@@ -270,6 +270,35 @@ class OptimizerTests(SimpleTestCase):
app_label="testapp",
)
+ # This could be optimized a bit more but it generates a valid set of
+ # operations.
+ self.assertOptimizesTo(
+ [
+ migrations.CreateModel('Book', [('name', models.CharField(max_length=255))]),
+ migrations.CreateModel('Person', [('name', models.CharField(max_length=255))]),
+ migrations.AddField('book', 'author', models.ForeignKey('test_app.Person', models.CASCADE)),
+ migrations.CreateModel('Review', [('book', models.ForeignKey('test_app.Book', models.CASCADE))]),
+ migrations.CreateModel('Reviewer', [('name', models.CharField(max_length=255))]),
+ migrations.AddField('review', 'reviewer', models.ForeignKey('test_app.Reviewer', models.CASCADE)),
+ migrations.RemoveField('book', 'author'),
+ migrations.DeleteModel('Person'),
+ ],
+ [
+ migrations.CreateModel('Person', [('name', models.CharField(max_length=255))]),
+ migrations.CreateModel('Book', [
+ ('name', models.CharField(max_length=255)),
+ ('author', models.ForeignKey('test_app.Person', models.CASCADE)),
+ ]),
+ migrations.CreateModel('Reviewer', [('name', models.CharField(max_length=255))]),
+ migrations.CreateModel('Review', [
+ ('book', models.ForeignKey('test_app.Book', models.CASCADE)),
+ ('reviewer', models.ForeignKey('test_app.Reviewer', models.CASCADE)),
+ ]),
+ migrations.RemoveField('book', 'author'),
+ migrations.DeleteModel('Person'),
+ ],
+ )
+
def test_create_model_add_field(self):
"""
AddField should optimize into CreateModel.