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:06:44 -0400 |
| commit | e03b7940e564a6a88269b3030e43354baabcd669 (patch) | |
| tree | 3e78b3dfe4bf69edd2691334793225fd51267309 /tests | |
| parent | 03c1a6cb80ef03f16d60e4d34ed61b17497effd0 (diff) | |
Fixed #22918 -- Fixed SeparateDatabaseAndState crash
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 8e7df74141..82292ac69f 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): """ |
