mirror of
https://github.com/kevinveenbirkenbach/computer-playbook.git
synced 2025-12-02 15:39:57 +00:00
Added test for littlejs filter
This commit is contained in:
0
tests/unit/roles/web-app-littlejs/__init__.py
Normal file
0
tests/unit/roles/web-app-littlejs/__init__.py
Normal file
@@ -0,0 +1,66 @@
|
||||
import unittest
|
||||
import importlib.util
|
||||
from pathlib import Path
|
||||
|
||||
|
||||
def _load_littlejs_module():
|
||||
"""
|
||||
Load the littlejs filter plugin directly from the roles path.
|
||||
Works even with hyphens in directory names.
|
||||
"""
|
||||
here = Path(__file__).resolve()
|
||||
plugin_path = (
|
||||
here.parents[5]
|
||||
/ "roles"
|
||||
/ "web-app-littlejs"
|
||||
/ "filter_plugins"
|
||||
/ "littlejs.py"
|
||||
)
|
||||
|
||||
spec = importlib.util.spec_from_file_location("littlejs_filter", plugin_path)
|
||||
module = importlib.util.module_from_spec(spec)
|
||||
assert spec.loader is not None
|
||||
spec.loader.exec_module(module)
|
||||
return module
|
||||
|
||||
|
||||
class TestLittlejsHref(unittest.TestCase):
|
||||
|
||||
@classmethod
|
||||
def setUpClass(cls):
|
||||
module = _load_littlejs_module()
|
||||
# Store original function; we will always access it via type(self)
|
||||
cls._littlejs_href = module.littlejs_href
|
||||
|
||||
def test_returns_hash_if_no_file(self):
|
||||
href = type(self)._littlejs_href({}, "https", "littlejs.example.com")
|
||||
self.assertEqual(href, "#")
|
||||
|
||||
def test_full_example_project(self):
|
||||
example = {"file": "starter", "is_project": True}
|
||||
href = type(self)._littlejs_href(example, "https", "littlejs.example.com")
|
||||
self.assertEqual(
|
||||
href,
|
||||
"https://littlejs.example.com/examples/starter/"
|
||||
)
|
||||
|
||||
def test_short_example_uses_runner(self):
|
||||
# no is_project → False by default
|
||||
example = {"file": "clock.js"}
|
||||
href = type(self)._littlejs_href(example, "https", "littlejs.example.com")
|
||||
self.assertEqual(
|
||||
href,
|
||||
"https://littlejs.example.com/examples/shorts/run.html?file=clock.js"
|
||||
)
|
||||
|
||||
def test_respects_protocol_and_domain(self):
|
||||
example = {"file": "platformer", "is_project": True}
|
||||
href = type(self)._littlejs_href(example, "http", "littlejs.infinito.nexus")
|
||||
self.assertEqual(
|
||||
href,
|
||||
"http://littlejs.infinito.nexus/examples/platformer/"
|
||||
)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
Reference in New Issue
Block a user