This commit is contained in:
@@ -4,6 +4,7 @@ import types
|
||||
from collections import deque
|
||||
from typing import Any
|
||||
|
||||
import src.desktop_overlay as desktop_overlay_module
|
||||
from src.desktop_overlay import CompletionOverlayPayload, DesktopOverlayManager
|
||||
|
||||
|
||||
@@ -127,6 +128,25 @@ class _FakeTkModule(types.SimpleNamespace):
|
||||
return _FakeButton(root._root, command=command)
|
||||
|
||||
|
||||
def test_show_completion_plays_sound_even_without_overlay_thread(monkeypatch: Any) -> None:
|
||||
manager = DesktopOverlayManager()
|
||||
calls: list[str] = []
|
||||
|
||||
monkeypatch.setattr(desktop_overlay_module.os, "name", "nt", raising=False)
|
||||
monkeypatch.setattr(manager, "_play_completion_sound", lambda: calls.append("sound"))
|
||||
monkeypatch.setattr(manager, "_ensure_thread", lambda: False)
|
||||
|
||||
manager.show_completion(
|
||||
job_id="job-123",
|
||||
objective="Write a report",
|
||||
return_message="Finished",
|
||||
steps=5,
|
||||
elapsed_seconds=12.4,
|
||||
)
|
||||
|
||||
assert calls == ["sound"]
|
||||
|
||||
|
||||
def test_completion_overlay_auto_dismisses(monkeypatch: Any) -> None:
|
||||
root = _FakeTk()
|
||||
fake_tk = _FakeTkModule(root)
|
||||
@@ -147,3 +167,15 @@ def test_completion_overlay_auto_dismisses(monkeypatch: Any) -> None:
|
||||
|
||||
assert any(delay == 10 for delay in root.scheduled_delays)
|
||||
assert root.cards[0]._exists is False
|
||||
|
||||
|
||||
def test_play_completion_sound_uses_winsound_message_beep(monkeypatch: Any) -> None:
|
||||
calls: list[int] = []
|
||||
fake_winsound = types.SimpleNamespace(MB_ICONASTERISK=64, MessageBeep=lambda value: calls.append(value))
|
||||
|
||||
monkeypatch.setattr(desktop_overlay_module.os, "name", "nt", raising=False)
|
||||
monkeypatch.setattr(desktop_overlay_module, "winsound", fake_winsound)
|
||||
|
||||
DesktopOverlayManager()._play_completion_sound()
|
||||
|
||||
assert calls == [64]
|
||||
|
||||
Reference in New Issue
Block a user