aboutsummaryrefslogtreecommitdiffstats
path: root/tests/test_module.py
blob: ccfdd74f33bcde3d7e3f1984af66a81a663cd012 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
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()