diff --git a/mopidy/backends/__init__.py b/mopidy/backends/__init__.py index 3c557710..d356e5a6 100644 --- a/mopidy/backends/__init__.py +++ b/mopidy/backends/__init__.py @@ -117,3 +117,13 @@ class BasePlaybackController(object): def next(self): raise NotImplementedError + + @property + def next_track(self): + if self.current_track is None: + return None + try: + return self.backend.current_playlist.playlist.tracks[ + self.playlist_position + 1] + except IndexError: + return None diff --git a/tests/backends/basetests.py b/tests/backends/basetests.py index 13dd4298..e6982292 100644 --- a/tests/backends/basetests.py +++ b/tests/backends/basetests.py @@ -249,3 +249,15 @@ class BasePlaybackControllerTest(object): self.assertEqual(playback.state, playback.STOPPED) self.assertEqual(playback.current_track, tracks[-1]) self.assertEqual(playback.playlist_position, len(tracks) - 1) + + @populate_playlist + def test_next_track_before_play(self): + # FIXME should next_track reflect which track is about to be played? + tracks = self.backend.current_playlist.playlist.tracks + self.assertEqual(self.playback.next_track, None) + + @populate_playlist + def test_next_track_during_play(self): + tracks = self.backend.current_playlist.playlist.tracks + self.playback.play() + self.assertEqual(self.playback.next_track, tracks[1])