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',
'APP_DIRS': True,
'OPTIONS': {
"debug": True, # We want template errors to raise
}
},
],
MIDDLEWARE=MIDDLEWARE,

View File

@ -4,6 +4,7 @@ from __future__ import unicode_literals
import re
from collections import MutableMapping, OrderedDict
import coreapi
import pytest
from django.conf.urls import include, url
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.renderers import (
AdminRenderer, BaseRenderer, BrowsableAPIRenderer,
AdminRenderer, BaseRenderer, BrowsableAPIRenderer, DocumentationRenderer,
HTMLFormRenderer, JSONRenderer, StaticHTMLRenderer
)
from rest_framework.request import Request
@ -706,3 +707,32 @@ class AdminRendererTests(TestCase):
response = view(request)
response.render()
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')),
]