Minor Fixes in EnumTypeParser and Adds Better UnitTests

This commit is contained in:
2025-06-22 16:43:53 -03:00
parent 7e591f0525
commit ef66903948
3 changed files with 40 additions and 6 deletions

View File

@@ -25,11 +25,8 @@ class EnumTypeParser(GenericTypeParser):
parsed_properties = self.mappings_properties_builder(properties, **kwargs) parsed_properties = self.mappings_properties_builder(properties, **kwargs)
if ( if (
"default" in parsed_properties "default" in parsed_properties and parsed_properties["default"] is not None
and parsed_properties["default"] not in enum_values
): ):
raise ValueError( parsed_properties["default"] = enum_type(parsed_properties["default"])
f"Default value {parsed_properties['default']} is not a valid member of enum {name}."
)
return enum_type, parsed_properties return enum_type, parsed_properties

View File

@@ -66,7 +66,7 @@ class TestEnumTypeParser(TestCase):
self.assertEqual( self.assertEqual(
set(parsed_type.__members__.keys()), {"VALUE1", "VALUE2", "VALUE3"} set(parsed_type.__members__.keys()), {"VALUE1", "VALUE2", "VALUE3"}
) )
self.assertEqual(parsed_properties["default"], "value2") self.assertEqual(parsed_properties["default"].value, "value2")
def test_enum_type_parser_throws_invalid_default(self): def test_enum_type_parser_throws_invalid_default(self):
parser = EnumTypeParser() parser = EnumTypeParser()

View File

@@ -597,3 +597,40 @@ class TestSchemaConverter(TestCase):
self.assertEqual(obj.age, 30) self.assertEqual(obj.age, 30)
self.assertEqual(obj.address.street, "123 Main St") self.assertEqual(obj.address.street, "123 Main St")
self.assertEqual(obj.address.city, "Springfield") self.assertEqual(obj.address.city, "Springfield")
def test_enum_type_parser(self):
schema = {
"title": "Person",
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["active", "inactive", "pending"],
}
},
"required": ["status"],
}
Model = SchemaConverter.build(schema)
obj = Model(status="active")
self.assertEqual(obj.status.value, "active")
def test_enum_type_parser_with_default(self):
schema = {
"title": "Person",
"type": "object",
"properties": {
"status": {
"type": "string",
"enum": ["active", "inactive", "pending"],
"default": "active",
}
},
"required": ["status"],
}
Model = SchemaConverter.build(schema)
obj = Model()
self.assertEqual(obj.status.value, "active")