@@ -134,34 +134,42 @@ def make_endpoint(self):
134134 relative_imports = {"import_3" },
135135 )
136136
137- def test_parse_request_form_body (self , mocker ):
138- ref = mocker .MagicMock ()
137+ def test_parse_request_form_body (self , mocker , model_property_factory ):
138+ from openapi_python_client .parser .properties import Class
139+
140+ schema = oai .Reference .construct (ref = mocker .MagicMock ())
139141 body = oai .RequestBody .construct (
140- content = {
141- "application/x-www-form-urlencoded" : oai .MediaType .construct (
142- media_type_schema = oai .Reference .construct (ref = ref )
143- )
144- }
142+ content = {"application/x-www-form-urlencoded" : oai .MediaType .construct (media_type_schema = schema )}
143+ )
144+ class_info = Class (name = "class_name" , module_name = "module_name" )
145+ prop_before = model_property_factory (class_info = class_info , is_form_body = False )
146+ schemas_before = Schemas ()
147+ property_from_data = mocker .patch (
148+ f"{ MODULE_NAME } .property_from_data" , return_value = (prop_before , schemas_before )
145149 )
146- from_string = mocker .patch (f"{ MODULE_NAME } .Class.from_string" )
147150 config = mocker .MagicMock ()
148151
149152 from openapi_python_client .parser .openapi import Endpoint
150153
151- result = Endpoint .parse_request_form_body (body = body , config = config )
154+ result = Endpoint .parse_request_form_body (body = body , schemas = schemas_before , parent_name = "name" , config = config )
152155
153- from_string .assert_called_once_with (string = ref , config = config )
154- assert result == from_string .return_value
156+ property_from_data .assert_called_once_with (
157+ name = "data" , required = True , data = schema , schemas = schemas_before , parent_name = "name" , config = config
158+ )
159+ prop_after = model_property_factory (class_info = class_info , is_form_body = True )
160+ schemas_after = Schemas (classes_by_name = {class_info .name : prop_after })
161+ assert result == (prop_after , schemas_after )
155162
156163 def test_parse_request_form_body_no_data (self ):
157164 body = oai .RequestBody .construct (content = {})
158165 config = MagicMock ()
166+ schemas = MagicMock ()
159167
160168 from openapi_python_client .parser .openapi import Endpoint
161169
162- result = Endpoint .parse_request_form_body (body = body , config = config )
170+ result = Endpoint .parse_request_form_body (body = body , schemas = schemas , parent_name = "name" , config = config )
163171
164- assert result is None
172+ assert result == ( None , schemas )
165173
166174 def test_parse_multipart_body (self , mocker , model_property_factory ):
167175 from openapi_python_client .parser .openapi import Endpoint , Schemas
@@ -279,13 +287,13 @@ def test_add_body_no_data(self, mocker):
279287 def test_add_body_bad_json_data (self , mocker ):
280288 from openapi_python_client .parser .openapi import Endpoint , Schemas
281289
282- mocker .patch .object (Endpoint , "parse_request_form_body" )
290+ schemas = Schemas ()
291+ mocker .patch .object (Endpoint , "parse_request_form_body" , return_value = (None , schemas ))
283292 parse_error = ParseError (data = mocker .MagicMock (), detail = mocker .MagicMock ())
284293 other_schemas = mocker .MagicMock ()
285294 mocker .patch .object (Endpoint , "parse_request_json_body" , return_value = (parse_error , other_schemas ))
286295 endpoint = self .make_endpoint ()
287296 request_body = mocker .MagicMock ()
288- schemas = Schemas ()
289297
290298 result = Endpoint ._add_body (
291299 endpoint = endpoint ,
@@ -306,14 +314,14 @@ def test_add_body_bad_json_data(self, mocker):
306314 def test_add_body_bad_multipart_data (self , mocker ):
307315 from openapi_python_client .parser .openapi import Endpoint , Schemas
308316
309- mocker .patch .object (Endpoint , "parse_request_form_body" )
317+ schemas = Schemas ()
318+ mocker .patch .object (Endpoint , "parse_request_form_body" , return_value = (None , schemas ))
310319 mocker .patch .object (Endpoint , "parse_request_json_body" , return_value = (mocker .MagicMock (), mocker .MagicMock ()))
311320 parse_error = ParseError (data = mocker .MagicMock (), detail = mocker .MagicMock ())
312321 other_schemas = mocker .MagicMock ()
313322 mocker .patch .object (Endpoint , "parse_multipart_body" , return_value = (parse_error , other_schemas ))
314323 endpoint = self .make_endpoint ()
315324 request_body = mocker .MagicMock ()
316- schemas = Schemas ()
317325
318326 result = Endpoint ._add_body (
319327 endpoint = endpoint ,
@@ -332,13 +340,19 @@ def test_add_body_bad_multipart_data(self, mocker):
332340 )
333341
334342 def test_add_body_happy (self , mocker ):
335- from openapi_python_client .parser .openapi import Class , Endpoint
343+ from openapi_python_client .parser .openapi import Endpoint
336344 from openapi_python_client .parser .properties import Property
337345
338346 request_body = mocker .MagicMock ()
339347 config = mocker .MagicMock ()
340- form_body_class = Class (name = "A" , module_name = "a" )
341- parse_request_form_body = mocker .patch .object (Endpoint , "parse_request_form_body" , return_value = form_body_class )
348+
349+ form_body = mocker .MagicMock (autospec = Property )
350+ form_body_imports = mocker .MagicMock ()
351+ form_body .get_imports .return_value = {form_body_imports }
352+ form_schemas = mocker .MagicMock ()
353+ parse_request_form_body = mocker .patch .object (
354+ Endpoint , "parse_request_form_body" , return_value = (form_body , form_schemas )
355+ )
342356
343357 multipart_body = mocker .MagicMock (autospec = Property )
344358 multipart_body_imports = mocker .MagicMock ()
@@ -355,7 +369,6 @@ def test_add_body_happy(self, mocker):
355369 parse_request_json_body = mocker .patch .object (
356370 Endpoint , "parse_request_json_body" , return_value = (json_body , json_schemas )
357371 )
358- import_string_from_class = mocker .patch (f"{ MODULE_NAME } .import_string_from_class" , return_value = "import_1" )
359372
360373 endpoint = self .make_endpoint ()
361374 initial_schemas = mocker .MagicMock ()
@@ -368,19 +381,21 @@ def test_add_body_happy(self, mocker):
368381 )
369382
370383 assert response_schemas == multipart_schemas
371- parse_request_form_body .assert_called_once_with (body = request_body , config = config )
372- parse_request_json_body .assert_called_once_with (
384+ parse_request_form_body .assert_called_once_with (
373385 body = request_body , schemas = initial_schemas , parent_name = "name" , config = config
374386 )
387+ parse_request_json_body .assert_called_once_with (
388+ body = request_body , schemas = form_schemas , parent_name = "name" , config = config
389+ )
375390 parse_multipart_body .assert_called_once_with (
376391 body = request_body , schemas = json_schemas , parent_name = "name" , config = config
377392 )
378- import_string_from_class . assert_called_once_with (form_body_class , prefix = "...models " )
393+ form_body . get_imports . assert_called_once_with (prefix = "..." )
379394 json_body .get_imports .assert_called_once_with (prefix = "..." )
380395 multipart_body .get_imports .assert_called_once_with (prefix = "..." )
381- assert endpoint .relative_imports == {"import_1 " , "import_3" , json_body_imports , multipart_body_imports }
396+ assert endpoint .relative_imports == {"import_3 " , form_body_imports , json_body_imports , multipart_body_imports }
382397 assert endpoint .json_body == json_body
383- assert endpoint .form_body_class == form_body_class
398+ assert endpoint .form_body == form_body
384399 assert endpoint .multipart_body == multipart_body
385400
386401 def test__add_responses_status_code_error (self , mocker ):
0 commit comments