diff options
| author | Dave Hall <dave@etianen.com> | 2014-09-01 10:30:00 +0100 |
|---|---|---|
| committer | Tim Graham <timograham@gmail.com> | 2014-09-02 08:11:45 -0400 |
| commit | 7eabd22217dcf2a67173b055ace63ca3fce8eb48 (patch) | |
| tree | 8281a1a2253f6eba8de3fd1190a188df9238710f /tests | |
| parent | a7ac5f018726694e3a79180ef97f2813c715fac0 (diff) | |
[1.7.x] Fixed #22918 -- Fixed SeparateDatabaseAndState crash
Backport of e03b7940e5 from master
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/migrations/test_operations.py | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py index 9987f049b5..66f7777f8e 100644 --- a/tests/migrations/test_operations.py +++ b/tests/migrations/test_operations.py @@ -1278,6 +1278,39 @@ class OperationTests(OperationTestBase): non_atomic_migration.apply(project_state, editor) self.assertEqual(project_state.render().get_model("test_runpythonatomic", "Pony").objects.count(), 1) + @unittest.skipIf(sqlparse is None and connection.features.requires_sqlparse_for_splitting, "Missing sqlparse") + def test_separate_database_and_state(self): + """ + Tests the SeparateDatabaseAndState operation. + """ + project_state = self.set_up_test_model("test_separatedatabaseandstate") + # Create the operation + database_operation = migrations.RunSQL( + "CREATE TABLE i_love_ponies (id int, special_thing int);", + "DROP TABLE i_love_ponies;" + ) + state_operation = migrations.CreateModel("SomethingElse", [("id", models.AutoField(primary_key=True))]) + operation = migrations.SeparateDatabaseAndState( + state_operations=[state_operation], + database_operations=[database_operation] + ) + self.assertEqual(operation.describe(), "Custom state/database change combination") + # Test the state alteration + new_state = project_state.clone() + operation.state_forwards("test_separatedatabaseandstate", new_state) + self.assertEqual(len(new_state.models["test_separatedatabaseandstate", "somethingelse"].fields), 1) + # Make sure there's no table + self.assertTableNotExists("i_love_ponies") + # Test the database alteration + with connection.schema_editor() as editor: + operation.database_forwards("test_separatedatabaseandstate", editor, project_state, new_state) + self.assertTableExists("i_love_ponies") + # And test reversal + self.assertTrue(operation.reversible) + with connection.schema_editor() as editor: + operation.database_backwards("test_separatedatabaseandstate", editor, new_state, project_state) + self.assertTableNotExists("i_love_ponies") + class MigrateNothingRouter(object): """ |
