forked from retoor/devplacepy
feat: add container manager API, islop router, and container runtime files with vim/bot/d stealth clients
This commit is contained in:
@@ -0,0 +1,31 @@
|
||||
# retoor <retoor@molodetz.nl>
|
||||
|
||||
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 == {}
|
||||
Reference in New Issue
Block a user