File: test_theme.py

package info (click to toggle)
staticsite 2.5-1
  • links: PTS, VCS
  • area: main
  • in suites: sid, trixie
  • size: 14,648 kB
  • sloc: javascript: 33,722; python: 9,851; makefile: 46; sh: 4
file content (113 lines) | stat: -rw-r--r-- 3,639 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
from unittest import TestCase

from . import utils as test_utils


class MockContext(dict):
    def __init__(self, *args, **kw):
        super().__init__(*args, **kw)
        self.name = "test"


class TestUrlFor(test_utils.MockSiteTestMixin, TestCase):
    """
    Test theme functions
    """

    def test_no_site_root(self):
        files = {
            ".staticsite": {
                "site_url": "https://www.example.org",
            },
            "page1.md": {},
            "dir/page2.md": {},
            "dir/index.html": {},
        }

        with self.site(files) as mocksite:
            site = mocksite.site

            def url_for(dest, page=None, **kw):
                if page:
                    context = MockContext(page=page)
                else:
                    context = None
                return site.theme.jinja2_url_for(context, dest, **kw)

            page = mocksite.page("")
            self.assertEqual(url_for("page1.md", page=page), "/page1")
            self.assertEqual(url_for("page1", page=page), "/page1")

            # Autogenerated index.html can be looked up now
            self.assertEqual(url_for("page1/index.html", page=page), "/page1")

            # index.html however resolve, as they exist in the sources
            # namespace
            self.assertEqual(url_for("dir", page=page), "/dir")
            self.assertEqual(url_for("dir/index.html", page=page), "/dir")

            # Test absolute urls
            self.assertEqual(
                url_for("page1", page=page, absolute=True),
                "https://www.example.org/page1",
            )

    def test_site_path(self):
        files = {
            ".staticsite": {
                "site_url": "https://www.example.org",
                "site_path": "prefix",
            },
            "page1.md": {},
            "page2.rst": {},
            "page3.yaml": {"data_type": "page"},
            "dir/page2.md": {},
            "dir/index.html": {},
        }

        with self.site(files) as mocksite:
            site = mocksite.site

            def url_for(dest, page=None, **kw):
                if page:
                    context = MockContext(page=page)
                else:
                    context = None
                return site.theme.jinja2_url_for(context, dest, **kw)

            page = mocksite.page("")
            self.assertEqual(url_for("page1.md", page=page), "/prefix/page1")
            self.assertEqual(url_for("page1", page=page), "/prefix/page1")

            self.assertEqual(url_for("page2.rst", page=page), "/prefix/page2")
            self.assertEqual(url_for("page2", page=page), "/prefix/page2")

            self.assertEqual(url_for("page3.yaml", page=page), "/prefix/page3")
            self.assertEqual(url_for("page3", page=page), "/prefix/page3")

            # Test absolute urls
            self.assertEqual(
                url_for("page1", page=page, absolute=True),
                "https://www.example.org/prefix/page1",
            )


class TestMarkdownFilter(test_utils.MockSiteTestMixin, TestCase):
    def test_markdown(self):
        files = {
            "index.html": "",
        }
        with self.site(files) as mocksite:
            site = mocksite.site

            page = mocksite.page("")

            tpl = site.theme.jinja2.from_string(
                "{% filter markdown %}*This* is an [example](http://example.org){% endfilter %}"
            )

            res = tpl.render(page=page)
            self.assertEqual(
                res,
                '<p><em>This</em> is an <a href="http://example.org">example</a></p>',
            )