feat: full implementation - switcher, device watcher, hotkeys, tray, settings UI
This commit is contained in:
62
tests/test_device_watcher.py
Normal file
62
tests/test_device_watcher.py
Normal file
@@ -0,0 +1,62 @@
|
||||
import time
|
||||
from unittest.mock import MagicMock
|
||||
import pytest
|
||||
from config.config_manager import ConfigManager
|
||||
from core.device_watcher import DeviceWatcher
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def config(tmp_path):
|
||||
return ConfigManager(tmp_path / "config.json")
|
||||
|
||||
|
||||
@pytest.fixture
|
||||
def switcher():
|
||||
return MagicMock()
|
||||
|
||||
|
||||
def test_handle_event_connect_triggers_correct_profile(config, switcher):
|
||||
watcher = DeviceWatcher(config, switcher)
|
||||
watcher._handle_event(
|
||||
"HID\\{...}_DEV_VID&0203F0_PID&6343_REV&0413_AABBCCDD", "connect"
|
||||
)
|
||||
time.sleep(0.6)
|
||||
switcher.apply_profile.assert_called_once_with("pc1_dp")
|
||||
|
||||
|
||||
def test_handle_event_disconnect_triggers_correct_profile(config, switcher):
|
||||
watcher = DeviceWatcher(config, switcher)
|
||||
watcher._handle_event(
|
||||
"HID\\{...}_DEV_VID&0203F0_PID&6343_REV&0413_AABBCCDD", "disconnect"
|
||||
)
|
||||
time.sleep(0.6)
|
||||
switcher.apply_profile.assert_called_once_with("pc2_hdmi")
|
||||
|
||||
|
||||
def test_handle_event_ignores_unknown_device(config, switcher):
|
||||
watcher = DeviceWatcher(config, switcher)
|
||||
watcher._handle_event("HID\\VID&DEAD_PID&BEEF", "connect")
|
||||
time.sleep(0.6)
|
||||
switcher.apply_profile.assert_not_called()
|
||||
|
||||
|
||||
def test_handle_event_ignores_disabled_trigger(config, switcher):
|
||||
cfg = config.get()
|
||||
cfg["device_triggers"][0]["enabled"] = False
|
||||
config.update(cfg)
|
||||
|
||||
watcher = DeviceWatcher(config, switcher)
|
||||
watcher._handle_event(
|
||||
"HID\\{...}_DEV_VID&0203F0_PID&6343_REV&0413", "connect"
|
||||
)
|
||||
time.sleep(0.6)
|
||||
switcher.apply_profile.assert_not_called()
|
||||
|
||||
|
||||
def test_debounce_collapses_rapid_events(config, switcher):
|
||||
watcher = DeviceWatcher(config, switcher)
|
||||
device_id = "HID\\{...}_DEV_VID&0203F0_PID&6343_REV&0413"
|
||||
for _ in range(5):
|
||||
watcher._handle_event(device_id, "connect")
|
||||
time.sleep(0.8)
|
||||
assert switcher.apply_profile.call_count == 1
|
||||
Reference in New Issue
Block a user