diff --git a/tests/template_tests/test_response_deprecations.py b/tests/template_tests/test_response_deprecations.py new file mode 100644 index 0000000000..dd95a37318 --- /dev/null +++ b/tests/template_tests/test_response_deprecations.py @@ -0,0 +1,42 @@ +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)