"""실시간 내담자 공급자 준비상태의 API health 계약.""" from __future__ import annotations import unittest from unittest.mock import AsyncMock, patch from . import main class EngineHealthContractTest(unittest.IsolatedAsyncioTestCase): async def test_health_is_degraded_when_live_client_lane_is_unready(self) -> None: engine_detail = { "ok": False, "detail": "실시간 내담자 공급자 claude_cli: login required", "default_engine": { "provider": "agy_cli", "ok": True, "detail": "ready", }, "live_client_engine": { "provider": "claude_cli", "ok": False, "detail": "login required", }, } with ( patch.object(main, "healthcheck", AsyncMock(return_value=True)), patch.object( main.engine_client, "health_detail", AsyncMock(return_value=engine_detail), ), patch.object(main.engine_client, "engine_mode", "agy_cli"), patch.object(main.engine_client, "live_client_provider", "claude_cli"), ): response = await main.health() self.assertEqual(response["status"], "degraded") self.assertFalse(response["engine"]) self.assertEqual(response["engine_mode"], "agy_cli") self.assertEqual(response["live_client_provider"], "claude_cli") self.assertEqual( response["live_client_engine"], engine_detail["live_client_engine"], ) if __name__ == "__main__": unittest.main()