diff options
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/field_deconstruction/tests.py | 20 | ||||
| -rw-r--r-- | tests/migrations/test_autodetector.py | 16 |
2 files changed, 36 insertions, 0 deletions
diff --git a/tests/field_deconstruction/tests.py b/tests/field_deconstruction/tests.py index b2fb097100..70846f23d3 100644 --- a/tests/field_deconstruction/tests.py +++ b/tests/field_deconstruction/tests.py @@ -211,6 +211,13 @@ class FieldDeconstructionTests(SimpleTestCase): self.assertEqual(args, []) self.assertEqual(kwargs, {"to": "auth.user", "on_delete": models.CASCADE}) self.assertEqual(kwargs['to'].setting_name, "AUTH_USER_MODEL") + # Swap detection for lowercase swappable model. + field = models.ForeignKey('auth.user', models.CASCADE) + name, path, args, kwargs = field.deconstruct() + self.assertEqual(path, 'django.db.models.ForeignKey') + self.assertEqual(args, []) + self.assertEqual(kwargs, {'to': 'auth.user', 'on_delete': models.CASCADE}) + self.assertEqual(kwargs['to'].setting_name, 'AUTH_USER_MODEL') # Test nonexistent (for now) model field = models.ForeignKey("something.Else", models.CASCADE) name, path, args, kwargs = field.deconstruct() @@ -273,6 +280,19 @@ class FieldDeconstructionTests(SimpleTestCase): self.assertEqual(kwargs, {"to": "auth.permission", "on_delete": models.CASCADE}) self.assertEqual(kwargs['to'].setting_name, "AUTH_USER_MODEL") + # Model names are case-insensitive. + with isolate_lru_cache(apps.get_swappable_settings_name): + # It doesn't matter that we swapped out user for permission; + # there's no validation. We just want to check the setting stuff + # works. + field = models.ForeignKey('auth.permission', models.CASCADE) + name, path, args, kwargs = field.deconstruct() + + self.assertEqual(path, 'django.db.models.ForeignKey') + self.assertEqual(args, []) + self.assertEqual(kwargs, {'to': 'auth.permission', 'on_delete': models.CASCADE}) + self.assertEqual(kwargs['to'].setting_name, 'AUTH_USER_MODEL') + def test_one_to_one(self): # Test basic pointing from django.contrib.auth.models import Permission diff --git a/tests/migrations/test_autodetector.py b/tests/migrations/test_autodetector.py index 18055f242b..d25b14cedb 100644 --- a/tests/migrations/test_autodetector.py +++ b/tests/migrations/test_autodetector.py @@ -1965,6 +1965,22 @@ class AutodetectorTests(TestCase): self.assertOperationAttributes(changes, 'testapp', 0, 0, name="Author") self.assertMigrationDependencies(changes, 'testapp', 0, [("__setting__", "AUTH_USER_MODEL")]) + def test_swappable_lowercase(self): + model_state = ModelState('testapp', 'Document', [ + ('id', models.AutoField(primary_key=True)), + ('owner', models.ForeignKey( + settings.AUTH_USER_MODEL.lower(), models.CASCADE, + )), + ]) + with isolate_lru_cache(apps.get_swappable_settings_name): + changes = self.get_changes([], [model_state]) + self.assertNumberMigrations(changes, 'testapp', 1) + self.assertOperationTypes(changes, 'testapp', 0, ['CreateModel']) + self.assertOperationAttributes(changes, 'testapp', 0, 0, name='Document') + self.assertMigrationDependencies( + changes, 'testapp', 0, [('__setting__', 'AUTH_USER_MODEL')], + ) + def test_swappable_changed(self): with isolate_lru_cache(apps.get_swappable_settings_name): before = self.make_project_state([self.custom_user, self.author_with_user]) |
