|
| 1 | +import pathlib |
1 | 2 | import re |
2 | 3 | import time |
3 | 4 |
|
4 | 5 | from django.core.exceptions import ImproperlyConfigured |
5 | 6 | from django.http import HttpResponse |
6 | 7 | from django.test import RequestFactory, Client |
7 | | -from django.test.utils import require_jinja2 |
8 | 8 | from django.urls import resolve |
9 | 9 |
|
10 | 10 | import pytest |
|
15 | 15 | AsyncRedirectView, |
16 | 16 | ) |
17 | 17 |
|
| 18 | +try: |
| 19 | + import jinja2 |
| 20 | +except ImportError: |
| 21 | + jinja2 = None |
| 22 | + |
| 23 | + |
| 24 | +TEMPLATE_DIR = pathlib.Path(__file__).parent.parent / "templates" |
| 25 | + |
18 | 26 | client = Client() |
19 | 27 |
|
20 | 28 |
|
@@ -352,24 +360,38 @@ def test_template_name_required(self): |
352 | 360 | with pytest.raises(ImproperlyConfigured, match=msg): |
353 | 361 | client.get("/template/no_template/") |
354 | 362 |
|
355 | | - @require_jinja2 |
356 | | - async def test_template_engine(self): |
| 363 | + @pytest.mark.skipif(jinja2 is None, reason="this test requires jinja2") |
| 364 | + async def test_template_engine(self, settings): |
357 | 365 | """ |
358 | 366 | A template view may provide a template engine. |
359 | 367 | """ |
| 368 | + settings.TEMPLATES = [ |
| 369 | + { |
| 370 | + "BACKEND": "django.template.backends.django.DjangoTemplates", |
| 371 | + "DIRS": [TEMPLATE_DIR], |
| 372 | + "APP_DIRS": True, |
| 373 | + }, |
| 374 | + { |
| 375 | + "BACKEND": "django.template.backends.jinja2.Jinja2", |
| 376 | + "APP_DIRS": True, |
| 377 | + "OPTIONS": {"keep_trailing_newline": True}, |
| 378 | + }, |
| 379 | + ] |
| 380 | + |
360 | 381 | request = self.rf.get("/using/") |
361 | | - view = await AsyncTemplateView.as_view( |
362 | | - template_name="test_generic_views/using.html" |
363 | | - ) |
364 | | - assert view(request).render().content == b"DTL\n" |
365 | | - view = await AsyncTemplateView.as_view( |
| 382 | + view = AsyncTemplateView.as_view(template_name="test_generic_views/using.html") |
| 383 | + view = await view(request) |
| 384 | + assert view.render().content == b"DTL\n" |
| 385 | + view = AsyncTemplateView.as_view( |
366 | 386 | template_name="test_generic_views/using.html", template_engine="django" |
367 | 387 | ) |
368 | | - assert view(request).render().content == b"DTL\n" |
369 | | - view = await AsyncTemplateView.as_view( |
| 388 | + view = await view(request) |
| 389 | + assert view.render().content == b"DTL\n" |
| 390 | + view = AsyncTemplateView.as_view( |
370 | 391 | template_name="test_generic_views/using.html", template_engine="jinja2" |
371 | 392 | ) |
372 | | - assert view(request).render().content == b"Jinja2\n" |
| 393 | + view = await view(request) |
| 394 | + assert view.render().content == b"Jinja2\n" |
373 | 395 |
|
374 | 396 | def test_template_params(self): |
375 | 397 | """ |
|
0 commit comments