lastfm 1.3.0 → 1.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +24 -11
- data/VERSION +1 -1
- data/lib/lastfm.rb +25 -15
- data/lib/lastfm/method_category/artist.rb +9 -0
- data/lib/lastfm/method_category/event.rb +9 -0
- data/lib/lastfm/method_category/tag.rb +9 -0
- data/lib/lastfm/method_category/user.rb +34 -17
- data/spec/fixtures/album_get_info.xml +168 -157
- data/spec/fixtures/artist_get_events.xml +13 -13
- data/spec/fixtures/artist_get_info.xml +93 -93
- data/spec/fixtures/artist_get_similar.xml +12 -0
- data/spec/fixtures/artist_get_tags.xml +13 -0
- data/spec/fixtures/event_get_info.xml +39 -0
- data/spec/fixtures/geo_get_events.xml +4 -4
- data/spec/fixtures/library_get_artists.xml +1 -0
- data/spec/fixtures/library_get_tracks.xml +15 -14
- data/spec/fixtures/ng.xml +2 -1
- data/spec/fixtures/ok.xml +87 -102
- data/spec/fixtures/tag_get_top_artists.xml +60 -0
- data/spec/fixtures/track_get_correction.xml +2 -1
- data/spec/fixtures/track_get_info.xml +47 -53
- data/spec/fixtures/track_get_info_force_array.xml +28 -31
- data/spec/fixtures/track_get_similar.xml +75 -5078
- data/spec/fixtures/track_get_tags.xml +10 -10
- data/spec/fixtures/track_get_top_fans.xml +23 -26
- data/spec/fixtures/track_get_top_tags.xml +13 -13
- data/spec/fixtures/track_search.xml +31 -33
- data/spec/fixtures/user_get_friends.xml +2 -1
- data/spec/fixtures/user_get_info.xml +2 -1
- data/spec/fixtures/user_get_loved_tracks.xml +23 -22
- data/spec/fixtures/user_get_neighbours.xml +54 -502
- data/spec/fixtures/user_get_personal_tags.xml +29 -0
- data/spec/fixtures/user_get_personal_tags_albums.xml +21 -0
- data/spec/fixtures/user_get_personal_tags_artists.xml +62 -0
- data/spec/fixtures/user_get_personal_tags_tracks.xml +87 -0
- data/spec/fixtures/user_get_recent_tracks.xml +2 -1
- data/spec/fixtures/user_get_top_albums.xml +22 -22
- data/spec/fixtures/user_get_top_artists.xml +22 -22
- data/spec/fixtures/user_get_top_tags.xml +30 -0
- data/spec/fixtures/user_get_top_tracks.xml +24 -23
- data/spec/lastfm_spec.rb +33 -516
- data/spec/method_specs/album_spec.rb +30 -0
- data/spec/method_specs/artist_spec.rb +79 -0
- data/spec/method_specs/event_spec.rb +17 -0
- data/spec/method_specs/geo_spec.rb +33 -0
- data/spec/method_specs/library_spec.rb +37 -0
- data/spec/method_specs/tag_spec.rb +25 -0
- data/spec/method_specs/track_spec.rb +224 -0
- data/spec/method_specs/user_spec.rb +214 -0
- data/spec/response_spec.rb +4 -4
- data/spec/spec_helper.rb +15 -0
- data/spec/util_spec.rb +4 -4
- metadata +34 -15
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe '#album' do
|
|
4
|
+
before { init_lastfm }
|
|
5
|
+
|
|
6
|
+
it 'should return an instance of Lastfm::Album' do
|
|
7
|
+
@lastfm.album.should be_an_instance_of(Lastfm::MethodCategory::Album)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe '#get_info' do
|
|
11
|
+
it 'should get info' do
|
|
12
|
+
@lastfm.should_receive(:request).with('album.getInfo', {
|
|
13
|
+
:artist => 'Cher', :album => 'Believe'
|
|
14
|
+
}).and_return(make_response('album_get_info'))
|
|
15
|
+
|
|
16
|
+
album = @lastfm.album.get_info('Cher', 'Believe')
|
|
17
|
+
album['name'].should == 'Believe'
|
|
18
|
+
album['artist'].should == 'Cher'
|
|
19
|
+
album['id'].should == '2026126'
|
|
20
|
+
album['mbid'].should == '61bf0388-b8a9-48f4-81d1-7eb02706dfb0'
|
|
21
|
+
album['url'].should == 'http://www.last.fm/music/Cher/Believe'
|
|
22
|
+
album['image'].size.should == 5
|
|
23
|
+
album['releasedate'].should == '6 Apr 1999, 00:00'
|
|
24
|
+
album['tracks']['track'].size.should == 10
|
|
25
|
+
album['tracks']['track'][0]['name'].should == 'Believe'
|
|
26
|
+
album['tracks']['track'][0]['duration'].should == '239'
|
|
27
|
+
album['tracks']['track'][0]['url'].should == 'http://www.last.fm/music/Cher/_/Believe'
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe '#artist' do
|
|
4
|
+
before { init_lastfm }
|
|
5
|
+
|
|
6
|
+
it 'should return an instance of Lastfm::Artist' do
|
|
7
|
+
@lastfm.artist.should be_an_instance_of(Lastfm::MethodCategory::Artist)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe '#get_info' do
|
|
11
|
+
it 'should get info' do
|
|
12
|
+
@lastfm.should_receive(:request).with('artist.getInfo', {
|
|
13
|
+
:artist => 'Cher'
|
|
14
|
+
}).and_return(make_response('artist_get_info'))
|
|
15
|
+
|
|
16
|
+
artist = @lastfm.artist.get_info('Cher')
|
|
17
|
+
artist['name'].should == 'Cher'
|
|
18
|
+
artist['mbid'].should == 'bfcc6d75-a6a5-4bc6-8282-47aec8531818'
|
|
19
|
+
artist['url'].should == 'http://www.last.fm/music/Cher'
|
|
20
|
+
artist['image'].size.should == 5
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe '#get_events' do
|
|
25
|
+
it 'should get events' do
|
|
26
|
+
@lastfm.should_receive(:request).with('artist.getEvents', {
|
|
27
|
+
:artist => 'Cher'
|
|
28
|
+
}).and_return(make_response('artist_get_events'))
|
|
29
|
+
|
|
30
|
+
events = @lastfm.artist.get_events('Cher')
|
|
31
|
+
events.size.should == 1
|
|
32
|
+
events[0]['title'].should == 'Cher'
|
|
33
|
+
events[0]['artists'].size.should == 2
|
|
34
|
+
events[0]['artists']['headliner'].should == 'Cher'
|
|
35
|
+
events[0]['venue']['name'].should == 'The Colosseum At Caesars Palace'
|
|
36
|
+
events[0]['venue']['location']['city'].should == 'Las Vegas(, NV)'
|
|
37
|
+
events[0]['venue']['location']['point']['lat'].should == '36.116143'
|
|
38
|
+
events[0]['image'].size.should == 4
|
|
39
|
+
events[0]['image'][0]['size'].should == 'small'
|
|
40
|
+
events[0]['image'][0]['content'].should == 'http://userserve-ak.last.fm/serve/34/34814037.jpg'
|
|
41
|
+
events[0]['startDate'].should == 'Sat, 23 Oct 2010 19:30:00'
|
|
42
|
+
events[0]['tickets']['ticket']['supplier'].should == 'TicketMaster'
|
|
43
|
+
events[0]['tickets']['ticket']['content'].should == 'http://www.last.fm/affiliate/byid/29/1584537/12/ws.artist.events.b25b959554ed76058ac220b7b2e0a026'
|
|
44
|
+
events[0]['tags']['tag'].should == ['pop', 'dance', 'female vocalists', '80s', 'cher']
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe '#get_similar' do
|
|
49
|
+
it 'should get similar artists' do
|
|
50
|
+
@lastfm.should_receive(:request).with('artist.getSimilar', {
|
|
51
|
+
:artist => 'kid606'
|
|
52
|
+
}).and_return(make_response('artist_get_similar'))
|
|
53
|
+
|
|
54
|
+
artists = @lastfm.artist.get_similar('kid606')
|
|
55
|
+
artists.size.should == 2
|
|
56
|
+
artists[1]['name'].should == 'Venetian Snares'
|
|
57
|
+
artists[1]['mbid'].should == '56abaa47-0101-463b-b37e-e961136fec39'
|
|
58
|
+
artists[1]['match'].should == '100'
|
|
59
|
+
artists[1]['url'].should == '/music/Venetian+Snares'
|
|
60
|
+
artists[1]['image'].should == ['http://userserve-ak.last.fm/serve/160/211799.jpg']
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe '#get_tags' do
|
|
65
|
+
it 'should get artist tags' do
|
|
66
|
+
@lastfm.should_receive(:request).with('artist.getTags', {
|
|
67
|
+
:artist => 'zebrahead',
|
|
68
|
+
:user => 'test',
|
|
69
|
+
:mbid => nil,
|
|
70
|
+
:autocorrect => nil
|
|
71
|
+
}).and_return(make_response('artist_get_tags'))
|
|
72
|
+
|
|
73
|
+
tags = @lastfm.artist.get_tags('zebrahead', 'test')
|
|
74
|
+
tags.size.should == 2
|
|
75
|
+
tags[0]['name'].should == 'punk'
|
|
76
|
+
tags[1]['name'].should == 'Awesome'
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
describe '#event' do
|
|
2
|
+
before { init_lastfm }
|
|
3
|
+
|
|
4
|
+
it 'should return an instance of Lastfm::Event' do
|
|
5
|
+
@lastfm.event.should be_an_instance_of(Lastfm::MethodCategory::Event)
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
describe '#get_info' do
|
|
9
|
+
it 'should get info' do
|
|
10
|
+
@lastfm.should_receive(:request).with('event.getInfo', {
|
|
11
|
+
:event => 1073657
|
|
12
|
+
}).and_return(make_response('event_get_info'))
|
|
13
|
+
info = @lastfm.event.get_info(1073657)
|
|
14
|
+
info['title'].should == 'Neko Case'
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe '#geo' do
|
|
4
|
+
before { init_lastfm }
|
|
5
|
+
|
|
6
|
+
it 'should return an instance of Lastfm::Geo' do
|
|
7
|
+
@lastfm.geo.should be_an_instance_of(Lastfm::MethodCategory::Geo)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe '#get_events' do
|
|
11
|
+
it 'should get events' do
|
|
12
|
+
@lastfm.should_receive(:request).with('geo.getEvents', {
|
|
13
|
+
:location => 'Boulder',
|
|
14
|
+
:distance => nil,
|
|
15
|
+
:limit => nil,
|
|
16
|
+
:page => nil
|
|
17
|
+
}).and_return(make_response('geo_get_events'))
|
|
18
|
+
|
|
19
|
+
events = @lastfm.geo.get_events('Boulder')
|
|
20
|
+
events.size.should == 1
|
|
21
|
+
events[0]['title'].should == 'Transistor Festival'
|
|
22
|
+
events[0]['artists'].size.should == 2
|
|
23
|
+
events[0]['artists']['headliner'].should == 'Not Breathing'
|
|
24
|
+
events[0]['venue']['name'].should == 'The Walnut Room'
|
|
25
|
+
events[0]['venue']['location']['city'].should == 'Denver, CO'
|
|
26
|
+
events[0]['venue']['location']['point']['lat'].should == '39.764316'
|
|
27
|
+
events[0]['image'].size.should == 4
|
|
28
|
+
events[0]['image'][0]['size'].should == 'small'
|
|
29
|
+
events[0]['image'][0]['content'].should == 'http://userserve-ak.last.fm/serve/34/166214.jpg'
|
|
30
|
+
events[0]['startDate'].should == 'Fri, 10 Jun 2011 01:58:01'
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe '#library' do
|
|
4
|
+
before { init_lastfm }
|
|
5
|
+
|
|
6
|
+
it 'should return an instance of Lastfm::Library' do
|
|
7
|
+
@lastfm.library.should be_an_instance_of(Lastfm::MethodCategory::Library)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe '#get_tracks' do
|
|
11
|
+
it 'should get the tracks\' info' do
|
|
12
|
+
@lastfm.should_receive(:request).with('library.getTracks', {
|
|
13
|
+
:user => 'test',
|
|
14
|
+
:artist => 'foo',
|
|
15
|
+
:album => 'bar',
|
|
16
|
+
:limit => nil,
|
|
17
|
+
:page => nil
|
|
18
|
+
}).and_return(make_response('library_get_tracks'))
|
|
19
|
+
tracks = @lastfm.library.get_tracks('test', 'foo', 'bar')
|
|
20
|
+
tracks[0]['name'].should == 'Learning to Live'
|
|
21
|
+
tracks.size.should == 1
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe '#get_artists' do
|
|
26
|
+
it 'should get the artists\' info' do
|
|
27
|
+
@lastfm.should_receive(:request).with('library.getArtists', {
|
|
28
|
+
:user => 'test',
|
|
29
|
+
:limit => nil,
|
|
30
|
+
:page => nil
|
|
31
|
+
}).and_return(make_response('library_get_artists'))
|
|
32
|
+
artists = @lastfm.library.get_artists('test')
|
|
33
|
+
artists[1]['name'].should == 'Dark Castle'
|
|
34
|
+
artists.size.should == 2
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe '#tag' do
|
|
4
|
+
before { init_lastfm }
|
|
5
|
+
|
|
6
|
+
it 'should return an instance of Lastfm::Tag' do
|
|
7
|
+
@lastfm.tag.should be_an_instance_of(Lastfm::MethodCategory::Tag)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe '#get_top_artists' do
|
|
11
|
+
it 'should get top artists of some tag' do
|
|
12
|
+
@lastfm.should_receive(:request).with('tag.getTopArtists', {
|
|
13
|
+
:tag => 'Disco',
|
|
14
|
+
:limit => nil,
|
|
15
|
+
:page => nil
|
|
16
|
+
}).and_return(make_response('tag_get_top_artists'))
|
|
17
|
+
|
|
18
|
+
artists = @lastfm.tag.get_top_artists('Disco')
|
|
19
|
+
artists.size.should == 5
|
|
20
|
+
artists[0]['name'].should == 'Bee Gees'
|
|
21
|
+
artists[0]['url'].should == 'http://www.last.fm/music/Bee+Gees'
|
|
22
|
+
artists[1]['name'].should == 'ABBA'
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
@@ -0,0 +1,224 @@
|
|
|
1
|
+
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
|
|
2
|
+
|
|
3
|
+
describe '#track' do
|
|
4
|
+
before { init_lastfm }
|
|
5
|
+
|
|
6
|
+
it 'should return an instance of Lastfm::Track' do
|
|
7
|
+
@lastfm.track.should be_an_instance_of(Lastfm::MethodCategory::Track)
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe '#add_tags' do
|
|
11
|
+
it 'should add tags' do
|
|
12
|
+
@lastfm.should_receive(:request).with('track.addTags', {
|
|
13
|
+
:artist => 'foo artist',
|
|
14
|
+
:track => 'foo track',
|
|
15
|
+
:tags => 'aaa,bbb,ccc'
|
|
16
|
+
}, :post, true, true).and_return(@ok_response)
|
|
17
|
+
|
|
18
|
+
@lastfm.track.add_tags('foo artist', 'foo track', 'aaa,bbb,ccc').should be_true
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe '#ban' do
|
|
23
|
+
it 'should ban' do
|
|
24
|
+
@lastfm.should_receive(:request).with('track.ban', {
|
|
25
|
+
:artist => 'foo artist',
|
|
26
|
+
:track => 'foo track',
|
|
27
|
+
}, :post, true, true).and_return(@ok_response)
|
|
28
|
+
|
|
29
|
+
@lastfm.track.ban('foo artist', 'foo track').should be_true
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
describe '#get_info' do
|
|
34
|
+
it 'should get info' do
|
|
35
|
+
@lastfm.should_receive(:request).with('track.getInfo', {
|
|
36
|
+
:artist => 'Cher',
|
|
37
|
+
:track => 'Believe',
|
|
38
|
+
:username => 'youpy',
|
|
39
|
+
}).and_return(make_response('track_get_info'))
|
|
40
|
+
|
|
41
|
+
track = @lastfm.track.get_info('Cher', 'Believe', 'youpy')
|
|
42
|
+
track['name'].should == 'Believe'
|
|
43
|
+
track['album']['image'].size.should == 4
|
|
44
|
+
track['album']['image'].first['size'].should == 'small'
|
|
45
|
+
track['album']['image'].first['content'].should == 'http://userserve-ak.last.fm/serve/64s/8674593.jpg'
|
|
46
|
+
track['toptags']['tag'].size.should == 5
|
|
47
|
+
track['toptags']['tag'].first['name'].should == 'pop'
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it 'should get xml with force array option' do
|
|
51
|
+
@lastfm.should_receive(:request).with('track.getInfo', {
|
|
52
|
+
:artist => 'Cher',
|
|
53
|
+
:track => 'Believe',
|
|
54
|
+
:username => 'youpy',
|
|
55
|
+
}).and_return(make_response('track_get_info_force_array'))
|
|
56
|
+
|
|
57
|
+
track = @lastfm.track.get_info('Cher', 'Believe', 'youpy')
|
|
58
|
+
track['album']['image'].size.should == 1
|
|
59
|
+
track['album']['image'].first['size'].should == 'small'
|
|
60
|
+
track['album']['image'].first['content'].should == 'http://userserve-ak.last.fm/serve/64s/8674593.jpg'
|
|
61
|
+
track['toptags']['tag'].size.should == 1
|
|
62
|
+
track['toptags']['tag'].first['name'].should == 'pop'
|
|
63
|
+
end
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
describe '#get_correction' do
|
|
67
|
+
it 'should get correction' do
|
|
68
|
+
@lastfm.should_receive(:request).with('track.getCorrection', {
|
|
69
|
+
:artist => 'White Stripes',
|
|
70
|
+
:track => 'One More Cup of Coffee',
|
|
71
|
+
:username => 'wainekerr',
|
|
72
|
+
}).and_return(make_response('track_get_correction'))
|
|
73
|
+
|
|
74
|
+
correction = @lastfm.track.get_correction('White Stripes', 'One More Cup of Coffee', 'wainekerr')
|
|
75
|
+
correction['track']['name'].should == 'One More Cup of Coffee'
|
|
76
|
+
correction['track']['artist']['name'].should == 'The White Stripes'
|
|
77
|
+
correction['track']['url'].should == 'www.last.fm/music/The+White+Stripes/_/One+More+Cup+of+Coffee'
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
describe '#get_similar' do
|
|
82
|
+
it 'should get similar' do
|
|
83
|
+
@lastfm.should_receive(:request).with('track.getSimilar', {
|
|
84
|
+
:artist => 'Cher',
|
|
85
|
+
:track => 'Believe',
|
|
86
|
+
}).and_return(make_response('track_get_similar'))
|
|
87
|
+
|
|
88
|
+
tracks = @lastfm.track.get_similar('Cher', 'Believe')
|
|
89
|
+
tracks.size.should == 5
|
|
90
|
+
tracks.first['name'].should == 'Strong Enough'
|
|
91
|
+
tracks.first['image'][1]['content'].should == 'http://userserve-ak.last.fm/serve/64s/8674593.jpg'
|
|
92
|
+
tracks[1]['image'][0]['content'].should == 'http://userserve-ak.last.fm/serve/34s/8674593.jpg'
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe '#get_tags' do
|
|
97
|
+
it 'should get tags' do
|
|
98
|
+
@lastfm.should_receive(:request).with('track.getTags', {
|
|
99
|
+
:artist => 'foo artist',
|
|
100
|
+
:track => 'foo track',
|
|
101
|
+
}, :get, true, true).and_return(make_response('track_get_tags'))
|
|
102
|
+
|
|
103
|
+
tags = @lastfm.track.get_tags('foo artist', 'foo track')
|
|
104
|
+
tags.size.should == 2
|
|
105
|
+
tags[0]['name'].should == 'swedish'
|
|
106
|
+
tags[0]['url'].should == 'http://www.last.fm/tag/swedish'
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
describe '#get_top_fans' do
|
|
111
|
+
it 'should get top fans' do
|
|
112
|
+
@lastfm.should_receive(:request).with('track.getTopFans', {
|
|
113
|
+
:artist => 'foo artist',
|
|
114
|
+
:track => 'foo track',
|
|
115
|
+
}).and_return(make_response('track_get_top_fans'))
|
|
116
|
+
|
|
117
|
+
users = @lastfm.track.get_top_fans('foo artist', 'foo track')
|
|
118
|
+
users.size.should == 2
|
|
119
|
+
users[0]['name'].should == 'Through0glass'
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
describe '#get_top_tags' do
|
|
124
|
+
it 'should get top tags' do
|
|
125
|
+
@lastfm.should_receive(:request).with('track.getTopTags', {
|
|
126
|
+
:artist => 'foo artist',
|
|
127
|
+
:track => 'foo track',
|
|
128
|
+
}).and_return(make_response('track_get_top_tags'))
|
|
129
|
+
|
|
130
|
+
tags = @lastfm.track.get_top_tags('foo artist', 'foo track')
|
|
131
|
+
tags.size.should == 2
|
|
132
|
+
tags[0]['name'].should == 'alternative'
|
|
133
|
+
tags[0]['count'].should == '100'
|
|
134
|
+
tags[0]['url'].should == 'www.last.fm/tag/alternative'
|
|
135
|
+
end
|
|
136
|
+
end
|
|
137
|
+
|
|
138
|
+
describe '#love' do
|
|
139
|
+
it 'should love' do
|
|
140
|
+
@lastfm.should_receive(:request).with('track.love', {
|
|
141
|
+
:artist => 'foo artist',
|
|
142
|
+
:track => 'foo track',
|
|
143
|
+
}, :post, true, true).and_return(@ok_response)
|
|
144
|
+
|
|
145
|
+
@lastfm.track.love('foo artist', 'foo track').should be_true
|
|
146
|
+
end
|
|
147
|
+
end
|
|
148
|
+
|
|
149
|
+
describe '#remove_tag' do
|
|
150
|
+
it 'should remove tag' do
|
|
151
|
+
@lastfm.should_receive(:request).with('track.removeTag', {
|
|
152
|
+
:artist => 'foo artist',
|
|
153
|
+
:track => 'foo track',
|
|
154
|
+
:tag => 'aaa'
|
|
155
|
+
}, :post, true, true).and_return(@ok_response)
|
|
156
|
+
|
|
157
|
+
@lastfm.track.remove_tag('foo artist', 'foo track', 'aaa').should be_true
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
describe '#search' do
|
|
162
|
+
it 'should search' do
|
|
163
|
+
@lastfm.should_receive(:request).with('track.search', {
|
|
164
|
+
:artist => nil,
|
|
165
|
+
:track => 'Believe',
|
|
166
|
+
:limit => 10,
|
|
167
|
+
:page => 3,
|
|
168
|
+
}).and_return(make_response('track_search'))
|
|
169
|
+
|
|
170
|
+
tracks = @lastfm.track.search('Believe', nil, 10, 3)
|
|
171
|
+
tracks['results']['for'].should == 'Believe'
|
|
172
|
+
tracks['results']['totalResults'].should == '40540'
|
|
173
|
+
tracks['results']['trackmatches']['track'].size.should == 2
|
|
174
|
+
tracks['results']['trackmatches']['track'][0]['name'].should == 'Make Me Believe'
|
|
175
|
+
end
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
describe '#share' do
|
|
179
|
+
it 'should share' do
|
|
180
|
+
@lastfm.should_receive(:request).with('track.share', {
|
|
181
|
+
:artist => 'foo artist',
|
|
182
|
+
:track => 'foo track',
|
|
183
|
+
:message => 'this is a message',
|
|
184
|
+
:recipient => 'foo@example.com',
|
|
185
|
+
}, :post, true, true).and_return(@ok_response)
|
|
186
|
+
|
|
187
|
+
@lastfm.track.share('foo artist', 'foo track', 'foo@example.com', 'this is a message').should be_true
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
|
|
191
|
+
describe '#scrobble' do
|
|
192
|
+
it 'should scrobble' do
|
|
193
|
+
time = Time.now
|
|
194
|
+
@lastfm.should_receive(:request).with('track.scrobble', {
|
|
195
|
+
:artist => 'foo artist',
|
|
196
|
+
:track => 'foo track',
|
|
197
|
+
:album => 'foo album',
|
|
198
|
+
:mbid => '0383dadf-2a4e-4d10-a46a-e9e041da8eb3',
|
|
199
|
+
:timestamp => time,
|
|
200
|
+
:trackNumber => 1,
|
|
201
|
+
:duration => nil,
|
|
202
|
+
:albumArtist => nil,
|
|
203
|
+
}, :post, true, true).and_return(@ok_response)
|
|
204
|
+
|
|
205
|
+
@lastfm.track.scrobble('foo artist', 'foo track', time, 'foo album', 1, '0383dadf-2a4e-4d10-a46a-e9e041da8eb3', nil, nil)
|
|
206
|
+
end
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
describe '#update_now_playing' do
|
|
210
|
+
it 'should update now playing' do
|
|
211
|
+
@lastfm.should_receive(:request).with('track.updateNowPlaying', {
|
|
212
|
+
:artist => 'foo artist',
|
|
213
|
+
:track => 'foo track',
|
|
214
|
+
:album => 'foo album',
|
|
215
|
+
:mbid => '0383dadf-2a4e-4d10-a46a-e9e041da8eb3',
|
|
216
|
+
:trackNumber => 1,
|
|
217
|
+
:duration => nil,
|
|
218
|
+
:albumArtist => nil,
|
|
219
|
+
}, :post, true, true).and_return(@ok_response)
|
|
220
|
+
|
|
221
|
+
@lastfm.track.update_now_playing('foo artist', 'foo track', 'foo album', 1, '0383dadf-2a4e-4d10-a46a-e9e041da8eb3', nil, nil)
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
end
|