1313from tests .test_utils import UnitTestContextValidator
1414from validataclass .dataclasses import Default , DefaultFactory , DefaultUnset , validataclass , validataclass_field
1515from validataclass .exceptions import (
16- UnknownFieldsError ,
1716 DataclassInvalidPreValidateSignatureException ,
1817 DataclassPostValidationError ,
1918 DataclassValidatorFieldException ,
@@ -1173,26 +1172,28 @@ def test_strict_dataclass_valid_with_optional_field_omitted():
11731172
11741173 @staticmethod
11751174 def test_strict_dataclass_with_additional_properties ():
1176- """ Test that a strict dataclass raises UnknownFieldsError for unknown keys. """
1175+ """ Test that a strict dataclass raises DictFieldsValidationError for unknown keys. """
11771176 validator = DataclassValidator (UnitTestStrictDataclass )
11781177
1179- with pytest .raises (UnknownFieldsError ) as exception_info :
1178+ with pytest .raises (DictFieldsValidationError ) as exception_info :
11801179 validator .validate ({
11811180 'name' : 'banana' ,
11821181 'unknown_field' : 'unknown_value' ,
11831182 })
11841183
11851184 assert exception_info .value .to_dict () == {
1186- 'code' : 'unknown_fields' ,
1187- 'unknown_fields' : ['unknown_field' ],
1185+ 'code' : 'field_errors' ,
1186+ 'field_errors' : {
1187+ 'unknown_field' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1188+ },
11881189 }
11891190
11901191 @staticmethod
11911192 def test_strict_dataclass_with_multiple_additional_fields ():
1192- """ Test that additional fields are sorted in the error. """
1193+ """ Test that each additional field gets its own error. """
11931194 validator = DataclassValidator (UnitTestStrictDataclass )
11941195
1195- with pytest .raises (UnknownFieldsError ) as exception_info :
1196+ with pytest .raises (DictFieldsValidationError ) as exception_info :
11961197 validator .validate ({
11971198 'name' : 'banana' ,
11981199 'zebra' : 1 ,
@@ -1201,8 +1202,12 @@ def test_strict_dataclass_with_multiple_additional_fields():
12011202 })
12021203
12031204 assert exception_info .value .to_dict () == {
1204- 'code' : 'unknown_fields' ,
1205- 'unknown_fields' : ['alpha' , 'mango' , 'zebra' ],
1205+ 'code' : 'field_errors' ,
1206+ 'field_errors' : {
1207+ 'alpha' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1208+ 'mango' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1209+ 'zebra' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1210+ },
12061211 }
12071212
12081213 @staticmethod
@@ -1243,7 +1248,7 @@ def test_reject_unknown_fields_validator_param_enables_rejection():
12431248 """ Test that reject_unknown_fields=True on DataclassValidator rejects unknown fields. """
12441249 validator = DataclassValidator (UnitTestDataclass , reject_unknown_fields = True )
12451250
1246- with pytest .raises (UnknownFieldsError ) as exception_info :
1251+ with pytest .raises (DictFieldsValidationError ) as exception_info :
12471252 validator .validate ({
12481253 'name' : 'banana' ,
12491254 'color' : 'yellow' ,
@@ -1253,8 +1258,10 @@ def test_reject_unknown_fields_validator_param_enables_rejection():
12531258 })
12541259
12551260 assert exception_info .value .to_dict () == {
1256- 'code' : 'unknown_fields' ,
1257- 'unknown_fields' : ['unknown_field' ],
1261+ 'code' : 'field_errors' ,
1262+ 'field_errors' : {
1263+ 'unknown_field' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1264+ },
12581265 }
12591266
12601267 @staticmethod
@@ -1294,7 +1301,7 @@ def test_reject_unknown_fields_validator_param_overrides_dataclass_false():
12941301 """
12951302 validator = DataclassValidator (UnitTestDataclass , reject_unknown_fields = True )
12961303
1297- with pytest .raises (UnknownFieldsError ) as exception_info :
1304+ with pytest .raises (DictFieldsValidationError ) as exception_info :
12981305 validator .validate ({
12991306 'name' : 'banana' ,
13001307 'color' : 'yellow' ,
@@ -1304,6 +1311,8 @@ def test_reject_unknown_fields_validator_param_overrides_dataclass_false():
13041311 })
13051312
13061313 assert exception_info .value .to_dict () == {
1307- 'code' : 'unknown_fields' ,
1308- 'unknown_fields' : ['extra' ],
1314+ 'code' : 'field_errors' ,
1315+ 'field_errors' : {
1316+ 'extra' : {'code' : 'field_not_allowed' , 'reason' : 'Unknown field' },
1317+ },
13091318 }
0 commit comments