def test_returns_none_if_unloaded(self): sp_playlist = mock.Mock(spec=spotify.Playlist) sp_playlist.is_loaded = False ref = translator.to_playlist_ref(sp_playlist) assert ref is None
def test_includes_by_owner_in_name_if_owned_by_another_user( self, sp_playlist_mock, sp_user_mock): sp_user_mock.canonical_name = 'bob' sp_playlist_mock.user = sp_user_mock ref = translator.to_playlist_ref(sp_playlist_mock, username='******') assert ref.name == 'Foo (by bob)'
def _get_starred_playlist_ref(self): if self._backend._session is None: return sp_starred = self._backend._session.get_starred() if sp_starred is None: return if ( self._backend._session.connection.state is spotify.ConnectionState.LOGGED_IN): sp_starred.load() starred_ref = translator.to_playlist_ref( sp_starred, username=self._backend._session.user_name) if starred_ref is not None: yield starred_ref
def _get_flattened_playlist_refs(self): if self._backend._session is None: return if self._backend._session.playlist_container is None: return username = self._backend._session.user_name folders = [] for sp_playlist in self._backend._session.playlist_container: if isinstance(sp_playlist, spotify.PlaylistFolder): if sp_playlist.type is spotify.PlaylistType.START_FOLDER: folders.append(sp_playlist.name) elif sp_playlist.type is spotify.PlaylistType.END_FOLDER: folders.pop() continue playlist_ref = translator.to_playlist_ref( sp_playlist, folders=folders, username=username) if playlist_ref is not None: yield playlist_ref
def test_includes_folders_in_name(self, sp_playlist_mock): ref = translator.to_playlist_ref( sp_playlist_mock, folders=['Bar', 'Baz']) assert ref.name == 'Bar/Baz/Foo'
def test_adds_name_for_starred_playlists(self, sp_starred_mock): ref = translator.to_playlist_ref(sp_starred_mock) assert ref.name == 'Starred'
def test_successful_translation(self, sp_track_mock, sp_playlist_mock): ref = translator.to_playlist_ref(sp_playlist_mock) assert ref.uri == 'spotify:user:alice:playlist:foo' assert ref.name == 'Foo'
def test_returns_none_if_playlist_folder(self): sp_playlist_folder = mock.Mock(spec=spotify.PlaylistFolder) ref = translator.to_playlist_ref(sp_playlist_folder) assert ref is None
def test_includes_folders_in_name(self, sp_playlist_mock): ref = translator.to_playlist_ref(sp_playlist_mock, folders=['Bar', 'Baz']) assert ref.name == 'Bar/Baz/Foo'
def test_without_name_uses_uri(self, web_playlist_mock): del web_playlist_mock["name"] ref = translator.to_playlist_ref(web_playlist_mock) assert ref.name == "spotify:user:alice:playlist:foo"
def test_successful_translation(self, web_playlist_mock): ref = translator.to_playlist_ref(web_playlist_mock) assert ref.uri == "spotify:user:alice:playlist:foo" assert ref.name == "Foo"
def test_returns_none_if_wrong_type(self, web_playlist_mock): web_playlist_mock["type"] = "track" ref = translator.to_playlist_ref(web_playlist_mock) assert ref is None
def test_returns_none_if_invalid(self, web_playlist_mock): with patch.object(translator, "valid_web_data", return_value=False): assert translator.to_playlist_ref(web_playlist_mock) is None