|
14 | 14 | from django.utils.safestring import SafeText
|
15 | 15 | from django.utils.translation import ugettext_lazy as _
|
16 | 16 |
|
| 17 | +import coreapi |
17 | 18 | from rest_framework import permissions, serializers, status
|
18 | 19 | from rest_framework.renderers import (
|
19 |
| - AdminRenderer, BaseRenderer, BrowsableAPIRenderer, |
| 20 | + AdminRenderer, BaseRenderer, BrowsableAPIRenderer, DocumentationRenderer, |
20 | 21 | HTMLFormRenderer, JSONRenderer, StaticHTMLRenderer
|
21 | 22 | )
|
22 | 23 | from rest_framework.request import Request
|
@@ -706,3 +707,32 @@ def get(self, request):
|
706 | 707 | response = view(request)
|
707 | 708 | response.render()
|
708 | 709 | self.assertInHTML('<tr><th>Iteritems</th><td>a string</td></tr>', str(response.content))
|
| 710 | + |
| 711 | + |
| 712 | +class TestDocumentationRenderer(TestCase): |
| 713 | + |
| 714 | + def test_document_with_link_named_data(self): |
| 715 | + """ |
| 716 | + Ref #5395: Doc's `document.data` would fail with a Link named "data". |
| 717 | + As per #4972, use templatetag instead. |
| 718 | + """ |
| 719 | + document = coreapi.Document( |
| 720 | + title='Data Endpoint API', |
| 721 | + url='https://api.example.org/', |
| 722 | + content={ |
| 723 | + 'data': coreapi.Link( |
| 724 | + url='/data/', |
| 725 | + action='get', |
| 726 | + fields=[], |
| 727 | + description='Return data.' |
| 728 | + ) |
| 729 | + } |
| 730 | + ) |
| 731 | + |
| 732 | + factory = APIRequestFactory() |
| 733 | + request = factory.get('/') |
| 734 | + |
| 735 | + renderer = DocumentationRenderer() |
| 736 | + |
| 737 | + html = renderer.render(document, accepted_media_type="text/html", renderer_context={"request": request}) |
| 738 | + assert '<h1>Data Endpoint API</h1>' in html |
0 commit comments