File: test_config.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 (106 lines) | stat: -rw-r--r-- 4,479 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
from __future__ import annotations

import os
from unittest import TestCase, mock

from staticsite.cmd.command import SiteCommand

from . import utils as test_utils


class TestBuildSettings(test_utils.MockSiteTestMixin, TestCase):
    """
    Test settings after command line parsing
    """

    def test_defaults(self):
        with self.site(test_utils.MockSite({}, auto_load_site=False)) as mocksite:
            with mock.patch("os.getcwd", return_value=mocksite.root):
                args = test_utils.Args()
                cmd = SiteCommand(args)
            settings = cmd.settings
            self.assertEqual(settings.PROJECT_ROOT, mocksite.root)
            self.assertEqual(settings.SITE_ROOT, "/")
            self.assertIsNone(settings.SITE_NAME)
            self.assertEqual(settings.ARCHETYPES, "archetypes")
            self.assertIsNone(settings.CONTENT)
            self.assertEqual(settings.THEME, "default")
            self.assertIsNone(settings.OUTPUT)
            self.assertIsNone(settings.TIMEZONE)
            self.assertEqual(settings.SYSTEM_ASSETS, [])
            self.assertFalse(settings.DRAFT_MODE)
            self.assertTrue(settings.CACHE_REBUILDS)

    def test_find_settings_py(self):
        files = {
            "settings.py": "SITE_NAME = 'Test Site'\n",
        }
        with self.site(test_utils.MockSite(files, auto_load_site=False)) as mocksite:
            with mock.patch("os.getcwd", return_value=mocksite.root):
                args = test_utils.Args()
                cmd = SiteCommand(args)
            settings = cmd.settings
            self.assertEqual(settings.PROJECT_ROOT, mocksite.root)
            self.assertEqual(settings.SITE_ROOT, "/")
            self.assertEqual(settings.SITE_NAME, "Test Site")
            self.assertEqual(settings.ARCHETYPES, "archetypes")
            self.assertIsNone(settings.CONTENT)
            self.assertEqual(settings.THEME, "default")
            self.assertIsNone(settings.OUTPUT)
            self.assertIsNone(settings.TIMEZONE)
            self.assertEqual(settings.SYSTEM_ASSETS, [])
            self.assertFalse(settings.DRAFT_MODE)
            self.assertTrue(settings.CACHE_REBUILDS)

    def test_find_dotstaticsite_py(self):
        files = {
            ".staticsite.py": "SITE_NAME = 'Test Site'\n",
        }
        with self.site(test_utils.MockSite(files, auto_load_site=False)) as mocksite:
            with mock.patch("os.getcwd", return_value=mocksite.root):
                args = test_utils.Args()
                cmd = SiteCommand(args)
            settings = cmd.settings
            self.assertEqual(settings.PROJECT_ROOT, mocksite.root)
            self.assertEqual(settings.SITE_ROOT, "/")
            self.assertEqual(settings.SITE_NAME, "Test Site")
            self.assertEqual(settings.ARCHETYPES, "archetypes")
            self.assertIsNone(settings.CONTENT)
            self.assertEqual(settings.THEME, "default")
            self.assertIsNone(settings.OUTPUT)
            self.assertIsNone(settings.TIMEZONE)
            self.assertEqual(settings.SYSTEM_ASSETS, [])
            self.assertFalse(settings.DRAFT_MODE)
            self.assertTrue(settings.CACHE_REBUILDS)


class TestExampleProject(test_utils.SiteTestMixin, TestCase):
    site_name = "demo"

    def test_settings(self):
        args = test_utils.Args(project=self.mocksite.root)
        cmd = SiteCommand(args)
        settings = cmd.settings
        self.assertEqual(settings.PROJECT_ROOT, self.mocksite.root)
        self.assertEqual(settings.SITE_ROOT, "/")
        # self.assertEqual(settings.SITE_NAME, "Example web site")
        self.assertIsNone(settings.SITE_NAME)
        self.assertEqual(settings.ARCHETYPES, "archetypes")
        self.assertEqual(settings.CONTENT, "content")
        self.assertEqual(settings.THEME, "default")
        self.assertEqual(settings.OUTPUT, "web")
        self.assertEqual(settings.TIMEZONE, "Europe/Rome")
        self.assertEqual(settings.SYSTEM_ASSETS, [])
        self.assertFalse(settings.DRAFT_MODE)
        self.assertTrue(settings.CACHE_REBUILDS)

    def test_default_name(self):
        output = os.path.join(self.build_root, "index.html")
        self.assertTrue(os.path.exists(output))

        with open(output, encoding="utf8") as fd:
            content = fd.read()

        # FIXME: this does not make sense anymore, since title is not defined
        # by settings anymore
        self.assertIn("Example web site", content)