import pytest 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__), ".."))) from simulation.sim_ai_settings import AISettingsSimulation def test_ai_settings_simulation_run(): mock_client = MagicMock() mock_client.wait_for_server.return_value = True mock_client.get_value.side_effect = lambda key: { "current_provider": "gemini", "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", "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 mock_client.set_value.assert_any_call("current_provider", "anthropic") mock_client.set_value.assert_any_call("current_provider", "gemini")