Skip to content

Commit

Permalink
Add more test cases for ObjectType
Browse files Browse the repository at this point in the history
  • Loading branch information
edgarrmondragon committed Nov 15, 2022
1 parent 7e0c954 commit 5dc8d0a
Showing 1 changed file with 64 additions and 15 deletions.
79 changes: 64 additions & 15 deletions tests/core/test_jsonschema_helpers.py
Original file line number Diff line number Diff line change
Expand Up @@ -484,7 +484,7 @@ def test_array_type():


@pytest.mark.parametrize(
"properties,addtional_properties",
"properties,additional_properties",
[
(
[
Expand All @@ -504,6 +504,15 @@ def test_array_type():
],
StringType,
),
(
[
Property("id", StringType),
Property("email", StringType),
Property("username", StringType),
Property("phone_number", StringType),
],
False,
),
(
[
Property("id", StringType),
Expand All @@ -524,6 +533,16 @@ def test_array_type():
],
StringType,
),
(
[
Property("id", StringType),
Property("id", StringType),
Property("email", StringType),
Property("username", StringType),
Property("phone_number", StringType),
],
False,
),
(
[
Property("id", StringType),
Expand All @@ -542,6 +561,15 @@ def test_array_type():
],
StringType,
),
(
[
Property("id", StringType),
Property("email", StringType, True),
Property("username", StringType, True),
Property("phone_number", StringType),
],
False,
),
(
[
Property("id", StringType),
Expand All @@ -562,39 +590,60 @@ def test_array_type():
],
StringType,
),
(
[
Property("id", StringType),
Property("email", StringType, True),
Property("email", StringType, True),
Property("username", StringType, True),
Property("phone_number", StringType),
],
False,
),
],
ids=[
"no requried, no duplicates, no additional properties",
"no requried, no duplicates, additional properties",
"no requried, duplicates, no additional properties",
"no requried, duplicates, additional properties",
"requried, no duplicates, no additional properties",
"requried, no duplicates, additional properties",
"requried, duplicates, no additional properties",
"requried, duplicates, additional properties",
"no required, no duplicates, no additional properties",
"no required, no duplicates, additional properties",
"no required, no duplicates, no additional properties allowed",
"no required, duplicates, no additional properties",
"no required, duplicates, additional properties",
"no required, duplicates, no additional properties allowed",
"required, no duplicates, no additional properties",
"required, no duplicates, additional properties",
"required, no duplicates, no additional properties allowed",
"required, duplicates, no additional properties",
"required, duplicates, additional properties",
"required, duplicates, no additional properties allowed",
],
)
def test_object_type(properties: list[Property], addtional_properties: JSONTypeHelper):
def test_object_type(
properties: list[Property],
additional_properties: JSONTypeHelper | bool,
):
merged_property_schemas = {
name: schema for p in properties for name, schema in p.to_dict().items()
}

required = [p.name for p in properties if not p.optional]
required_schema = {"required": required} if required else {}
addtional_properties_schema = (
{"additionalProperties": addtional_properties.type_dict}
if addtional_properties
additional_properties_schema = (
{
"additionalProperties": additional_properties
if isinstance(additional_properties, bool)
else additional_properties.type_dict
}
if additional_properties is not None
else {}
)

expected_json_schema = {
"type": "object",
"properties": merged_property_schemas,
**required_schema,
**addtional_properties_schema,
**additional_properties_schema,
}

object_type = ObjectType(*properties, additional_properties=addtional_properties)
object_type = ObjectType(*properties, additional_properties=additional_properties)
assert object_type.type_dict == expected_json_schema


Expand Down

0 comments on commit 5dc8d0a

Please sign in to comment.