feat: tests that the generated fields in the oneOf parser have unique names and applies the same logic to the anyOf parser
This commit is contained in:
@@ -30,8 +30,10 @@ class AnyOfTypeParser(GenericTypeParser):
|
||||
sub_properties = properties["anyOf"]
|
||||
|
||||
sub_types = [
|
||||
GenericTypeParser.type_from_properties(name, subProperty, **kwargs)
|
||||
for subProperty in sub_properties
|
||||
GenericTypeParser.type_from_properties(
|
||||
f"{name}_sub{i}", subProperty, **kwargs
|
||||
)
|
||||
for i, subProperty in enumerate(sub_properties)
|
||||
]
|
||||
|
||||
if not kwargs.get("required", False):
|
||||
|
||||
@@ -3,6 +3,7 @@ from jambo.exceptions import InvalidSchemaException, UnsupportedSchemaException
|
||||
from jambo.types import JSONSchema
|
||||
|
||||
from pydantic import AnyUrl, BaseModel, ValidationError
|
||||
from typing_extensions import get_args
|
||||
|
||||
from ipaddress import IPv4Address, IPv6Address
|
||||
from unittest import TestCase
|
||||
@@ -826,15 +827,12 @@ class TestSchemaConverter(TestCase):
|
||||
|
||||
schema_type = SchemaConverter.build(schema)
|
||||
|
||||
_ = schema_type.model_validate(
|
||||
{"operating_system": {"name": "Ubuntu", "version": "20.04"}}
|
||||
)
|
||||
# check for me that the types generated by the oneOf in the typing.Annotated have different names
|
||||
operating_system_field = schema_type.model_fields["operating_system"]
|
||||
|
||||
_ = schema_type.model_validate(
|
||||
{
|
||||
"operating_system": {
|
||||
"creation": {"name": "Ubuntu", "version": "20.04"},
|
||||
"reinstallation": {"name": "Ubuntu", "version": "22.04"},
|
||||
}
|
||||
}
|
||||
)
|
||||
arg1, arg2 = get_args(operating_system_field.annotation)
|
||||
|
||||
first_type = get_args(arg1)[0]
|
||||
second_type = get_args(arg2)[0]
|
||||
|
||||
self.assertNotEqual(first_type.__name__, second_type.__name__)
|
||||
|
||||
Reference in New Issue
Block a user