"""State Hub reporter tests.""" import json from unittest.mock import MagicMock, patch from wisevalidator.models import RunResult from wisevalidator.reporter import report def test_report_posts_e2e_result() -> None: result = RunResult( sandbox_id="abc12345", repo="fixture-repo", passed=True, exit_code=0, duration_s=12.3, output="ok", ) captured: dict = {} def fake_urlopen(req, timeout=10): captured["url"] = req.full_url captured["body"] = json.loads(req.data.decode()) resp = MagicMock() resp.status = 201 resp.__enter__ = MagicMock(return_value=resp) resp.__exit__ = MagicMock(return_value=False) return resp with patch("wisevalidator.reporter.urllib.request.urlopen", fake_urlopen): ok = report(result, workstream_id="ws-uuid") assert ok is True assert captured["url"].endswith("/progress/") assert captured["body"]["event_type"] == "e2e_result" assert "PASSED" in captured["body"]["summary"] assert captured["body"]["workstream_id"] == "ws-uuid"