|
| 1 | +from pathlib import Path |
| 2 | + |
| 3 | +import pytest |
| 4 | +from jinja2 import Template |
| 5 | + |
| 6 | + |
| 7 | +@pytest.fixture(scope="session") |
| 8 | +def template(env) -> Template: |
| 9 | + return env.get_template("async_endpoint_module.pyi") |
| 10 | + |
| 11 | + |
| 12 | +def test_async_endpoint_module(template, mocker): |
| 13 | + path_param = mocker.MagicMock(python_name="path_param_1") |
| 14 | + path_param.name = "pathParam1" |
| 15 | + path_param.to_string.return_value = "path_param_1: str" |
| 16 | + query_param = mocker.MagicMock(template=None, python_name="query_param_1") |
| 17 | + query_param.name = "queryParam" |
| 18 | + query_param.to_string.return_value = "query_param_1: str" |
| 19 | + get_response = mocker.MagicMock(status_code=200) |
| 20 | + get_response.return_string.return_value = "str" |
| 21 | + get_response.constructor.return_value = "str(response.text)" |
| 22 | + get_endpoint = mocker.MagicMock( |
| 23 | + requires_security=False, |
| 24 | + path_parameters=[path_param], |
| 25 | + query_parameters=[query_param], |
| 26 | + form_body_reference=None, |
| 27 | + multipart_body_reference=None, |
| 28 | + json_body=None, |
| 29 | + responses=[get_response], |
| 30 | + description="GET endpoint", |
| 31 | + path="/get/{pathParam1}", |
| 32 | + method="get", |
| 33 | + ) |
| 34 | + get_endpoint.name = "PascalCase" |
| 35 | + |
| 36 | + form_body_reference = mocker.MagicMock(class_name="FormBody") |
| 37 | + multipart_body_reference = mocker.MagicMock(class_name="MultiPartBody") |
| 38 | + json_body = mocker.MagicMock(template=None, python_name="json_body") |
| 39 | + json_body.get_type_string.return_value = "Json" |
| 40 | + post_response_1 = mocker.MagicMock(status_code=200) |
| 41 | + post_response_1.return_string.return_value = "str" |
| 42 | + post_response_1.constructor.return_value = "str(response.text)" |
| 43 | + post_response_2 = mocker.MagicMock(status_code=201) |
| 44 | + post_response_2.return_string.return_value = "int" |
| 45 | + post_response_2.constructor.return_value = "int(response.text)" |
| 46 | + post_endpoint = mocker.MagicMock( |
| 47 | + name="camelCase", |
| 48 | + requires_security=True, |
| 49 | + path_parameters=[], |
| 50 | + query_parameters=[], |
| 51 | + form_body_reference=form_body_reference, |
| 52 | + multipart_body_reference=multipart_body_reference, |
| 53 | + json_body=json_body, |
| 54 | + responses=[post_response_1, post_response_2], |
| 55 | + description="POST endpoint", |
| 56 | + path="/post/", |
| 57 | + method="post", |
| 58 | + ) |
| 59 | + post_endpoint.name = "camelCase" |
| 60 | + |
| 61 | + collection = mocker.MagicMock( |
| 62 | + relative_imports=["import this", "from __future__ import braces"], endpoints=[get_endpoint, post_endpoint], |
| 63 | + ) |
| 64 | + |
| 65 | + result = template.render(collection=collection) |
| 66 | + import black |
| 67 | + expected = (Path(__file__).parent / "async_endpoint_module.py").read_text() |
| 68 | + black.assert_equivalent(result, expected) |
0 commit comments