diff options
| author | Danilo M. <danix@danix.xyz> | 2026-11-09 18:11:41 +0100 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-11-09 18:11:41 +0100 |
| commit | 5332d87511a9336c004af755f007aaa688d9c654 (patch) | |
| tree | df0a61dd62f303adbb425fd76896845fa964ca48 /tests | |
| parent | d1afaffd414fcb9328f17983540076b539456bd3 (diff) | |
| download | deck-it-5332d87511a9336c004af755f007aaa688d9c654.tar.gz deck-it-5332d87511a9336c004af755f007aaa688d9c654.zip | |
feat: module contract and registry
Diffstat (limited to 'tests')
| -rw-r--r-- | tests/test_module.py | 33 |
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() |
