diff options
| author | Peter Thomassen <peter@desec.io> | 2023-12-01 14:12:06 +0100 |
|---|---|---|
| committer | Mariusz Felisiak <felisiak.mariusz@gmail.com> | 2023-12-03 12:30:45 +0100 |
| commit | 54cb1a7e160089cea438f50fdb70aaaf6823786e (patch) | |
| tree | cd2ab65df4c3da2e4cf2b178ee46a54693e06385 /tests/schema | |
| parent | dec8aa68f6a2729e57a58c36a21d36daa9a99fed (diff) | |
Fixed #35002 -- Made UniqueConstraints with fields respect nulls_distinct.
Regression in 595a2abb58e04caa4d55fb2589bb80fb2a8fdfa1.
Diffstat (limited to 'tests/schema')
| -rw-r--r-- | tests/schema/tests.py | 25 |
1 files changed, 24 insertions, 1 deletions
diff --git a/tests/schema/tests.py b/tests/schema/tests.py index d1d18bab17..d44b8e25aa 100644 --- a/tests/schema/tests.py +++ b/tests/schema/tests.py @@ -3468,7 +3468,7 @@ class SchemaTests(TransactionTestCase): editor.add_constraint(Author, constraint) @skipUnlessDBFeature("supports_nulls_distinct_unique_constraints") - def test_unique_constraint_nulls_distinct(self): + def test_unique_constraint_index_nulls_distinct(self): with connection.schema_editor() as editor: editor.create_model(Author) nulls_distinct = UniqueConstraint( @@ -3491,6 +3491,29 @@ class SchemaTests(TransactionTestCase): self.assertNotIn(nulls_distinct.name, constraints) self.assertNotIn(nulls_not_distinct.name, constraints) + @skipUnlessDBFeature("supports_nulls_distinct_unique_constraints") + def test_unique_constraint_nulls_distinct(self): + with connection.schema_editor() as editor: + editor.create_model(Author) + constraint = UniqueConstraint( + fields=["height", "weight"], name="constraint", nulls_distinct=False + ) + with connection.schema_editor() as editor: + editor.add_constraint(Author, constraint) + Author.objects.create(name="", height=None, weight=None) + Author.objects.create(name="", height=1, weight=None) + Author.objects.create(name="", height=None, weight=1) + with self.assertRaises(IntegrityError): + Author.objects.create(name="", height=None, weight=None) + with self.assertRaises(IntegrityError): + Author.objects.create(name="", height=1, weight=None) + with self.assertRaises(IntegrityError): + Author.objects.create(name="", height=None, weight=1) + with connection.schema_editor() as editor: + editor.remove_constraint(Author, constraint) + constraints = self.get_constraints(Author._meta.db_table) + self.assertNotIn(constraint.name, constraints) + @skipIfDBFeature("supports_nulls_distinct_unique_constraints") def test_unique_constraint_nulls_distinct_unsupported(self): # UniqueConstraint is ignored on databases that don't support |
