68 lines
2.0 KiB
Python
68 lines
2.0 KiB
Python
from unittest.mock import MagicMock, patch
|
|
import pytest
|
|
from config.config_manager import ConfigManager
|
|
from core.hotkey_manager import HotkeyManager
|
|
|
|
|
|
@pytest.fixture
|
|
def config(tmp_path):
|
|
return ConfigManager(tmp_path / "config.json")
|
|
|
|
|
|
@pytest.fixture
|
|
def switcher():
|
|
return MagicMock()
|
|
|
|
|
|
def test_register_all_registers_profile_hotkeys(config, switcher):
|
|
with patch("core.hotkey_manager.keyboard") as mock_kb:
|
|
hm = HotkeyManager(config, switcher)
|
|
hm.register_all()
|
|
assert mock_kb.add_hotkey.call_count == 2
|
|
calls = [c.args[0] for c in mock_kb.add_hotkey.call_args_list]
|
|
assert "ctrl+alt+1" in calls
|
|
assert "ctrl+alt+2" in calls
|
|
|
|
|
|
def test_register_all_skips_empty_hotkeys(config, switcher):
|
|
cfg = config.get()
|
|
cfg["profiles"][0]["hotkey"] = ""
|
|
config.update(cfg)
|
|
|
|
with patch("core.hotkey_manager.keyboard") as mock_kb:
|
|
hm = HotkeyManager(config, switcher)
|
|
hm.register_all()
|
|
assert mock_kb.add_hotkey.call_count == 1
|
|
|
|
|
|
def test_unregister_all_removes_hotkeys(config, switcher):
|
|
with patch("core.hotkey_manager.keyboard") as mock_kb:
|
|
hm = HotkeyManager(config, switcher)
|
|
hm.register_all()
|
|
hm.unregister_all()
|
|
assert mock_kb.remove_hotkey.call_count == 2
|
|
|
|
|
|
def test_register_all_clears_old_before_registering(config, switcher):
|
|
with patch("core.hotkey_manager.keyboard") as mock_kb:
|
|
hm = HotkeyManager(config, switcher)
|
|
hm.register_all()
|
|
hm.register_all()
|
|
assert mock_kb.remove_hotkey.call_count == 2
|
|
|
|
|
|
def test_hotkey_calls_apply_profile(config, switcher):
|
|
captured_callbacks = {}
|
|
|
|
def fake_add_hotkey(hotkey, fn, args):
|
|
captured_callbacks[hotkey] = (fn, args)
|
|
|
|
with patch("core.hotkey_manager.keyboard") as mock_kb:
|
|
mock_kb.add_hotkey.side_effect = fake_add_hotkey
|
|
hm = HotkeyManager(config, switcher)
|
|
hm.register_all()
|
|
|
|
fn, args = captured_callbacks["ctrl+alt+1"]
|
|
fn(*args)
|
|
switcher.apply_profile.assert_called_once_with("pc1_dp")
|