import pytest from unittest.mock import patch, MagicMock import time from src.api_hook_client import ApiHookClient def simulate_conductor_phase_completion(client: ApiHookClient, track_id: str, phase_name: str) -> bool: """ Simulates the Conductor agent's logic for phase completion using ApiHookClient. """ try: # 1. Poll for state state = client.get_gui_state() if not state: return False # 2. Verify track matches if state.get("active_track_id") != track_id: return False # 3. Simulate verification via API hook (e.g., check list box or indicator) # (Placeholder for complex logic) return True except Exception: return False def test_conductor_integrates_api_hook_client_for_verification(live_gui) -> None: """Verify that Conductor's simulated phase completion logic properly integrates with the ApiHookClient and the live Hook Server.""" client = ApiHookClient() assert client.wait_for_server(timeout=10) # Mock expected state for the simulation # Note: In a real test we would drive the GUI to this state with patch.object(client, "get_gui_state", return_value={"active_track_id": "test_track_123"}): result = simulate_conductor_phase_completion(client, "test_track_123", "Phase 1") assert result is True def test_conductor_handles_api_hook_failure() -> None: """Verify Conductor handles a simulated API hook verification failure.""" client = ApiHookClient() with patch.object(client, "get_gui_state", return_value=None): result = simulate_conductor_phase_completion(client, "any", "any") assert result is False def test_conductor_handles_api_hook_connection_error() -> None: """Verify Conductor handles a simulated API hook connection error (server down).""" client = ApiHookClient(base_url="http://127.0.0.1:9999") # Invalid port result = simulate_conductor_phase_completion(client, "any", "any") assert result is False