@@ -821,10 +821,10 @@ def test_database_constraint(self):
821821
822822 @skipUnlessDBFeature ("supports_partial_indexes" )
823823 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" )
826826 with self .assertRaises (IntegrityError ):
827- UniqueConstraintConditionProduct .objects .create (name = "p1" )
827+ UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
828828
829829 def test_model_validation (self ):
830830 msg = "Unique constraint product with this Name and Color already exists."
@@ -840,13 +840,14 @@ def test_model_validation_with_condition(self):
840840 Model.validate_constraints().
841841 """
842842 obj1 = UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "red" )
843- obj2 = UniqueConstraintConditionProduct .objects .create (name = "p2" )
843+ obj2 = UniqueConstraintConditionProduct .objects .create (name = "p2" , color = "blue" )
844844 UniqueConstraintConditionProduct (
845845 name = obj1 .name , color = "blue"
846846 ).validate_constraints ()
847847 msg = "Constraint “name_without_color_uniq” is violated."
848848 with self .assertRaisesMessage (ValidationError , msg ):
849- UniqueConstraintConditionProduct (name = obj2 .name ).validate_constraints ()
849+ p = UniqueConstraintConditionProduct (name = obj2 .name , color = "blue" )
850+ p .validate_constraints ()
850851
851852 def test_model_validation_constraint_no_code_error (self ):
852853 class ValidateNoCodeErrorConstraint (UniqueConstraint ):
@@ -917,13 +918,13 @@ def test_validate_fields_unattached(self):
917918
918919 @skipUnlessDBFeature ("supports_partial_indexes" )
919920 def test_validate_condition (self ):
920- p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" )
921+ p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
921922 constraint = UniqueConstraintConditionProduct ._meta .constraints [0 ]
922923 msg = "Constraint “name_without_color_uniq” is violated."
923924 with self .assertRaisesMessage (ValidationError , msg ):
924925 constraint .validate (
925926 UniqueConstraintConditionProduct ,
926- UniqueConstraintConditionProduct (name = p1 .name , color = None ),
927+ UniqueConstraintConditionProduct (name = p1 .name , color = "blue" ),
927928 )
928929 # Values not matching condition are ignored.
929930 constraint .validate (
@@ -941,19 +942,19 @@ def test_validate_condition(self):
941942
942943 @skipUnlessDBFeature ("supports_partial_indexes" )
943944 def test_validate_condition_custom_error (self ):
944- p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" )
945+ p1 = UniqueConstraintConditionProduct .objects .create (name = "p1" , color = "blue" )
945946 constraint = models .UniqueConstraint (
946947 fields = ["name" ],
947948 name = "name_without_color_uniq" ,
948- condition = models .Q (color__isnull = True ),
949+ condition = models .Q (color = "blue" ),
949950 violation_error_code = "custom_code" ,
950951 violation_error_message = "Custom message" ,
951952 )
952953 msg = "Custom message"
953954 with self .assertRaisesMessage (ValidationError , msg ) as cm :
954955 constraint .validate (
955956 UniqueConstraintConditionProduct ,
956- UniqueConstraintConditionProduct (name = p1 .name , color = None ),
957+ UniqueConstraintConditionProduct (name = p1 .name , color = "blue" ),
957958 )
958959 self .assertEqual (cm .exception .code , "custom_code" )
959960
@@ -1006,9 +1007,13 @@ def test_validate_expression_condition(self):
10061007 constraint = models .UniqueConstraint (
10071008 Lower ("name" ),
10081009 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 ,
10101016 )
1011- non_unique_product = UniqueConstraintProduct (name = self .p2 .name .upper ())
10121017 msg = "Constraint “name_lower_without_color_uniq” is violated."
10131018 with self .assertRaisesMessage (ValidationError , msg ):
10141019 constraint .validate (UniqueConstraintProduct , non_unique_product )
0 commit comments