spec/method_specs/album_spec.rb in lastfm-1.26.0 vs spec/method_specs/album_spec.rb in lastfm-1.27.0
- old
+ new
@@ -1,14 +1,100 @@
+# encoding: utf-8
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
describe '#album' do
before { init_lastfm }
it 'should return an instance of Lastfm::Album' do
@lastfm.album.should be_an_instance_of(Lastfm::MethodCategory::Album)
end
+ describe '#add_tags' do
+ it 'should add tags' do
+ @lastfm.should_receive(:request).with('album.addTags', {
+ :artist => 'foo artist',
+ :album => 'foo track',
+ :tags => 'aaa,bbb,ccc'
+ }, :post, true, true).and_return(@ok_response)
+
+ @lastfm.album.add_tags(
+ :artist => 'foo artist',
+ :album => 'foo track',
+ :tags => 'aaa,bbb,ccc'
+ ).should be_true
+ end
+ end
+
+ describe '#get_buylinks' do
+ it 'should get buylinks' do
+ @lastfm.should_receive(:request).with('album.getBuylinks', {
+ :artist => 'radiohead',
+ :album => 'in rainbows',
+ :country => 'united kingdom',
+ :autocorrect => nil
+ }).and_return(make_response('album_get_buylinks'))
+
+ buylinks = @lastfm.album.get_buylinks(
+ :artist => 'radiohead',
+ :album => 'in rainbows',
+ :country => 'united kingdom'
+ )
+
+ buylinks['physicals'].size.should == 1
+ buylinks['physicals']['affiliation']['supplierName'].should == 'Amazon'
+ buylinks['physicals']['affiliation']['price']['currency'].should == 'GBP'
+ buylinks['physicals']['affiliation']['price']['amount'].should == '6.34'
+ buylinks['physicals']['affiliation']['price']['formatted'].should == '£6.34'
+ buylinks['physicals']['affiliation']['buyLink'].should == 'http://www.last.fm/affiliate/byid/8/3418994/1/ws.album.buylinks.f4e2585261d8d10d3297e181d68940fc'
+
+ buylinks['downloads'].size.should == 1
+ buylinks['downloads']['affiliation']['supplierName'].should == 'Amazon MP3'
+ buylinks['downloads']['affiliation']['price']['currency'].should == 'GBP'
+ buylinks['downloads']['affiliation']['price']['amount'].should == '7.99'
+ buylinks['downloads']['affiliation']['price']['formatted'].should == '£7.99'
+ buylinks['downloads']['affiliation']['buyLink'].should == 'http://www.last.fm/affiliate/byid/8/3418994/44/ws.album.buylinks.f4e2585261d8d10d3297e181d68940fc'
+ end
+
+ it 'should get buylinks by mbid' do
+ @lastfm.should_receive(:request).with('album.getBuylinks', {
+ :mbid => 'radiohead',
+ :country => 'united kingdom',
+ :autocorrect => nil
+ }).and_return(make_response('album_get_buylinks'))
+
+ buylinks = @lastfm.album.get_buylinks(
+ :mbid => 'radiohead',
+ :country => 'united kingdom'
+ )
+
+ buylinks['physicals'].size.should == 1
+ buylinks['physicals']['affiliation']['supplierName'].should == 'Amazon'
+ buylinks['physicals']['affiliation']['price']['currency'].should == 'GBP'
+ buylinks['physicals']['affiliation']['price']['amount'].should == '6.34'
+ buylinks['physicals']['affiliation']['price']['formatted'].should == '£6.34'
+ buylinks['physicals']['affiliation']['buyLink'].should == 'http://www.last.fm/affiliate/byid/8/3418994/1/ws.album.buylinks.f4e2585261d8d10d3297e181d68940fc'
+
+ buylinks['downloads'].size.should == 1
+ buylinks['downloads']['affiliation']['supplierName'].should == 'Amazon MP3'
+ buylinks['downloads']['affiliation']['price']['currency'].should == 'GBP'
+ buylinks['downloads']['affiliation']['price']['amount'].should == '7.99'
+ buylinks['downloads']['affiliation']['price']['formatted'].should == '£7.99'
+ buylinks['downloads']['affiliation']['buyLink'].should == 'http://www.last.fm/affiliate/byid/8/3418994/44/ws.album.buylinks.f4e2585261d8d10d3297e181d68940fc'
+ end
+
+ it 'should raise ArgumentError without country' do
+ expect {@lastfm.album.get_buylinks(
+ :artist => 'radiohead',
+ :album => 'in rainbows'
+ )}.to raise_error(ArgumentError)
+
+ expect {@lastfm.album.get_buylinks(
+ :mbid => 'radiohead',
+ )}.to raise_error(ArgumentError)
+ end
+ end
+
describe '#get_info' do
it 'should get info by artist and album' do
@lastfm.should_receive(:request).with('album.getInfo', {
:artist => 'Cher', :album => 'Believe'
}).and_return(make_response('album_get_info'))
@@ -42,8 +128,143 @@
album['releasedate'].should == '6 Apr 1999, 00:00'
album['tracks']['track'].size.should == 10
album['tracks']['track'][0]['name'].should == 'Believe'
album['tracks']['track'][0]['duration'].should == '239'
album['tracks']['track'][0]['url'].should == 'http://www.last.fm/music/Cher/_/Believe'
+ end
+ end
+
+ describe '#get_shouts' do
+ it 'should get shouts' do
+ @lastfm.should_receive(:request).with('album.getShouts', {
+ :artist => 'Cher',
+ :album => 'Believe',
+ :autocorrect => nil,
+ :limit => nil,
+ :page => nil
+ }).and_return(make_response('album_get_shouts'))
+
+ shouts = @lastfm.album.get_shouts(
+ :artist => 'Cher',
+ :album => 'Believe')
+ shouts.size.should == 2
+ shouts[0]['body'].should == 'A perfect Pop/Dance Masterpiece'
+ shouts[0]['author'].should == 'top20fanatico'
+ shouts[0]['date'].should == 'Wed, 7 Jan 2015 12:45:35'
+ end
+ end
+
+ describe '#get_tags' do
+ it 'should get tags' do
+ @lastfm.should_receive(:request).with('album.getTags', {
+ :artist => 'Cher',
+ :album => 'Believe',
+ :autocorrect => nil
+ }, :get, true, true).and_return(make_response('album_get_tags'))
+
+ tags = @lastfm.album.get_tags(
+ :artist => 'Cher',
+ :album => 'Believe')
+ tags.size.should == 2
+ tags[0]['name'].should == 'sourabh'
+ tags[0]['url'].should == 'http://www.last.fm/tag/sourabh'
+ end
+ end
+
+ describe '#get_top_tags' do
+ it 'should get top tags' do
+ @lastfm.should_receive(:request).with('album.getTopTags', {
+ :artist => 'Radiohead',
+ :album => 'The Bends',
+ :autocorrect => nil
+ }).and_return(make_response('album_get_top_tags'))
+
+ tags = @lastfm.album.get_top_tags(
+ :artist => 'Radiohead',
+ :album => 'The Bends')
+ tags.size.should == 2
+ tags[0]['name'].should == 'albums I own'
+ tags[0]['count'].should == '100'
+ tags[0]['url'].should == 'http://www.last.fm/tag/albums%20i%20own'
+ end
+ end
+
+ describe '#remove_tag' do
+ it 'should remove tag' do
+ @lastfm.should_receive(:request).with('album.removeTag', {
+ :artist => 'foo artist',
+ :album => 'foo track',
+ :tag => 'aaa'
+ }, :post, true, true).and_return(@ok_response)
+
+ @lastfm.album.remove_tag(
+ :artist => 'foo artist',
+ :album => 'foo track',
+ :tag => 'aaa').should be_true
+ end
+ end
+
+ describe '#search' do
+ it 'should search' do
+ @lastfm.should_receive(:request).with('album.search', {
+ :album => 'Believe',
+ :limit => nil,
+ :page => nil,
+ }).and_return(make_response('album_search'))
+
+ albums = @lastfm.album.search(:album => 'Believe')
+
+ albums['results']['for'].should == 'Believe'
+ albums['results']['totalResults'].should == '3926'
+ albums['results']['albummatches']['album'].size.should == 2
+ albums['results']['albummatches']['album'][0]['name'].should == 'Believe'
+ end
+
+ it 'should always return an array of albums' do
+ @lastfm.should_receive(:request).with('album.search', {
+ :album => 'Believe',
+ :limit => nil,
+ :page => nil,
+ }).and_return(make_response('album_search_single_album'))
+
+ albums = @lastfm.album.search(:album => 'Believe')
+
+ albums['results']['for'].should == 'Believe'
+ albums['results']['totalResults'].should == '3926'
+ albums['results']['albummatches']['album'].size.should == 1
+ albums['results']['albummatches']['album'][0]['name'].should == 'Believe'
+ end
+
+ it 'should return an empty array if no match found' do
+ @lastfm.should_receive(:request).with('album.search', {
+ :album => 'Believe',
+ :limit => nil,
+ :page => nil,
+ }).and_return(make_response('album_search_no_match'))
+
+ albums = @lastfm.album.search(:album => 'Believe')
+
+ albums['results']['for'].should == 'Believe'
+ albums['results']['totalResults'].should == '0'
+ albums['results']['albummatches']['album'].size.should == 0
+ end
+ end
+
+ describe '#share' do
+ it 'should share' do
+ @lastfm.should_receive(:request).with('album.share', {
+ :artist => 'bar artist',
+ :album => 'bar album',
+ :recipient => 'bar@example.com',
+ :message => 'this is a message',
+ :public => nil,
+ }, :post, true, true).and_return(@ok_response)
+
+ @lastfm.album.share(
+ :artist => 'bar artist',
+ :album => 'bar album',
+ :recipient => 'bar@example.com',
+ :message => 'this is a message',
+ ).should be_true
end
end
end