Files
manual_slop/tests/test_auto_switch_sim.py
T

50 lines
1.8 KiB
Python

import pytest
import time
import sys
import os
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 src import api_hook_client
@pytest.mark.integration
def test_auto_switch_sim(live_gui):
client = api_hook_client.ApiHookClient()
assert client.wait_for_server(timeout=15), "Hook server did not start"
# Reset layout and save a test profile for Tier 3
client.set_value('show_windows', {'Diagnostics': True})
client.push_event('custom_callback', {'callback': 'save_workspace_profile', 'args': ['Tier3Profile', 'project']})
time.sleep(1)
# Reset layout to something else
client.set_value('show_windows', {'Diagnostics': False})
# Enable auto switch and bind
client.set_value('ui_auto_switch_layout', True)
client.set_value('ui_tier_layout_bindings', {'Tier 1': '', 'Tier 2': '', 'Tier 3': 'Tier3Profile', 'Tier 4': ''})
# Send mma_state_update event to trigger Tier 2
# Since we can't send raw asyncio events easily via ApiHookClient without a dedicated endpoint,
# we can simulate it by setting the active_tier via the Hook API if it triggers the logic,
# OR we can just inject an event into the app's event queue via custom_callback.
def trigger_tier(tier):
# Inject mma_state_update task directly via hook API
client.push_event("mma_state_update", {"status": "running", "active_tier": tier})
# First Tier 2
trigger_tier('Tier 2 (Tech Lead)')
time.sleep(1)
assert client.get_value('show_windows').get('Diagnostics', False) == False
# Then Tier 3
trigger_tier('Tier 3 (Worker): task-1')
time.sleep(1)
# Verify
assert client.get_value('show_windows').get('Diagnostics', False) == True
print("Contextual auto-switch simulation PASSED.")