Files
manual_slop/tests/test_sim_ai_settings.py

46 lines
1.8 KiB
Python

"""
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")