mirror of
https://github.com/django/django.git
synced 2025-08-03 18:38:50 +00:00
Fixed #35103 -- Used provided error code and message when fields is set without a condition on UniqueConstraint.
This commit is contained in:
parent
1979b1403a
commit
e970bb7ca7
5 changed files with 89 additions and 23 deletions
|
@ -953,6 +953,41 @@ class UniqueConstraintTests(TestCase):
|
|||
ChildUniqueConstraintProduct(name=self.p1.name, color=self.p1.color),
|
||||
)
|
||||
|
||||
def test_validate_unique_custom_code_and_message(self):
|
||||
product = UniqueConstraintProduct.objects.create(
|
||||
name="test", color="red", age=42
|
||||
)
|
||||
code = "custom_code"
|
||||
message = "Custom message"
|
||||
multiple_fields_constraint = models.UniqueConstraint(
|
||||
fields=["color", "age"],
|
||||
name="color_age_uniq",
|
||||
violation_error_code=code,
|
||||
violation_error_message=message,
|
||||
)
|
||||
single_field_constraint = models.UniqueConstraint(
|
||||
fields=["color"],
|
||||
name="color_uniq",
|
||||
violation_error_code=code,
|
||||
violation_error_message=message,
|
||||
)
|
||||
|
||||
with self.assertRaisesMessage(ValidationError, message) as cm:
|
||||
multiple_fields_constraint.validate(
|
||||
UniqueConstraintProduct,
|
||||
UniqueConstraintProduct(
|
||||
name="new-test", color=product.color, age=product.age
|
||||
),
|
||||
)
|
||||
self.assertEqual(cm.exception.code, code)
|
||||
|
||||
with self.assertRaisesMessage(ValidationError, message) as cm:
|
||||
single_field_constraint.validate(
|
||||
UniqueConstraintProduct,
|
||||
UniqueConstraintProduct(name="new-test", color=product.color),
|
||||
)
|
||||
self.assertEqual(cm.exception.code, code)
|
||||
|
||||
@skipUnlessDBFeature("supports_table_check_constraints")
|
||||
def test_validate_fields_unattached(self):
|
||||
Product.objects.create(price=42)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue