django/tests/template_tests/test_response_deprecations.py

43 lines
1.5 KiB
Python

import warnings
from django.http import HttpRequest
from django.template import Template
from django.template.response import TemplateResponse
from django.test import SimpleTestCase
class MyTemplateResponse(TemplateResponse):
def resolve_template(self, template_name):
return Template(template_name)
class DeprecationTests(SimpleTestCase):
def test_template_response(self):
msg = (
"TemplateResponse's template argument cannot be a "
"django.template.Template anymore. It may be a backend-specific "
"template like those created by get_template()."
)
with warnings.catch_warnings(record=True) as warns:
warnings.simplefilter('always')
response = TemplateResponse(HttpRequest(), Template('foo'))
response.render()
self.assertEqual(response.content, b'foo')
self.assertEqual(len(warns), 1)
self.assertEqual(str(warns[0].message), msg)
def test_custom_template_response(self):
response = MyTemplateResponse(HttpRequest(), 'baz')
msg = (
"MyTemplateResponse.resolve_template() must return a "
"backend-specific template like those created by get_template(), "
"not a Template."
)
with warnings.catch_warnings(record=True) as warns:
warnings.simplefilter('always')
response.render()
self.assertEqual(response.content, b'baz')
self.assertEqual(len(warns), 1)
self.assertEqual(str(warns[0].message), msg)