예제 #1
0
    def test_eq(self, lib_mock):
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        track1 = spotify.PlaylistTrack(self.session, sp_playlist, 0)
        track2 = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        self.assertTrue(track1 == track2)
        self.assertFalse(track1 == 'foo')
예제 #2
0
    def test_hash(self, lib_mock):
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        track1 = spotify.PlaylistTrack(self.session, sp_playlist, 0)
        track2 = spotify.PlaylistTrack(self.session, sp_playlist, 0)
        track3 = spotify.PlaylistTrack(self.session, sp_playlist, 1)

        self.assertEqual(hash(track1), hash(track2))
        self.assertNotEqual(hash(track1), hash(track3))
예제 #3
0
    def test_set_seen_fails_if_error(self, lib_mock):
        lib_mock.sp_playlist_track_set_seen.return_value = int(
            spotify.ErrorType.BAD_API_VERSION)
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        playlist_track = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        with self.assertRaises(spotify.Error):
            playlist_track.seen = True
예제 #4
0
    def test_message_is_none_when_null(self, lib_mock):
        lib_mock.sp_playlist_track_message.return_value = spotify.ffi.NULL
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        playlist_track = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        result = playlist_track.message

        lib_mock.sp_playlist_track_message.assert_called_with(sp_playlist, 0)
        self.assertIsNone(result)
예제 #5
0
    def test_is_seen(self, lib_mock):
        lib_mock.sp_playlist_track_seen.return_value = 0
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        playlist_track = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        result = playlist_track.seen

        lib_mock.sp_playlist_track_seen.assert_called_with(sp_playlist, 0)
        self.assertEqual(result, False)
예제 #6
0
    def test_create_time(self, lib_mock):
        lib_mock.sp_playlist_track_create_time.return_value = 1234567890
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        playlist_track = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        result = playlist_track.create_time

        lib_mock.sp_playlist_track_create_time.assert_called_with(
            sp_playlist, 0)
        self.assertEqual(result, 1234567890)
예제 #7
0
    def test_message(self, lib_mock):
        lib_mock.sp_playlist_track_message.return_value = spotify.ffi.new(
            'char[]', b'foo bar')
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        playlist_track = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        result = playlist_track.message

        lib_mock.sp_playlist_track_message.assert_called_with(sp_playlist, 0)
        self.assertEqual(result, 'foo bar')
예제 #8
0
    def test_set_seen(self, lib_mock):
        lib_mock.sp_playlist_track_set_seen.return_value = int(
            spotify.ErrorType.OK)
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        playlist_track = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        playlist_track.seen = True

        lib_mock.sp_playlist_track_set_seen.assert_called_with(
            sp_playlist, 0, 1)
예제 #9
0
    def test_creator(self, user_lib_mock, lib_mock):
        sp_user = spotify.ffi.cast('sp_user *', 43)
        lib_mock.sp_playlist_track_creator.return_value = sp_user
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        playlist_track = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        result = playlist_track.creator

        lib_mock.sp_playlist_track_creator.assert_called_with(sp_playlist, 0)
        user_lib_mock.sp_user_add_ref.assert_called_with(sp_user)
        self.assertIsInstance(result, spotify.User)
        self.assertEqual(result._sp_user, sp_user)
예제 #10
0
    def test_track(self, track_lib_mock, lib_mock):
        sp_track = spotify.ffi.cast('sp_track *', 43)
        lib_mock.sp_playlist_track.return_value = sp_track
        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        playlist_track = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        result = playlist_track.track

        lib_mock.sp_playlist_track.assert_called_with(sp_playlist, 0)
        track_lib_mock.sp_track_add_ref.assert_called_with(sp_track)
        self.assertIsInstance(result, spotify.Track)
        self.assertEqual(result._sp_track, sp_track)
예제 #11
0
    def test_repr(self, user_mock, track_mock, lib_mock):
        sp_track = spotify.ffi.cast('sp_track *', 43)
        lib_mock.sp_playlist_track.return_value = sp_track
        track_instance_mock = track_mock.return_value
        track_instance_mock.link.uri = 'foo'

        lib_mock.sp_playlist_track_create_time.return_value = 1234567890

        sp_user = spotify.ffi.cast('sp_user *', 44)
        lib_mock.sp_playlist_track_creator.return_value = sp_user
        user_mock.return_value = 'alice-user-object'

        sp_playlist = spotify.ffi.cast('sp_playlist *', 42)
        playlist_track = spotify.PlaylistTrack(self.session, sp_playlist, 0)

        result = repr(playlist_track)

        self.assertEqual(
            result, 'PlaylistTrack(uri=%r, creator=%r, create_time=%d)' %
            ('foo', 'alice-user-object', 1234567890))
예제 #12
0
 def get_track(self, sp_playlist, key):
     return spotify.PlaylistTrack(self._session, sp_playlist, key)