Skip to content

Commit e77041d

Browse files
committed
tests
1 parent 67c3705 commit e77041d

File tree

2 files changed

+76
-1
lines changed

2 files changed

+76
-1
lines changed

backend/custom_admin/tests/test_template_backends.py

Lines changed: 64 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,10 @@
1-
from custom_admin.template_backends import CustomAdminDjangoTemplate
1+
import pytest
2+
from unittest.mock import Mock, mock_open, patch
3+
from custom_admin.template_backends import (
4+
AstroContentLoader,
5+
CustomAdminDjangoTemplate,
6+
FormRenderer,
7+
)
28

39

410
def test_get_template_in_dev_mode(settings, requests_mock):
@@ -13,3 +19,60 @@ def test_get_template_in_dev_mode(settings, requests_mock):
1319
result = backend.get_template("astro/test.html")
1420
assert result.render() == "Hello, Astro!"
1521
assert mock_req.called
22+
23+
24+
def test_form_renderer_template(settings, requests_mock):
25+
mock_req = requests_mock.get(
26+
"http://127.0.0.1:8000/astro/test.html", text="Hello form!"
27+
)
28+
settings.DEBUG = True
29+
30+
backend = FormRenderer()
31+
result = backend.get_template("astro/test.html")
32+
assert result.render() == "Hello form!"
33+
assert mock_req.called
34+
35+
36+
def test_astro_content_loader_loads_from_disk_in_prod(settings):
37+
settings.DEBUG = False
38+
39+
loader = AstroContentLoader(engine=Mock())
40+
origin = loader.get_template_sources("admin/base.html")
41+
origin = next(origin)
42+
43+
with patch("builtins.open", mock_open(read_data="Hello from disk!")) as mock_file:
44+
contents = loader.get_contents(origin)
45+
46+
assert contents == "Hello from disk!"
47+
mock_file.assert_called_once_with("custom_admin/templates/astro/admin-base.html")
48+
49+
50+
def test_astro_content_loader_proxies_admin_base_to_astro_in_dev(
51+
settings, requests_mock
52+
):
53+
settings.DEBUG = True
54+
mock_req = requests_mock.get(
55+
"http://127.0.0.1:8000/astro/admin-base.html", text="Hello, Astro!"
56+
)
57+
58+
loader = AstroContentLoader(engine=Mock())
59+
origin = loader.get_template_sources("admin/base.html")
60+
origin = next(origin)
61+
62+
assert origin.name == "admin/base.html"
63+
assert origin.template_name == "astro/admin-base.html"
64+
assert origin.loader == loader
65+
66+
contents = loader.get_contents(origin)
67+
68+
assert contents == "Hello, Astro!"
69+
assert mock_req.called
70+
71+
72+
@pytest.mark.parametrize("template_name", ["admin/test.html", "other-template.html"])
73+
def test_astro_content_loader_ignores_non_admin_base_templates(settings, template_name):
74+
settings.DEBUG = True
75+
76+
loader = AstroContentLoader(engine=Mock())
77+
with pytest.raises(StopIteration):
78+
next(loader.get_template_sources(template_name))
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
from custom_admin.templatetags.to_json_for_prop import to_json_for_prop
2+
from custom_admin.templatetags.empty_string_if_none import empty_string_if_none
3+
4+
5+
def test_empty_string_if_none():
6+
assert empty_string_if_none("") == ""
7+
assert empty_string_if_none(None) == ""
8+
assert empty_string_if_none("value") == "value"
9+
10+
11+
def test_to_json_for_prop():
12+
assert to_json_for_prop({"a": 123}) == "{\\u0022a\\u0022: 123}"

0 commit comments

Comments
 (0)