Files
whisper-local/tests/test_media_factory.py
T

49 lines
1.5 KiB
Python

"""Tests für whisper_local.media Factory-Dispatch."""
import sys
from unittest.mock import patch
import pytest
from whisper_local.media import MediaController, create_media_controller
from whisper_local.media._noop import NoopController
def test_factory_returns_noop_when_disabled():
controller = create_media_controller(enabled=False)
assert isinstance(controller, NoopController)
def test_factory_returns_noop_on_other_platforms():
with patch.object(sys, "platform", "darwin"):
controller = create_media_controller(enabled=True)
assert isinstance(controller, NoopController)
@pytest.mark.skipif(sys.platform != "linux", reason="MPRIS is Linux-only")
def test_factory_returns_mpris_on_linux_when_enabled():
from whisper_local.media._mpris import MprisController
controller = create_media_controller(enabled=True)
assert isinstance(controller, MprisController)
@pytest.mark.asyncio
async def test_noop_controller_pause_is_noop():
controller = NoopController()
await controller.pause() # Darf nicht werfen
await controller.resume() # Darf nicht werfen
def test_noop_controller_satisfies_protocol():
controller = NoopController()
assert isinstance(controller, MediaController)
@pytest.mark.skipif(sys.platform != "win32", reason="SmtcController nur auf Windows")
def test_factory_returns_smtc_on_win32_when_enabled():
from whisper_local.media._smtc import SmtcController
controller = create_media_controller(enabled=True)
assert isinstance(controller, SmtcController)