diff --git a/mopidy/backends/base.py b/mopidy/backends/base.py index fd529d4c..ed6f2148 100644 --- a/mopidy/backends/base.py +++ b/mopidy/backends/base.py @@ -39,19 +39,19 @@ class BaseBackend(object): # Control methods def pause(self): - pass + self.state = self.PAUSE - def play(self, songid): - pass + def play_pos(self, songpos): + self.state = self.PLAY def play_id(self, songid): - pass + self.state = self.PLAY def resume(self): - pass + self.state = self.PLAY def stop(self): - pass + self.state = self.STOP # Current/single playlist methods def playlist_changes_since(self, version): diff --git a/mopidy/backends/spotify.py b/mopidy/backends/spotify.py index d12a78c4..af856bfe 100644 --- a/mopidy/backends/spotify.py +++ b/mopidy/backends/spotify.py @@ -100,6 +100,11 @@ class SpotifyBackend(BaseBackend): self.state = self.PAUSE self.spotify.pause() + def play_pos(self, songpos): + self.state = self.PLAY + track = self._current_playlist[songpos] + self.spotify.play(track) + def play_id(self, songid): self.state = self.PLAY track = self._current_playlist[songid] diff --git a/mopidy/handler.py b/mopidy/handler.py index ed2f2bae..ddcc8655 100644 --- a/mopidy/handler.py +++ b/mopidy/handler.py @@ -186,7 +186,7 @@ class MpdHandler(object): @register(r'^play "(?P\d+)"$') def _play(self, songpos): - pass # TODO + return self.backend.play_pos(int(songpos)) @register(r'^playid "(?P\d+)"$') def _playid(self, songid): diff --git a/tests/handlertest.py b/tests/handlertest.py index d9ba3abf..6589c120 100644 --- a/tests/handlertest.py +++ b/tests/handlertest.py @@ -201,7 +201,8 @@ class PlaybackOptionsHandlerTest(unittest.TestCase): class PlaybackControlHandlerTest(unittest.TestCase): def setUp(self): - self.h = handler.MpdHandler(backend=DummyBackend()) + self.b = DummyBackend() + self.h = handler.MpdHandler(backend=self.b) def test_next(self): result = self.h.handle_request(u'next') @@ -210,18 +211,22 @@ class PlaybackControlHandlerTest(unittest.TestCase): def test_pause_off(self): result = self.h.handle_request(u'pause "0"') self.assert_(result is None) + self.assertEquals(self.b.PLAY, self.b.state) def test_pause_on(self): result = self.h.handle_request(u'pause "1"') self.assert_(result is None) + self.assertEquals(self.b.PAUSE, self.b.state) def test_play(self): result = self.h.handle_request(u'play "0"') self.assert_(result is None) + self.assertEquals(self.b.PLAY, self.b.state) def test_playid(self): result = self.h.handle_request(u'playid "0"') self.assert_(result is None) + self.assertEquals(self.b.PLAY, self.b.state) def test_previous(self): result = self.h.handle_request(u'previous') @@ -238,6 +243,7 @@ class PlaybackControlHandlerTest(unittest.TestCase): def test_stop(self): result = self.h.handle_request(u'stop') self.assert_(result is None) + self.assertEquals(self.b.STOP, self.b.state) class CurrentPlaylistHandlerTest(unittest.TestCase):