mirror of
https://github.com/django/django.git
synced 2025-07-24 13:44:32 +00:00
[5.1.x] Refs #30581 -- Made unattached UniqueConstraint(fields) validation testable.
The logic allowing UniqueConstraint(fields).validate to preserve backward
compatiblity with Model.unique_error_message failed to account for cases where
the constraint might not be attached to a model which is a common pattern
during testing.
This changes allows for arbitrary UniqueConstraint(fields) to be tested in
isolation without requiring actual models backing them up.
Co-authored-by: Mark G <mark.gensler@protonmail.com>
Backport of 13922580cc
from main.
This commit is contained in:
parent
df7ebb8b02
commit
a2791f5ea2
2 changed files with 16 additions and 12 deletions
|
@ -896,6 +896,13 @@ class UniqueConstraintTests(TestCase):
|
|||
ChildUniqueConstraintProduct(name=self.p1.name, color=self.p1.color),
|
||||
)
|
||||
|
||||
def test_validate_fields_unattached(self):
|
||||
Product.objects.create(price=42)
|
||||
constraint = models.UniqueConstraint(fields=["price"], name="uniq_prices")
|
||||
msg = "Product with this Price already exists."
|
||||
with self.assertRaisesMessage(ValidationError, msg):
|
||||
constraint.validate(Product, Product(price=42))
|
||||
|
||||
@skipUnlessDBFeature("supports_partial_indexes")
|
||||
def test_validate_condition(self):
|
||||
p1 = UniqueConstraintConditionProduct.objects.create(name="p1")
|
||||
|
@ -921,7 +928,7 @@ class UniqueConstraintTests(TestCase):
|
|||
)
|
||||
|
||||
@skipUnlessDBFeature("supports_partial_indexes")
|
||||
def test_validate_conditon_custom_error(self):
|
||||
def test_validate_condition_custom_error(self):
|
||||
p1 = UniqueConstraintConditionProduct.objects.create(name="p1")
|
||||
constraint = models.UniqueConstraint(
|
||||
fields=["name"],
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue