Skip to content

Commit c8d7f11

Browse files
committed
Test Schema.from_dict
#3
1 parent afb82e7 commit c8d7f11

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed

tests/test_openapi_parser/test_openapi.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,3 +144,40 @@ def test_dict(self, mocker):
144144
schema_1.reference.class_name: schema_1,
145145
schema_2.reference.class_name: schema_2,
146146
}
147+
148+
def test_from_dict(self, mocker):
149+
from openapi_python_client.openapi_parser.properties import EnumProperty, StringProperty
150+
151+
in_data = {
152+
"title": mocker.MagicMock(),
153+
"description": mocker.MagicMock(),
154+
"required": ["RequiredEnum"],
155+
"properties": {"RequiredEnum": mocker.MagicMock(), "OptionalString": mocker.MagicMock(),},
156+
}
157+
required_property = EnumProperty(name="RequiredEnum", required=True, default=None, values={},)
158+
optional_property = StringProperty(name="OptionalString", required=False, default=None)
159+
property_from_dict = mocker.patch(
160+
f"{MODULE_NAME}.property_from_dict", side_effect=[required_property, optional_property]
161+
)
162+
Reference = mocker.patch(f"{MODULE_NAME}.Reference")
163+
import_string_from_reference = mocker.patch(f"{MODULE_NAME}.import_string_from_reference")
164+
165+
from openapi_python_client.openapi_parser.openapi import Schema
166+
167+
result = Schema.from_dict(in_data)
168+
169+
Reference.assert_called_once_with(in_data["title"])
170+
property_from_dict.assert_has_calls(
171+
[
172+
mocker.call(name="RequiredEnum", required=True, data=in_data["properties"]["RequiredEnum"]),
173+
mocker.call(name="OptionalString", required=False, data=in_data["properties"]["OptionalString"]),
174+
]
175+
)
176+
import_string_from_reference.assert_called_once_with(required_property.reference)
177+
assert result == Schema(
178+
reference=Reference(),
179+
required_properties=[required_property],
180+
optional_properties=[optional_property],
181+
relative_imports={import_string_from_reference()},
182+
description=in_data["description"],
183+
)

0 commit comments

Comments
 (0)