"""Tests for IPC message types.""" from voice_to_notes.ipc.messages import ( IPCMessage, error_message, partial_segment_message, progress_message, ready_message, speaker_update_message, ) def test_ipc_message_to_dict(): msg = IPCMessage(id="req-1", type="ping", payload={"key": "value"}) d = msg.to_dict() assert d == {"id": "req-1", "type": "ping", "payload": {"key": "value"}} def test_ipc_message_from_dict(): data = {"id": "req-1", "type": "ping", "payload": {"key": "value"}} msg = IPCMessage.from_dict(data) assert msg.id == "req-1" assert msg.type == "ping" assert msg.payload == {"key": "value"} def test_ipc_message_from_dict_missing_fields(): msg = IPCMessage.from_dict({}) assert msg.id == "" assert msg.type == "" assert msg.payload == {} def test_progress_message(): msg = progress_message("req-1", 50, "transcribing", "Processing...") assert msg.type == "progress" assert msg.payload["percent"] == 50 assert msg.payload["stage"] == "transcribing" def test_error_message(): msg = error_message("req-1", "not_found", "File not found") assert msg.type == "error" assert msg.payload["code"] == "not_found" assert msg.payload["message"] == "File not found" def test_ready_message(): msg = ready_message() assert msg.type == "ready" assert msg.id == "system" assert "version" in msg.payload def test_partial_segment_message(): msg = partial_segment_message("req-1", {"index": 0, "text": "hello"}) assert msg.type == "pipeline.segment" assert msg.payload["index"] == 0 assert msg.payload["text"] == "hello" def test_speaker_update_message(): msg = speaker_update_message("req-1", [{"index": 0, "speaker": "SPEAKER_00"}]) assert msg.type == "pipeline.speaker_update" assert msg.payload["updates"][0]["speaker"] == "SPEAKER_00"