summaryrefslogtreecommitdiff
path: root/tests/schema/tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/schema/tests.py')
-rw-r--r--tests/schema/tests.py36
1 files changed, 36 insertions, 0 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py
index 58c87904f7..d81a01b41d 100644
--- a/tests/schema/tests.py
+++ b/tests/schema/tests.py
@@ -1371,6 +1371,42 @@ class SchemaTests(TransactionTestCase):
)
self.assertIn("field", self.get_uniques(CiCharModel._meta.db_table))
+ @isolate_apps("schema")
+ @unittest.skipUnless(connection.vendor == "postgresql", "PostgreSQL specific")
+ @skipUnlessDBFeature(
+ "supports_collation_on_charfield",
+ "supports_non_deterministic_collations",
+ )
+ def test_relation_to_collation_charfield(self):
+ ci_collation = self._add_ci_collation()
+
+ class CiCharModel(Model):
+ field = CharField(max_length=16, db_collation=ci_collation, unique=True)
+
+ class Meta:
+ app_label = "schema"
+
+ class RelationModel(Model):
+ field = OneToOneField(CiCharModel, CASCADE, to_field="field")
+
+ class Meta:
+ app_label = "schema"
+
+ # Create the table.
+ with connection.schema_editor() as editor:
+ editor.create_model(CiCharModel)
+ editor.create_model(RelationModel)
+ self.isolated_local_models = [CiCharModel, RelationModel]
+ self.assertEqual(
+ self.get_column_collation(RelationModel._meta.db_table, "field_id"),
+ ci_collation,
+ )
+ self.assertEqual(
+ self.get_column_collation(CiCharModel._meta.db_table, "field"),
+ ci_collation,
+ )
+ self.assertIn("field_id", self.get_uniques(RelationModel._meta.db_table))
+
def test_alter_textfield_to_null(self):
"""
#24307 - Should skip an alter statement on databases with