aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_module.py
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-11-09 18:11:41 +0100
committerDanilo M. <danix@danix.xyz>2026-11-09 18:11:41 +0100
commit5332d87511a9336c004af755f007aaa688d9c654 (patch)
treedf0a61dd62f303adbb425fd76896845fa964ca48 /tests/test_module.py
parentd1afaffd414fcb9328f17983540076b539456bd3 (diff)
downloaddeck-it-5332d87511a9336c004af755f007aaa688d9c654.tar.gz
deck-it-5332d87511a9336c004af755f007aaa688d9c654.zip
feat: module contract and registry
Diffstat (limited to 'tests/test_module.py')
-rw-r--r--tests/test_module.py33
1 files changed, 33 insertions, 0 deletions
diff --git a/tests/test_module.py b/tests/test_module.py
new file mode 100644
index 0000000..ccfdd74
--- /dev/null
+++ b/tests/test_module.py
@@ -0,0 +1,33 @@
+import sys
+from pathlib import Path
+
+sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
+
+import unittest
+
+import deckit.module as mod
+
+
+def make():
+ return mod.Module(name="demo", title="Demo",
+ state=lambda: {"ok": True},
+ actions={"ping": lambda body: {"got": body.get("n")}})
+
+
+class RegistryTest(unittest.TestCase):
+ def test_lists_and_dispatches(self):
+ r = mod.Registry([make()])
+ self.assertEqual(r.names(), [{"name": "demo", "title": "Demo"}])
+ self.assertEqual(r.state("demo"), {"ok": True})
+ self.assertEqual(r.run_action("demo", "ping", {"n": 3}), {"got": 3})
+
+ def test_unknown_module_and_action_raise(self):
+ r = mod.Registry([make()])
+ with self.assertRaises(mod.ModuleError):
+ r.state("nope")
+ with self.assertRaises(mod.ModuleError):
+ r.run_action("demo", "nope", {})
+
+
+if __name__ == "__main__":
+ unittest.main()