@@ -134,34 +134,42 @@ def make_endpoint(self):
134
134
relative_imports = {"import_3" },
135
135
)
136
136
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 ())
139
141
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 )
145
149
)
146
- from_string = mocker .patch (f"{ MODULE_NAME } .Class.from_string" )
147
150
config = mocker .MagicMock ()
148
151
149
152
from openapi_python_client .parser .openapi import Endpoint
150
153
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 )
152
155
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 )
155
162
156
163
def test_parse_request_form_body_no_data (self ):
157
164
body = oai .RequestBody .construct (content = {})
158
165
config = MagicMock ()
166
+ schemas = MagicMock ()
159
167
160
168
from openapi_python_client .parser .openapi import Endpoint
161
169
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 )
163
171
164
- assert result is None
172
+ assert result == ( None , schemas )
165
173
166
174
def test_parse_multipart_body (self , mocker , model_property_factory ):
167
175
from openapi_python_client .parser .openapi import Endpoint , Schemas
@@ -279,13 +287,13 @@ def test_add_body_no_data(self, mocker):
279
287
def test_add_body_bad_json_data (self , mocker ):
280
288
from openapi_python_client .parser .openapi import Endpoint , Schemas
281
289
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 ))
283
292
parse_error = ParseError (data = mocker .MagicMock (), detail = mocker .MagicMock ())
284
293
other_schemas = mocker .MagicMock ()
285
294
mocker .patch .object (Endpoint , "parse_request_json_body" , return_value = (parse_error , other_schemas ))
286
295
endpoint = self .make_endpoint ()
287
296
request_body = mocker .MagicMock ()
288
- schemas = Schemas ()
289
297
290
298
result = Endpoint ._add_body (
291
299
endpoint = endpoint ,
@@ -306,14 +314,14 @@ def test_add_body_bad_json_data(self, mocker):
306
314
def test_add_body_bad_multipart_data (self , mocker ):
307
315
from openapi_python_client .parser .openapi import Endpoint , Schemas
308
316
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 ))
310
319
mocker .patch .object (Endpoint , "parse_request_json_body" , return_value = (mocker .MagicMock (), mocker .MagicMock ()))
311
320
parse_error = ParseError (data = mocker .MagicMock (), detail = mocker .MagicMock ())
312
321
other_schemas = mocker .MagicMock ()
313
322
mocker .patch .object (Endpoint , "parse_multipart_body" , return_value = (parse_error , other_schemas ))
314
323
endpoint = self .make_endpoint ()
315
324
request_body = mocker .MagicMock ()
316
- schemas = Schemas ()
317
325
318
326
result = Endpoint ._add_body (
319
327
endpoint = endpoint ,
@@ -332,13 +340,19 @@ def test_add_body_bad_multipart_data(self, mocker):
332
340
)
333
341
334
342
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
336
344
from openapi_python_client .parser .properties import Property
337
345
338
346
request_body = mocker .MagicMock ()
339
347
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
+ )
342
356
343
357
multipart_body = mocker .MagicMock (autospec = Property )
344
358
multipart_body_imports = mocker .MagicMock ()
@@ -355,7 +369,6 @@ def test_add_body_happy(self, mocker):
355
369
parse_request_json_body = mocker .patch .object (
356
370
Endpoint , "parse_request_json_body" , return_value = (json_body , json_schemas )
357
371
)
358
- import_string_from_class = mocker .patch (f"{ MODULE_NAME } .import_string_from_class" , return_value = "import_1" )
359
372
360
373
endpoint = self .make_endpoint ()
361
374
initial_schemas = mocker .MagicMock ()
@@ -368,19 +381,21 @@ def test_add_body_happy(self, mocker):
368
381
)
369
382
370
383
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 (
373
385
body = request_body , schemas = initial_schemas , parent_name = "name" , config = config
374
386
)
387
+ parse_request_json_body .assert_called_once_with (
388
+ body = request_body , schemas = form_schemas , parent_name = "name" , config = config
389
+ )
375
390
parse_multipart_body .assert_called_once_with (
376
391
body = request_body , schemas = json_schemas , parent_name = "name" , config = config
377
392
)
378
- import_string_from_class . assert_called_once_with (form_body_class , prefix = "...models " )
393
+ form_body . get_imports . assert_called_once_with (prefix = "..." )
379
394
json_body .get_imports .assert_called_once_with (prefix = "..." )
380
395
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 }
382
397
assert endpoint .json_body == json_body
383
- assert endpoint .form_body_class == form_body_class
398
+ assert endpoint .form_body == form_body
384
399
assert endpoint .multipart_body == multipart_body
385
400
386
401
def test__add_responses_status_code_error (self , mocker ):
0 commit comments