diff --git a/jambo/parser/enum_type_parser.py b/jambo/parser/enum_type_parser.py index ac11c0a..7a51afd 100644 --- a/jambo/parser/enum_type_parser.py +++ b/jambo/parser/enum_type_parser.py @@ -25,11 +25,8 @@ class EnumTypeParser(GenericTypeParser): parsed_properties = self.mappings_properties_builder(properties, **kwargs) if ( - "default" in parsed_properties - and parsed_properties["default"] not in enum_values + "default" in parsed_properties and parsed_properties["default"] is not None ): - raise ValueError( - f"Default value {parsed_properties['default']} is not a valid member of enum {name}." - ) + parsed_properties["default"] = enum_type(parsed_properties["default"]) return enum_type, parsed_properties diff --git a/tests/parser/test_enum_type_parser.py b/tests/parser/test_enum_type_parser.py index 39d0e29..f0dcd7d 100644 --- a/tests/parser/test_enum_type_parser.py +++ b/tests/parser/test_enum_type_parser.py @@ -66,7 +66,7 @@ class TestEnumTypeParser(TestCase): self.assertEqual( 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): parser = EnumTypeParser() diff --git a/tests/test_schema_converter.py b/tests/test_schema_converter.py index c8bc96c..a980e3c 100644 --- a/tests/test_schema_converter.py +++ b/tests/test_schema_converter.py @@ -597,3 +597,40 @@ class TestSchemaConverter(TestCase): self.assertEqual(obj.age, 30) self.assertEqual(obj.address.street, "123 Main St") 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")