diff --git a/tests/test_system_prompt_sim.py b/tests/test_system_prompt_sim.py new file mode 100644 index 0000000..5a734b9 --- /dev/null +++ b/tests/test_system_prompt_sim.py @@ -0,0 +1,61 @@ +import pytest +import time +import os +import sys + +# Ensure project root is in path for imports +sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))) + +from src.api_hook_client import ApiHookClient +from src import ai_client + +def test_system_prompt_sim(live_gui): + """ + Simulation test for system prompt settings. + 1. Wait for server. + 2. Verify initial state. + 3. Modify settings via API. + 4. Verify updates. + 5. Use 'Reset to Default' button via API. + 6. Verify restoration to default text. + """ + _, gui_script = live_gui + client = ApiHookClient() + + # 1. Use client.wait_for_server(). + assert client.wait_for_server(timeout=15), "Server failed to start in time" + + # Wait a bit for GUI to settle + time.sleep(2) + + # 2. Verify initial state: get_value('use_default_base_prompt') should be True. + initial_default = client.get_value('use_default_base_prompt') + assert initial_default is True, f"Expected use_default_base_prompt to be True, got {initial_default}" + + # 3. Call client.set_value('use_default_base_prompt', False). + client.set_value('use_default_base_prompt', False) + + # 4. Call client.set_value('base_system_prompt', 'Simulation Base Prompt'). + client.set_value('base_system_prompt', 'Simulation Base Prompt') + + # Wait for processing + time.sleep(0.5) + + # 5. Verify the values were updated. + assert client.get_value('use_default_base_prompt') is False + assert client.get_value('base_system_prompt') == 'Simulation Base Prompt' + + # 7. In the test, call client.click('btn_reset_base_prompt') + client.click('btn_reset_base_prompt') + + # Give it a moment to process the click + time.sleep(1.0) + + # verify use_default_base_prompt becomes False (Reset to Default sets it to False but copies the text) + # Wait, if it was already False, it stays False. + assert client.get_value('use_default_base_prompt') is False + + # 8. Verify the effective state is correct. + # It should be back to ai_client._SYSTEM_PROMPT + current_prompt = client.get_value('base_system_prompt') + assert current_prompt == ai_client._SYSTEM_PROMPT, f"Prompt not reset. Got: {current_prompt[:50]}..."