1414from tests .test_utils import UnitTestContextValidator
1515from validataclass .dataclasses import Default , DefaultFactory , DefaultUnset , validataclass , validataclass_field
1616from validataclass .exceptions import (
17- UnknownFieldsError ,
1817 DataclassInvalidPreValidateSignatureException ,
1918 DataclassPostValidationError ,
2019 DataclassValidatorFieldException ,
@@ -1180,26 +1179,28 @@ def test_strict_dataclass_valid_with_optional_field_omitted():
11801179
11811180 @staticmethod
11821181 def test_strict_dataclass_with_additional_properties ():
1183- """ Test that a strict dataclass raises UnknownFieldsError for unknown keys. """
1182+ """ Test that a strict dataclass raises DictFieldsValidationError for unknown keys. """
11841183 validator = DataclassValidator (UnitTestStrictDataclass )
11851184
1186- with pytest .raises (UnknownFieldsError ) as exception_info :
1185+ with pytest .raises (DictFieldsValidationError ) as exception_info :
11871186 validator .validate ({
11881187 'name' : 'banana' ,
11891188 'unknown_field' : 'unknown_value' ,
11901189 })
11911190
11921191 assert exception_info .value .to_dict () == {
1193- 'code' : 'unknown_fields' ,
1194- 'unknown_fields' : ['unknown_field' ],
1192+ 'code' : 'field_errors' ,
1193+ 'field_errors' : {
1194+ 'unknown_field' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1195+ },
11951196 }
11961197
11971198 @staticmethod
11981199 def test_strict_dataclass_with_multiple_additional_fields ():
1199- """ Test that additional fields are sorted in the error. """
1200+ """ Test that each additional field gets its own error. """
12001201 validator = DataclassValidator (UnitTestStrictDataclass )
12011202
1202- with pytest .raises (UnknownFieldsError ) as exception_info :
1203+ with pytest .raises (DictFieldsValidationError ) as exception_info :
12031204 validator .validate ({
12041205 'name' : 'banana' ,
12051206 'zebra' : 1 ,
@@ -1208,8 +1209,12 @@ def test_strict_dataclass_with_multiple_additional_fields():
12081209 })
12091210
12101211 assert exception_info .value .to_dict () == {
1211- 'code' : 'unknown_fields' ,
1212- 'unknown_fields' : ['alpha' , 'mango' , 'zebra' ],
1212+ 'code' : 'field_errors' ,
1213+ 'field_errors' : {
1214+ 'alpha' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1215+ 'mango' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1216+ 'zebra' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1217+ },
12131218 }
12141219
12151220 @staticmethod
@@ -1250,7 +1255,7 @@ def test_reject_unknown_fields_validator_param_enables_rejection():
12501255 """ Test that reject_unknown_fields=True on DataclassValidator rejects unknown fields. """
12511256 validator = DataclassValidator (UnitTestDataclass , reject_unknown_fields = True )
12521257
1253- with pytest .raises (UnknownFieldsError ) as exception_info :
1258+ with pytest .raises (DictFieldsValidationError ) as exception_info :
12541259 validator .validate ({
12551260 'name' : 'banana' ,
12561261 'color' : 'yellow' ,
@@ -1260,8 +1265,10 @@ def test_reject_unknown_fields_validator_param_enables_rejection():
12601265 })
12611266
12621267 assert exception_info .value .to_dict () == {
1263- 'code' : 'unknown_fields' ,
1264- 'unknown_fields' : ['unknown_field' ],
1268+ 'code' : 'field_errors' ,
1269+ 'field_errors' : {
1270+ 'unknown_field' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1271+ },
12651272 }
12661273
12671274 @staticmethod
@@ -1301,7 +1308,7 @@ def test_reject_unknown_fields_validator_param_overrides_dataclass_false():
13011308 """
13021309 validator = DataclassValidator (UnitTestDataclass , reject_unknown_fields = True )
13031310
1304- with pytest .raises (UnknownFieldsError ) as exception_info :
1311+ with pytest .raises (DictFieldsValidationError ) as exception_info :
13051312 validator .validate ({
13061313 'name' : 'banana' ,
13071314 'color' : 'yellow' ,
@@ -1311,6 +1318,8 @@ def test_reject_unknown_fields_validator_param_overrides_dataclass_false():
13111318 })
13121319
13131320 assert exception_info .value .to_dict () == {
1314- 'code' : 'unknown_fields' ,
1315- 'unknown_fields' : ['extra' ],
1321+ 'code' : 'field_errors' ,
1322+ 'field_errors' : {
1323+ 'extra' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1324+ },
13161325 }
0 commit comments