Hugoifier

hugoifier / tests / test_theme_patcher.py
Source Blame History 102 lines
6272677… lmata 1 """Tests for utils.theme_patcher."""
6272677… lmata 2 import os
6272677… lmata 3 import tempfile
6272677… lmata 4 import unittest
6272677… lmata 5
91515c0… lmata 6 from hugoifier.utils.theme_patcher import patch_config, patch_theme
6272677… lmata 7
6272677… lmata 8
6272677… lmata 9 class TestPatchTheme(unittest.TestCase):
6272677… lmata 10 def _write_layout(self, layouts_dir, name, content):
6272677… lmata 11 path = os.path.join(layouts_dir, name)
6272677… lmata 12 with open(path, "w") as f:
6272677… lmata 13 f.write(content)
6272677… lmata 14 return path
6272677… lmata 15
6272677… lmata 16 def test_patches_disqus_shortname(self):
6272677… lmata 17 with tempfile.TemporaryDirectory() as tmp:
6272677… lmata 18 layouts = os.path.join(tmp, "layouts")
6272677… lmata 19 os.makedirs(layouts)
6272677… lmata 20 self._write_layout(layouts, "single.html", "{{ .Site.DisqusShortname }}")
6272677… lmata 21 patch_theme(tmp)
6272677… lmata 22 with open(os.path.join(layouts, "single.html")) as f:
6272677… lmata 23 result = f.read()
6272677… lmata 24 self.assertIn(".Site.Config.Services.Disqus.Shortname", result)
6272677… lmata 25 self.assertNotIn(".Site.DisqusShortname", result)
6272677… lmata 26
6272677… lmata 27 def test_patches_google_analytics(self):
6272677… lmata 28 with tempfile.TemporaryDirectory() as tmp:
6272677… lmata 29 layouts = os.path.join(tmp, "layouts")
6272677… lmata 30 os.makedirs(layouts)
6272677… lmata 31 self._write_layout(layouts, "head.html", "{{ .Site.GoogleAnalytics }}")
6272677… lmata 32 patch_theme(tmp)
6272677… lmata 33 with open(os.path.join(layouts, "head.html")) as f:
6272677… lmata 34 result = f.read()
6272677… lmata 35 self.assertIn(".Site.Config.Services.GoogleAnalytics.ID", result)
6272677… lmata 36
6272677… lmata 37 def test_no_change_when_already_patched(self):
6272677… lmata 38 with tempfile.TemporaryDirectory() as tmp:
6272677… lmata 39 layouts = os.path.join(tmp, "layouts")
6272677… lmata 40 os.makedirs(layouts)
6272677… lmata 41 content = "{{ .Site.Config.Services.Disqus.Shortname }}"
6272677… lmata 42 self._write_layout(layouts, "single.html", content)
6272677… lmata 43 patch_theme(tmp)
6272677… lmata 44 with open(os.path.join(layouts, "single.html")) as f:
6272677… lmata 45 result = f.read()
6272677… lmata 46 self.assertEqual(result, content)
6272677… lmata 47
6272677… lmata 48 def test_no_layouts_dir_is_safe(self):
6272677… lmata 49 with tempfile.TemporaryDirectory() as tmp:
6272677… lmata 50 # Should not raise even if layouts/ doesn't exist
6272677… lmata 51 patch_theme(tmp)
6272677… lmata 52
6272677… lmata 53
6272677… lmata 54 class TestPatchConfig(unittest.TestCase):
6272677… lmata 55 def _write_config(self, path, content):
6272677… lmata 56 with open(path, "w") as f:
6272677… lmata 57 f.write(content)
6272677… lmata 58
6272677… lmata 59 def test_patches_paginate(self):
6272677… lmata 60 with tempfile.TemporaryDirectory() as tmp:
6272677… lmata 61 cfg = os.path.join(tmp, "hugo.toml")
6272677… lmata 62 self._write_config(cfg, 'paginate = 10\ntitle = "My Site"\n')
6272677… lmata 63 patch_config(cfg)
6272677… lmata 64 with open(cfg) as f:
6272677… lmata 65 result = f.read()
6272677… lmata 66 self.assertIn("[pagination]", result)
6272677… lmata 67 self.assertIn("pagerSize = 10", result)
6272677… lmata 68 self.assertNotIn("paginate = 10", result)
6272677… lmata 69
6272677… lmata 70 def test_patches_google_analytics_key(self):
6272677… lmata 71 with tempfile.TemporaryDirectory() as tmp:
6272677… lmata 72 cfg = os.path.join(tmp, "hugo.toml")
6272677… lmata 73 self._write_config(cfg, 'googleAnalytics = "UA-12345"\n')
6272677… lmata 74 patch_config(cfg)
6272677… lmata 75 with open(cfg) as f:
6272677… lmata 76 result = f.read()
6272677… lmata 77 self.assertIn("[services.googleAnalytics]", result)
6272677… lmata 78 self.assertIn('id = "UA-12345"', result)
6272677… lmata 79
6272677… lmata 80 def test_patches_disqus_shortname(self):
6272677… lmata 81 with tempfile.TemporaryDirectory() as tmp:
6272677… lmata 82 cfg = os.path.join(tmp, "hugo.toml")
6272677… lmata 83 self._write_config(cfg, 'disqusShortname = "mysite"\n')
6272677… lmata 84 patch_config(cfg)
6272677… lmata 85 with open(cfg) as f:
6272677… lmata 86 result = f.read()
6272677… lmata 87 self.assertIn("[services.disqus]", result)
6272677… lmata 88 self.assertIn('shortname = "mysite"', result)
6272677… lmata 89
6272677… lmata 90 def test_no_change_when_nothing_to_patch(self):
6272677… lmata 91 with tempfile.TemporaryDirectory() as tmp:
6272677… lmata 92 cfg = os.path.join(tmp, "hugo.toml")
6272677… lmata 93 content = 'title = "Clean Site"\n'
6272677… lmata 94 self._write_config(cfg, content)
6272677… lmata 95 patch_config(cfg)
6272677… lmata 96 with open(cfg) as f:
6272677… lmata 97 result = f.read()
6272677… lmata 98 self.assertEqual(result, content)
6272677… lmata 99
6272677… lmata 100
6272677… lmata 101 if __name__ == "__main__":
6272677… lmata 102 unittest.main()

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button