diff --git a/tests/migrations/test_base.py b/tests/migrations/test_base.py index 01062667aa..7ab09b04a5 100644 --- a/tests/migrations/test_base.py +++ b/tests/migrations/test_base.py @@ -1,12 +1,14 @@ -from django.test import TestCase +from django.test import TransactionTestCase from django.db import connection -class MigrationTestBase(TestCase): +class MigrationTestBase(TransactionTestCase): """ Contains an extended set of asserts for testing migrations and schema operations. """ + available_apps = ["migrations"] + def assertTableExists(self, table): self.assertIn(table, connection.introspection.get_table_list(connection.cursor())) diff --git a/tests/migrations/test_executor.py b/tests/migrations/test_executor.py index 5167f428d1..dbdea900a5 100644 --- a/tests/migrations/test_executor.py +++ b/tests/migrations/test_executor.py @@ -38,6 +38,11 @@ class ExecutorTests(TransactionTestCase): # Are the tables there now? self.assertIn("migrations_author", connection.introspection.get_table_list(connection.cursor())) self.assertIn("migrations_book", connection.introspection.get_table_list(connection.cursor())) + # Alright, let's undo what we did + executor.migrate([("migrations", None)]) + # Are the tables gone? + self.assertNotIn("migrations_author", connection.introspection.get_table_list(connection.cursor())) + self.assertNotIn("migrations_book", connection.introspection.get_table_list(connection.cursor())) @override_settings(MIGRATION_MODULES={"migrations": "migrations.test_migrations", "sessions": "migrations.test_migrations_2"}) def test_empty_plan(self): diff --git a/tests/migrations/test_operations.py b/tests/migrations/test_operations.py index 2ff3f73b8a..1bc4a42d7e 100644 --- a/tests/migrations/test_operations.py +++ b/tests/migrations/test_operations.py @@ -127,12 +127,13 @@ class OperationTests(MigrationTestBase): self.assertTableExists("test_adflmm_pony_stables") self.assertColumnNotExists("test_adflmm_pony", "stables") # Make sure the M2M field actually works - app_cache = new_state.render() - Pony = app_cache.get_model("test_adflmm", "Pony") - p = Pony.objects.create(pink=False, weight=4.55) - p.stables.create() - self.assertEqual(p.stables.count(), 1) - p.stables.all().delete() + with atomic(): + app_cache = new_state.render() + Pony = app_cache.get_model("test_adflmm", "Pony") + p = Pony.objects.create(pink=False, weight=4.55) + p.stables.create() + self.assertEqual(p.stables.count(), 1) + p.stables.all().delete() # And test reversal with connection.schema_editor() as editor: operation.database_backwards("test_adflmm", editor, new_state, project_state) diff --git a/tests/schema/tests.py b/tests/schema/tests.py index bf9fa6bbcc..c3764979d6 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -195,7 +195,7 @@ class SchemaTests(TransactionTestCase): # Ensure the field is right afterwards columns = self.column_classes(Author) self.assertEqual(columns['name'][0], "TextField") - self.assertEqual(columns['name'][1][6], bool(connection.features.interprets_empty_strings_as_nulls)) + self.assertEqual(bool(columns['name'][1][6]), False) def test_rename(self): """ @@ -230,7 +230,7 @@ class SchemaTests(TransactionTestCase): # Create the tables with connection.schema_editor() as editor: editor.create_model(Author) - editor.create_model(Tag) + editor.create_model(TagM2MTest) editor.create_model(BookWithM2M) # Ensure there is now an m2m table there columns = self.column_classes(BookWithM2M._meta.get_field_by_name("tags")[0].rel.through)