diff --git a/tests/test_htmlrenderer.py b/tests/test_htmlrenderer.py
index 3dfe6ef74..00c86b966 100644
--- a/tests/test_htmlrenderer.py
+++ b/tests/test_htmlrenderer.py
@@ -1,8 +1,9 @@
from __future__ import unicode_literals
import django.template.loader
+import pytest
from django.conf.urls import url
-from django.core.exceptions import PermissionDenied
+from django.core.exceptions import ImproperlyConfigured, PermissionDenied
from django.http import Http404
from django.template import Template, TemplateDoesNotExist
from django.test import TestCase, override_settings
@@ -46,9 +47,15 @@ urlpatterns = [
@override_settings(ROOT_URLCONF='tests.test_htmlrenderer')
class TemplateHTMLRendererTests(TestCase):
def setUp(self):
+ class MockResponse(object):
+ template_name = None
+ self.mock_response = MockResponse()
+ self._monkey_patch_get_template()
+
+ def _monkey_patch_get_template(self):
"""
- Monkeypatch get_template
- """
+ Monkeypatch get_template
+ """
self.get_template = django.template.loader.get_template
def get_template(template_name, dirs=None):
@@ -87,6 +94,40 @@ class TemplateHTMLRendererTests(TestCase):
self.assertEqual(response.content, six.b("403 Forbidden"))
self.assertEqual(response['Content-Type'], 'text/html; charset=utf-8')
+ # 2 tests below are based on order of if statements in corresponding method
+ # of TemplateHTMLRenderer
+ def test_get_template_names_returns_own_template_name(self):
+ renderer = TemplateHTMLRenderer()
+ renderer.template_name = 'test_template'
+ template_name = renderer.get_template_names(self.mock_response, view={})
+ assert template_name == ['test_template']
+
+ def test_get_template_names_returns_view_template_name(self):
+ renderer = TemplateHTMLRenderer()
+
+ class MockResponse(object):
+ template_name = None
+
+ class MockView(object):
+ def get_template_names(self):
+ return 'template from get_template_names method'
+
+ class MockView2(object):
+ template_name = 'template from template_name attribute'
+
+ template_name = renderer.get_template_names(self.mock_response,
+ MockView())
+ assert template_name == 'template from get_template_names method'
+
+ template_name = renderer.get_template_names(self.mock_response,
+ MockView2())
+ assert template_name == ['template from template_name attribute']
+
+ def test_get_template_names_raises_error_if_no_template_found(self):
+ renderer = TemplateHTMLRenderer()
+ with pytest.raises(ImproperlyConfigured):
+ renderer.get_template_names(self.mock_response, view=object())
+
@override_settings(ROOT_URLCONF='tests.test_htmlrenderer')
class TemplateHTMLRendererExceptionTests(TestCase):