Test cases for issue #1358
This commit is contained in:
parent
22ec9d9060
commit
e9eb9d61b4
@ -388,6 +388,25 @@ class CorePlaybackTest(unittest.TestCase):
|
|||||||
|
|
||||||
self.assertNotIn(tl_track, self.core.tracklist.tl_tracks)
|
self.assertNotIn(tl_track, self.core.tracklist.tl_tracks)
|
||||||
|
|
||||||
|
def test_next_in_consume_mode_removes_unplayable_track(self):
|
||||||
|
self.backend1.playback.change_track = mock.PropertyMock()
|
||||||
|
self.backend1.playback.change_track.return_value.get.return_value = \
|
||||||
|
False
|
||||||
|
|
||||||
|
self.backend2.playback.change_track = mock.PropertyMock()
|
||||||
|
self.backend2.playback.change_track.return_value.get.return_value = \
|
||||||
|
False
|
||||||
|
self.core.tracklist.consume = True
|
||||||
|
|
||||||
|
self.core.playback.play(self.tl_tracks[0])
|
||||||
|
self.core.playback.next()
|
||||||
|
|
||||||
|
self.assertNotIn(self.tl_tracks[1], self.core.tracklist.tl_tracks)
|
||||||
|
self.assertNotIn(self.tl_tracks[2], self.core.tracklist.tl_tracks)
|
||||||
|
|
||||||
|
self.backend1.playback.change_track.reset_mock()
|
||||||
|
self.backend2.playback.change_track.reset_mock()
|
||||||
|
|
||||||
@mock.patch(
|
@mock.patch(
|
||||||
'mopidy.core.playback.listener.CoreListener', spec=core.CoreListener)
|
'mopidy.core.playback.listener.CoreListener', spec=core.CoreListener)
|
||||||
def test_next_emits_events(self, listener_mock):
|
def test_next_emits_events(self, listener_mock):
|
||||||
@ -789,3 +808,65 @@ class Bug1177RegressionTest(unittest.TestCase):
|
|||||||
c.playback.pause()
|
c.playback.pause()
|
||||||
c.playback.next()
|
c.playback.next()
|
||||||
b.playback.change_track.assert_called_once_with(track2)
|
b.playback.change_track.assert_called_once_with(track2)
|
||||||
|
|
||||||
|
|
||||||
|
class Bug1358RegressionTest(unittest.TestCase):
|
||||||
|
|
||||||
|
def setUp(self): # noqa: N802
|
||||||
|
config = {
|
||||||
|
'core': {
|
||||||
|
'max_tracklist_length': 10000,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
self.backend1 = mock.Mock()
|
||||||
|
self.backend1.uri_schemes.get.return_value = ['dummy1']
|
||||||
|
self.playback1 = mock.Mock(spec=backend.PlaybackProvider)
|
||||||
|
self.backend1.playback.change_track.return_value.get.return_value = \
|
||||||
|
False
|
||||||
|
self.backend1.playback = self.playback1
|
||||||
|
|
||||||
|
self.backend2 = mock.Mock()
|
||||||
|
self.backend2.uri_schemes.get.return_value = ['dummy2']
|
||||||
|
self.playback2 = mock.Mock(spec=backend.PlaybackProvider)
|
||||||
|
self.backend1.playback.change_track.return_value.get.return_value = \
|
||||||
|
False
|
||||||
|
self.backend2.playback = self.playback2
|
||||||
|
|
||||||
|
self.tracks = [
|
||||||
|
Track(uri='dummy1:a', length=40000),
|
||||||
|
Track(uri='dummy2:a', length=40000),
|
||||||
|
]
|
||||||
|
|
||||||
|
self.uris = [
|
||||||
|
'dummy1:a', 'dummy2:a']
|
||||||
|
|
||||||
|
self.core = core.Core(config, mixer=None,
|
||||||
|
backends=[self.backend1, self.backend2])
|
||||||
|
|
||||||
|
def lookup(uris):
|
||||||
|
result = {uri: [] for uri in uris}
|
||||||
|
for track in self.tracks:
|
||||||
|
if track.uri in result:
|
||||||
|
result[track.uri].append(track)
|
||||||
|
return result
|
||||||
|
|
||||||
|
self.lookup_patcher = mock.patch.object(self.core.library, 'lookup')
|
||||||
|
self.lookup_mock = self.lookup_patcher.start()
|
||||||
|
self.lookup_mock.side_effect = lookup
|
||||||
|
|
||||||
|
self.core.tracklist.add(uris=self.uris)
|
||||||
|
|
||||||
|
self.tl_tracks = self.core.tracklist.tl_tracks
|
||||||
|
|
||||||
|
def tearDown(self): # noqa: N802
|
||||||
|
self.lookup_patcher.stop()
|
||||||
|
|
||||||
|
def test_next_in_consume_mode_removes_unplayable_track(self):
|
||||||
|
self.core.tracklist.consume = True
|
||||||
|
|
||||||
|
self.core.playback.play(self.tl_tracks[0])
|
||||||
|
self.core.playback.next()
|
||||||
|
|
||||||
|
self.assertNotIn(self.tl_tracks[0], self.core.tracklist.tl_tracks)
|
||||||
|
self.assertNotIn(self.tl_tracks[1], self.core.tracklist.tl_tracks)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user