@@ -144,3 +144,40 @@ def test_dict(self, mocker):
144
144
schema_1 .reference .class_name : schema_1 ,
145
145
schema_2 .reference .class_name : schema_2 ,
146
146
}
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