feat: add Win32TrayApp and NoOpTray with state management

This commit is contained in:
2026-04-10 21:09:10 +02:00
parent eb74e4787f
commit 9a1b96d178
2 changed files with 88 additions and 0 deletions
+35
View File
@@ -22,3 +22,38 @@ class TestCreateIcon:
waiting = create_icon(AppState.WAITING)
recording = create_icon(AppState.RECORDING)
assert waiting.tobytes() != recording.tobytes()
@pytest.mark.skipif(sys.platform != "win32", reason="Tray nur auf Windows")
class TestWin32TrayApp:
def test_set_state_updates_icon(self):
from unittest.mock import MagicMock, patch
from whisper_local.tray._tray import AppState, Win32TrayApp
app = Win32TrayApp(on_settings=MagicMock(), on_quit=MagicMock())
mock_icon = MagicMock()
app._icon = mock_icon
app.set_state(AppState.RECORDING)
assert mock_icon.icon is not None
def test_set_state_before_start_is_safe(self):
from unittest.mock import MagicMock
from whisper_local.tray._tray import AppState, Win32TrayApp
app = Win32TrayApp(on_settings=MagicMock(), on_quit=MagicMock())
app.set_state(AppState.WAITING) # kein Fehler, _icon ist None
class TestNoOpTray:
def test_start_does_nothing(self):
from whisper_local.tray._tray import AppState, NoOpTray
tray = NoOpTray()
tray.start() # kein Fehler
def test_set_state_does_nothing(self):
from whisper_local.tray._tray import AppState, NoOpTray
tray = NoOpTray()
tray.set_state(AppState.RECORDING) # kein Fehler