scrobbler-ng 2.0.10 → 2.0.11
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/Rakefile +1 -3
- data/VERSION.yml +2 -2
- data/lib/scrobbler/artist.rb +8 -3
- data/lib/scrobbler/base.rb +16 -1
- data/lib/scrobbler/helper/image.rb +1 -1
- data/lib/scrobbler/user.rb +33 -2
- data/scrobbler-ng.gemspec +43 -71
- data/tasks/rdoc.rake +2 -1
- data/tasks/tests.rake +3 -21
- metadata +55 -131
- data/test/mocks/library.rb +0 -35
- data/test/mocks/rest.rb +0 -127
- data/test/spec_helper.rb +0 -7
- data/test/test_helper.rb +0 -6
- data/test/unit/album_spec.rb +0 -61
- data/test/unit/artist_spec.rb +0 -132
- data/test/unit/authentication_spec.rb +0 -51
- data/test/unit/event_spec.rb +0 -105
- data/test/unit/geo_spec.rb +0 -148
- data/test/unit/library_spec.rb +0 -133
- data/test/unit/playing_test.rb +0 -53
- data/test/unit/playlist_spec.rb +0 -25
- data/test/unit/radio_spec.rb +0 -22
- data/test/unit/simpleauth_test.rb +0 -45
- data/test/unit/tag_spec.rb +0 -103
- data/test/unit/track_spec.rb +0 -105
- data/test/unit/user_spec.rb +0 -264
- data/test/unit/venue_spec.rb +0 -105
data/test/mocks/library.rb
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
## ## library.getartists
|
4
|
-
{
|
5
|
-
'api_key=foo123&user=xhochy' => 'artists-p1.xml',
|
6
|
-
'limit=30&api_key=foo123&user=xhochy' => 'artists-f30.xml'
|
7
|
-
}.each do |url, file|
|
8
|
-
register_fw('method=library.getartists&' + url, 'library', file)
|
9
|
-
end
|
10
|
-
(1..7).each do |n|
|
11
|
-
register_fw('method=library.getartists&page=' + n.to_s +
|
12
|
-
'&api_key=foo123&user=xhochy', 'library', "artists-p#{n}.xml")
|
13
|
-
end
|
14
|
-
|
15
|
-
## ## library.gettracks
|
16
|
-
{
|
17
|
-
'api_key=foo123&user=xhochy' => 'tracks-p1.xml',
|
18
|
-
'limit=30&api_key=foo123&user=xhochy' => 'tracks-f30.xml'
|
19
|
-
}.each do |url, file|
|
20
|
-
register_fw('method=library.gettracks&' + url, 'library', file)
|
21
|
-
end
|
22
|
-
(1..34).each do |n|
|
23
|
-
register_fw("user=xhochy&page=#{n}&api_key=foo123&method=library.gettracks",
|
24
|
-
'library', "tracks-p#{n}.xml")
|
25
|
-
end
|
26
|
-
|
27
|
-
## ## library.getalbums
|
28
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'limit=30&user=xhochy&api_key=foo123&method=library.getalbums', :body => File.join([FIXTURES_BASE, 'library', 'albums-f30.xml']))
|
29
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'user=xhochy&api_key=foo123&method=library.getalbums', :body => File.join([FIXTURES_BASE, 'library', 'albums-p1.xml']))
|
30
|
-
(1..8).each do |n|
|
31
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'method=library.getalbums&page=' +
|
32
|
-
n.to_s + '&api_key=foo123&user=xhochy',
|
33
|
-
:body => File.join([FIXTURES_BASE, 'library', 'albums-p' +
|
34
|
-
n.to_s + '.xml']))
|
35
|
-
end
|
data/test/mocks/rest.rb
DELETED
@@ -1,127 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
|
-
require 'fakeweb'
|
5
|
-
|
6
|
-
FIXTURES_BASE = File.join([File.dirname(__FILE__), '..', 'fixtures', 'xml'])
|
7
|
-
WEB_BASE = 'http://ws.audioscrobbler.com:80/2.0/?'
|
8
|
-
FakeWeb.allow_net_connect = false
|
9
|
-
|
10
|
-
def register_fw(uri, *args)
|
11
|
-
FakeWeb.register_uri(:get, WEB_BASE + uri,
|
12
|
-
:body => File.join([FIXTURES_BASE] + args))
|
13
|
-
end
|
14
|
-
|
15
|
-
## Library
|
16
|
-
require File.expand_path('library.rb', File.dirname(__FILE__))
|
17
|
-
|
18
|
-
## Event
|
19
|
-
register_fw('method=event.getattendees&event=328799&api_key=foo123',
|
20
|
-
'event', 'attendees.xml')
|
21
|
-
register_fw('event=328799&api_key=foo123&method=event.getshouts',
|
22
|
-
'event', 'shouts.xml')
|
23
|
-
register_fw('event=328799&api_key=foo123&method=event.getinfo',
|
24
|
-
'event', 'event.xml')
|
25
|
-
FakeWeb.register_uri(:post, WEB_BASE + 'api_key=foo123&event=328799&method=event.attend&sk=d580d57f32848f5dcf574d1ce18d78b2&status=1&api_sig=c476ec753082205327b0f6ef922d82c8',
|
26
|
-
:body => File.join([FIXTURES_BASE, 'event', 'attend.xml']))
|
27
|
-
|
28
|
-
## Tag
|
29
|
-
register_fw('tag=rock&api_key=foo123&method=tag.gettoptracks',
|
30
|
-
'tag', 'toptracks.xml')
|
31
|
-
register_fw('method=tag.gettoptags&api_key=foo123',
|
32
|
-
'tag', 'toptags.xml')
|
33
|
-
register_fw('method=tag.getsimilar&tag=rock&api_key=foo123',
|
34
|
-
'tag', 'similar.xml')
|
35
|
-
register_fw('tag=rock&api_key=foo123&method=tag.gettopartists',
|
36
|
-
'tag', 'topartists.xml')
|
37
|
-
register_fw('tag=rock&api_key=foo123&method=tag.gettopalbums',
|
38
|
-
'tag', 'topalbums.xml')
|
39
|
-
|
40
|
-
## Venue
|
41
|
-
register_fw('method=venue.getevents&api_key=foo123&venue=9027137',
|
42
|
-
'venue', 'events.xml')
|
43
|
-
register_fw('method=venue.getpastevents&api_key=foo123&venue=9027137',
|
44
|
-
'venue', 'events.xml')
|
45
|
-
|
46
|
-
## Auth
|
47
|
-
register_fw('api_key=foo123&method=auth.gettoken&api_sig=d062b3b3fa109d048732819d27d04689',
|
48
|
-
'auth', 'token.xml')
|
49
|
-
register_fw('api_key=foo123&method=auth.getsession&token=test123token&api_sig=f4a839c10a010368bd1058725c253dfb',
|
50
|
-
'auth', 'session.xml')
|
51
|
-
|
52
|
-
## Artist
|
53
|
-
register_fw('artist=Metallica&method=artist.getinfo&api_key=foo123',
|
54
|
-
'artist', 'info.xml')
|
55
|
-
register_fw('artist=Metallica&api_key=foo123&method=artist.gettoptags',
|
56
|
-
'artist', 'toptags.xml')
|
57
|
-
register_fw('artist=Metallica&api_key=foo123&method=artist.gettopfans',
|
58
|
-
'artist', 'fans.xml')
|
59
|
-
register_fw('artist=Metallica&api_key=foo123&method=artist.gettopalbums',
|
60
|
-
'artist', 'topalbums.xml')
|
61
|
-
register_fw('artist=Metallica&api_key=foo123&method=artist.getsimilar',
|
62
|
-
'artist', 'similar.xml')
|
63
|
-
register_fw('artist=Metallica&api_key=foo123&method=artist.gettoptracks',
|
64
|
-
'artist', 'toptracks.xml')
|
65
|
-
|
66
|
-
## Track
|
67
|
-
register_fw('api_key=foo123&method=track.getinfo&artist=Carrie%20Underwood&track=Before%20He%20Cheats',
|
68
|
-
'track', 'info.xml')
|
69
|
-
register_fw('artist=Cher&track=Before%20He%20Cheats&api_key=foo123&method=track.gettopfans',
|
70
|
-
'track', 'fans.xml')
|
71
|
-
register_fw('artist=Cher&track=Before%20He%20Cheats&api_key=foo123&method=track.gettoptags',
|
72
|
-
'track', 'toptags.xml')
|
73
|
-
register_fw('fingerprintid=1234&api_key=foo123&method=track.getFingerprintMetadata',
|
74
|
-
'track', 'fingerprintmetadata.xml')
|
75
|
-
|
76
|
-
## Geo
|
77
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'location=Manchester&api_key=foo123&method=geo.getevents', :body => File.join([FIXTURES_BASE, 'geo', 'events-p1.xml']))
|
78
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'location=Manchester&page=2&api_key=foo123&method=geo.getevents', :body => File.join([FIXTURES_BASE, 'geo', 'events-p2.xml']))
|
79
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'location=Manchester&page=3&api_key=foo123&method=geo.getevents', :body => File.join([FIXTURES_BASE, 'geo', 'events-p3.xml']))
|
80
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'distance=15&api_key=foo123&method=geo.getevents', :body => File.join([FIXTURES_BASE, 'geo', 'events-distance-p1.xml']))
|
81
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'lat=40.71417&long=-74.00639&api_key=foo123&method=geo.getevents', :body => File.join([FIXTURES_BASE, 'geo', 'events-lat-long.xml']))
|
82
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'location=Spain&api_key=foo123&method=geo.gettopartists', :body => File.join([FIXTURES_BASE, 'geo', 'top_artists-p1.xml']))
|
83
|
-
FakeWeb.register_uri(:get, WEB_BASE + 'location=Germany&api_key=foo123&method=geo.gettoptracks', :body => File.join([FIXTURES_BASE, 'geo', 'top_tracks-p1.xml']))
|
84
|
-
|
85
|
-
# User
|
86
|
-
register_fw('method=user.getplaylists&api_key=foo123&user=jnunemaker',
|
87
|
-
'user', 'playlists.xml')
|
88
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.getweeklytrackchart',
|
89
|
-
'user', 'weeklytrackchart.xml')
|
90
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.getweeklyartistchart',
|
91
|
-
'user', 'weeklyartistchart.xml')
|
92
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.getweeklyalbumchart',
|
93
|
-
'user', 'weeklyalbumchart.xml')
|
94
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.getevents',
|
95
|
-
'user', 'events.xml')
|
96
|
-
register_fw('user=jnunemaker&period=overall&api_key=foo123&method=user.gettoptracks',
|
97
|
-
'user', 'toptracks.xml')
|
98
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.gettoptags',
|
99
|
-
'user', 'toptags.xml')
|
100
|
-
register_fw('user=jnunemaker&period=overall&api_key=foo123&method=user.gettopartists',
|
101
|
-
'user', 'topartists.xml')
|
102
|
-
register_fw('user=jnunemaker&period=overall&api_key=foo123&method=user.gettopalbums',
|
103
|
-
'user', 'topalbums.xml')
|
104
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.getneighbours',
|
105
|
-
'user', 'neighbours.xml')
|
106
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.getfriends',
|
107
|
-
'user', 'friends.xml')
|
108
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.getfriends&page=1',
|
109
|
-
'user', 'friends.xml')
|
110
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.getrecenttracks',
|
111
|
-
'user', 'recenttracks.xml')
|
112
|
-
register_fw('user=jnunemaker&api_key=foo123&method=user.getlovedtracks',
|
113
|
-
'user', 'lovedtracks.xml')
|
114
|
-
|
115
|
-
# Album
|
116
|
-
register_fw('artist=Carrie%20Underwood&album=Some%20Hearts&api_key=foo123&method=album.getinfo',
|
117
|
-
'album', 'info.xml')
|
118
|
-
FakeWeb.register_uri(:post, WEB_BASE + 'api_key=foo123&method=album.addTags&sk=d580d57f32848f5dcf574d1ce18d78b2&tags=tag1%2Ctag2&api_sig=ab00d1e2baf1c820f889f604ca86535d',
|
119
|
-
:body => File.join([FIXTURES_BASE, 'album', 'addtags.xml']))
|
120
|
-
|
121
|
-
# Authentication
|
122
|
-
register_fw('api_key=foo123&authToken=3cf8871e1ce17fbfad72d49007ec2aad&method=auth.getMobileSession&username=john&api_sig=6b9c4b9732a6bb0339bcbbc9ecbcd4dd',
|
123
|
-
'auth', 'mobile.xml')
|
124
|
-
register_fw('api_key=foo123&method=auth.getToken&api_sig=1cc6b6f01a027f166a21ca8fe0c693b3',
|
125
|
-
'auth', 'token.xml')
|
126
|
-
register_fw('api_key=foo123&method=auth.getSession&token=0e6af5cd2fff6b314994af5b0c58ecc1&api_sig=2f8e52b15b36e8ca1356e7337364b84b',
|
127
|
-
'auth', 'session.xml')
|
data/test/spec_helper.rb
DELETED
data/test/test_helper.rb
DELETED
data/test/unit/album_spec.rb
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
|
2
|
-
|
3
|
-
describe Scrobbler::Album do
|
4
|
-
|
5
|
-
before(:each) do
|
6
|
-
@album = Scrobbler::Album.new(:name => 'Some Hearts', :artist => 'Carrie Underwood')
|
7
|
-
@session = Scrobbler::Session.new(:name => 'john', :subscriber => false, :key => 'd580d57f32848f5dcf574d1ce18d78b2')
|
8
|
-
end
|
9
|
-
|
10
|
-
it 'should know the artist' do
|
11
|
-
@album.artist.name.should eql('Carrie Underwood')
|
12
|
-
end
|
13
|
-
|
14
|
-
it "should know it's name" do
|
15
|
-
@album.name.should eql('Some Hearts')
|
16
|
-
end
|
17
|
-
|
18
|
-
it "should implement all methods from the Last.fm 2.0 API" do
|
19
|
-
@album.should respond_to(:add_tags)
|
20
|
-
@album.should respond_to(:buylinks)
|
21
|
-
@album.should respond_to(:load_info)
|
22
|
-
@album.should respond_to(:tags)
|
23
|
-
@album.should respond_to(:top_tags)
|
24
|
-
@album.should respond_to(:remove_tag)
|
25
|
-
@album.should respond_to(:search)
|
26
|
-
@album.should respond_to(:share)
|
27
|
-
end
|
28
|
-
|
29
|
-
it 'should be able to add tags' do
|
30
|
-
@album.add_tags(@session, ['tag1', 'tag2'])
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'should be able to load album info' do
|
34
|
-
@album.load_info
|
35
|
-
|
36
|
-
@album.mbid.should eql('a33b9822-9f09-4e19-9d6e-e05af85c727b')
|
37
|
-
@album.url.should eql('http://www.last.fm/music/Carrie+Underwood/Some+Hearts')
|
38
|
-
@album.release_date.should eql(Time.mktime(2005, 11, 15, 00, 00, 00))
|
39
|
-
@album.image(:small).should eql('http://userserve-ak.last.fm/serve/34s/19874169.jpg')
|
40
|
-
@album.image(:medium).should eql('http://userserve-ak.last.fm/serve/64s/19874169.jpg')
|
41
|
-
@album.image(:large).should eql('http://userserve-ak.last.fm/serve/174s/19874169.jpg')
|
42
|
-
@album.image(:extralarge).should eql('http://userserve-ak.last.fm/serve/300x300/19874169.jpg')
|
43
|
-
@album.listeners.should eql(131312)
|
44
|
-
@album.playcount.should eql(2096260)
|
45
|
-
@album.top_tags.should be_kind_of(Array)
|
46
|
-
@album.should have(5).top_tags
|
47
|
-
@album.top_tags.first.should be_kind_of(Scrobbler::Tag)
|
48
|
-
@album.top_tags.first.name.should eql('country')
|
49
|
-
@album.top_tags.first.url.should eql('http://www.last.fm/tag/country')
|
50
|
-
end
|
51
|
-
|
52
|
-
it 'should be able to get the user\'s tags for this album'
|
53
|
-
|
54
|
-
it 'should be able to remove tags'
|
55
|
-
|
56
|
-
it 'should be able to search for albums'
|
57
|
-
|
58
|
-
it 'should be able to get the links to buy this album'
|
59
|
-
|
60
|
-
it 'should be able to share a album with a friend'
|
61
|
-
end
|
data/test/unit/artist_spec.rb
DELETED
@@ -1,132 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
|
4
|
-
|
5
|
-
describe Scrobbler::Artist do
|
6
|
-
|
7
|
-
before(:each) do
|
8
|
-
@artist = Scrobbler::Artist.new(:name => 'Metallica')
|
9
|
-
end
|
10
|
-
|
11
|
-
it 'should know its name' do
|
12
|
-
@artist.name.should eql('Metallica')
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should implement all methods from the Last.fm 2.0 API' do
|
16
|
-
@artist.should respond_to(:add_tags)
|
17
|
-
@artist.should respond_to(:events)
|
18
|
-
@artist.should respond_to(:images)
|
19
|
-
@artist.should respond_to(:load_info)
|
20
|
-
@artist.should respond_to(:shouts)
|
21
|
-
@artist.should respond_to(:similar)
|
22
|
-
@artist.should respond_to(:tags)
|
23
|
-
@artist.should respond_to(:top_albums)
|
24
|
-
@artist.should respond_to(:top_fans)
|
25
|
-
@artist.should respond_to(:top_tags)
|
26
|
-
@artist.should respond_to(:top_tracks)
|
27
|
-
@artist.should respond_to(:remove_tag)
|
28
|
-
@artist.should respond_to(:search)
|
29
|
-
@artist.should respond_to(:share)
|
30
|
-
@artist.should respond_to(:shout)
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'should be able to add tags'
|
34
|
-
|
35
|
-
it 'should be able to load a list of upcoming events'
|
36
|
-
|
37
|
-
it 'should be able to get images for this artist in a variety of sizes'
|
38
|
-
|
39
|
-
it 'should be able to load the artist info' do
|
40
|
-
@artist.load_info
|
41
|
-
@artist.mbid.should eql('bfcc6d75-a6a5-4bc6-8282-47aec8531818')
|
42
|
-
@artist.url.should eql('http://www.last.fm/music/Cher')
|
43
|
-
@artist.image(:small).should eql('http://userserve-ak.last.fm/serve/34/9137697.jpg')
|
44
|
-
@artist.image(:medium).should eql('http://userserve-ak.last.fm/serve/64/9137697.jpg')
|
45
|
-
@artist.image(:large).should eql('http://userserve-ak.last.fm/serve/126/9137697.jpg')
|
46
|
-
@artist.streamable.should be_true
|
47
|
-
@artist.listeners.should eql(383775)
|
48
|
-
@artist.playcount.should eql(3141583)
|
49
|
-
end
|
50
|
-
|
51
|
-
it 'should be able to get shouts for this artist'
|
52
|
-
|
53
|
-
it 'should be able to get all the artists similar to this artist' do
|
54
|
-
@artist.similar.should be_kind_of(Array)
|
55
|
-
@artist.similar.should have(100).items
|
56
|
-
@artist.similar.first.should be_kind_of(Scrobbler::Artist)
|
57
|
-
@artist.similar.first.name.should eql('Megadeth')
|
58
|
-
@artist.similar.first.mbid.should eql('a9044915-8be3-4c7e-b11f-9e2d2ea0a91e')
|
59
|
-
@artist.similar.first.match.should eql(100)
|
60
|
-
@artist.similar.first.url.should eql('www.last.fm/music/Megadeth')
|
61
|
-
@artist.similar.first.image(:small).should eql('http://userserve-ak.last.fm/serve/34/8422011.jpg')
|
62
|
-
@artist.similar.first.image(:medium).should eql('http://userserve-ak.last.fm/serve/64/8422011.jpg')
|
63
|
-
@artist.similar.first.image(:large).should eql('http://userserve-ak.last.fm/serve/126/8422011.jpg')
|
64
|
-
@artist.similar.first.image(:small).should eql('http://userserve-ak.last.fm/serve/34/8422011.jpg')
|
65
|
-
@artist.similar.first.streamable.should be_true
|
66
|
-
end
|
67
|
-
|
68
|
-
it 'should be able to get the tags applied by a user'
|
69
|
-
|
70
|
-
it 'should be able to get the top albums' do
|
71
|
-
@artist.top_albums.should be_kind_of(Array)
|
72
|
-
@artist.top_albums.should have(4).items
|
73
|
-
@artist.top_albums.first.should be_kind_of(Scrobbler::Album)
|
74
|
-
@artist.top_albums.first.name.should eql('Master of Puppets')
|
75
|
-
@artist.top_albums.first.playcount.should eql(1165854)
|
76
|
-
@artist.top_albums.first.mbid.should eql('fed37cfc-2a6d-4569-9ac0-501a7c7598eb')
|
77
|
-
@artist.top_albums.first.url.should eql('http://www.last.fm/music/Metallica/Master+of+Puppets')
|
78
|
-
@artist.top_albums.first.artist.should be_kind_of(Scrobbler::Artist)
|
79
|
-
@artist.top_albums.first.artist.name.should eql('Metallica')
|
80
|
-
@artist.top_albums.first.artist.mbid.should eql('65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab')
|
81
|
-
@artist.top_albums.first.artist.url.should eql('http://www.last.fm/music/Metallica')
|
82
|
-
@artist.top_albums.first.image(:small).should eql('http://userserve-ak.last.fm/serve/34s/8622967.jpg')
|
83
|
-
@artist.top_albums.first.image(:medium).should eql('http://userserve-ak.last.fm/serve/64s/8622967.jpg')
|
84
|
-
@artist.top_albums.first.image(:large).should eql('http://userserve-ak.last.fm/serve/126/8622967.jpg')
|
85
|
-
end
|
86
|
-
|
87
|
-
it 'should be able to get the top fans' do
|
88
|
-
@artist.top_fans.should be_kind_of(Array)
|
89
|
-
@artist.top_fans.should have(6).items
|
90
|
-
@artist.top_fans.first.should be_kind_of(Scrobbler::User)
|
91
|
-
@artist.top_fans.first.name.should eql('Slide15')
|
92
|
-
@artist.top_fans.first.url.should eql('http://www.last.fm/user/Slide15')
|
93
|
-
@artist.top_fans.first.image(:small).should eql('http://userserve-ak.last.fm/serve/34/4477633.jpg')
|
94
|
-
@artist.top_fans.first.image(:medium).should eql('http://userserve-ak.last.fm/serve/64/4477633.jpg')
|
95
|
-
@artist.top_fans.first.image(:large).should eql('http://userserve-ak.last.fm/serve/126/4477633.jpg')
|
96
|
-
@artist.top_fans.first.weight.should eql(265440672)
|
97
|
-
end
|
98
|
-
|
99
|
-
it 'should be able to get the top tags' do
|
100
|
-
@artist.top_tags.should be_kind_of(Array)
|
101
|
-
@artist.top_tags.should have(3).items
|
102
|
-
@artist.top_tags.first.should be_kind_of(Scrobbler::Tag)
|
103
|
-
@artist.top_tags.first.name.should eql('metal')
|
104
|
-
@artist.top_tags.first.count.should eql(100)
|
105
|
-
@artist.top_tags.first.url.should eql('http://www.last.fm/tag/metal')
|
106
|
-
end
|
107
|
-
|
108
|
-
it 'should be able to get the top tracks' do
|
109
|
-
@artist.top_tracks.should be_kind_of(Array)
|
110
|
-
@artist.top_tracks.should have(4).items
|
111
|
-
@artist.top_tracks.first.should be_kind_of(Scrobbler::Track)
|
112
|
-
@artist.top_tracks.first.rank.should eql(1.0)
|
113
|
-
@artist.top_tracks.first.name.should eql('Nothing Else Matters')
|
114
|
-
@artist.top_tracks.first.playcount.should eql(537704)
|
115
|
-
@artist.top_tracks.first.mbid.should eql('')
|
116
|
-
@artist.top_tracks.first.url.should eql('http://www.last.fm/music/Metallica/_/Nothing+Else+Matters')
|
117
|
-
@artist.top_tracks.first.artist.should be_kind_of(Scrobbler::Artist)
|
118
|
-
@artist.top_tracks.first.artist.name.should eql('Metallica')
|
119
|
-
@artist.top_tracks.first.artist.url.should eql('http://www.last.fm/music/Metallica')
|
120
|
-
@artist.top_tracks.first.artist.mbid.should eql('65f4f0c5-ef9e-490c-aee3-909e7ae6b2ab')
|
121
|
-
@artist.top_tracks.first.image(:small).should eql('http://userserve-ak.last.fm/serve/34s/8622943.jpg')
|
122
|
-
@artist.top_tracks.first.image(:medium).should eql('http://userserve-ak.last.fm/serve/64s/8622943.jpg')
|
123
|
-
@artist.top_tracks.first.image(:large).should eql('http://userserve-ak.last.fm/serve/126/8622943.jpg')
|
124
|
-
end
|
125
|
-
|
126
|
-
it 'should be able to remove tags'
|
127
|
-
|
128
|
-
it 'should be able to search for an artist'
|
129
|
-
|
130
|
-
it 'should be able to leave a shout'
|
131
|
-
|
132
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
|
2
|
-
|
3
|
-
describe Scrobbler::Authentication do
|
4
|
-
|
5
|
-
before(:each) do
|
6
|
-
@auth = Scrobbler::Authentication.new(:username => 'john')
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'should implement' do
|
10
|
-
@auth.should respond_to(:session)
|
11
|
-
@auth.should respond_to(:mobile_session)
|
12
|
-
@auth.should respond_to(:token)
|
13
|
-
end
|
14
|
-
|
15
|
-
it 'should be able to authorize a mobile session' do
|
16
|
-
@session = @auth.mobile_session('doe')
|
17
|
-
@session.key.should eql('d580d57f32848f5dcf574d1ce18d78b2')
|
18
|
-
@session.subscriber.should be_false
|
19
|
-
@session.name.should eql('john')
|
20
|
-
end
|
21
|
-
|
22
|
-
it 'should be able to authorize a web session' do
|
23
|
-
# Check URL generation
|
24
|
-
session_url = @auth.webservice_session_url
|
25
|
-
session_url.should match /http\:\/\/www.last.fm\/api\/auth\/\?api_key=[^&?]*/
|
26
|
-
session_url_cb = @auth.webservice_session_url("http://www.example.com/callback")
|
27
|
-
session_url_cb.should match /http\:\/\/www.last.fm\/api\/auth\/\?api_key=[^&?]*&cb=[^&?]*/
|
28
|
-
# Handle callback -- mocking this --
|
29
|
-
token = @auth.token
|
30
|
-
# Check session generation
|
31
|
-
@session = @auth.session(token)
|
32
|
-
@session.key.should eql('d580d57f32848f5dcf574d1ce18d78b2')
|
33
|
-
@session.subscriber.should be_false
|
34
|
-
@session.name.should eql('john')
|
35
|
-
end
|
36
|
-
|
37
|
-
it 'should be able to authroize a desktop session' do
|
38
|
-
# Check URL generation
|
39
|
-
token = @auth.token
|
40
|
-
session_url = @auth.desktop_session_url(token)
|
41
|
-
session_url.should match /http\:\/\/www.last.fm\/api\/auth\/\?api_key=[^&?]*&token=[^&?]*/
|
42
|
-
# -- Intemediate step needed in production to let the user grant this application access
|
43
|
-
# Check session generation
|
44
|
-
@session = @auth.session(token)
|
45
|
-
@session.key.should eql('d580d57f32848f5dcf574d1ce18d78b2')
|
46
|
-
@session.subscriber.should be_false
|
47
|
-
@session.name.should eql('john')
|
48
|
-
end
|
49
|
-
|
50
|
-
end
|
51
|
-
|
data/test/unit/event_spec.rb
DELETED
@@ -1,105 +0,0 @@
|
|
1
|
-
require File.expand_path(File.dirname(__FILE__) + '/../spec_helper.rb')
|
2
|
-
|
3
|
-
describe Scrobbler::Event do
|
4
|
-
|
5
|
-
before(:all) do
|
6
|
-
@event = Scrobbler::Event.new(:id => 328799)
|
7
|
-
end
|
8
|
-
|
9
|
-
it 'should know its id' do
|
10
|
-
@event.id.should eql(328799)
|
11
|
-
end
|
12
|
-
|
13
|
-
describe 'should implement the Last.fm 2.0 API method' do
|
14
|
-
[:attend, :attendees, :load_info, :shouts, :share, :shout].each do |method_name|
|
15
|
-
it "'#{method_name}'" do
|
16
|
-
@event.should respond_to(method_name)
|
17
|
-
end
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
it 'should set user\'s status for attendance'
|
22
|
-
|
23
|
-
describe 'events attendees' do
|
24
|
-
before do
|
25
|
-
@attendees = ["ikea", "Schrollum", "Alpha1", "japps", "Gomhen", "NTG"]
|
26
|
-
end
|
27
|
-
|
28
|
-
it 'should have 6 attendees' do
|
29
|
-
@event.attendees.size.should eql 6
|
30
|
-
end
|
31
|
-
|
32
|
-
it "should know it's attendees names" do
|
33
|
-
@event.attendees.collect(&:name).should eql @attendees
|
34
|
-
end
|
35
|
-
|
36
|
-
describe 'first attendee' do
|
37
|
-
before do
|
38
|
-
@attendee = @event.attendees.first
|
39
|
-
end
|
40
|
-
|
41
|
-
it "should know it's realname" do
|
42
|
-
@attendee.realname.should eql 'Jane'
|
43
|
-
end
|
44
|
-
|
45
|
-
it "should know it's small image" do
|
46
|
-
@attendee.image(:small).should eql 'http://userserve-ak.last.fm/serve/34/17805805.jpg'
|
47
|
-
end
|
48
|
-
|
49
|
-
it "should know it's medium image" do
|
50
|
-
@attendee.image(:medium).should eql 'http://userserve-ak.last.fm/serve/64/17805805.jpg'
|
51
|
-
end
|
52
|
-
|
53
|
-
it "should know it's large image" do
|
54
|
-
@attendee.image(:large).should eql 'http://userserve-ak.last.fm/serve/126/17805805.jpg'
|
55
|
-
end
|
56
|
-
|
57
|
-
it "should know it's large url" do
|
58
|
-
@attendee.url.should eql 'http://www.last.fm/user/ikea'
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
it 'should be able to load its info' do
|
64
|
-
@event.load_info
|
65
|
-
@event.title.should eql('Philip Glass')
|
66
|
-
@event.artists.should be_kind_of(Array)
|
67
|
-
@event.artists.first.should be_kind_of(Scrobbler::Artist)
|
68
|
-
@event.artists.first.name.should eql('Philip Glass')
|
69
|
-
@event.headliner.should be_kind_of(Scrobbler::Artist)
|
70
|
-
@event.headliner.name.should eql('Philip Glass')
|
71
|
-
@event.venue.should be_kind_of(Scrobbler::Venue)
|
72
|
-
@event.venue.name.should eql('Barbican Centre')
|
73
|
-
@event.venue.city.should eql('London')
|
74
|
-
@event.venue.country.should eql('United Kingdom')
|
75
|
-
@event.venue.street.should eql('Silk Street')
|
76
|
-
@event.venue.postalcode.should eql('EC2Y 8DS')
|
77
|
-
@event.venue.geo_lat.should eql('51.519972')
|
78
|
-
@event.venue.geo_long.should eql('-0.09334')
|
79
|
-
@event.venue.url.should eql('http://www.last.fm/venue/8777860')
|
80
|
-
@event.start_date.should eql(Time.mktime(2008, 6, 12, 19, 30, 00))
|
81
|
-
@event.description.should eql('Nunc vulputate, ante vitae sollicitudin ullamcorper, velit eros ultricies libero.')
|
82
|
-
@event.image(:small).should eql('http://userserve-ak.last.fm/serve/34/320636.jpg')
|
83
|
-
@event.image(:medium).should eql('http://userserve-ak.last.fm/serve/64/320636.jpg')
|
84
|
-
@event.image(:large).should eql('http://userserve-ak.last.fm/serve/126/320636.jpg')
|
85
|
-
@event.url.should eql('http://www.last.fm/event/328799')
|
86
|
-
@event.attendance.should eql(46)
|
87
|
-
@event.reviews.should eql(0)
|
88
|
-
@event.tag.should eql('lastfm:event=328799')
|
89
|
-
end
|
90
|
-
|
91
|
-
it 'should be able to get its shouts' do
|
92
|
-
@event.shouts.should be_kind_of(Array)
|
93
|
-
@event.shouts.should have(6).items
|
94
|
-
@event.shouts.first.should be_kind_of(Scrobbler::Shout)
|
95
|
-
@event.shouts.first.body.should eql('test')
|
96
|
-
@event.shouts.first.author.should be_kind_of(Scrobbler::User)
|
97
|
-
@event.shouts.first.author.name.should eql('kaypey')
|
98
|
-
@event.shouts.first.date.should eql(Time.mktime(2009, 4, 28, 5, 35, 11))
|
99
|
-
end
|
100
|
-
|
101
|
-
it 'should be able to be shared'
|
102
|
-
|
103
|
-
it 'should be able to leave a shout'
|
104
|
-
|
105
|
-
end
|