parent
13311582ea
commit
a72e5b2899
|
|
@ -1,5 +1,3 @@
|
||||||
from six import raise_from
|
|
||||||
|
|
||||||
import copy
|
import copy
|
||||||
import json
|
import json
|
||||||
import logging
|
import logging
|
||||||
|
|
@ -8,6 +6,8 @@ from collections import OrderedDict
|
||||||
from coreapi.compat import force_bytes
|
from coreapi.compat import force_bytes
|
||||||
from ruamel import yaml
|
from ruamel import yaml
|
||||||
|
|
||||||
|
from six import binary_type, raise_from, text_type
|
||||||
|
|
||||||
from . import openapi
|
from . import openapi
|
||||||
from .errors import SwaggerValidationError
|
from .errors import SwaggerValidationError
|
||||||
|
|
||||||
|
|
@ -176,7 +176,14 @@ class SaneYamlDumper(yaml.SafeDumper):
|
||||||
node.flow_style = best_style
|
node.flow_style = best_style
|
||||||
return node
|
return node
|
||||||
|
|
||||||
|
def represent_text(self, text):
|
||||||
|
if "\n" in text:
|
||||||
|
return self.represent_scalar('tag:yaml.org,2002:str', text, style='|')
|
||||||
|
return self.represent_scalar('tag:yaml.org,2002:str', text)
|
||||||
|
|
||||||
|
|
||||||
|
SaneYamlDumper.add_representer(binary_type, SaneYamlDumper.represent_text)
|
||||||
|
SaneYamlDumper.add_representer(text_type, SaneYamlDumper.represent_text)
|
||||||
SaneYamlDumper.add_representer(OrderedDict, SaneYamlDumper.represent_odict)
|
SaneYamlDumper.add_representer(OrderedDict, SaneYamlDumper.represent_odict)
|
||||||
SaneYamlDumper.add_multi_representer(OrderedDict, SaneYamlDumper.represent_odict)
|
SaneYamlDumper.add_multi_representer(OrderedDict, SaneYamlDumper.represent_odict)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -13,9 +13,9 @@ swagger_info = openapi.Info(
|
||||||
default_version='v1',
|
default_version='v1',
|
||||||
description="""This is a demo project for the [drf-yasg](https://github.com/axnsan12/drf-yasg) Django Rest Framework library.
|
description="""This is a demo project for the [drf-yasg](https://github.com/axnsan12/drf-yasg) Django Rest Framework library.
|
||||||
|
|
||||||
The `swagger-ui` view can be found [here](/cached/swagger).
|
The `swagger-ui` view can be found [here](/cached/swagger).
|
||||||
The `ReDoc` view can be found [here](/cached/redoc).
|
The `ReDoc` view can be found [here](/cached/redoc).
|
||||||
The swagger YAML document can be found [here](/cached/swagger.yaml).
|
The swagger YAML document can be found [here](/cached/swagger.yaml).
|
||||||
|
|
||||||
You can log in using the pre-existing `admin` user with password `passwordadmin`.""", # noqa
|
You can log in using the pre-existing `admin` user with password `passwordadmin`.""", # noqa
|
||||||
terms_of_service="https://www.google.com/policies/terms/",
|
terms_of_service="https://www.google.com/policies/terms/",
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,8 @@ info:
|
||||||
title: Snippets API
|
title: Snippets API
|
||||||
description: "This is a demo project for the [drf-yasg](https://github.com/axnsan12/drf-yasg)\
|
description: "This is a demo project for the [drf-yasg](https://github.com/axnsan12/drf-yasg)\
|
||||||
\ Django Rest Framework library.\n\nThe `swagger-ui` view can be found [here](/cached/swagger).\
|
\ Django Rest Framework library.\n\nThe `swagger-ui` view can be found [here](/cached/swagger).\
|
||||||
\ \nThe `ReDoc` view can be found [here](/cached/redoc). \nThe swagger YAML\
|
\nThe `ReDoc` view can be found [here](/cached/redoc).\nThe swagger YAML\
|
||||||
\ document can be found [here](/cached/swagger.yaml). \n\nYou can log in using\
|
\ document can be found [here](/cached/swagger.yaml).\n\nYou can log in using\
|
||||||
\ the pre-existing `admin` user with password `passwordadmin`."
|
\ the pre-existing `admin` user with password `passwordadmin`."
|
||||||
termsOfService: https://www.google.com/policies/terms/
|
termsOfService: https://www.google.com/policies/terms/
|
||||||
contact:
|
contact:
|
||||||
|
|
|
||||||
|
|
@ -334,3 +334,20 @@ def test_optional_return_type(py_type, expected_type):
|
||||||
swagger = generator.get_schema(None, True)
|
swagger = generator.get_schema(None, True)
|
||||||
property_schema = swagger["definitions"]["OptionalMethod"]["properties"]["x"]
|
property_schema = swagger["definitions"]["OptionalMethod"]["properties"]["x"]
|
||||||
assert property_schema == openapi.Schema(title='X', type=expected_type, readOnly=True)
|
assert property_schema == openapi.Schema(title='X', type=expected_type, readOnly=True)
|
||||||
|
|
||||||
|
|
||||||
|
EXPECTED_DESCRIPTION = """\
|
||||||
|
description: |-
|
||||||
|
This is a demo project for the [drf-yasg](https://github.com/axnsan12/drf-yasg) Django Rest Framework library.
|
||||||
|
|
||||||
|
The `swagger-ui` view can be found [here](/cached/swagger).
|
||||||
|
The `ReDoc` view can be found [here](/cached/redoc).
|
||||||
|
The swagger YAML document can be found [here](/cached/swagger.yaml).
|
||||||
|
|
||||||
|
You can log in using the pre-existing `admin` user with password `passwordadmin`.
|
||||||
|
"""
|
||||||
|
|
||||||
|
def test_multiline_strings(call_generate_swagger):
|
||||||
|
output = call_generate_swagger(format='yaml')
|
||||||
|
print("|\n|".join(output.splitlines()[:20]))
|
||||||
|
assert EXPECTED_DESCRIPTION in output
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue