test_task_timeline_tracker.py
1.25 KB
from services.shared.events import TaskLifecycleStage, TaskLifecycleStatus
from services.shared.observability import InMemoryEventRecorder
from services.shared.timeline import InMemoryTaskTimelineStore, create_task_timeline_tracker
def test_task_timeline_tracker_records_timeline_and_observable_event():
timeline_store = InMemoryTaskTimelineStore()
event_recorder = InMemoryEventRecorder()
tracker = create_task_timeline_tracker(
timeline_store=timeline_store,
event_recorder=event_recorder,
source="tests.task_timeline_tracker",
)
entry = tracker.record(
task_id="task-123",
stage=TaskLifecycleStage.ANALYZING,
status=TaskLifecycleStatus.RUNNING,
action="analysis started",
progress_percent=65.0,
payload={"analysis_run_id": "run-123"},
metadata={"operation": "unit_test"},
)
assert entry.task_id == "task-123"
assert entry.stage == "analyzing"
assert entry.status == "running"
assert tracker.latest("task-123") == entry
assert event_recorder.events[-1].event_name == "task.analyzing.running"
assert event_recorder.events[-1].payload["analysis_run_id"] == "run-123"
assert event_recorder.events[-1].payload["metadata"]["operation"] == "unit_test"