diff --git a/tests/conftest.py b/tests/conftest.py index 256678226..258f7b7bf 100644 --- a/tests/conftest.py +++ b/tests/conftest.py @@ -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, diff --git a/tests/test_renderers.py b/tests/test_renderers.py index 5f4aa51a3..4a7d29d9b 100644 --- a/tests/test_renderers.py +++ b/tests/test_renderers.py @@ -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('Iteritemsa string', 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 '

Data Endpoint API

' in html diff --git a/tests/urls.py b/tests/urls.py index f5a261771..a237ec219 100644 --- a/tests/urls.py +++ b/tests/urls.py @@ -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')), +]