All checks were successful
Deploy to mopidy1 / deploy (push) Successful in 26s
Mopidy's CoreListener calls track_playback_started(tl_track=...), but the method took a positional `track`, so every playback start raised TypeError and the smart queue never refilled on track changes. Add a regression test.
90 lines
2.7 KiB
Python
90 lines
2.7 KiB
Python
from unittest import mock
|
|
|
|
from mopidy.models import Playlist
|
|
|
|
from mopidy_smartplaylists.frontend import SmartPlaylistsFrontend
|
|
|
|
|
|
class TestSmartPlaylistsFrontend:
|
|
def test_on_start_with_recipes(self):
|
|
config = mock.Mock()
|
|
config.get.return_value = {
|
|
"decades": "1980,1990",
|
|
"genres": "",
|
|
"artists": "",
|
|
"playlist_prefix": "[Smart]",
|
|
"refresh_interval": "0",
|
|
}
|
|
core = mock.Mock()
|
|
core.library.search.return_value.get.return_value = []
|
|
core.playlists.lookup.return_value.get.return_value = None
|
|
core.playlists.save.return_value.get.return_value = Playlist(
|
|
name="test", uri="dummy:pl", tracks=[]
|
|
)
|
|
|
|
frontend = SmartPlaylistsFrontend(config, core)
|
|
frontend.on_start()
|
|
|
|
assert core.library.search.call_count == 2
|
|
|
|
def test_on_start_without_recipes(self):
|
|
config = mock.Mock()
|
|
config.get.return_value = {
|
|
"decades": "",
|
|
"genres": "",
|
|
"artists": "",
|
|
"playlist_prefix": "[Smart]",
|
|
"refresh_interval": "0",
|
|
}
|
|
core = mock.Mock()
|
|
|
|
frontend = SmartPlaylistsFrontend(config, core)
|
|
frontend.on_start()
|
|
|
|
core.library.search.assert_not_called()
|
|
|
|
def test_playlists_loaded_with_interval(self):
|
|
config = mock.Mock()
|
|
config.get.return_value = {
|
|
"decades": "1980",
|
|
"playlist_prefix": "[Smart]",
|
|
"refresh_interval": "24",
|
|
}
|
|
core = mock.Mock()
|
|
core.library.search.return_value.get.return_value = []
|
|
core.playlists.lookup.return_value.get.return_value = None
|
|
core.playlists.save.return_value.get.return_value = Playlist(
|
|
name="test", uri="dummy:pl", tracks=[]
|
|
)
|
|
|
|
frontend = SmartPlaylistsFrontend(config, core)
|
|
frontend.playlists_loaded()
|
|
|
|
core.library.search.assert_called()
|
|
|
|
def test_playlists_loaded_without_interval(self):
|
|
config = mock.Mock()
|
|
config.get.return_value = {
|
|
"playlist_prefix": "[Smart]",
|
|
"refresh_interval": "0",
|
|
}
|
|
core = mock.Mock()
|
|
|
|
frontend = SmartPlaylistsFrontend(config, core)
|
|
frontend.playlists_loaded()
|
|
|
|
core.library.search.assert_not_called()
|
|
|
|
def test_track_playback_started_accepts_tl_track(self):
|
|
config = mock.Mock()
|
|
config.get.return_value = {
|
|
"playlist_prefix": "[Smart]",
|
|
"smart_queue_enabled": "false",
|
|
}
|
|
core = mock.Mock()
|
|
|
|
frontend = SmartPlaylistsFrontend(config, core)
|
|
frontend.track_playback_started(tl_track=mock.Mock())
|
|
|
|
core.tracklist.add.assert_not_called()
|