示例#1
0
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())
示例#2
0
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