Example #1
0
    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
Example #2
0
    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
Example #4
0
    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
Example #5
0
    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'
Example #6
0
    def test_adds_name_for_starred_playlists(self, sp_starred_mock):
        ref = translator.to_playlist_ref(sp_starred_mock)

        assert ref.name == 'Starred'
Example #7
0
    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'
Example #8
0
    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
Example #9
0
    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'
Example #10
0
    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'
Example #11
0
    def test_adds_name_for_starred_playlists(self, sp_starred_mock):
        ref = translator.to_playlist_ref(sp_starred_mock)

        assert ref.name == 'Starred'
Example #12
0
    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
Example #13
0
    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"
Example #14
0
    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"
Example #15
0
    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
Example #16
0
 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