From fca866763acb6b3414c20ca3772b94cb5d111733 Mon Sep 17 00:00:00 2001 From: Markus Holtermann Date: Mon, 29 Dec 2014 20:48:04 +0100 Subject: [PATCH] Added test for an intermediate swappable model change in migration state. refs #22563 --- tests/migrations/test_autodetector.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/tests/migrations/test_autodetector.py b/tests/migrations/test_autodetector.py index c022a2e0d8..cfb59d4851 100644 --- a/tests/migrations/test_autodetector.py +++ b/tests/migrations/test_autodetector.py @@ -99,6 +99,11 @@ class AutodetectorTests(TestCase): ("name", models.CharField(max_length=200)), ("publisher", models.ForeignKey("testapp.Publisher")), ]) + author_with_user = ModelState("testapp", "Author", [ + ("id", models.AutoField(primary_key=True)), + ("name", models.CharField(max_length=200)), + ("user", models.ForeignKey("auth.User")), + ]) author_with_custom_user = ModelState("testapp", "Author", [ ("id", models.AutoField(primary_key=True)), ("name", models.CharField(max_length=200)), @@ -1139,6 +1144,20 @@ class AutodetectorTests(TestCase): self.assertOperationAttributes(changes, 'testapp', 0, 0, name="Author") self.assertMigrationDependencies(changes, 'testapp', 0, [("__setting__", "AUTH_USER_MODEL")]) + def test_swappable_changed(self): + before = self.make_project_state([self.custom_user, self.author_with_user]) + with override_settings(AUTH_USER_MODEL="thirdapp.CustomUser"): + after = self.make_project_state([self.custom_user, self.author_with_custom_user]) + autodetector = MigrationAutodetector(before, after) + changes = autodetector._detect_changes() + # Right number/type of migrations? + self.assertNumberMigrations(changes, 'testapp', 1) + self.assertOperationTypes(changes, 'testapp', 0, ["AlterField"]) + self.assertOperationAttributes(changes, 'testapp', 0, 0, model_name="author", name='user') + fk_field = changes['testapp'][0].operations[0].field + to_model = '%s.%s' % (fk_field.rel.to._meta.app_label, fk_field.rel.to._meta.object_name) + self.assertEqual(to_model, 'thirdapp.CustomUser') + def test_add_field_with_default(self): """#22030 - Adding a field with a default should work.""" # Make state