""" ANTI-SIMPLIFICATION: These tests verify the Simulation of AI Settings interactions. They MUST NOT be simplified. They ensure that changes to provider and model selections are properly simulated and verified via the ApiHookClient. """ from unittest.mock import MagicMock, patch import os import sys # Ensure project root is in path sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), "..", "src"))) from simulation.sim_ai_settings import AISettingsSimulation def test_ai_settings_simulation_run() -> None: """ Verifies that AISettingsSimulation correctly cycles through models to test the settings UI components. """ mock_client = MagicMock() mock_client.wait_for_server.return_value = True mock_client.get_value.side_effect = lambda key: { "current_provider": "gemini_cli", "current_model": "gemini-2.5-flash-lite" }.get(key) with patch('simulation.sim_base.WorkflowSimulator') as mock_sim_class: mock_sim = MagicMock() mock_sim_class.return_value = mock_sim sim = AISettingsSimulation(mock_client) # Override the side effect after initial setup if needed or just let it return the same for simplicity # Actually, let's use a side effect that updates vals = {"current_provider": "gemini_cli", "current_model": "gemini-2.5-flash-lite"} def side_effect(key): return vals.get(key) def set_side_effect(key, val): vals[key] = val mock_client.get_value.side_effect = side_effect mock_client.set_value.side_effect = set_side_effect sim.run() # Verify calls # ANTI-SIMPLIFICATION: Assert that specific models were set during simulation mock_client.set_value.assert_any_call("current_model", "gemini-2.0-flash") mock_client.set_value.assert_any_call("current_model", "gemini-2.5-flash-lite")