aboutsummaryrefslogtreecommitdiffstats
path: root/tests
diff options
context:
space:
mode:
Diffstat (limited to 'tests')
-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()