44 lines
1.4 KiB
Python
44 lines
1.4 KiB
Python
|
|
"""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"
|