summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorMariusz Felisiak <felisiak.mariusz@gmail.com>2022-02-16 21:09:24 +0100
committerGitHub <noreply@github.com>2022-02-16 21:09:24 +0100
commit1e2e1be02bdf0fe4add0d0279dbca1d74ae28ad7 (patch)
treec71659b8d9fb26e88627a29930178dd9037c9a30 /tests
parent35c2474f168fd10ac50886024d5879de81be5bd3 (diff)
Fixed #33515 -- Prevented recreation of migration for ManyToManyField to lowercased swappable setting.
Thanks Chris Lee for the report. Regression in 43289707809c814a70f0db38ca4f82f35f43dbfd. Refs #23916.
Diffstat (limited to 'tests')
-rw-r--r--tests/field_deconstruction/tests.py20
-rw-r--r--tests/migrations/test_autodetector.py25
2 files changed, 35 insertions, 10 deletions
diff --git a/tests/field_deconstruction/tests.py b/tests/field_deconstruction/tests.py
index 64b90953f1..c78ed62876 100644
--- a/tests/field_deconstruction/tests.py
+++ b/tests/field_deconstruction/tests.py
@@ -475,34 +475,34 @@ class FieldDeconstructionTests(SimpleTestCase):
name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, [])
- self.assertEqual(kwargs, {"to": "auth.Permission"})
+ self.assertEqual(kwargs, {"to": "auth.permission"})
self.assertFalse(hasattr(kwargs["to"], "setting_name"))
# Test swappable
field = models.ManyToManyField("auth.User")
name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, [])
- self.assertEqual(kwargs, {"to": "auth.User"})
+ self.assertEqual(kwargs, {"to": "auth.user"})
self.assertEqual(kwargs["to"].setting_name, "AUTH_USER_MODEL")
# Test through
field = models.ManyToManyField("auth.Permission", through="auth.Group")
name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, [])
- self.assertEqual(kwargs, {"to": "auth.Permission", "through": "auth.Group"})
+ self.assertEqual(kwargs, {"to": "auth.permission", "through": "auth.Group"})
# Test custom db_table
field = models.ManyToManyField("auth.Permission", db_table="custom_table")
name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, [])
- self.assertEqual(kwargs, {"to": "auth.Permission", "db_table": "custom_table"})
+ self.assertEqual(kwargs, {"to": "auth.permission", "db_table": "custom_table"})
# Test related_name
field = models.ManyToManyField("auth.Permission", related_name="custom_table")
name, path, args, kwargs = field.deconstruct()
self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, [])
self.assertEqual(
- kwargs, {"to": "auth.Permission", "related_name": "custom_table"}
+ kwargs, {"to": "auth.permission", "related_name": "custom_table"}
)
# Test related_query_name
field = models.ManyToManyField("auth.Permission", related_query_name="foobar")
@@ -510,7 +510,7 @@ class FieldDeconstructionTests(SimpleTestCase):
self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, [])
self.assertEqual(
- kwargs, {"to": "auth.Permission", "related_query_name": "foobar"}
+ kwargs, {"to": "auth.permission", "related_query_name": "foobar"}
)
# Test limit_choices_to
field = models.ManyToManyField(
@@ -520,7 +520,7 @@ class FieldDeconstructionTests(SimpleTestCase):
self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, [])
self.assertEqual(
- kwargs, {"to": "auth.Permission", "limit_choices_to": {"foo": "bar"}}
+ kwargs, {"to": "auth.permission", "limit_choices_to": {"foo": "bar"}}
)
@override_settings(AUTH_USER_MODEL="auth.Permission")
@@ -533,7 +533,7 @@ class FieldDeconstructionTests(SimpleTestCase):
self.assertEqual(path, "django.db.models.ManyToManyField")
self.assertEqual(args, [])
- self.assertEqual(kwargs, {"to": "auth.Permission"})
+ self.assertEqual(kwargs, {"to": "auth.permission"})
self.assertEqual(kwargs["to"].setting_name, "AUTH_USER_MODEL")
def test_many_to_many_field_related_name(self):
@@ -551,7 +551,7 @@ class FieldDeconstructionTests(SimpleTestCase):
self.assertEqual(args, [])
# deconstruct() should not include attributes which were not passed to
# the field during initialization.
- self.assertEqual(kwargs, {"to": "field_deconstruction.MyModel"})
+ self.assertEqual(kwargs, {"to": "field_deconstruction.mymodel"})
# Passed attributes.
name, path, args, kwargs = MyModel.m2m_related_name.field.deconstruct()
self.assertEqual(path, "django.db.models.ManyToManyField")
@@ -559,7 +559,7 @@ class FieldDeconstructionTests(SimpleTestCase):
self.assertEqual(
kwargs,
{
- "to": "field_deconstruction.MyModel",
+ "to": "field_deconstruction.mymodel",
"related_query_name": "custom_query_name",
"limit_choices_to": {"flag": True},
},
diff --git a/tests/migrations/test_autodetector.py b/tests/migrations/test_autodetector.py
index 36c6ffb872..8ddb339002 100644
--- a/tests/migrations/test_autodetector.py
+++ b/tests/migrations/test_autodetector.py
@@ -3279,6 +3279,31 @@ class AutodetectorTests(TestCase):
[("__setting__", "AUTH_USER_MODEL")],
)
+ @override_settings(AUTH_USER_MODEL="thirdapp.CustomUser")
+ def test_swappable_many_to_many_model_case(self):
+ document_lowercase = ModelState(
+ "testapp",
+ "Document",
+ [
+ ("id", models.AutoField(primary_key=True)),
+ ("owners", models.ManyToManyField(settings.AUTH_USER_MODEL.lower())),
+ ],
+ )
+ document = ModelState(
+ "testapp",
+ "Document",
+ [
+ ("id", models.AutoField(primary_key=True)),
+ ("owners", models.ManyToManyField(settings.AUTH_USER_MODEL)),
+ ],
+ )
+ with isolate_lru_cache(apps.get_swappable_settings_name):
+ changes = self.get_changes(
+ [self.custom_user, document_lowercase],
+ [self.custom_user, document],
+ )
+ self.assertEqual(len(changes), 0)
+
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])