|
@@ -2,9 +2,12 @@ import time
|
|
|
|
|
|
from django.core.exceptions import ImproperlyConfigured
|
|
|
from django.http import HttpResponse
|
|
|
-from django.test import RequestFactory, SimpleTestCase, override_settings
|
|
|
+from django.test import (
|
|
|
+ RequestFactory, SimpleTestCase, ignore_warnings, override_settings,
|
|
|
+)
|
|
|
from django.test.utils import require_jinja2
|
|
|
from django.urls import resolve
|
|
|
+from django.utils.deprecation import RemovedInDjango40Warning
|
|
|
from django.views.generic import RedirectView, TemplateView, View
|
|
|
|
|
|
from . import views
|
|
@@ -347,25 +350,6 @@ class TemplateViewTest(SimpleTestCase):
|
|
|
view = TemplateView.as_view(template_name='generic_views/using.html', template_engine='jinja2')
|
|
|
self.assertEqual(view(request).render().content, b'Jinja2\n')
|
|
|
|
|
|
- def test_template_params(self):
|
|
|
- """
|
|
|
- A generic template view passes kwargs as context.
|
|
|
- """
|
|
|
- response = self.client.get('/template/simple/bar/')
|
|
|
- self.assertEqual(response.status_code, 200)
|
|
|
- self.assertEqual(response.context['foo'], 'bar')
|
|
|
- self.assertIsInstance(response.context['view'], View)
|
|
|
-
|
|
|
- def test_extra_template_params(self):
|
|
|
- """
|
|
|
- A template view can be customized to return extra context.
|
|
|
- """
|
|
|
- response = self.client.get('/template/custom/bar/')
|
|
|
- self.assertEqual(response.status_code, 200)
|
|
|
- self.assertEqual(response.context['foo'], 'bar')
|
|
|
- self.assertEqual(response.context['key'], 'value')
|
|
|
- self.assertIsInstance(response.context['view'], View)
|
|
|
-
|
|
|
def test_cached_views(self):
|
|
|
"""
|
|
|
A template view can be cached
|
|
@@ -584,3 +568,38 @@ class SingleObjectTemplateResponseMixinTest(SimpleTestCase):
|
|
|
)
|
|
|
with self.assertRaisesMessage(ImproperlyConfigured, msg):
|
|
|
view.get_template_names()
|
|
|
+
|
|
|
+
|
|
|
+@override_settings(ROOT_URLCONF='generic_views.urls')
|
|
|
+class DeprecationTests(SimpleTestCase):
|
|
|
+ @ignore_warnings(category=RemovedInDjango40Warning)
|
|
|
+ def test_template_params(self):
|
|
|
+ """A generic template view passes kwargs as context."""
|
|
|
+ response = self.client.get('/template/simple/bar/')
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(response.context['foo'], 'bar')
|
|
|
+ self.assertIsInstance(response.context['view'], View)
|
|
|
+
|
|
|
+ @ignore_warnings(category=RemovedInDjango40Warning)
|
|
|
+ def test_extra_template_params(self):
|
|
|
+ """A template view can be customized to return extra context."""
|
|
|
+ response = self.client.get('/template/custom/bar1/bar2/')
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ self.assertEqual(response.context['foo1'], 'bar1')
|
|
|
+ self.assertEqual(response.context['foo2'], 'bar2')
|
|
|
+ self.assertEqual(response.context['key'], 'value')
|
|
|
+ self.assertIsInstance(response.context['view'], View)
|
|
|
+
|
|
|
+ def test_template_params_warning(self):
|
|
|
+ response = self.client.get('/template/custom/bar1/bar2/')
|
|
|
+ self.assertEqual(response.status_code, 200)
|
|
|
+ msg = (
|
|
|
+ 'TemplateView passing URL kwargs to the context is deprecated. '
|
|
|
+ 'Reference %s in your template through view.kwargs instead.'
|
|
|
+ )
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango40Warning, msg % 'foo1'):
|
|
|
+ str(response.context['foo1'])
|
|
|
+ with self.assertRaisesMessage(RemovedInDjango40Warning, msg % 'foo2'):
|
|
|
+ str(response.context['foo2'])
|
|
|
+ self.assertEqual(response.context['key'], 'value')
|
|
|
+ self.assertIsInstance(response.context['view'], View)
|