rspotify 1.2.0 → 1.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/rspotify/album.rb +25 -4
- data/lib/rspotify/artist.rb +3 -3
- data/lib/rspotify/base.rb +2 -13
- data/lib/rspotify/playlist.rb +40 -12
- data/lib/rspotify/track.rb +1 -1
- data/lib/rspotify/user.rb +3 -3
- data/lib/rspotify/version.rb +1 -1
- data/rspotify.gemspec +1 -0
- data/spec/lib/rspotify/album_spec.rb +21 -7
- data/spec/lib/rspotify/artist_spec.rb +32 -12
- data/spec/lib/rspotify/playlist_spec.rb +7 -2
- data/spec/lib/rspotify/track_spec.rb +21 -7
- data/spec/lib/rspotify/user_spec.rb +12 -5
- data/spec/spec_helper.rb +6 -0
- data/spec/vcr_cassettes/album_find_2agWNCZl5Ts9W05mij8EPh.yml +138 -0
- data/spec/vcr_cassettes/album_find_3JquYMWj5wrzuZCNAvOYN9.yml +267 -0
- data/spec/vcr_cassettes/album_find_5bU1XKYxHhEwukllT20xtk.yml +107 -0
- data/spec/vcr_cassettes/album_search_AM.yml +145 -0
- data/spec/vcr_cassettes/album_search_AM_limit_10.yml +109 -0
- data/spec/vcr_cassettes/album_search_AM_offset_10.yml +145 -0
- data/spec/vcr_cassettes/album_search_AM_offset_10_limit_10.yml +108 -0
- data/spec/vcr_cassettes/artist_7Ln80lUS6He07XvHI8qqHH_albums.yml +133 -0
- data/spec/vcr_cassettes/artist_7Ln80lUS6He07XvHI8qqHH_related_artists.yml +153 -0
- data/spec/vcr_cassettes/artist_7Ln80lUS6He07XvHI8qqHH_top_tracks_US.yml +102 -0
- data/spec/vcr_cassettes/artist_find_0oSGxfWSnnOXhD2fKuz2Gy.yml +74 -0
- data/spec/vcr_cassettes/artist_find_3dBVyJ7JuOMt4GE9607Qin.yml +80 -0
- data/spec/vcr_cassettes/artist_find_7Ln80lUS6He07XvHI8qqHH.yml +68 -0
- data/spec/vcr_cassettes/artist_search_Arctic.yml +122 -0
- data/spec/vcr_cassettes/artist_search_Arctic_limit_10.yml +96 -0
- data/spec/vcr_cassettes/artist_search_Arctic_offset_10.yml +119 -0
- data/spec/vcr_cassettes/artist_search_Arctic_offset_10_limit_10.yml +92 -0
- data/spec/vcr_cassettes/authenticate_5ac1cda2ad354aeaa1ad2693d33bb98c.yml +71 -0
- data/spec/vcr_cassettes/playlist_find_wizzler_00wHcTN0zQiun4xri9pmvX.yml +507 -0
- data/spec/vcr_cassettes/track_find_3jfr0TF6DQcOLat8gGn7E2.yml +76 -0
- data/spec/vcr_cassettes/track_find_4oI9kesyxHUr8fqiLd6uO9.yml +77 -0
- data/spec/vcr_cassettes/track_find_7D8BAYkrR9peCB9XSKCADc.yml +85 -0
- data/spec/vcr_cassettes/track_search_Wanna_Know.yml +234 -0
- data/spec/vcr_cassettes/track_search_Wanna_Know_limit_10.yml +154 -0
- data/spec/vcr_cassettes/track_search_Wanna_Know_limit_10_offset_10.yml +154 -0
- data/spec/vcr_cassettes/track_search_Wanna_Know_offset_10.yml +236 -0
- data/spec/vcr_cassettes/user_find_wizzler.yml +62 -0
- data/spec/vcr_cassettes/user_wizzler_playlists.yml +77 -0
- metadata +72 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c7f112a228d4a745e4a0856808fdcb5c9380f852
|
4
|
+
data.tar.gz: b13cbfa86d18bcd1f747ed8767fb710e19249381
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 75306911e3e1cb4c6b2c156fa97a106e0cb205711d4ea913878dbc725f8ef6bc767d6a5d07bbba68128252ecd04c671130baea05f096327c83c562ec20d43f65
|
7
|
+
data.tar.gz: f3422f96d4299b9ef58399a843c2bbbf43a4df3ce99126e0d636b1605d2e8759280cc424ab2ba4fabfd04514f545b2a29ae6e6fd644d1692f4e3a1ebea4d9d86
|
data/lib/rspotify/album.rb
CHANGED
@@ -10,7 +10,6 @@ module RSpotify
|
|
10
10
|
# @attr [Integer] popularity The popularity of the album. The value will be between 0 and 100, with 100 being the most popular
|
11
11
|
# @attr [String] release_date The date the album was first released, for example "1981-12-15". Depending on the precision, it might be shown as "1981" or "1981-12"
|
12
12
|
# @attr [String] release_date_precision The precision with which release_date value is known: "year", "month", or "day"
|
13
|
-
# @attr [Array<Track>] tracks The tracks of the album.
|
14
13
|
class Album < Base
|
15
14
|
|
16
15
|
# Returns Album object(s) with id(s) provided
|
@@ -34,7 +33,7 @@ module RSpotify
|
|
34
33
|
# Returns array of Album objects matching the query, ordered by popularity
|
35
34
|
#
|
36
35
|
# @param query [String] The search query's keywords. See the q description in {https://developer.spotify.com/web-api/search-item here} for details.
|
37
|
-
# @param limit [Integer] Maximum number of albums to return.
|
36
|
+
# @param limit [Integer] Maximum number of albums to return. Maximum: 50. Default: 20.
|
38
37
|
# @param offset [Integer] The index of the first album to return. Use with limit to get the next set of albums. Default: 0.
|
39
38
|
# @return [Array<Album>]
|
40
39
|
#
|
@@ -65,11 +64,33 @@ module RSpotify
|
|
65
64
|
options['artists'].map { |a| Artist.new a }
|
66
65
|
end
|
67
66
|
|
68
|
-
@
|
69
|
-
options['tracks']['items'].map { |
|
67
|
+
@tracks_cache = if options['tracks'] && options['tracks']['items']
|
68
|
+
options['tracks']['items'].map { |i| Track.new i }
|
70
69
|
end
|
71
70
|
|
72
71
|
super(options)
|
73
72
|
end
|
73
|
+
|
74
|
+
# Returns array of tracks from the album
|
75
|
+
#
|
76
|
+
# @param limit [Integer] Maximum number of tracks to return. Maximum: 50. Default: 50.
|
77
|
+
# @param offset [Integer] The index of the first track to return. Use with limit to get the next set of objects. Default: 0.
|
78
|
+
# @return [Array<Track>]
|
79
|
+
#
|
80
|
+
# @example
|
81
|
+
# album = RSpotify::Album.find('41vPD50kQ7JeamkxQW7Vuy')
|
82
|
+
# album.tracks.first.name #=> "Do I Wanna Know?"
|
83
|
+
def tracks(limit: 50, offset: 0)
|
84
|
+
last_track = offset + limit - 1
|
85
|
+
if @tracks_cache && last_track < 50
|
86
|
+
return @tracks_cache[offset..last_track]
|
87
|
+
end
|
88
|
+
|
89
|
+
url = "albums/#{@id}/tracks?limit=#{limit}&offset=#{offset}"
|
90
|
+
json = RSpotify.get(url)
|
91
|
+
tracks = json['items'].map { |i| Track.new i }
|
92
|
+
@tracks_cache = tracks if limit == 50 && offset == 0
|
93
|
+
tracks
|
94
|
+
end
|
74
95
|
end
|
75
96
|
end
|
data/lib/rspotify/artist.rb
CHANGED
@@ -27,7 +27,7 @@ module RSpotify
|
|
27
27
|
# Returns array of Artist objects matching the query, ordered by popularity
|
28
28
|
#
|
29
29
|
# @param query [String] The search query's keywords. See the q description in {https://developer.spotify.com/web-api/search-item here} for details.
|
30
|
-
# @param limit [Integer] Maximum number of artists to return.
|
30
|
+
# @param limit [Integer] Maximum number of artists to return. Maximum: 50. Default: 20.
|
31
31
|
# @param offset [Integer] The index of the first artist to return. Use with limit to get the next set of artists. Default: 0.
|
32
32
|
# @return [Array<Artist>]
|
33
33
|
#
|
@@ -65,10 +65,10 @@ module RSpotify
|
|
65
65
|
def albums
|
66
66
|
return @albums unless @albums.nil?
|
67
67
|
json = RSpotify.get("artists/#{@id}/albums")
|
68
|
-
@albums = json['items'].map { |
|
68
|
+
@albums = json['items'].map { |i| Album.new i }
|
69
69
|
end
|
70
70
|
|
71
|
-
# Returns array of similar artists. Similarity is based on analysis of the Spotify community’s {http://news.spotify.com/se/2010/02/03/related-artists listening history}
|
71
|
+
# Returns array of similar artists. Similarity is based on analysis of the Spotify community’s {http://news.spotify.com/se/2010/02/03/related-artists listening history}.
|
72
72
|
#
|
73
73
|
# @return [Array<Artist>]
|
74
74
|
#
|
data/lib/rspotify/base.rb
CHANGED
@@ -30,10 +30,6 @@ module RSpotify
|
|
30
30
|
return false
|
31
31
|
end
|
32
32
|
limit = (type == 'album' ? 20 : 50)
|
33
|
-
if ids.size > limit
|
34
|
-
warn "Too many ids requested. Maximum: #{limit} for #{type}"
|
35
|
-
return false
|
36
|
-
end
|
37
33
|
find_many(ids, type)
|
38
34
|
when String
|
39
35
|
id = ids
|
@@ -43,7 +39,6 @@ module RSpotify
|
|
43
39
|
|
44
40
|
def self.find_many(ids, type)
|
45
41
|
type_class = RSpotify.const_get(type.capitalize)
|
46
|
-
|
47
42
|
path = "#{type}s?ids=#{ids.join ','}"
|
48
43
|
json = RSpotify.get path
|
49
44
|
json["#{type}s"].map { |t| type_class.new t }
|
@@ -52,7 +47,6 @@ module RSpotify
|
|
52
47
|
|
53
48
|
def self.find_one(id, type)
|
54
49
|
type_class = RSpotify.const_get(type.capitalize)
|
55
|
-
|
56
50
|
path = "#{type}s/#{id}"
|
57
51
|
json = RSpotify.get path
|
58
52
|
type_class.new json
|
@@ -63,7 +57,7 @@ module RSpotify
|
|
63
57
|
#
|
64
58
|
# @param query [String] The search query's keywords. See the q description in {https://developer.spotify.com/web-api/search-item here} for details.
|
65
59
|
# @param type [String] Valid types are: album, artist and track. Separate multiple types with commas.
|
66
|
-
# @param limit [Integer] Maximum number of objects to return.
|
60
|
+
# @param limit [Integer] Maximum number of objects to return. Maximum: 50. Default: 20.
|
67
61
|
# @param offset [Integer] The index of the first object to return. Use with limit to get the next set of objects. Default: 0.
|
68
62
|
# @return [Array<Base>]
|
69
63
|
#
|
@@ -76,11 +70,6 @@ module RSpotify
|
|
76
70
|
# albums = RSpotify::Base.search('AM', 'album', limit: 10)
|
77
71
|
# albums.size #=> 10
|
78
72
|
def self.search(query, types, limit: 20, offset: 0)
|
79
|
-
if limit < 1 || limit > 50
|
80
|
-
warn 'Limit must be between 1 and 50'
|
81
|
-
return false
|
82
|
-
end
|
83
|
-
|
84
73
|
types.gsub!(/\s+/, '')
|
85
74
|
|
86
75
|
json = RSpotify.get 'search',
|
@@ -93,7 +82,7 @@ module RSpotify
|
|
93
82
|
|
94
83
|
types.split(',').flat_map do |type|
|
95
84
|
type_class = RSpotify.const_get(type.capitalize)
|
96
|
-
json["#{type}s"]['items'].map { |
|
85
|
+
json["#{type}s"]['items'].map { |i| type_class.new i }
|
97
86
|
end
|
98
87
|
end
|
99
88
|
|
data/lib/rspotify/playlist.rb
CHANGED
@@ -7,7 +7,6 @@ module RSpotify
|
|
7
7
|
# @attr [String] name The name of the playlist
|
8
8
|
# @attr [User] owner The user who owns the playlist
|
9
9
|
# @attr [Boolean] public true if the playlist is not marked as secret
|
10
|
-
# @attr [Array<Track>] tracks The tracks of the playlist
|
11
10
|
class Playlist < Base
|
12
11
|
|
13
12
|
# Returns Playlist object with user_id and id provided
|
@@ -43,10 +42,10 @@ module RSpotify
|
|
43
42
|
User.new options['owner']
|
44
43
|
end
|
45
44
|
|
46
|
-
@
|
47
|
-
options['tracks']['items'].map { |
|
45
|
+
@tracks_cache = if options['tracks'] && options['tracks']['items']
|
46
|
+
options['tracks']['items'].map { |i| Track.new i['track'] }
|
48
47
|
end
|
49
|
-
|
48
|
+
|
50
49
|
super(options)
|
51
50
|
end
|
52
51
|
|
@@ -68,11 +67,6 @@ module RSpotify
|
|
68
67
|
# playlist.add_tracks!(tracks, position: 20)
|
69
68
|
# playlist.tracks[20].name #=> "Somebody That I Used To Know"
|
70
69
|
def add_tracks!(tracks, position: nil)
|
71
|
-
if tracks.size > 100
|
72
|
-
warn 'Too many tracks requested. Maximum: 100'
|
73
|
-
return false
|
74
|
-
end
|
75
|
-
|
76
70
|
track_uris = tracks.map(&:uri).join(',')
|
77
71
|
url = "users/#{@owner.id}/playlists/#{@id}/tracks?uris=#{track_uris}"
|
78
72
|
url << "&position=#{position}" if position
|
@@ -94,14 +88,48 @@ module RSpotify
|
|
94
88
|
# playlist.instance_variable_get("@description") #=> "Iconic soundtracks..."
|
95
89
|
def complete!
|
96
90
|
url = "users/#{@owner.id}/playlists/#{@id}"
|
97
|
-
credentials_defined = User.class_variable_defined?('@@users_credentials')
|
98
|
-
credentials = (credentials_defined ? User.class_variable_get('@@users_credentials') : nil)
|
99
91
|
|
100
|
-
if
|
92
|
+
if users_credentials && users_credentials[@owner.id]
|
101
93
|
initialize User.oauth_get(@owner.id, url)
|
102
94
|
else
|
103
95
|
initialize RSpotify.auth_get(url)
|
104
96
|
end
|
105
97
|
end
|
98
|
+
|
99
|
+
# Returns array of tracks from the playlist
|
100
|
+
#
|
101
|
+
# @param limit [Integer] Maximum number of tracks to return. Maximum: 100. Default: 100.
|
102
|
+
# @param offset [Integer] The index of the first track to return. Use with limit to get the next set of objects. Default: 0.
|
103
|
+
# @return [Array<Track>]
|
104
|
+
#
|
105
|
+
# @example
|
106
|
+
# playlist = RSpotify::Playlist.find('wizzler', '00wHcTN0zQiun4xri9pmvX')
|
107
|
+
# playlist.tracks.first.name #=> "Main Theme from Star Wars - Instrumental"
|
108
|
+
def tracks(limit: 100, offset: 0)
|
109
|
+
last_track = offset + limit - 1
|
110
|
+
if @tracks_cache && last_track < 100
|
111
|
+
return @tracks_cache[offset..last_track]
|
112
|
+
end
|
113
|
+
|
114
|
+
url = "users/#{@owner.id}/playlists/#{@id}/tracks" \
|
115
|
+
"?limit=#{limit}&offset=#{offset}"
|
116
|
+
|
117
|
+
json = if users_credentials && users_credentials[@owner.id]
|
118
|
+
User.oauth_get(@owner.id, url)
|
119
|
+
else
|
120
|
+
RSpotify.auth_get(url)
|
121
|
+
end
|
122
|
+
|
123
|
+
tracks = json['items'].map { |i| Track.new i['track'] }
|
124
|
+
@tracks_cache = tracks if limit == 100 && offset == 0
|
125
|
+
tracks
|
126
|
+
end
|
127
|
+
|
128
|
+
private
|
129
|
+
|
130
|
+
def users_credentials
|
131
|
+
credentials_defined = User.class_variable_defined?('@@users_credentials')
|
132
|
+
User.class_variable_get('@@users_credentials') if credentials_defined
|
133
|
+
end
|
106
134
|
end
|
107
135
|
end
|
data/lib/rspotify/track.rb
CHANGED
@@ -34,7 +34,7 @@ module RSpotify
|
|
34
34
|
# Returns array of Track objects matching the query, ordered by popularity
|
35
35
|
#
|
36
36
|
# @param query [String] The search query's keywords. See the q description in {https://developer.spotify.com/web-api/search-item here} for details.
|
37
|
-
# @param limit [Integer] Maximum number of tracks to return.
|
37
|
+
# @param limit [Integer] Maximum number of tracks to return. Maximum: 50. Default: 20.
|
38
38
|
# @param offset [Integer] The index of the first track to return. Use with limit to get the next set of tracks. Default: 0.
|
39
39
|
# @return [Array<Track>]
|
40
40
|
#
|
data/lib/rspotify/user.rb
CHANGED
@@ -114,7 +114,7 @@ module RSpotify
|
|
114
114
|
# playlists.first.name #=> "Movie Soundtrack Masterpieces"
|
115
115
|
def playlists
|
116
116
|
json = RSpotify.auth_get("users/#{@id}/playlists")
|
117
|
-
json['items'].map { |
|
117
|
+
json['items'].map { |i| Playlist.new i }
|
118
118
|
end
|
119
119
|
|
120
120
|
# Remove tracks from the user’s “Your Music” library.
|
@@ -156,7 +156,7 @@ module RSpotify
|
|
156
156
|
|
157
157
|
# Returns the tracks saved in the Spotify user’s “Your Music” library
|
158
158
|
#
|
159
|
-
# @param limit [Integer] Maximum number of tracks to return.
|
159
|
+
# @param limit [Integer] Maximum number of tracks to return. Maximum: 50. Default: 20.
|
160
160
|
# @param offset [Integer] The index of the first track to return. Use with limit to get the next set of tracks. Default: 0.
|
161
161
|
# @return [Array<Track>]
|
162
162
|
#
|
@@ -167,7 +167,7 @@ module RSpotify
|
|
167
167
|
def saved_tracks(limit: 20, offset: 0)
|
168
168
|
url = "me/tracks?limit=#{limit}&offset=#{offset}"
|
169
169
|
json = User.oauth_get(@id, url)
|
170
|
-
json['items'].map { |
|
170
|
+
json['items'].map { |i| Track.new i['track'] }
|
171
171
|
end
|
172
172
|
|
173
173
|
# Check if tracks are already saved in the Spotify user’s “Your Music” library
|
data/lib/rspotify/version.rb
CHANGED
data/rspotify.gemspec
CHANGED
@@ -4,7 +4,9 @@ describe RSpotify::Album do
|
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
# Get Arctic Monkeys's AM album as a testing sample
|
7
|
-
@album =
|
7
|
+
@album = VCR.use_cassette('album:find:5bU1XKYxHhEwukllT20xtk') do
|
8
|
+
RSpotify::Album.find('5bU1XKYxHhEwukllT20xtk')
|
9
|
+
end
|
8
10
|
end
|
9
11
|
|
10
12
|
it 'should find album with correct attributes' do
|
@@ -44,13 +46,17 @@ describe RSpotify::Album do
|
|
44
46
|
describe 'Album::find receiving array of ids' do
|
45
47
|
it 'should find the right albums' do
|
46
48
|
ids = ['2agWNCZl5Ts9W05mij8EPh']
|
47
|
-
albums =
|
49
|
+
albums = VCR.use_cassette('album:find:2agWNCZl5Ts9W05mij8EPh') do
|
50
|
+
RSpotify::Album.find(ids)
|
51
|
+
end
|
48
52
|
expect(albums) .to be_an Array
|
49
53
|
expect(albums.size) .to eq 1
|
50
54
|
expect(albums.first.name) .to eq 'The Next Day Extra'
|
51
55
|
|
52
56
|
ids << '3JquYMWj5wrzuZCNAvOYN9'
|
53
|
-
albums =
|
57
|
+
albums = VCR.use_cassette('album:find:3JquYMWj5wrzuZCNAvOYN9') do
|
58
|
+
RSpotify::Album.find(ids)
|
59
|
+
end
|
54
60
|
expect(albums) .to be_an Array
|
55
61
|
expect(albums.size) .to eq 2
|
56
62
|
expect(albums.first.name) .to eq 'The Next Day Extra'
|
@@ -60,7 +66,9 @@ describe RSpotify::Album do
|
|
60
66
|
|
61
67
|
describe 'Album::search' do
|
62
68
|
it 'should search for the right albums' do
|
63
|
-
albums =
|
69
|
+
albums = VCR.use_cassette('album:search:AM') do
|
70
|
+
RSpotify::Album.search('AM')
|
71
|
+
end
|
64
72
|
expect(albums) .to be_an Array
|
65
73
|
expect(albums.size) .to eq 20
|
66
74
|
expect(albums.first) .to be_an RSpotify::Album
|
@@ -68,15 +76,21 @@ describe RSpotify::Album do
|
|
68
76
|
end
|
69
77
|
|
70
78
|
it 'should accept additional options' do
|
71
|
-
albums =
|
79
|
+
albums = VCR.use_cassette('album:search:AM:limit:10') do
|
80
|
+
RSpotify::Album.search('AM', limit: 10)
|
81
|
+
end
|
72
82
|
expect(albums.size) .to eq 10
|
73
83
|
expect(albums.map(&:name)) .to include('AM', 'Am I Wrong')
|
74
84
|
|
75
|
-
albums =
|
85
|
+
albums = VCR.use_cassette('album:search:AM:offset:10') do
|
86
|
+
RSpotify::Album.search('AM', offset: 10)
|
87
|
+
end
|
76
88
|
expect(albums.size) .to eq 20
|
77
89
|
expect(albums.map(&:name)) .to include('Melody AM', 'I Am')
|
78
90
|
|
79
|
-
albums =
|
91
|
+
albums = VCR.use_cassette('album:search:AM:offset:10:limit:10') do
|
92
|
+
RSpotify::Album.search('AM', limit: 10, offset: 10)
|
93
|
+
end
|
80
94
|
expect(albums.size) .to eq 10
|
81
95
|
expect(albums.map(&:name)) .to include('Melody AM')
|
82
96
|
end
|
@@ -4,7 +4,9 @@ describe RSpotify::Artist do
|
|
4
4
|
|
5
5
|
before(:each) do
|
6
6
|
# Get Arctic Monkeys as a testing sample
|
7
|
-
@artist =
|
7
|
+
@artist = VCR.use_cassette('artist:find:7Ln80lUS6He07XvHI8qqHH') do
|
8
|
+
RSpotify::Artist.find('7Ln80lUS6He07XvHI8qqHH')
|
9
|
+
end
|
8
10
|
end
|
9
11
|
|
10
12
|
it 'should find artist with correct attributes' do
|
@@ -20,7 +22,9 @@ describe RSpotify::Artist do
|
|
20
22
|
end
|
21
23
|
|
22
24
|
it 'should find artist with correct albums' do
|
23
|
-
albums =
|
25
|
+
albums = VCR.use_cassette('artist:7Ln80lUS6He07XvHI8qqHH:albums') do
|
26
|
+
@artist.albums
|
27
|
+
end
|
24
28
|
expect(albums) .to be_an Array
|
25
29
|
expect(albums.size) .to eq 20
|
26
30
|
expect(albums.first) .to be_an RSpotify::Album
|
@@ -28,7 +32,9 @@ describe RSpotify::Artist do
|
|
28
32
|
end
|
29
33
|
|
30
34
|
it 'should find artist with correct top tracks' do
|
31
|
-
top_tracks =
|
35
|
+
top_tracks = VCR.use_cassette('artist:7Ln80lUS6He07XvHI8qqHH:top_tracks:US') do
|
36
|
+
@artist.top_tracks(:US)
|
37
|
+
end
|
32
38
|
expect(top_tracks) .to be_an Array
|
33
39
|
expect(top_tracks.size) .to eq 10
|
34
40
|
expect(top_tracks.first) .to be_an RSpotify::Track
|
@@ -36,7 +42,9 @@ describe RSpotify::Artist do
|
|
36
42
|
end
|
37
43
|
|
38
44
|
it 'should find artist with correct related artists' do
|
39
|
-
related_artists =
|
45
|
+
related_artists = VCR.use_cassette('artist:7Ln80lUS6He07XvHI8qqHH:related_artists') do
|
46
|
+
@artist.related_artists
|
47
|
+
end
|
40
48
|
expect(related_artists) .to be_an Array
|
41
49
|
expect(related_artists.size) .to eq 20
|
42
50
|
expect(related_artists.first) .to be_an RSpotify::Artist
|
@@ -47,13 +55,17 @@ describe RSpotify::Artist do
|
|
47
55
|
describe 'Artist::find receiving array of ids' do
|
48
56
|
it 'should find the right artists' do
|
49
57
|
ids = ['0oSGxfWSnnOXhD2fKuz2Gy']
|
50
|
-
artists =
|
58
|
+
artists = VCR.use_cassette('artist:find:0oSGxfWSnnOXhD2fKuz2Gy') do
|
59
|
+
RSpotify::Artist.find(ids)
|
60
|
+
end
|
51
61
|
expect(artists) .to be_an Array
|
52
62
|
expect(artists.size) .to eq 1
|
53
63
|
expect(artists.first.name) .to eq 'David Bowie'
|
54
64
|
|
55
65
|
ids << '3dBVyJ7JuOMt4GE9607Qin'
|
56
|
-
artists =
|
66
|
+
artists = VCR.use_cassette('artist:find:3dBVyJ7JuOMt4GE9607Qin') do
|
67
|
+
RSpotify::Artist.find(ids)
|
68
|
+
end
|
57
69
|
expect(artists) .to be_an Array
|
58
70
|
expect(artists.size) .to eq 2
|
59
71
|
expect(artists.first.name) .to eq 'David Bowie'
|
@@ -63,7 +75,9 @@ describe RSpotify::Artist do
|
|
63
75
|
|
64
76
|
describe 'Artist::search' do
|
65
77
|
it 'should search for the right artists' do
|
66
|
-
artists =
|
78
|
+
artists = VCR.use_cassette('artist:search:Arctic') do
|
79
|
+
RSpotify::Artist.search('Arctic')
|
80
|
+
end
|
67
81
|
expect(artists) .to be_an Array
|
68
82
|
expect(artists.size) .to eq 20
|
69
83
|
expect(artists.first) .to be_an RSpotify::Artist
|
@@ -71,17 +85,23 @@ describe RSpotify::Artist do
|
|
71
85
|
end
|
72
86
|
|
73
87
|
it 'should accept additional options' do
|
74
|
-
artists =
|
88
|
+
artists = VCR.use_cassette('artist:search:Arctic:limit:10') do
|
89
|
+
RSpotify::Artist.search('Arctic', limit: 10)
|
90
|
+
end
|
75
91
|
expect(artists.size) .to eq 10
|
76
92
|
expect(artists.map(&:name)) .to include('Arctic Monkeys', 'Arctic')
|
77
93
|
|
78
|
-
artists =
|
94
|
+
artists = VCR.use_cassette('artist:search:Arctic:offset:10') do
|
95
|
+
RSpotify::Artist.search('Arctic', offset: 10)
|
96
|
+
end
|
79
97
|
expect(artists.size) .to eq 20
|
80
|
-
expect(artists.map(&:name)) .to include('Arctic
|
98
|
+
expect(artists.map(&:name)) .to include('Arctic Flame', 'Arctic Night')
|
81
99
|
|
82
|
-
artists =
|
100
|
+
artists = VCR.use_cassette('artist:search:Arctic:offset:10:limit:10') do
|
101
|
+
RSpotify::Artist.search('Arctic', limit: 10, offset: 10)
|
102
|
+
end
|
83
103
|
expect(artists.size) .to eq 10
|
84
|
-
expect(artists.map(&:name)) .to include('Arctic
|
104
|
+
expect(artists.map(&:name)) .to include('Arctic Flame')
|
85
105
|
end
|
86
106
|
end
|
87
107
|
end
|
@@ -6,10 +6,15 @@ describe RSpotify::Playlist do
|
|
6
6
|
# Keys generated specifically for the tests. Should be removed in the future
|
7
7
|
client_id = '5ac1cda2ad354aeaa1ad2693d33bb98c'
|
8
8
|
client_secret = '155fc038a85840679b55a1822ef36b9b'
|
9
|
-
|
9
|
+
|
10
|
+
VCR.use_cassette('authenticate:5ac1cda2ad354aeaa1ad2693d33bb98c') do
|
11
|
+
RSpotify.authenticate(client_id, client_secret)
|
12
|
+
end
|
10
13
|
|
11
14
|
# Get wizzler's "Movie Soundtrack Masterpieces" playlist as a testing sample
|
12
|
-
@playlist =
|
15
|
+
@playlist = VCR.use_cassette('playlist:find:wizzler:00wHcTN0zQiun4xri9pmvX') do
|
16
|
+
RSpotify::Playlist.find('wizzler', '00wHcTN0zQiun4xri9pmvX')
|
17
|
+
end
|
13
18
|
end
|
14
19
|
|
15
20
|
it 'should find playlist with correct attributes' do
|