# retoor import json from devplacepy.services.jobs.isslop.events import KIND_DONE, WorkerEvent def test_event_roundtrip(): event = WorkerEvent(kind=KIND_DONE, message="Analysis complete", data={"grade": "A"}) parsed = WorkerEvent.parse(event.to_json()) assert parsed is not None assert parsed.kind == KIND_DONE assert parsed.message == "Analysis complete" assert parsed.data == {"grade": "A"} def test_parse_rejects_non_json_lines(): assert WorkerEvent.parse("") is None assert WorkerEvent.parse("plain log output") is None assert WorkerEvent.parse("{broken json") is None def test_parse_rejects_missing_fields(): assert WorkerEvent.parse(json.dumps({"kind": "log"})) is None assert WorkerEvent.parse(json.dumps({"message": "no kind"})) is None def test_parse_tolerates_non_dict_data(): parsed = WorkerEvent.parse(json.dumps({"kind": "log", "message": "x", "data": [1, 2]})) assert parsed is not None assert parsed.data == {}