Files
ai-exchange/tests/unit/test_run_visual_review.py
2026-05-11 23:37:47 +08:00

55 lines
1.9 KiB
Python

import contextlib
import io
import json
import unittest
from unittest.mock import patch
from scripts import run_visual_review
class RunVisualReviewScriptTests(unittest.TestCase):
def test_main_outputs_json_for_pending_reviews(self) -> None:
with patch("scripts.run_visual_review.VisualReviewService") as mock_service:
mock_service.return_value.review_pending_watch_runs.return_value = {
"status": "completed",
"attempted": 1,
"reviewed": 1,
"items": [
{
"watch_run_id": 11,
"visual_state": "confirm",
"snapshot_id": 333,
}
],
}
output = io.StringIO()
with contextlib.redirect_stdout(output):
exit_code = run_visual_review.main(env={"VISUAL_REVIEW_OUTPUT_JSON": "1"})
payload = json.loads(output.getvalue())
self.assertEqual(exit_code, 0)
self.assertEqual(payload["status"], "completed")
self.assertEqual(payload["reviewed"], 1)
def test_main_reviews_explicit_watch_run(self) -> None:
with patch("scripts.run_visual_review.VisualReviewService") as mock_service:
mock_service.return_value.review_watch_run.return_value = {
"status": "reviewed",
"watch_run_id": 99,
"visual_state": "caution",
}
output = io.StringIO()
with contextlib.redirect_stdout(output):
exit_code = run_visual_review.main(
env={"VISUAL_REVIEW_WATCH_RUN_ID": "99", "VISUAL_REVIEW_OUTPUT_JSON": "1"}
)
payload = json.loads(output.getvalue())
self.assertEqual(exit_code, 0)
self.assertEqual(payload["watch_run_id"], 99)
self.assertEqual(payload["visual_state"], "caution")
if __name__ == "__main__":
unittest.main()