diff --git a/tests/frontends/mpd/regression_test.py b/tests/frontends/mpd/protocol/regression_test.py similarity index 50% rename from tests/frontends/mpd/regression_test.py rename to tests/frontends/mpd/protocol/regression_test.py index f786cf0a..1b257d8b 100644 --- a/tests/frontends/mpd/regression_test.py +++ b/tests/frontends/mpd/protocol/regression_test.py @@ -1,12 +1,10 @@ import random -import unittest -from mopidy.backends.dummy import DummyBackend -from mopidy.frontends.mpd import dispatcher -from mopidy.mixers.dummy import DummyMixer from mopidy.models import Track -class IssueGH17RegressionTest(unittest.TestCase): +from tests.frontends.mpd import protocol + +class IssueGH17RegressionTest(protocol.BaseTestCase): """ The issue: http://github.com/mopidy/mopidy/issues#issue/17 @@ -16,36 +14,27 @@ class IssueGH17RegressionTest(unittest.TestCase): - Turn on random mode - Press next until you get to the unplayable track """ - - def setUp(self): - self.backend = DummyBackend.start().proxy() + def test(self): self.backend.current_playlist.append([ Track(uri='a'), Track(uri='b'), None, Track(uri='d'), Track(uri='e'), Track(uri='f')]) - self.mixer = DummyMixer.start().proxy() - self.mpd = dispatcher.MpdDispatcher() - - def tearDown(self): - self.backend.stop().get() - self.mixer.stop().get() - - def test(self): random.seed(1) # Playlist order: abcfde - self.mpd.handle_request(u'play') + + self.sendRequest(u'play') self.assertEquals('a', self.backend.playback.current_track.get().uri) - self.mpd.handle_request(u'random "1"') - self.mpd.handle_request(u'next') + self.sendRequest(u'random "1"') + self.sendRequest(u'next') self.assertEquals('b', self.backend.playback.current_track.get().uri) - self.mpd.handle_request(u'next') + self.sendRequest(u'next') # Should now be at track 'c', but playback fails and it skips ahead self.assertEquals('f', self.backend.playback.current_track.get().uri) - self.mpd.handle_request(u'next') + self.sendRequest(u'next') self.assertEquals('d', self.backend.playback.current_track.get().uri) - self.mpd.handle_request(u'next') + self.sendRequest(u'next') self.assertEquals('e', self.backend.playback.current_track.get().uri) -class IssueGH18RegressionTest(unittest.TestCase): +class IssueGH18RegressionTest(protocol.BaseTestCase): """ The issue: http://github.com/mopidy/mopidy/issues#issue/18 @@ -56,38 +45,30 @@ class IssueGH18RegressionTest(unittest.TestCase): At this point it gives the same song over and over. """ - def setUp(self): - self.backend = DummyBackend.start().proxy() + def test(self): self.backend.current_playlist.append([ Track(uri='a'), Track(uri='b'), Track(uri='c'), Track(uri='d'), Track(uri='e'), Track(uri='f')]) - self.mixer = DummyMixer.start().proxy() - self.mpd = dispatcher.MpdDispatcher() - - def tearDown(self): - self.backend.stop().get() - self.mixer.stop().get() - - def test(self): random.seed(1) - self.mpd.handle_request(u'play') - self.mpd.handle_request(u'random "1"') - self.mpd.handle_request(u'next') - self.mpd.handle_request(u'random "0"') - self.mpd.handle_request(u'next') - self.mpd.handle_request(u'next') + self.sendRequest(u'play') + self.sendRequest(u'random "1"') + self.sendRequest(u'next') + self.sendRequest(u'random "0"') + self.sendRequest(u'next') + + self.sendRequest(u'next') cp_track_1 = self.backend.playback.current_cp_track.get() - self.mpd.handle_request(u'next') + self.sendRequest(u'next') cp_track_2 = self.backend.playback.current_cp_track.get() - self.mpd.handle_request(u'next') + self.sendRequest(u'next') cp_track_3 = self.backend.playback.current_cp_track.get() self.assertNotEqual(cp_track_1, cp_track_2) self.assertNotEqual(cp_track_2, cp_track_3) -class IssueGH22RegressionTest(unittest.TestCase): +class IssueGH22RegressionTest(protocol.BaseTestCase): """ The issue: http://github.com/mopidy/mopidy/issues/#issue/22 @@ -100,32 +81,24 @@ class IssueGH22RegressionTest(unittest.TestCase): playlist, press next until it crashes. """ - def setUp(self): - self.backend = DummyBackend.start().proxy() + def test(self): self.backend.current_playlist.append([ Track(uri='a'), Track(uri='b'), Track(uri='c'), Track(uri='d'), Track(uri='e'), Track(uri='f')]) - self.mixer = DummyMixer.start().proxy() - self.mpd = dispatcher.MpdDispatcher() - - def tearDown(self): - self.backend.stop().get() - self.mixer.stop().get() - - def test(self): random.seed(1) - self.mpd.handle_request(u'play') - self.mpd.handle_request(u'random "1"') - self.mpd.handle_request(u'deleteid "1"') - self.mpd.handle_request(u'deleteid "2"') - self.mpd.handle_request(u'deleteid "3"') - self.mpd.handle_request(u'deleteid "4"') - self.mpd.handle_request(u'deleteid "5"') - self.mpd.handle_request(u'deleteid "6"') - self.mpd.handle_request(u'status') + + self.sendRequest(u'play') + self.sendRequest(u'random "1"') + self.sendRequest(u'deleteid "1"') + self.sendRequest(u'deleteid "2"') + self.sendRequest(u'deleteid "3"') + self.sendRequest(u'deleteid "4"') + self.sendRequest(u'deleteid "5"') + self.sendRequest(u'deleteid "6"') + self.sendRequest(u'status') -class IssueGH69RegressionTest(unittest.TestCase): +class IssueGH69RegressionTest(protocol.BaseTestCase): """ The issue: https://github.com/mopidy/mopidy/issues#issue/69 @@ -136,23 +109,14 @@ class IssueGH69RegressionTest(unittest.TestCase): The status response now contains "song: None". """ - def setUp(self): - self.backend = DummyBackend.start().proxy() + def test(self): + self.backend.stored_playlists.create('foo') self.backend.current_playlist.append([ Track(uri='a'), Track(uri='b'), Track(uri='c'), Track(uri='d'), Track(uri='e'), Track(uri='f')]) - self.backend.stored_playlists.create('foo') - self.mixer = DummyMixer.start().proxy() - self.mpd = dispatcher.MpdDispatcher() - def tearDown(self): - self.backend.stop().get() - self.mixer.stop().get() - - def test(self): - self.mpd.handle_request(u'play') - self.mpd.handle_request(u'stop') - self.mpd.handle_request(u'clear') - self.mpd.handle_request(u'load "foo"') - response = self.mpd.handle_request(u'status') - self.assert_('song: None' not in response) + self.sendRequest(u'play') + self.sendRequest(u'stop') + self.sendRequest(u'clear') + self.sendRequest(u'load "foo"') + self.assertNotInResponse('song: None')