summaryrefslogtreecommitdiff
path: root/tests/model_meta
diff options
context:
space:
mode:
authorAdam Johnson <me@adamj.eu>2024-04-29 16:06:39 +0100
committerSarah Boyce <42296566+sarahboyce@users.noreply.github.com>2024-05-07 14:25:51 +0200
commit7abe5112f4cb50c15b79a2afd4c1b68f0767b243 (patch)
tree553809a2bff3c753b72288262a55d09fd8f883c9 /tests/model_meta
parentceea86baa36b91d0002911770340a2d7bd4f64b7 (diff)
Fixed #35407 -- Cached model's Options.swapped.
Diffstat (limited to 'tests/model_meta')
-rw-r--r--tests/model_meta/models.py5
-rw-r--r--tests/model_meta/tests.py28
2 files changed, 32 insertions, 1 deletions
diff --git a/tests/model_meta/models.py b/tests/model_meta/models.py
index bc69d61a59..20a75baf4f 100644
--- a/tests/model_meta/models.py
+++ b/tests/model_meta/models.py
@@ -166,6 +166,11 @@ class Relating(models.Model):
people_hidden = models.ManyToManyField(Person, related_name="+")
+class Swappable(models.Model):
+ class Meta:
+ swappable = "MODEL_META_TESTS_SWAPPED"
+
+
# ParentListTests models
class CommonAncestor(models.Model):
pass
diff --git a/tests/model_meta/tests.py b/tests/model_meta/tests.py
index 0aa04d760d..93883b5cf1 100644
--- a/tests/model_meta/tests.py
+++ b/tests/model_meta/tests.py
@@ -3,7 +3,7 @@ from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelatio
from django.core.exceptions import FieldDoesNotExist
from django.db.models import CharField, Field, ForeignObjectRel, ManyToManyField
from django.db.models.options import EMPTY_RELATION_TREE, IMMUTABLE_WARNING
-from django.test import SimpleTestCase
+from django.test import SimpleTestCase, override_settings
from .models import (
AbstractPerson,
@@ -16,6 +16,7 @@ from .models import (
Relating,
Relation,
SecondParent,
+ Swappable,
)
from .results import TEST_RESULTS
@@ -233,6 +234,31 @@ class VerboseNameRawTests(SimpleTestCase):
self.assertEqual(Person._meta.verbose_name_raw, "Person")
+class SwappedTests(SimpleTestCase):
+ def test_plain_model_none(self):
+ self.assertIsNone(Relation._meta.swapped)
+
+ def test_unset(self):
+ self.assertIsNone(Swappable._meta.swapped)
+
+ def test_set_and_unset(self):
+ with override_settings(MODEL_META_TESTS_SWAPPED="model_meta.Relation"):
+ self.assertEqual(Swappable._meta.swapped, "model_meta.Relation")
+ self.assertIsNone(Swappable._meta.swapped)
+
+ def test_setting_none(self):
+ with override_settings(MODEL_META_TESTS_SWAPPED=None):
+ self.assertIsNone(Swappable._meta.swapped)
+
+ def test_setting_non_label(self):
+ with override_settings(MODEL_META_TESTS_SWAPPED="not-a-label"):
+ self.assertEqual(Swappable._meta.swapped, "not-a-label")
+
+ def test_setting_self(self):
+ with override_settings(MODEL_META_TESTS_SWAPPED="model_meta.swappable"):
+ self.assertIsNone(Swappable._meta.swapped)
+
+
class RelationTreeTests(SimpleTestCase):
all_models = (Relation, AbstractPerson, BasePerson, Person, ProxyPerson, Relating)