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)
|