Better Tests and Array Implementation

This commit is contained in:
2025-03-28 02:26:17 -03:00
parent f872cbee0b
commit 55a7162c68
2 changed files with 40 additions and 8 deletions

View File

@@ -12,10 +12,8 @@ class ArrayTypeParser(GenericTypeParser):
@classmethod
def from_properties(cls, name, properties):
_item_type = properties["items"]["type"]
if _item_type == "object":
_item_type = type
else:
_item_type = GenericTypeParser.get_impl(_item_type).mapped_type
_item_type, _item_args = GenericTypeParser.get_impl(
properties["items"]["type"]
).from_properties(name, properties["items"])
return list[_item_type], {}

View File

@@ -8,6 +8,7 @@ from jsonschema_pydantic.types import (
)
import unittest
from typing import get_args
class TestTypeParser(unittest.TestCase):
@@ -38,11 +39,23 @@ class TestTypeParser(unittest.TestCase):
def test_object_parser(self):
parser = ObjectTypeParser()
expected_definition = (object, {})
self.assertEqual(parser.from_properties("placeholder", {}), expected_definition)
properties = {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"},
},
}
def test_array_parser(self):
Model, _args = parser.from_properties("placeholder", properties)
obj = Model(name="name", age=10)
self.assertEqual(obj.name, "name")
self.assertEqual(obj.age, 10)
def test_array_of_string_parser(self):
parser = ArrayTypeParser()
expected_definition = (list[str], {})
@@ -51,3 +64,24 @@ class TestTypeParser(unittest.TestCase):
self.assertEqual(
parser.from_properties("placeholder", properties), expected_definition
)
def test_array_of_object_parser(self):
parser = ArrayTypeParser()
properties = {
"items": {
"type": "object",
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"},
},
}
}
_type, _args = parser.from_properties("placeholder", properties)
Model = get_args(_type)[0]
obj = Model(name="name", age=10)
self.assertEqual(obj.name, "name")
self.assertEqual(obj.age, 10)