113 lines
2.9 KiB
Python
113 lines
2.9 KiB
Python
import sys
|
|
from unittest import mock
|
|
|
|
import pytest
|
|
from mopidy_raspberry_gpio import Extension
|
|
from mopidy_raspberry_gpio import frontend as frontend_lib
|
|
from mopidy_raspberry_gpio import pinconfig
|
|
|
|
from mopidy import core
|
|
from . import dummy_mixer
|
|
from . import dummy_backend
|
|
from . import dummy_audio
|
|
|
|
deserialize = pinconfig.PinConfig().deserialize
|
|
|
|
dummy_config = {
|
|
"raspberry-gpio": {
|
|
# Plugins expect settings to be deserialized
|
|
"bcm1": deserialize("play_pause,active_low,30"),
|
|
"bcm2": deserialize("volume_up,active_high,30"),
|
|
"bcm3": deserialize("volume_down,active_high,30"),
|
|
}
|
|
}
|
|
|
|
|
|
def dummy_mopidy_core():
|
|
mixer = dummy_mixer.create_proxy()
|
|
audio = dummy_audio.create_proxy()
|
|
backend = dummy_backend.create_proxy(audio=audio)
|
|
return core.Core.start(
|
|
audio=audio,
|
|
mixer=mixer,
|
|
backends=[backend]
|
|
).proxy()
|
|
|
|
|
|
def test_get_frontend_classes():
|
|
sys.modules["RPi"] = mock.Mock()
|
|
sys.modules["RPi.GPIO"] = mock.Mock()
|
|
|
|
ext = Extension()
|
|
registry = mock.Mock()
|
|
|
|
ext.setup(registry)
|
|
|
|
registry.add.assert_called_once_with(
|
|
"frontend", frontend_lib.RaspberryGPIOFrontend
|
|
)
|
|
|
|
|
|
def test_frontend_handler_dispatch_play_pause():
|
|
sys.modules["RPi"] = mock.Mock()
|
|
sys.modules["RPi.GPIO"] = mock.Mock()
|
|
|
|
frontend = frontend_lib.RaspberryGPIOFrontend(dummy_config, dummy_mopidy_core())
|
|
|
|
frontend.dispatch_input("play_pause")
|
|
|
|
|
|
def test_frontend_handler_dispatch_next():
|
|
sys.modules["RPi"] = mock.Mock()
|
|
sys.modules["RPi.GPIO"] = mock.Mock()
|
|
|
|
frontend = frontend_lib.RaspberryGPIOFrontend(dummy_config, dummy_mopidy_core())
|
|
|
|
frontend.dispatch_input("next")
|
|
|
|
|
|
def test_frontend_handler_dispatch_prev():
|
|
sys.modules["RPi"] = mock.Mock()
|
|
sys.modules["RPi.GPIO"] = mock.Mock()
|
|
|
|
frontend = frontend_lib.RaspberryGPIOFrontend(dummy_config, dummy_mopidy_core())
|
|
|
|
frontend.dispatch_input("prev")
|
|
|
|
|
|
def test_frontend_handler_dispatch_volume_up():
|
|
sys.modules["RPi"] = mock.Mock()
|
|
sys.modules["RPi.GPIO"] = mock.Mock()
|
|
|
|
frontend = frontend_lib.RaspberryGPIOFrontend(dummy_config, dummy_mopidy_core())
|
|
|
|
frontend.dispatch_input("volume_up")
|
|
|
|
|
|
def test_frontend_handler_dispatch_volume_down():
|
|
sys.modules["RPi"] = mock.Mock()
|
|
sys.modules["RPi.GPIO"] = mock.Mock()
|
|
|
|
frontend = frontend_lib.RaspberryGPIOFrontend(dummy_config, dummy_mopidy_core())
|
|
|
|
frontend.dispatch_input("volume_down")
|
|
|
|
|
|
def test_frontend_handler_dispatch_invalid_event():
|
|
sys.modules["RPi"] = mock.Mock()
|
|
sys.modules["RPi.GPIO"] = mock.Mock()
|
|
|
|
frontend = frontend_lib.RaspberryGPIOFrontend(dummy_config, dummy_mopidy_core())
|
|
|
|
with pytest.raises(RuntimeError):
|
|
frontend.dispatch_input("tomato")
|
|
|
|
|
|
def test_frontend_gpio_event():
|
|
sys.modules["RPi"] = mock.Mock()
|
|
sys.modules["RPi.GPIO"] = mock.Mock()
|
|
|
|
frontend = frontend_lib.RaspberryGPIOFrontend(dummy_config, dummy_mopidy_core())
|
|
|
|
frontend.gpio_event(3)
|