Files
roboco/tests/unit/gateway/test_video_context_in_qa_evidence.py
T

68 lines
2.3 KiB
Python
Raw Normal View History

2026-07-16 19:49:26 +02:00
"""QA claim_review evidence carries a video-artifact context for
video-source tasks — pointing QA at the rendered artifact, not just source."""
from __future__ import annotations
from unittest.mock import MagicMock
from roboco.foundation.policy.content import markers
from roboco.services.gateway.choreographer import Choreographer
from roboco.services.gateway.evidence_builder import build_evidence_for_task
def _stub_task() -> MagicMock:
task = MagicMock()
task.pr_number = None
task.pr_url = None
task.commits = []
task.dev_notes = None
task.acceptance_criteria_status = []
task.source = "code"
task.orchestration_markers = None
return task
def test_video_context_none_for_non_video_task() -> None:
assert Choreographer._qa_video_context(_stub_task()) is None
def test_video_context_present_for_video_task_with_render_preview() -> None:
task = _stub_task()
task.source = markers.VIDEO_TASK_SOURCE
task.orchestration_markers = {
markers.VIDEO_DRAFT: {"composition_id": "intro-v1"},
markers.RENDER_PREVIEW: {"frames": ["a.png", "b.png"]},
}
ctx = Choreographer._qa_video_context(task)
assert ctx is not None
assert ctx["composition_id"] == "intro-v1"
assert ctx["render_preview"] == {"frames": ["a.png", "b.png"]}
assert "request_render" in ctx["note"]
def test_video_context_render_preview_none_without_marker() -> None:
task = _stub_task()
task.source = markers.VIDEO_TASK_SOURCE
task.orchestration_markers = {markers.VIDEO_DRAFT: {"composition_id": "intro-v1"}}
ctx = Choreographer._qa_video_context(task)
assert ctx is not None
assert ctx["composition_id"] == "intro-v1"
assert ctx["render_preview"] is None
def test_evidence_payload_includes_video_context() -> None:
video_context = {"composition_id": "x", "render_preview": None, "note": "n"}
ev = build_evidence_for_task(
_stub_task(),
journal_highlights=[],
files_changed=[],
video_context=video_context,
)
assert ev.as_dict()["video_context"] == video_context
def test_evidence_payload_video_context_default_absent() -> None:
ev = build_evidence_for_task(_stub_task(), journal_highlights=[], files_changed=[])
assert ev.video_context is None
assert "video_context" not in ev.as_dict()