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())
def pl(app_mock, song, song1): """ pl: [song, song1], current_song: song """ playlist = Playlist(app_mock) playlist.add(song) playlist.add(song1) playlist._current_song = song return playlist
def test_playlist_next_should_call_set_current_song(app_mock, mocker, song): mock_set_current_song = mocker.patch.object(Playlist, 'set_current_song') pl = Playlist(app_mock) pl.add(song) task = pl.next() # Next method should call set_current_song and return an asyncio task. # Since it is complex to mock and return a asyncio.Task, we do not # check the type of task object. assert task is not None assert mock_set_current_song.called
def test_change_song(app_mock, mocker, song, song1): mocker.patch.object(Player, 'play') pl = Playlist(app_mock) pl.add(song) pl._current_song = song player = Player(pl) with mock.patch.object(Playlist, 'current_song', new_callable=mock.PropertyMock) as mock_s: mock_s.return_value = song # return current song player.play_song(song1) pl.next() assert pl.current_song == song
async def test_play_next_bad_song(app_mock, song, song1, mocker): """ Prepare media for song raises unknown error, the song should be marked as bad. """ pl = Playlist(app_mock) mocker.patch.object(pl, '_prepare_media', side_effect=Exception()) mock_mark_as_bad = mocker.patch.object(pl, 'mark_as_bad') mock_next = mocker.patch.object(pl, 'next') pl.add(song) pl.add(song1) pl._current_song = song await pl.a_set_current_song(pl.next_song) assert mock_mark_as_bad.called assert mock_next.called