OpenAPI schemas: Ensure lazy field descriptions are converted to str(). (#6832)

This commit is contained in:
Chris Vigelius 2019-07-25 15:30:20 +02:00 committed by Carlton Gibson
parent 659375ffe6
commit ca727872c8
2 changed files with 11 additions and 1 deletions

View File

@ -377,7 +377,7 @@ class AutoSchema(ViewInspector):
if field.default and field.default != empty: # why don't they use None?!
schema['default'] = field.default
if field.help_text:
schema['description'] = field.help_text
schema['description'] = str(field.help_text)
self._map_field_validators(field.validators, schema)
properties[field.field_name] = schema

View File

@ -1,6 +1,7 @@
import pytest
from django.conf.urls import url
from django.test import RequestFactory, TestCase, override_settings
from django.utils.translation import gettext_lazy as _
from rest_framework import filters, generics, pagination, routers, serializers
from rest_framework.compat import uritemplate
@ -52,6 +53,15 @@ class TestFieldMapping(TestCase):
with self.subTest(field=field):
assert inspector._map_field(field) == mapping
def test_lazy_string_field(self):
class Serializer(serializers.Serializer):
text = serializers.CharField(help_text=_('lazy string'))
inspector = AutoSchema()
data = inspector._map_serializer(Serializer())
assert isinstance(data['properties']['text']['description'], str), "description must be str"
@pytest.mark.skipif(uritemplate is None, reason='uritemplate not installed.')
class TestOperationIntrospection(TestCase):