@@ -821,10 +821,10 @@ def test_database_constraint(self):
821
821
822
822
@skipUnlessDBFeature ("supports_partial_indexes" )
823
823
def test_database_constraint_with_condition (self ):
824
- UniqueConstraintConditionProduct .objects .create (name = "p1" )
825
- UniqueConstraintConditionProduct .objects .create (name = "p2" )
824
+ UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
825
+ UniqueConstraintConditionProduct .objects .create (name = "p2" , color = "blue" )
826
826
with self .assertRaises (IntegrityError ):
827
- UniqueConstraintConditionProduct .objects .create (name = "p1" )
827
+ UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
828
828
829
829
def test_model_validation (self ):
830
830
msg = "Unique constraint product with this Name and Color already exists."
@@ -840,13 +840,14 @@ def test_model_validation_with_condition(self):
840
840
Model.validate_constraints().
841
841
"""
842
842
obj1 = UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "red" )
843
- obj2 = UniqueConstraintConditionProduct .objects .create (name = "p2" )
843
+ obj2 = UniqueConstraintConditionProduct .objects .create (name = "p2" , color = "blue" )
844
844
UniqueConstraintConditionProduct (
845
845
name = obj1 .name , color = "blue"
846
846
).validate_constraints ()
847
847
msg = "Constraint “name_without_color_uniq” is violated."
848
848
with self .assertRaisesMessage (ValidationError , msg ):
849
- UniqueConstraintConditionProduct (name = obj2 .name ).validate_constraints ()
849
+ p = UniqueConstraintConditionProduct (name = obj2 .name , color = "blue" )
850
+ p .validate_constraints ()
850
851
851
852
def test_model_validation_constraint_no_code_error (self ):
852
853
class ValidateNoCodeErrorConstraint (UniqueConstraint ):
@@ -917,13 +918,13 @@ def test_validate_fields_unattached(self):
917
918
918
919
@skipUnlessDBFeature ("supports_partial_indexes" )
919
920
def test_validate_condition (self ):
920
- p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" )
921
+ p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
921
922
constraint = UniqueConstraintConditionProduct ._meta .constraints [0 ]
922
923
msg = "Constraint “name_without_color_uniq” is violated."
923
924
with self .assertRaisesMessage (ValidationError , msg ):
924
925
constraint .validate (
925
926
UniqueConstraintConditionProduct ,
926
- UniqueConstraintConditionProduct (name = p1 .name , color = None ),
927
+ UniqueConstraintConditionProduct (name = p1 .name , color = "blue" ),
927
928
)
928
929
# Values not matching condition are ignored.
929
930
constraint .validate (
@@ -941,19 +942,19 @@ def test_validate_condition(self):
941
942
942
943
@skipUnlessDBFeature ("supports_partial_indexes" )
943
944
def test_validate_condition_custom_error (self ):
944
- p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" )
945
+ p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
945
946
constraint = models .UniqueConstraint (
946
947
fields = ["name" ],
947
948
name = "name_without_color_uniq" ,
948
- condition = models .Q (color__isnull = True ),
949
+ condition = models .Q (color = "blue" ),
949
950
violation_error_code = "custom_code" ,
950
951
violation_error_message = "Custom message" ,
951
952
)
952
953
msg = "Custom message"
953
954
with self .assertRaisesMessage (ValidationError , msg ) as cm :
954
955
constraint .validate (
955
956
UniqueConstraintConditionProduct ,
956
- UniqueConstraintConditionProduct (name = p1 .name , color = None ),
957
+ UniqueConstraintConditionProduct (name = p1 .name , color = "blue" ),
957
958
)
958
959
self .assertEqual (cm .exception .code , "custom_code" )
959
960
@@ -1006,9 +1007,13 @@ def test_validate_expression_condition(self):
1006
1007
constraint = models .UniqueConstraint (
1007
1008
Lower ("name" ),
1008
1009
name = "name_lower_without_color_uniq" ,
1009
- condition = models .Q (color__isnull = True ),
1010
+ condition = models .Q (color = "blue" ),
1011
+ )
1012
+ p2 = UniqueConstraintProduct .objects .create (name = "p2" , color = "blue" )
1013
+ non_unique_product = UniqueConstraintProduct (
1014
+ name = p2 .name .upper (),
1015
+ color = p2 .color ,
1010
1016
)
1011
- non_unique_product = UniqueConstraintProduct (name = self .p2 .name .upper ())
1012
1017
msg = "Constraint “name_lower_without_color_uniq” is violated."
1013
1018
with self .assertRaisesMessage (ValidationError , msg ):
1014
1019
constraint .validate (UniqueConstraintProduct , non_unique_product )
0 commit comments