Coverage for tests/test_key_manager.py: 98%
62 statements
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-24 11:53 -0300
« prev ^ index » next coverage.py v7.2.2, created at 2023-03-24 11:53 -0300
1# test_keybinds.py
3from __future__ import annotations
5import pytest
6from pyselector.key_manager import Keybind
7from pyselector.key_manager import KeybindError
8from pyselector.key_manager import KeyManager
11@pytest.fixture
12def key_manager() -> KeyManager:
13 return KeyManager()
16@pytest.fixture
17def test_keybind() -> tuple[str, str, bool]:
18 return ("alt-n", "add record", False)
21def test_add_keybind(
22 key_manager: KeyManager, test_keybind: tuple[str, str, bool]
23) -> None:
24 bind, description, hidden = test_keybind
25 keybind = key_manager.add(bind, description, lambda: None, hidden=hidden)
26 assert isinstance(keybind, Keybind)
27 assert keybind.bind == bind
28 assert keybind.description == description
29 assert keybind.hidden == hidden
32def test_register_keybind(
33 key_manager: KeyManager, test_keybind: tuple[str, str, bool]
34) -> None:
35 bind, description, hidden = test_keybind
36 keybind = Keybind(
37 id=1,
38 bind=bind,
39 code=10,
40 description=description,
41 hidden=hidden,
42 callback=lambda: None,
43 )
44 registered_keybind = key_manager.register(keybind)
45 assert registered_keybind == keybind
48def test_register_and_replace_keybind(
49 key_manager: KeyManager, test_keybind: tuple[str, str, bool]
50) -> None:
51 bind, description, hidden = test_keybind
52 keybind = Keybind(
53 id=1,
54 bind=bind,
55 code=10,
56 description=description,
57 hidden=hidden,
58 callback=lambda: None,
59 )
60 key_manager.register(keybind)
61 key_manager.register(keybind, exist_ok=True)
64def test_register_existing_keybind(
65 key_manager: KeyManager, test_keybind: tuple[str, str, bool]
66) -> None:
67 bind, description, hidden = test_keybind
68 keybind = Keybind(
69 id=1,
70 bind=bind,
71 code=10,
72 description=description,
73 hidden=hidden,
74 callback=lambda: None,
75 )
76 key_manager.register(keybind)
77 with pytest.raises(KeybindError):
78 key_manager.register(keybind)
81def test_unregister_keybind(
82 key_manager: KeyManager, test_keybind: tuple[str, str, bool]
83) -> None:
84 bind, description, hidden = test_keybind
85 keybind = Keybind(
86 id=1,
87 bind=bind,
88 code=10,
89 description=description,
90 hidden=hidden,
91 callback=lambda: None,
92 )
93 key_manager.register(keybind)
94 key_manager.unregister(bind)
95 assert key_manager.list_registered == []
98def test_unregister_keybind_error(key_manager: KeyManager) -> None:
99 with pytest.raises(KeybindError):
100 key_manager.unregister("CTRL+XX")
103def test_toggle_all_keybinds(key_manager: KeyManager) -> None:
104 key_manager.add("CTRL+S", "Save file", lambda: None)
105 key_manager.add("CTRL+Z", "Undo last action", lambda: None)
106 key_manager.add("CTRL+X", "Cut selected text", lambda: None)
107 key_manager.toggle_all()
108 for keybind in key_manager.list_registered:
109 assert keybind.hidden
112def test_toggle_hidden_keybinds(key_manager: KeyManager) -> None:
113 key_manager.add("CTRL+S", "Save file", lambda: None, hidden=False)
114 key_manager.add("CTRL+Z", "Undo last action", lambda: None, hidden=False)
115 key_manager.add("CTRL+X", "Cut selected text", lambda: None, hidden=False)
116 key_manager.add("CTRL+P", "Ignore", lambda: None, hidden=True)
118 key_manager.toggle_hidden()
119 assert len(key_manager.temp_hidden) == 3
121 for keybind in key_manager.temp_hidden:
122 assert keybind.hidden
124 key_manager.toggle_hidden(restore=True)
125 for keybind in key_manager.temp_hidden:
126 assert not keybind.hidden