"""Tests for message handler routing.""" from voice_to_notes.ipc.handlers import HandlerRegistry, ping_handler from voice_to_notes.ipc.messages import IPCMessage def test_ping_handler(): msg = IPCMessage(id="req-1", type="ping", payload={"hello": "world"}) response = ping_handler(msg) assert response.type == "pong" assert response.id == "req-1" assert response.payload["echo"] == {"hello": "world"} def test_registry_routes_to_handler(): registry = HandlerRegistry() registry.register("ping", ping_handler) msg = IPCMessage(id="req-1", type="ping", payload={}) response = registry.handle(msg) assert response is not None assert response.type == "pong" def test_registry_unknown_type(): registry = HandlerRegistry() msg = IPCMessage(id="req-1", type="nonexistent", payload={}) response = registry.handle(msg) assert response is not None assert response.type == "error" assert response.payload["code"] == "unknown_type" def test_registry_handler_exception(): def bad_handler(msg: IPCMessage) -> IPCMessage: raise ValueError("something broke") registry = HandlerRegistry() registry.register("bad", bad_handler) msg = IPCMessage(id="req-1", type="bad", payload={}) response = registry.handle(msg) assert response is not None assert response.type == "error" assert response.payload["code"] == "handler_error"