Files
ai-exchange/tests/unit/test_run_runtime_incident_journal.py
T
2026-05-12 08:54:45 +08:00

52 lines
2.0 KiB
Python

import contextlib
import io
import json
import unittest
from unittest.mock import patch
from scripts import run_runtime_incident_journal
class RunRuntimeIncidentJournalTests(unittest.TestCase):
def test_main_outputs_json_journal(self) -> None:
payload = {
"status": "completed",
"persisted": True,
"incident_count": 1,
"severity_counts": {"blocker": 1},
"recommended_actions": ["check_market_truth_stream_proxy_and_backfill"],
"latest_incident": {"severity": "blocker", "source": "market_state", "reason": "market_stream_degraded"},
"items": [],
"warnings": [],
}
output = io.StringIO()
with patch("scripts.run_runtime_incident_journal.get_trading_runtime_incidents", return_value=payload) as journal:
with contextlib.redirect_stdout(output):
exit_code = run_runtime_incident_journal.main(
env={
"RUNTIME_INCIDENT_OUTPUT_JSON": "1",
"RUNTIME_INCIDENT_LIMIT": "7",
"RUNTIME_INCIDENT_REFRESH": "0",
}
)
self.assertEqual(exit_code, 0)
journal.assert_called_once_with(limit=7, refresh=False)
self.assertEqual(json.loads(output.getvalue())["severity_counts"]["blocker"], 1)
def test_main_returns_nonzero_when_journal_unavailable(self) -> None:
output = io.StringIO()
with patch(
"scripts.run_runtime_incident_journal.get_trading_runtime_incidents",
return_value={"status": "unavailable", "warnings": ["runtime_incident_journal_unavailable"]},
):
with contextlib.redirect_stdout(output):
exit_code = run_runtime_incident_journal.main(env={})
self.assertEqual(exit_code, 2)
self.assertIn("runtime_incident_journal_unavailable", output.getvalue())
if __name__ == "__main__":
unittest.main()