Add failing test for #5395

This commit is contained in:
Carlton Gibson 2017-10-02 10:48:05 +02:00
parent e6193cfd9e
commit 5d10c2eb64
3 changed files with 43 additions and 3 deletions

View File

@ -26,6 +26,9 @@ def pytest_configure():
{ {
'BACKEND': 'django.template.backends.django.DjangoTemplates', 'BACKEND': 'django.template.backends.django.DjangoTemplates',
'APP_DIRS': True, 'APP_DIRS': True,
'OPTIONS': {
"debug": True, # We want template errors to raise
}
}, },
], ],
MIDDLEWARE=MIDDLEWARE, MIDDLEWARE=MIDDLEWARE,

View File

@ -4,6 +4,7 @@ from __future__ import unicode_literals
import re import re
from collections import MutableMapping, OrderedDict from collections import MutableMapping, OrderedDict
import coreapi
import pytest import pytest
from django.conf.urls import include, url from django.conf.urls import include, url
from django.core.cache import cache from django.core.cache import cache
@ -16,7 +17,7 @@ from django.utils.translation import ugettext_lazy as _
from rest_framework import permissions, serializers, status from rest_framework import permissions, serializers, status
from rest_framework.renderers import ( from rest_framework.renderers import (
AdminRenderer, BaseRenderer, BrowsableAPIRenderer, AdminRenderer, BaseRenderer, BrowsableAPIRenderer, DocumentationRenderer,
HTMLFormRenderer, JSONRenderer, StaticHTMLRenderer HTMLFormRenderer, JSONRenderer, StaticHTMLRenderer
) )
from rest_framework.request import Request from rest_framework.request import Request
@ -706,3 +707,32 @@ class AdminRendererTests(TestCase):
response = view(request) response = view(request)
response.render() response.render()
self.assertInHTML('<tr><th>Iteritems</th><td>a string</td></tr>', str(response.content)) self.assertInHTML('<tr><th>Iteritems</th><td>a string</td></tr>', str(response.content))
class TestDocumentationRenderer(TestCase):
def test_document_with_link_named_data(self):
"""
Ref #5395: Doc's `document.data` would fail with a Link named "data".
As per #4972, use templatetag instead.
"""
document = coreapi.Document(
title='Data Endpoint API',
url='https://api.example.org/',
content={
'data': coreapi.Link(
url='/data/',
action='get',
fields=[],
description='Return data.'
)
}
)
factory = APIRequestFactory()
request = factory.get('/')
renderer = DocumentationRenderer()
html = renderer.render(document, accepted_media_type="text/html", renderer_context={"request": request})
assert '<h1>Data Endpoint API</h1>' in html

View File

@ -1,4 +1,11 @@
""" """
Blank URLConf just to keep the test suite happy URLConf for test suite.
We need only the docs urls for DocumentationRenderer tests.
""" """
urlpatterns = [] from django.conf.urls import url
from rest_framework.documentation import include_docs_urls
urlpatterns = [
url(r'^docs/', include_docs_urls(title='Test Suite API')),
]