Skip to content

Commit 4c5c350

Browse files
add _templates.get_template_engine tests (#106)
1 parent 541317a commit 4c5c350

File tree

1 file changed

+125
-0
lines changed

1 file changed

+125
-0
lines changed

tests/test_templates.py

Lines changed: 125 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,125 @@
1+
from __future__ import annotations
2+
3+
import pytest
4+
from django.conf import settings
5+
from django.core.exceptions import ImproperlyConfigured
6+
from django.test import override_settings
7+
8+
from django_simple_nav._templates import get_template_engine
9+
10+
11+
def test_get_template_engine():
12+
engine = get_template_engine()
13+
14+
assert engine.name in settings.TEMPLATES[0].get("BACKEND")
15+
16+
17+
@override_settings(TEMPLATES=[])
18+
def test_get_template_engine_no_engine():
19+
with pytest.raises(ImproperlyConfigured):
20+
get_template_engine()
21+
22+
23+
@override_settings(
24+
TEMPLATES=[
25+
{
26+
"BACKEND": "django.template.backends.django.DjangoTemplates",
27+
},
28+
{
29+
"BACKEND": "django.template.backends.jinja2.Jinja2",
30+
},
31+
]
32+
)
33+
@pytest.mark.parametrize(
34+
"templates,expected",
35+
[
36+
(
37+
[
38+
{
39+
"BACKEND": "django.template.backends.django.DjangoTemplates",
40+
},
41+
{
42+
"BACKEND": "django.template.backends.jinja2.Jinja2",
43+
},
44+
],
45+
"django",
46+
),
47+
(
48+
[
49+
{
50+
"BACKEND": "django.template.backends.jinja2.Jinja2",
51+
},
52+
{
53+
"BACKEND": "django.template.backends.django.DjangoTemplates",
54+
},
55+
],
56+
"jinja2",
57+
),
58+
],
59+
)
60+
def test_get_template_engine_multiple(templates, expected, caplog):
61+
with override_settings(TEMPLATES=templates):
62+
with caplog.at_level("WARNING"):
63+
engine = get_template_engine()
64+
65+
assert engine.name == expected
66+
assert "Multiple `BACKEND` defined for a template engine." in caplog.text
67+
68+
69+
@pytest.mark.parametrize(
70+
"using,expected",
71+
[
72+
("django", "django"),
73+
("django2", "django2"),
74+
("jinja2", "jinja2"),
75+
],
76+
)
77+
@override_settings(
78+
TEMPLATES=[
79+
{
80+
"BACKEND": "django.template.backends.django.DjangoTemplates",
81+
},
82+
{
83+
"BACKEND": "django.template.backends.django.DjangoTemplates",
84+
"NAME": "django2",
85+
},
86+
{
87+
"BACKEND": "django.template.backends.jinja2.Jinja2",
88+
},
89+
]
90+
)
91+
def test_get_template_engine_using(using, expected):
92+
engine = get_template_engine(using)
93+
94+
assert engine.name == expected
95+
96+
97+
@pytest.mark.parametrize(
98+
"app_setting,expected",
99+
[
100+
("django.template.backends.django.DjangoTemplates", "django"),
101+
("django.template.backends.jinja2.Jinja2", "jinja2"),
102+
],
103+
)
104+
def test_get_template_engine_app_setting(app_setting, expected):
105+
with override_settings(
106+
DJANGO_SIMPLE_NAV={"TEMPLATE_BACKEND": app_setting},
107+
TEMPLATES=[
108+
{
109+
"BACKEND": app_setting,
110+
},
111+
],
112+
):
113+
engine = get_template_engine()
114+
115+
assert engine.name == expected
116+
117+
118+
@override_settings(
119+
DJANGO_SIMPLE_NAV={"TEMPLATE_BACKEND": "invalid"},
120+
)
121+
def test_get_template_engine_app_setting_invalid():
122+
with pytest.raises(ImproperlyConfigured) as exc_info:
123+
get_template_engine()
124+
125+
assert "Invalid `TEMPLATE_BACKEND` for a template engine" in exc_info

0 commit comments

Comments
 (0)