(improvement): Adds More Type Formats to String Parser #42
@@ -5,6 +5,7 @@ from pydantic import AnyUrl, EmailStr
|
|||||||
from datetime import date, datetime, time, timedelta
|
from datetime import date, datetime, time, timedelta
|
||||||
from ipaddress import IPv4Address, IPv6Address
|
from ipaddress import IPv4Address, IPv6Address
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
from uuid import UUID
|
||||||
|
|
||||||
|
|
||||||
class TestStringTypeParser(TestCase):
|
class TestStringTypeParser(TestCase):
|
||||||
@@ -131,6 +132,18 @@ class TestStringTypeParser(TestCase):
|
|||||||
|
|
||||||
self.assertEqual(type_parsing, expected_type)
|
self.assertEqual(type_parsing, expected_type)
|
||||||
|
|
||||||
|
def test_string_parser_with_uuid_format(self):
|
||||||
|
parser = StringTypeParser()
|
||||||
|
|
||||||
|
properties = {
|
||||||
|
"type": "string",
|
||||||
|
"format": "uuid",
|
||||||
|
}
|
||||||
|
|
||||||
|
type_parsing, type_validator = parser.from_properties("placeholder", properties)
|
||||||
|
|
||||||
|
self.assertEqual(type_parsing, UUID)
|
||||||
|
|
||||||
def test_string_parser_with_time_format(self):
|
def test_string_parser_with_time_format(self):
|
||||||
parser = StringTypeParser()
|
parser = StringTypeParser()
|
||||||
|
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ from pydantic import AnyUrl, BaseModel
|
|||||||
|
|
||||||
from ipaddress import IPv4Address, IPv6Address
|
from ipaddress import IPv4Address, IPv6Address
|
||||||
from unittest import TestCase
|
from unittest import TestCase
|
||||||
|
from uuid import UUID
|
||||||
|
|
||||||
|
|
||||||
def is_pydantic_model(cls):
|
def is_pydantic_model(cls):
|
||||||
@@ -493,6 +494,22 @@ class TestSchemaConverter(TestCase):
|
|||||||
with self.assertRaises(ValueError):
|
with self.assertRaises(ValueError):
|
||||||
model(ip="invalid-ipv6")
|
model(ip="invalid-ipv6")
|
||||||
|
|
||||||
|
def test_string_format_uuid(self):
|
||||||
|
schema = {
|
||||||
|
"title": "UUIDTest",
|
||||||
|
"type": "object",
|
||||||
|
"properties": {"id": {"type": "string", "format": "uuid"}},
|
||||||
|
}
|
||||||
|
model = SchemaConverter.build(schema)
|
||||||
|
|
||||||
|
self.assertEqual(
|
||||||
|
model(id="123e4567-e89b-12d3-a456-426614174000").id,
|
||||||
|
UUID("123e4567-e89b-12d3-a456-426614174000"),
|
||||||
|
)
|
||||||
|
|
||||||
|
with self.assertRaises(ValueError):
|
||||||
|
model(id="invalid-uuid")
|
||||||
|
|
||||||
def test_string_format_hostname(self):
|
def test_string_format_hostname(self):
|
||||||
schema = {
|
schema = {
|
||||||
"title": "HostnameTest",
|
"title": "HostnameTest",
|
||||||
|
|||||||
Reference in New Issue
Block a user