diff options
| author | Hameed Gifford <giff.h92@gmail.com> | 2022-03-08 00:22:03 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2022-03-08 06:22:03 +0100 |
| commit | 58d357fc65ab0d3b16184db81059b9cef3b83c10 (patch) | |
| tree | 44c6ef16456474db789ba1937bb5fb1ad7f8cf38 /tests/contenttypes_tests | |
| parent | c121e32082edaff817d9f69dec0c24855dc0186f (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.py | 31 |
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) |
