diff options
| author | Andrew Godwin <andrew@aeracode.org> | 2014-07-05 16:33:03 -0700 |
|---|---|---|
| committer | Andrew Godwin <andrew@aeracode.org> | 2014-07-05 16:33:03 -0700 |
| commit | 80a12f21e30149529d831029f3cebc5728092aad (patch) | |
| tree | 58d635457533f80e596fe15190651e2d31dd01ec /tests | |
| parent | dd9a23d5cfb44cb6f150610c267d0de1d963b849 (diff) | |
Fixed #22960: Bad handling of relations as PKs in autodetector
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/migrations/test_autodetector.py | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/tests/migrations/test_autodetector.py b/tests/migrations/test_autodetector.py index cedfa755b4..c093e5c6e6 100644 --- a/tests/migrations/test_autodetector.py +++ b/tests/migrations/test_autodetector.py @@ -72,6 +72,7 @@ class AutodetectorTests(TestCase): custom_user_no_inherit = ModelState("thirdapp", "CustomUser", [("id", models.AutoField(primary_key=True)), ("username", models.CharField(max_length=255))]) aardvark = ModelState("thirdapp", "Aardvark", [("id", models.AutoField(primary_key=True))]) aardvark_based_on_author = ModelState("testapp", "Aardvark", [], bases=("testapp.Author", )) + aardvark_pk_fk_author = ModelState("testapp", "Aardvark", [("id", models.OneToOneField("testapp.Author", primary_key=True))]) knight = ModelState("eggs", "Knight", [("id", models.AutoField(primary_key=True))]) rabbit = ModelState("eggs", "Rabbit", [("id", models.AutoField(primary_key=True)), ("knight", models.ForeignKey("eggs.Knight")), ("parent", models.ForeignKey("eggs.Rabbit"))], {"unique_together": [("parent", "knight")]}) @@ -987,7 +988,6 @@ class AutodetectorTests(TestCase): self.assertOperationAttributes(changes, 'thirdapp', 0, 0, name="CustomUser") self.assertOperationAttributes(changes, 'thirdapp', 0, 1, name="Aardvark") - @override_settings(AUTH_USER_MODEL="thirdapp.CustomUser") def test_bases_first(self): """ Tests that bases of other models come first. @@ -1002,3 +1002,18 @@ class AutodetectorTests(TestCase): self.assertOperationTypes(changes, 'testapp', 0, ["CreateModel", "CreateModel"]) self.assertOperationAttributes(changes, 'testapp', 0, 0, name="Author") self.assertOperationAttributes(changes, 'testapp', 0, 1, name="Aardvark") + + def test_pk_fk_included(self): + """ + Tests that a relation used as the primary key is kept as part of CreateModel. + """ + # Make state + before = self.make_project_state([]) + after = self.make_project_state([self.aardvark_pk_fk_author, self.author_name]) + autodetector = MigrationAutodetector(before, after) + changes = autodetector._detect_changes() + # Right number of migrations? + self.assertNumberMigrations(changes, 'testapp', 1) + self.assertOperationTypes(changes, 'testapp', 0, ["CreateModel", "CreateModel"]) + self.assertOperationAttributes(changes, 'testapp', 0, 0, name="Author") + self.assertOperationAttributes(changes, 'testapp', 0, 1, name="Aardvark") |
