|
| 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