diff options
Diffstat (limited to 'tests/migrations/test_optimizer.py')
| -rw-r--r-- | tests/migrations/test_optimizer.py | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/tests/migrations/test_optimizer.py b/tests/migrations/test_optimizer.py index 6485009eb4..2992f9cad7 100644 --- a/tests/migrations/test_optimizer.py +++ b/tests/migrations/test_optimizer.py @@ -1152,3 +1152,181 @@ class OptimizerTests(SimpleTestCase): ), ] ) + + def test_create_model_add_index(self): + self.assertOptimizesTo( + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ], + options={ + "indexes": [models.Index(fields=["age"], name="idx_pony_age")], + }, + ), + migrations.AddIndex( + "Pony", + models.Index(fields=["weight"], name="idx_pony_weight"), + ), + ], + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ], + options={ + "indexes": [ + models.Index(fields=["age"], name="idx_pony_age"), + models.Index(fields=["weight"], name="idx_pony_weight"), + ], + }, + ), + ], + ) + + def test_create_model_remove_index(self): + self.assertOptimizesTo( + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ], + options={ + "indexes": [ + models.Index(fields=["age"], name="idx_pony_age"), + models.Index(fields=["weight"], name="idx_pony_weight"), + ], + }, + ), + migrations.RemoveIndex("Pony", "idx_pony_age"), + ], + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ], + options={ + "indexes": [ + models.Index(fields=["weight"], name="idx_pony_weight"), + ], + }, + ), + ], + ) + + def test_create_model_remove_index_together_rename_index(self): + self.assertOptimizesTo( + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ], + options={ + "index_together": [("age", "weight")], + }, + ), + migrations.RenameIndex( + "Pony", new_name="idx_pony_age_weight", old_fields=("age", "weight") + ), + ], + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ], + options={ + "indexes": [ + models.Index( + fields=["age", "weight"], name="idx_pony_age_weight" + ), + ], + }, + ), + ], + ) + + def test_create_model_index_together_rename_index(self): + self.assertOptimizesTo( + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ("height", models.IntegerField()), + ("rank", models.IntegerField()), + ], + options={ + "index_together": [("age", "weight"), ("height", "rank")], + }, + ), + migrations.RenameIndex( + "Pony", new_name="idx_pony_age_weight", old_fields=("age", "weight") + ), + ], + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ("height", models.IntegerField()), + ("rank", models.IntegerField()), + ], + options={ + "index_together": {("height", "rank")}, + "indexes": [ + models.Index( + fields=["age", "weight"], name="idx_pony_age_weight" + ), + ], + }, + ), + ], + ) + + def test_create_model_rename_index_no_old_fields(self): + self.assertOptimizesTo( + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ], + options={ + "indexes": [models.Index(fields=["age"], name="idx_pony_age")], + }, + ), + migrations.RenameIndex( + "Pony", new_name="idx_pony_age_new", old_name="idx_pony_age" + ), + ], + [ + migrations.CreateModel( + name="Pony", + fields=[ + ("weight", models.IntegerField()), + ("age", models.IntegerField()), + ], + options={ + "indexes": [models.Index(fields=["age"], name="idx_pony_age")], + }, + ), + migrations.RenameIndex( + "Pony", new_name="idx_pony_age_new", old_name="idx_pony_age" + ), + ], + ) |
