Minor Fixes in EnumTypeParser and Adds Better UnitTests
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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()
|
||||||
|
|||||||
@@ -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")
|
||||||
|
|||||||
Reference in New Issue
Block a user