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
410def 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 ))
0 commit comments