@@ -842,10 +842,10 @@ def test_database_constraint(self):
842842
843843 @skipUnlessDBFeature ("supports_partial_indexes" )
844844 def test_database_constraint_with_condition (self ):
845- UniqueConstraintConditionProduct .objects .create (name = "p1" )
846- UniqueConstraintConditionProduct .objects .create (name = "p2" )
845+ UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
846+ UniqueConstraintConditionProduct .objects .create (name = "p2" , color = "blue" )
847847 with self .assertRaises (IntegrityError ):
848- UniqueConstraintConditionProduct .objects .create (name = "p1" )
848+ UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
849849
850850 def test_model_validation (self ):
851851 msg = "Unique constraint product with this Name and Color already exists."
@@ -861,13 +861,14 @@ def test_model_validation_with_condition(self):
861861 Model.validate_constraints().
862862 """
863863 obj1 = UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "red" )
864- obj2 = UniqueConstraintConditionProduct .objects .create (name = "p2" )
864+ obj2 = UniqueConstraintConditionProduct .objects .create (name = "p2" , color = "blue" )
865865 UniqueConstraintConditionProduct (
866866 name = obj1 .name , color = "blue"
867867 ).validate_constraints ()
868868 msg = "Constraint “name_without_color_uniq” is violated."
869869 with self .assertRaisesMessage (ValidationError , msg ):
870- UniqueConstraintConditionProduct (name = obj2 .name ).validate_constraints ()
870+ p = UniqueConstraintConditionProduct (name = obj2 .name , color = "blue" )
871+ p .validate_constraints ()
871872
872873 def test_model_validation_constraint_no_code_error (self ):
873874 class ValidateNoCodeErrorConstraint (UniqueConstraint ):
@@ -938,13 +939,13 @@ def test_validate_fields_unattached(self):
938939
939940 @skipUnlessDBFeature ("supports_partial_indexes" )
940941 def test_validate_condition (self ):
941- p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" )
942+ p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
942943 constraint = UniqueConstraintConditionProduct ._meta .constraints [0 ]
943944 msg = "Constraint “name_without_color_uniq” is violated."
944945 with self .assertRaisesMessage (ValidationError , msg ):
945946 constraint .validate (
946947 UniqueConstraintConditionProduct ,
947- UniqueConstraintConditionProduct (name = p1 .name , color = None ),
948+ UniqueConstraintConditionProduct (name = p1 .name , color = "blue" ),
948949 )
949950 # Values not matching condition are ignored.
950951 constraint .validate (
@@ -962,19 +963,19 @@ def test_validate_condition(self):
962963
963964 @skipUnlessDBFeature ("supports_partial_indexes" )
964965 def test_validate_condition_custom_error (self ):
965- p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" )
966+ p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
966967 constraint = models .UniqueConstraint (
967968 fields = ["name" ],
968969 name = "name_without_color_uniq" ,
969- condition = models .Q (color__isnull = True ),
970+ condition = models .Q (color = "blue" ),
970971 violation_error_code = "custom_code" ,
971972 violation_error_message = "Custom message" ,
972973 )
973974 msg = "Custom message"
974975 with self .assertRaisesMessage (ValidationError , msg ) as cm :
975976 constraint .validate (
976977 UniqueConstraintConditionProduct ,
977- UniqueConstraintConditionProduct (name = p1 .name , color = None ),
978+ UniqueConstraintConditionProduct (name = p1 .name , color = "blue" ),
978979 )
979980 self .assertEqual (cm .exception .code , "custom_code" )
980981
@@ -1026,9 +1027,13 @@ def test_validate_expression_condition(self):
10261027 constraint = models .UniqueConstraint (
10271028 Lower ("name" ),
10281029 name = "name_lower_without_color_uniq" ,
1029- condition = models .Q (color__isnull = True ),
1030+ condition = models .Q (color = "blue" ),
1031+ )
1032+ p2 = UniqueConstraintProduct .objects .create (name = "p2" , color = "blue" )
1033+ non_unique_product = UniqueConstraintProduct (
1034+ name = p2 .name .upper (),
1035+ color = p2 .color ,
10301036 )
1031- non_unique_product = UniqueConstraintProduct (name = self .p2 .name .upper ())
10321037 msg = "Constraint “name_lower_without_color_uniq” is violated."
10331038 with self .assertRaisesMessage (ValidationError , msg ):
10341039 constraint .validate (UniqueConstraintProduct , non_unique_product )
0 commit comments