mopidy/tests/mpd/test_actor.py

45 lines
1.6 KiB
Python

from __future__ import absolute_import, unicode_literals
import mock
import pytest
from mopidy.mpd import actor
# NOTE: Should be kept in sync with all events from mopidy.core.listener
@pytest.mark.parametrize("event,expected", [
(['track_playback_paused', 'tl_track', 'time_position'], None),
(['track_playback_resumed', 'tl_track', 'time_position'], None),
(['track_playback_started', 'tl_track'], None),
(['track_playback_ended', 'tl_track', 'time_position'], None),
(['playback_state_changed', 'old_state', 'new_state'], 'player'),
(['tracklist_changed'], 'playlist'),
(['playlists_loaded'], 'stored_playlist'),
(['playlist_changed', 'playlist'], 'stored_playlist'),
(['playlist_deleted', 'uri'], 'stored_playlist'),
(['options_changed'], 'options'),
(['volume_changed', 'volume'], 'mixer'),
(['mute_changed', 'mute'], 'output'),
(['seeked', 'time_position'], 'player'),
(['stream_title_changed', 'title'], 'playlist'),
])
def test_idle_hooked_up_correctly(event, expected):
config = {'mpd': {'hostname': 'foobar',
'port': 1234,
'zeroconf': None,
'max_connections': None,
'connection_timeout': None}}
with mock.patch.object(actor.MpdFrontend, '_setup_server'):
frontend = actor.MpdFrontend(core=mock.Mock(), config=config)
with mock.patch('mopidy.listener.send') as send_mock:
frontend.on_event(event[0], **{e: None for e in event[1:]})
if expected is None:
assert not send_mock.call_args
else:
send_mock.assert_called_once_with(mock.ANY, expected)