class TestPlaylist(TestCase): def setUp(self): self.s1 = FakeSongModel() self.s2 = FakeSongModel() self.playlist = Playlist(app_mock) self.playlist.add(self.s1) self.playlist.add(self.s2) def tearDown(self): self.playlist.clear() def test_add(self): self.playlist.add(self.s1) self.assertEqual(len(self.playlist), 2) def test_getitem(self): self.assertEqual(self.playlist[1], self.s2) def test_mark_as_bad(self): self.assertEqual(self.playlist.next_song, self.s1) self.playlist.mark_as_bad(self.s1) self.assertEqual(self.playlist.next_song, self.s2) def test_list(self): self.assertIn(self.s1, self.playlist.list())
async def test_reactivate_fm_mode_after_playing_other_songs( event_loop, app_mock, song, song1, mocker): def f(*args, **kwargs): return [song1] def is_active(fm): return fm.is_active playlist = Playlist(app_mock) app_mock.playlist = playlist app_mock.task_mgr = TaskManager(app_mock, event_loop) fm = FM(app_mock) fm.activate(f) assert playlist.mode is PlaylistMode.fm await asyncio.sleep(0.1) # wait for fm-fetch-song task finished # user trigger play next app_mock.playlist.current_song = song assert playlist.mode is PlaylistMode.normal assert is_active(fm) is False await asyncio.sleep(0.1) # wait for validate-song task finished assert playlist.list() == [song] fm.activate(f) assert is_active(fm) is True assert playlist.mode is PlaylistMode.fm