@@ -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