summaryrefslogtreecommitdiff
path: root/tests/contenttypes_tests
diff options
context:
space:
mode:
authorHameed Gifford <giff.h92@gmail.com>2022-03-08 00:22:03 -0500
committerGitHub <noreply@github.com>2022-03-08 06:22:03 +0100
commit58d357fc65ab0d3b16184db81059b9cef3b83c10 (patch)
tree44c6ef16456474db789ba1937bb5fb1ad7f8cf38 /tests/contenttypes_tests
parentc121e32082edaff817d9f69dec0c24855dc0186f (diff)
Fixed #33563 -- Fixed contenttype reverse data migration crash with a multiple databases setup.
Diffstat (limited to 'tests/contenttypes_tests')
-rw-r--r--tests/contenttypes_tests/test_migrations.py31
1 files changed, 31 insertions, 0 deletions
diff --git a/tests/contenttypes_tests/test_migrations.py b/tests/contenttypes_tests/test_migrations.py
new file mode 100644
index 0000000000..7482473c98
--- /dev/null
+++ b/tests/contenttypes_tests/test_migrations.py
@@ -0,0 +1,31 @@
+from importlib import import_module
+
+from django.apps import apps
+from django.contrib.auth.models import Permission
+from django.contrib.contenttypes.models import ContentType
+from django.db import DEFAULT_DB_ALIAS, connections
+from django.test import TransactionTestCase
+
+remove_content_type_name = import_module(
+ "django.contrib.contenttypes.migrations.0002_remove_content_type_name"
+)
+
+
+class MultiDBRemoveContentTypeNameTests(TransactionTestCase):
+ databases = {"default", "other"}
+ available_apps = ["django.contrib.auth", "django.contrib.contenttypes"]
+
+ def test_add_legacy_name_other_database(self):
+ # add_legacy_name() should update ContentType objects in the specified
+ # database. Remove ContentTypes from the default database to distinct
+ # from which database they are fetched.
+ Permission.objects.all().delete()
+ ContentType.objects.all().delete()
+ # ContentType.name in the current version is a property and cannot be
+ # set, so an AttributeError is raised with the other database.
+ with self.assertRaises(AttributeError):
+ with connections["other"].schema_editor() as editor:
+ remove_content_type_name.add_legacy_name(apps, editor)
+ # ContentType were removed from the default database.
+ with connections[DEFAULT_DB_ALIAS].schema_editor() as editor:
+ remove_content_type_name.add_legacy_name(apps, editor)