mopidy-raspberrypi-gpio/tests/test_frontend.py

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)