lastfm 1.3.0 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (53) hide show
  1. data/README.rdoc +24 -11
  2. data/VERSION +1 -1
  3. data/lib/lastfm.rb +25 -15
  4. data/lib/lastfm/method_category/artist.rb +9 -0
  5. data/lib/lastfm/method_category/event.rb +9 -0
  6. data/lib/lastfm/method_category/tag.rb +9 -0
  7. data/lib/lastfm/method_category/user.rb +34 -17
  8. data/spec/fixtures/album_get_info.xml +168 -157
  9. data/spec/fixtures/artist_get_events.xml +13 -13
  10. data/spec/fixtures/artist_get_info.xml +93 -93
  11. data/spec/fixtures/artist_get_similar.xml +12 -0
  12. data/spec/fixtures/artist_get_tags.xml +13 -0
  13. data/spec/fixtures/event_get_info.xml +39 -0
  14. data/spec/fixtures/geo_get_events.xml +4 -4
  15. data/spec/fixtures/library_get_artists.xml +1 -0
  16. data/spec/fixtures/library_get_tracks.xml +15 -14
  17. data/spec/fixtures/ng.xml +2 -1
  18. data/spec/fixtures/ok.xml +87 -102
  19. data/spec/fixtures/tag_get_top_artists.xml +60 -0
  20. data/spec/fixtures/track_get_correction.xml +2 -1
  21. data/spec/fixtures/track_get_info.xml +47 -53
  22. data/spec/fixtures/track_get_info_force_array.xml +28 -31
  23. data/spec/fixtures/track_get_similar.xml +75 -5078
  24. data/spec/fixtures/track_get_tags.xml +10 -10
  25. data/spec/fixtures/track_get_top_fans.xml +23 -26
  26. data/spec/fixtures/track_get_top_tags.xml +13 -13
  27. data/spec/fixtures/track_search.xml +31 -33
  28. data/spec/fixtures/user_get_friends.xml +2 -1
  29. data/spec/fixtures/user_get_info.xml +2 -1
  30. data/spec/fixtures/user_get_loved_tracks.xml +23 -22
  31. data/spec/fixtures/user_get_neighbours.xml +54 -502
  32. data/spec/fixtures/user_get_personal_tags.xml +29 -0
  33. data/spec/fixtures/user_get_personal_tags_albums.xml +21 -0
  34. data/spec/fixtures/user_get_personal_tags_artists.xml +62 -0
  35. data/spec/fixtures/user_get_personal_tags_tracks.xml +87 -0
  36. data/spec/fixtures/user_get_recent_tracks.xml +2 -1
  37. data/spec/fixtures/user_get_top_albums.xml +22 -22
  38. data/spec/fixtures/user_get_top_artists.xml +22 -22
  39. data/spec/fixtures/user_get_top_tags.xml +30 -0
  40. data/spec/fixtures/user_get_top_tracks.xml +24 -23
  41. data/spec/lastfm_spec.rb +33 -516
  42. data/spec/method_specs/album_spec.rb +30 -0
  43. data/spec/method_specs/artist_spec.rb +79 -0
  44. data/spec/method_specs/event_spec.rb +17 -0
  45. data/spec/method_specs/geo_spec.rb +33 -0
  46. data/spec/method_specs/library_spec.rb +37 -0
  47. data/spec/method_specs/tag_spec.rb +25 -0
  48. data/spec/method_specs/track_spec.rb +224 -0
  49. data/spec/method_specs/user_spec.rb +214 -0
  50. data/spec/response_spec.rb +4 -4
  51. data/spec/spec_helper.rb +15 -0
  52. data/spec/util_spec.rb +4 -4
  53. metadata +34 -15
@@ -0,0 +1,29 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <lfm status="ok">
3
+ <taggings user="RJ" tag="rock" page="1" perPage="50" totalPages="1" total="14">
4
+ <artists>
5
+ <artist>
6
+ <name>Afghan Whigs</name>
7
+ <mbid/>
8
+ <url>http://www.last.fm/music/Afghan+Whigs</url>
9
+ <streamable>1</streamable>
10
+ <image size="small">http://userserve-ak.last.fm/serve/34/65473.jpg</image>
11
+ <image size="medium">http://userserve-ak.last.fm/serve/64/65473.jpg</image>
12
+ <image size="large">http://userserve-ak.last.fm/serve/126/65473.jpg</image>
13
+ <image size="extralarge">http://userserve-ak.last.fm/serve/252/65473.jpg</image>
14
+ <image size="mega">http://userserve-ak.last.fm/serve/_/65473/Afghan+Whigs.jpg</image>
15
+ </artist>
16
+ <artist>
17
+ <name>Jeff The Brotherhood</name>
18
+ <mbid>51b13b20-dc03-4d51-8c6d-f3b0c52476a6</mbid>
19
+ <url>http://www.last.fm/music/Jeff+The+Brotherhood</url>
20
+ <streamable>0</streamable>
21
+ <image size="small">http://userserve-ak.last.fm/serve/34/42786999.jpg</image>
22
+ <image size="medium">http://userserve-ak.last.fm/serve/64/42786999.jpg</image>
23
+ <image size="large">http://userserve-ak.last.fm/serve/126/42786999.jpg</image>
24
+ <image size="extralarge">http://userserve-ak.last.fm/serve/252/42786999.jpg</image>
25
+ <image size="mega">http://userserve-ak.last.fm/serve/500/42786999/Jeff+The+Brotherhood+JTBKAHANtext.jpg</image>
26
+ </artist>
27
+ </artists>
28
+ </taggings>
29
+ </lfm>
@@ -0,0 +1,21 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <lfm status="ok">
3
+ <taggings user="RJ" tag="hip-hop" page="1" perPage="50" totalPages="1" total="1">
4
+ <albums>
5
+ <album>
6
+ <name>DJ Bizkid Presents: The Best of Atmosphere</name>
7
+ <mbid>d7bc8315-a032-435b-a551-ec39a3998443</mbid>
8
+ <url>http://www.last.fm/music/Atmosphere/DJ+Bizkid+Presents%3A+The+Best+of+Atmosphere</url>
9
+ <artist>
10
+ <name>Atmosphere</name>
11
+ <mbid>ef954679-5ee7-4016-acef-7ac71f2fa3d8</mbid>
12
+ <url>http://www.last.fm/music/Atmosphere</url>
13
+ </artist>
14
+ <image size="small">http://cdn.last.fm/flatness/catalogue/noimage/2/default_album_medium.png</image>
15
+ <image size="medium">http://cdn.last.fm/flatness/catalogue/noimage/2/default_album_medium.png</image>
16
+ <image size="large">http://cdn.last.fm/flatness/catalogue/noimage/2/default_album_medium.png</image>
17
+ <image size="extralarge">http://cdn.last.fm/flatness/catalogue/noimage/2/default_album_medium.png</image>
18
+ </album>
19
+ </albums>
20
+ </taggings>
21
+ </lfm>
@@ -0,0 +1,62 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <lfm status="ok">
3
+ <taggings user="RJ" tag="rock" page="1" perPage="50" totalPages="1" total="5">
4
+ <artists>
5
+ <artist>
6
+ <name>Afghan Whigs</name>
7
+ <mbid/>
8
+ <url>http://www.last.fm/music/Afghan+Whigs</url>
9
+ <streamable>1</streamable>
10
+ <image size="small">http://userserve-ak.last.fm/serve/34/65473.jpg</image>
11
+ <image size="medium">http://userserve-ak.last.fm/serve/64/65473.jpg</image>
12
+ <image size="large">http://userserve-ak.last.fm/serve/126/65473.jpg</image>
13
+ <image size="extralarge">http://userserve-ak.last.fm/serve/252/65473.jpg</image>
14
+ <image size="mega">http://userserve-ak.last.fm/serve/_/65473/Afghan+Whigs.jpg</image>
15
+ </artist>
16
+ <artist>
17
+ <name>Jeff The Brotherhood</name>
18
+ <mbid>51b13b20-dc03-4d51-8c6d-f3b0c52476a6</mbid>
19
+ <url>http://www.last.fm/music/Jeff+The+Brotherhood</url>
20
+ <streamable>0</streamable>
21
+ <image size="small">http://userserve-ak.last.fm/serve/34/42786999.jpg</image>
22
+ <image size="medium">http://userserve-ak.last.fm/serve/64/42786999.jpg</image>
23
+ <image size="large">http://userserve-ak.last.fm/serve/126/42786999.jpg</image>
24
+ <image size="extralarge">http://userserve-ak.last.fm/serve/252/42786999.jpg</image>
25
+ <image size="mega">http://userserve-ak.last.fm/serve/500/42786999/Jeff+The+Brotherhood+JTBKAHANtext.jpg</image>
26
+ </artist>
27
+ <artist>
28
+ <name>Morphine</name>
29
+ <mbid>42689657-cbec-4f66-a9ed-80f939ea23ed</mbid>
30
+ <url>http://www.last.fm/music/Morphine</url>
31
+ <streamable>1</streamable>
32
+ <image size="small">http://userserve-ak.last.fm/serve/34/37674353.jpg</image>
33
+ <image size="medium">http://userserve-ak.last.fm/serve/64/37674353.jpg</image>
34
+ <image size="large">http://userserve-ak.last.fm/serve/126/37674353.jpg</image>
35
+ <image size="extralarge">http://userserve-ak.last.fm/serve/252/37674353.jpg</image>
36
+ <image size="mega">http://userserve-ak.last.fm/serve/500/37674353/Morphine.jpg</image>
37
+ </artist>
38
+ <artist>
39
+ <name>John Hammond</name>
40
+ <mbid>d83e599c-2d5a-44ec-b727-587e1455b1b5</mbid>
41
+ <url>http://www.last.fm/music/John+Hammond</url>
42
+ <streamable>1</streamable>
43
+ <image size="small">http://userserve-ak.last.fm/serve/34/22931645.jpg</image>
44
+ <image size="medium">http://userserve-ak.last.fm/serve/64/22931645.jpg</image>
45
+ <image size="large">http://userserve-ak.last.fm/serve/126/22931645.jpg</image>
46
+ <image size="extralarge">http://userserve-ak.last.fm/serve/252/22931645.jpg</image>
47
+ <image size="mega">http://userserve-ak.last.fm/serve/500/22931645/John+Hammond+jhjr.jpg</image>
48
+ </artist>
49
+ <artist>
50
+ <name>G3</name>
51
+ <mbid>ec676b1e-9586-479d-926b-25face38e87f</mbid>
52
+ <url>http://www.last.fm/music/G3</url>
53
+ <streamable>1</streamable>
54
+ <image size="small">http://userserve-ak.last.fm/serve/34/45853299.png</image>
55
+ <image size="medium">http://userserve-ak.last.fm/serve/64/45853299.png</image>
56
+ <image size="large">http://userserve-ak.last.fm/serve/126/45853299.png</image>
57
+ <image size="extralarge">http://userserve-ak.last.fm/serve/252/45853299.png</image>
58
+ <image size="mega">http://userserve-ak.last.fm/serve/500/45853299/G3.png</image>
59
+ </artist>
60
+ </artists>
61
+ </taggings>
62
+ </lfm>
@@ -0,0 +1,87 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <lfm status="ok">
3
+ <taggings user="RJ" tag="jazz" page="1" perPage="50" totalPages="1" total="5">
4
+ <tracks>
5
+ <track>
6
+ <name>Come Together</name>
7
+ <duration>316</duration>
8
+ <mbid/>
9
+ <url>http://www.last.fm/music/Brian+Bromberg/_/Come+Together</url>
10
+ <streamable fulltrack="0">1</streamable>
11
+ <artist>
12
+ <name>Brian Bromberg</name>
13
+ <mbid>69ed9582-7b72-4b7b-8e30-816c06e5f89b</mbid>
14
+ <url>http://www.last.fm/music/Brian+Bromberg</url>
15
+ </artist>
16
+ <image size="small">http://userserve-ak.last.fm/serve/34s/33026873.jpg</image>
17
+ <image size="medium">http://userserve-ak.last.fm/serve/64s/33026873.jpg</image>
18
+ <image size="large">http://userserve-ak.last.fm/serve/126/33026873.jpg</image>
19
+ <image size="extralarge">http://userserve-ak.last.fm/serve/300x300/33026873.jpg</image>
20
+ </track>
21
+ <track>
22
+ <name>Dione</name>
23
+ <duration>450</duration>
24
+ <mbid/>
25
+ <url>http://www.last.fm/music/Calum+Marshall/_/Dione</url>
26
+ <streamable fulltrack="1">1</streamable>
27
+ <artist>
28
+ <name>Calum Marshall</name>
29
+ <mbid/>
30
+ <url>http://www.last.fm/music/Calum+Marshall</url>
31
+ </artist>
32
+ <image size="small">http://userserve-ak.last.fm/serve/34s/34604249.jpg</image>
33
+ <image size="medium">http://userserve-ak.last.fm/serve/64s/34604249.jpg</image>
34
+ <image size="large">http://userserve-ak.last.fm/serve/126/34604249.jpg</image>
35
+ <image size="extralarge">http://userserve-ak.last.fm/serve/300x300/34604249.jpg</image>
36
+ </track>
37
+ <track>
38
+ <name>Living Hope</name>
39
+ <duration>306</duration>
40
+ <mbid/>
41
+ <url>http://www.last.fm/music/Dennis+Chambers/_/Living+Hope</url>
42
+ <streamable fulltrack="0">1</streamable>
43
+ <artist>
44
+ <name>Dennis Chambers</name>
45
+ <mbid>919553a3-2c2f-4b2e-b0ea-efe8e2573e9c</mbid>
46
+ <url>http://www.last.fm/music/Dennis+Chambers</url>
47
+ </artist>
48
+ <image size="small">http://userserve-ak.last.fm/serve/34s/33038159.jpg</image>
49
+ <image size="medium">http://userserve-ak.last.fm/serve/64s/33038159.jpg</image>
50
+ <image size="large">http://userserve-ak.last.fm/serve/126/33038159.jpg</image>
51
+ <image size="extralarge">http://userserve-ak.last.fm/serve/300x300/33038159.jpg</image>
52
+ </track>
53
+ <track>
54
+ <name>Morning Dance</name>
55
+ <duration>256</duration>
56
+ <mbid/>
57
+ <url>http://www.last.fm/music/Spyro+Gyra/_/Morning+Dance</url>
58
+ <streamable fulltrack="0">1</streamable>
59
+ <artist>
60
+ <name>Spyro Gyra</name>
61
+ <mbid>9a7c8025-1af8-42cd-8df8-857220610bc5</mbid>
62
+ <url>http://www.last.fm/music/Spyro+Gyra</url>
63
+ </artist>
64
+ <image size="small">http://userserve-ak.last.fm/serve/34s/32950969.jpg</image>
65
+ <image size="medium">http://userserve-ak.last.fm/serve/64s/32950969.jpg</image>
66
+ <image size="large">http://userserve-ak.last.fm/serve/126/32950969.jpg</image>
67
+ <image size="extralarge">http://userserve-ak.last.fm/serve/300x300/32950969.jpg</image>
68
+ </track>
69
+ <track>
70
+ <name>Walk on By</name>
71
+ <duration>290</duration>
72
+ <mbid/>
73
+ <url>http://www.last.fm/music/Peter+White/_/Walk+on+By</url>
74
+ <streamable fulltrack="0">1</streamable>
75
+ <artist>
76
+ <name>Peter White</name>
77
+ <mbid>2833d222-f057-43a5-a90b-e44f0df63acb</mbid>
78
+ <url>http://www.last.fm/music/Peter+White</url>
79
+ </artist>
80
+ <image size="small">http://images.amazon.com/images/P/B0000516VZ.01._SCMZZZZZZZ_.jpg</image>
81
+ <image size="medium">http://images.amazon.com/images/P/B0000516VZ.01._SCMZZZZZZZ_.jpg</image>
82
+ <image size="large">http://images.amazon.com/images/P/B0000516VZ.01._SCMZZZZZZZ_.jpg</image>
83
+ <image size="extralarge">http://images.amazon.com/images/P/B0000516VZ.01._SCMZZZZZZZ_.jpg</image>
84
+ </track>
85
+ </tracks>
86
+ </taggings>
87
+ </lfm>
@@ -1,3 +1,4 @@
1
+ <?xml version="1.0"?>
1
2
  <lfm status="ok">
2
3
  <recenttracks user="RJ" page="1" perPage="10" totalPages="3019">
3
4
  <track nowplaying="true">
@@ -20,4 +21,4 @@
20
21
  <image size="extralarge">http://userserve-ak.last.fm/serve/300x300/8822309.jpg</image>
21
22
  </track>
22
23
  </recenttracks>
23
- </lfm>
24
+ </lfm>
@@ -1,29 +1,29 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <lfm status="ok">
3
- <topalbums user="test" type="overall">
3
+ <topalbums user="test" type="overall">
4
4
  <album rank="1">
5
- <name>The Wall</name>
6
- <playcount>536</playcount>
7
- <mbid>639f0d06-53bd-32a5-8f65-1db785743ab0</mbid>
8
- <url>http://www.last.fm/music/Pink+Floyd/The+Wall</url>
9
- <artist>
10
- <name>Pink Floyd</name>
11
- <mbid>83d91898-7763-47d7-b03b-b92132375c47</mbid>
12
- <url>http://www.last.fm/music/Pink+Floyd</url>
13
- </artist>
14
- <image size="small">http://userserve-ak.last.fm/serve/34s/70211546.png</image>
5
+ <name>The Wall</name>
6
+ <playcount>536</playcount>
7
+ <mbid>639f0d06-53bd-32a5-8f65-1db785743ab0</mbid>
8
+ <url>http://www.last.fm/music/Pink+Floyd/The+Wall</url>
9
+ <artist>
10
+ <name>Pink Floyd</name>
11
+ <mbid>83d91898-7763-47d7-b03b-b92132375c47</mbid>
12
+ <url>http://www.last.fm/music/Pink+Floyd</url>
13
+ </artist>
14
+ <image size="small">http://userserve-ak.last.fm/serve/34s/70211546.png</image>
15
15
  </album>
16
16
  <album rank="2">
17
- <name>The Perfect Element, Part I</name>
18
- <playcount>524</playcount>
19
- <mbid>3039a1a9-a8d2-4560-81c7-b0af31f692b3</mbid>
20
- <url>http://www.last.fm/music/Pain+Of+Salvation/The+Perfect+Element%2C+Part+I</url>
21
- <artist>
22
- <name>Pain of Salvation</name>
23
- <mbid>f7c65346-9631-4220-9188-5e90baae58d5</mbid>
24
- <url>http://www.last.fm/music/Pain+of+Salvation</url>
25
- </artist>
26
- <image size="small">http://userserve-ak.last.fm/serve/34s/66884232.png</image>
17
+ <name>The Perfect Element, Part I</name>
18
+ <playcount>524</playcount>
19
+ <mbid>3039a1a9-a8d2-4560-81c7-b0af31f692b3</mbid>
20
+ <url>http://www.last.fm/music/Pain+Of+Salvation/The+Perfect+Element%2C+Part+I</url>
21
+ <artist>
22
+ <name>Pain of Salvation</name>
23
+ <mbid>f7c65346-9631-4220-9188-5e90baae58d5</mbid>
24
+ <url>http://www.last.fm/music/Pain+of+Salvation</url>
25
+ </artist>
26
+ <image size="small">http://userserve-ak.last.fm/serve/34s/66884232.png</image>
27
27
  </album>
28
- </topalbums>
28
+ </topalbums>
29
29
  </lfm>
@@ -1,29 +1,29 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <lfm status="ok">
3
- <topartists user="test" type="overall">
3
+ <topartists user="test" type="overall">
4
4
  <artist rank="1">
5
- <name>Pain of Salvation</name>
6
- <playcount>1354</playcount>
7
- <mbid>28503ab7-8bf2-4666-a7bd-2644bfc7cb1d</mbid>
8
- <url>f7c65346-9631-4220-9188-5e90baae58d5</url>
9
- <streamable>1</streamable>
10
- <image size="small">http://userserve-ak.last.fm/serve/34/53572699.png</image>
5
+ <name>Pain of Salvation</name>
6
+ <playcount>1354</playcount>
7
+ <mbid>28503ab7-8bf2-4666-a7bd-2644bfc7cb1d</mbid>
8
+ <url>f7c65346-9631-4220-9188-5e90baae58d5</url>
9
+ <streamable>1</streamable>
10
+ <image size="small">http://userserve-ak.last.fm/serve/34/53572699.png</image>
11
11
  </artist>
12
- <artist rank="2">
13
- <name>Opeth</name>
14
- <playcount>1186</playcount>
15
- <mbid>c14b4180-dc87-481e-b17a-64e4150f90f6</mbid>
16
- <url>http://www.last.fm/music/Opeth</url>
17
- <streamable>1</streamable>
18
- <image size="small">http://userserve-ak.last.fm/serve/34/66663756.png</image>
12
+ <artist rank="2">
13
+ <name>Opeth</name>
14
+ <playcount>1186</playcount>
15
+ <mbid>c14b4180-dc87-481e-b17a-64e4150f90f6</mbid>
16
+ <url>http://www.last.fm/music/Opeth</url>
17
+ <streamable>1</streamable>
18
+ <image size="small">http://userserve-ak.last.fm/serve/34/66663756.png</image>
19
19
  </artist>
20
- <artist rank="3">
21
- <name>Nevermore</name>
22
- <playcount>959</playcount>
23
- <mbid>7d093650-89be-4108-842b-ba7f5367504b</mbid>
24
- <url>http://www.last.fm/music/Nevermore</url>
25
- <streamable>1</streamable>
26
- <image size="small">http://userserve-ak.last.fm/serve/34/239749.jpg</image>
20
+ <artist rank="3">
21
+ <name>Nevermore</name>
22
+ <playcount>959</playcount>
23
+ <mbid>7d093650-89be-4108-842b-ba7f5367504b</mbid>
24
+ <url>http://www.last.fm/music/Nevermore</url>
25
+ <streamable>1</streamable>
26
+ <image size="small">http://userserve-ak.last.fm/serve/34/239749.jpg</image>
27
27
  </artist>
28
- </topartists>
28
+ </topartists>
29
29
  </lfm>
@@ -0,0 +1,30 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <lfm status="ok">
3
+ <toptags user="RJ">
4
+ <tag>
5
+ <name>rock</name>
6
+ <count>19</count>
7
+ <url>www.last.fm/tag/rock</url>
8
+ </tag>
9
+ <tag>
10
+ <name>jazz</name>
11
+ <count>15</count>
12
+ <url>www.last.fm/tag/jazz</url>
13
+ </tag>
14
+ <tag>
15
+ <name>metal</name>
16
+ <count>10</count>
17
+ <url>www.last.fm/tag/metal</url>
18
+ </tag>
19
+ <tag>
20
+ <name>soul</name>
21
+ <count>8</count>
22
+ <url>www.last.fm/tag/soul</url>
23
+ </tag>
24
+ <tag>
25
+ <name>female vocalists</name>
26
+ <count>8</count>
27
+ <url>www.last.fm/tag/female%20vocalists</url>
28
+ </tag>
29
+ </toptags>
30
+ </lfm>
@@ -1,30 +1,31 @@
1
1
  <?xml version="1.0" encoding="utf-8"?>
2
2
  <lfm status="ok">
3
- <toptracks user="skr" type="7day" page="1" perPage="50" totalPages="6" total="271">
4
-
5
- <track rank="1">
6
- <name>No Light, No Light (TV On The Radio Remix)</name>
7
- <duration></duration>
8
- <playcount>5</playcount>
9
- <mbid></mbid>
10
- <url>http://www.last.fm/music/Florence%2B%252B%2Bthe%2BMachine/_/No+Light%2C+No+Light+%28TV+On+The+Radio+Remix%29</url>
11
- <streamable fulltrack="0">0</streamable>
12
- <artist>
3
+ <toptracks user="skr" type="7day" page="1" perPage="50" totalPages="6" total="271">
4
+ <track rank="1">
5
+ <name>No Light, No Light (TV On The Radio Remix)</name>
6
+ <duration/>
7
+ <playcount>5</playcount>
8
+ <mbid/>
9
+ <url>http://www.last.fm/music/Florence%2B%252B%2Bthe%2BMachine/_/No+Light%2C+No+Light+%28TV+On+The+Radio+Remix%29</url>
10
+ <streamable fulltrack="0">0</streamable>
11
+ <artist>
13
12
  <name>Florence + the Machine</name>
14
13
  <mbid>5fee3020-513b-48c2-b1f7-4681b01db0c6</mbid>
15
14
  <url>http://www.last.fm/music/Florence%2B%252B%2Bthe%2BMachine</url>
16
- </artist>
17
- </track> <track rank="2">
18
- <name>Backwords (Porcelain Raft cover)</name>
19
- <duration>230</duration>
20
- <playcount>5</playcount>
21
- <mbid></mbid>
22
- <url>http://www.last.fm/music/Oupa%2B%2526%2BTony%2BCrow/_/Backwords+%28Porcelain+Raft+cover%29</url>
23
- <streamable fulltrack="0">0</streamable>
24
- <artist>
15
+ </artist>
16
+ </track>
17
+ <track rank="2">
18
+ <name>Backwords (Porcelain Raft cover)</name>
19
+ <duration>230</duration>
20
+ <playcount>5</playcount>
21
+ <mbid/>
22
+ <url>http://www.last.fm/music/Oupa%2B%2526%2BTony%2BCrow/_/Backwords+%28Porcelain+Raft+cover%29</url>
23
+ <streamable fulltrack="0">0</streamable>
24
+ <artist>
25
25
  <name>Oupa &amp; Tony Crow</name>
26
- <mbid></mbid>
26
+ <mbid/>
27
27
  <url>http://www.last.fm/music/Oupa%2B%2526%2BTony%2BCrow</url>
28
- </artist>
29
- </track>
30
- </toptracks></lfm>
28
+ </artist>
29
+ </track>
30
+ </toptracks>
31
+ </lfm>
data/spec/lastfm_spec.rb CHANGED
@@ -1,22 +1,10 @@
1
1
  require File.expand_path(File.dirname(__FILE__) + '/spec_helper')
2
2
 
3
3
  describe "Lastfm" do
4
- before do
5
- @lastfm = Lastfm.new('xxx', 'yyy')
6
- @response_xml = <<XML
7
- <?xml version="1.0" encoding="utf-8"?>
8
- <lfm status="ok">
9
- <foo>bar</foo></lfm>
10
- XML
11
- @ok_response = make_response(<<XML)
12
- <?xml version="1.0" encoding="utf-8"?>
13
- <lfm status="ok">
14
- </lfm>
15
- XML
16
- end
4
+ before { init_lastfm }
17
5
 
18
6
  it 'should have base_uri' do
19
- Lastfm.base_uri.should eql('http://ws.audioscrobbler.com/2.0')
7
+ Lastfm.base_uri.should == 'http://ws.audioscrobbler.com/2.0'
20
8
  end
21
9
 
22
10
  describe '.new' do
@@ -29,10 +17,10 @@ XML
29
17
  it 'should post' do
30
18
  mock_response = mock(HTTParty::Response)
31
19
  @lastfm.class.should_receive(:post).with('/', :body => {
32
- :foo => 'bar',
33
- :method => 'xxx.yyy',
34
- :api_key => 'xxx',
35
- }).and_return(mock_response)
20
+ :foo => 'bar',
21
+ :method => 'xxx.yyy',
22
+ :api_key => 'xxx',
23
+ }).and_return(mock_response)
36
24
  mock_response.should_receive(:body).and_return(@response_xml)
37
25
  @lastfm.request('xxx.yyy', { :foo => 'bar' }, :post, false, false)
38
26
  end
@@ -40,11 +28,11 @@ XML
40
28
  it 'should post with signature' do
41
29
  mock_response = mock(HTTParty::Response)
42
30
  @lastfm.class.should_receive(:post).with('/', :body => {
43
- :foo => 'bar',
44
- :method => 'xxx.yyy',
45
- :api_key => 'xxx',
46
- :api_sig => Digest::MD5.hexdigest('api_keyxxxfoobarmethodxxx.yyyyyy'),
47
- }).and_return(mock_response)
31
+ :foo => 'bar',
32
+ :method => 'xxx.yyy',
33
+ :api_key => 'xxx',
34
+ :api_sig => Digest::MD5.hexdigest('api_keyxxxfoobarmethodxxx.yyyyyy'),
35
+ }).and_return(mock_response)
48
36
  mock_response.should_receive(:body).and_return(@response_xml)
49
37
  @lastfm.request('xxx.yyy', { :foo => 'bar' }, :post, true, false)
50
38
  end
@@ -53,12 +41,12 @@ XML
53
41
  mock_response = mock(HTTParty::Response)
54
42
  @lastfm.session = 'abcdef'
55
43
  @lastfm.class.should_receive(:post).with('/', :body => {
56
- :foo => 'bar',
57
- :method => 'xxx.yyy',
58
- :api_key => 'xxx',
59
- :api_sig => Digest::MD5.hexdigest('api_keyxxxfoobarmethodxxx.yyyskabcdefyyy'),
60
- :sk => 'abcdef',
61
- }).and_return(mock_response)
44
+ :foo => 'bar',
45
+ :method => 'xxx.yyy',
46
+ :api_key => 'xxx',
47
+ :api_sig => Digest::MD5.hexdigest('api_keyxxxfoobarmethodxxx.yyyskabcdefyyy'),
48
+ :sk => 'abcdef',
49
+ }).and_return(mock_response)
62
50
  mock_response.should_receive(:body).and_return(@response_xml)
63
51
  @lastfm.request('xxx.yyy', { :foo => 'bar' }, :post, true, true)
64
52
  end
@@ -77,11 +65,11 @@ XML
77
65
  it 'should get with signature (request for authentication)' do
78
66
  mock_response = mock(HTTParty::Response)
79
67
  @lastfm.class.should_receive(:get).with('/', :query => {
80
- :foo => 'bar',
81
- :method => 'xxx.yyy',
82
- :api_key => 'xxx',
83
- :api_sig => Digest::MD5.hexdigest('api_keyxxxfoobarmethodxxx.yyyyyy'),
84
- }).and_return(mock_response)
68
+ :foo => 'bar',
69
+ :method => 'xxx.yyy',
70
+ :api_key => 'xxx',
71
+ :api_sig => Digest::MD5.hexdigest('api_keyxxxfoobarmethodxxx.yyyyyy'),
72
+ }).and_return(mock_response)
85
73
  mock_response.should_receive(:body).and_return(@response_xml)
86
74
  @lastfm.request('xxx.yyy', { :foo => 'bar' }, :get, true, false)
87
75
  end
@@ -90,12 +78,12 @@ XML
90
78
  mock_response = mock(HTTParty::Response)
91
79
  @lastfm.session = 'abcdef'
92
80
  @lastfm.class.should_receive(:get).with('/', :query => {
93
- :foo => 'bar',
94
- :method => 'xxx.yyy',
95
- :api_key => 'xxx',
96
- :api_sig => Digest::MD5.hexdigest('api_keyxxxfoobarmethodxxx.yyyskabcdefyyy'),
97
- :sk => 'abcdef',
98
- }).and_return(mock_response)
81
+ :foo => 'bar',
82
+ :method => 'xxx.yyy',
83
+ :api_key => 'xxx',
84
+ :api_sig => Digest::MD5.hexdigest('api_keyxxxfoobarmethodxxx.yyyskabcdefyyy'),
85
+ :sk => 'abcdef',
86
+ }).and_return(mock_response)
99
87
  mock_response.should_receive(:body).and_return(@response_xml)
100
88
  @lastfm.request('xxx.yyy', { :foo => 'bar' }, :get, true, true)
101
89
  end
@@ -127,7 +115,7 @@ XML
127
115
  <token>xxxyyyzzz</token></lfm>
128
116
  XML
129
117
 
130
- @lastfm.auth.get_token.should eql('xxxyyyzzz')
118
+ @lastfm.auth.get_token.should == 'xxxyyyzzz'
131
119
  end
132
120
 
133
121
  it 'should get session' do
@@ -144,8 +132,8 @@ XML
144
132
  </lfm>
145
133
  XML
146
134
  session = @lastfm.auth.get_session('xxxyyyzzz')
147
- session['name'].should eql('MyLastFMUsername')
148
- session['key'].should eql('zzzyyyxxx')
135
+ session['name'].should == 'MyLastFMUsername'
136
+ session['key'].should == 'zzzyyyxxx'
149
137
  end
150
138
 
151
139
  it 'should get mobile session' do
@@ -162,479 +150,8 @@ XML
162
150
  </lfm>
163
151
  XML
164
152
  session = @lastfm.auth.get_mobile_session('xxxyyyzzz', 'xxxxAuthTokenxxxx')
165
- session['name'].should eql('MyLastFMUsername')
166
- session['key'].should eql('zzzyyyxxx')
167
- end
168
- end
169
-
170
- describe '#track' do
171
- it 'should return an instance of Lastfm::Track' do
172
- @lastfm.track.should be_an_instance_of(Lastfm::MethodCategory::Track)
173
- end
174
-
175
- it 'should add tags' do
176
- @lastfm.should_receive(:request).with('track.addTags', {
177
- :artist => 'foo artist',
178
- :track => 'foo track',
179
- :tags => 'aaa,bbb,ccc'
180
- }, :post, true, true).and_return(@ok_response)
181
-
182
- @lastfm.track.add_tags('foo artist', 'foo track', 'aaa,bbb,ccc').should be_true
183
- end
184
-
185
- it 'should ban' do
186
- @lastfm.should_receive(:request).with('track.ban', {
187
- :artist => 'foo artist',
188
- :track => 'foo track',
189
- }, :post, true, true).and_return(@ok_response)
190
-
191
- @lastfm.track.ban('foo artist', 'foo track').should be_true
192
- end
193
-
194
- it 'should get info' do
195
- @lastfm.should_receive(:request).with('track.getInfo', {
196
- :artist => 'Cher',
197
- :track => 'Believe',
198
- :username => 'youpy',
199
- }).and_return(make_response('track_get_info'))
200
-
201
- track = @lastfm.track.get_info('Cher', 'Believe', 'youpy')
202
- track['name'].should eql('Believe')
203
- track['album']['image'].size.should eql(4)
204
- track['album']['image'].first['size'].should eql('small')
205
- track['album']['image'].first['content'].should eql('http://userserve-ak.last.fm/serve/64s/8674593.jpg')
206
- track['toptags']['tag'].size.should eql(5)
207
- track['toptags']['tag'].first['name'].should eql('pop')
208
- end
209
-
210
- it 'should get correction' do
211
- @lastfm.should_receive(:request).with('track.getCorrection', {
212
- :artist => 'White Stripes',
213
- :track => 'One More Cup of Coffee',
214
- :username => 'wainekerr',
215
- }).and_return(make_response('track_get_correction'))
216
-
217
- correction = @lastfm.track.get_correction('White Stripes', 'One More Cup of Coffee', 'wainekerr')
218
- correction['track']['name'].should eql('One More Cup of Coffee')
219
- correction['track']['artist']['name'].should eql('The White Stripes')
220
- correction['track']['url'].should eql('www.last.fm/music/The+White+Stripes/_/One+More+Cup+of+Coffee')
221
- end
222
-
223
- it 'should get xml with force array option' do
224
- @lastfm.should_receive(:request).with('track.getInfo', {
225
- :artist => 'Cher',
226
- :track => 'Believe',
227
- :username => 'youpy',
228
- }).and_return(make_response('track_get_info_force_array'))
229
-
230
- track = @lastfm.track.get_info('Cher', 'Believe', 'youpy')
231
- track['album']['image'].size.should eql(1)
232
- track['album']['image'].first['size'].should eql('small')
233
- track['album']['image'].first['content'].should eql('http://userserve-ak.last.fm/serve/64s/8674593.jpg')
234
- track['toptags']['tag'].size.should eql(1)
235
- track['toptags']['tag'].first['name'].should eql('pop')
236
- end
237
-
238
- it 'should get similar' do
239
- @lastfm.should_receive(:request).with('track.getSimilar', {
240
- :artist => 'Cher',
241
- :track => 'Believe',
242
- }).and_return(make_response('track_get_similar'))
243
-
244
- tracks = @lastfm.track.get_similar('Cher', 'Believe')
245
- tracks.size.should eql(250)
246
- tracks.first['name'].should eql('Strong Enough')
247
- tracks.first['image'][1]['content'].should eql('http://userserve-ak.last.fm/serve/64s/8674593.jpg')
248
- tracks[1]['image'][0]['content'].should eql('http://userserve-ak.last.fm/serve/34s/8674593.jpg')
249
- end
250
-
251
- it 'should get tags' do
252
- @lastfm.should_receive(:request).with('track.getTags', {
253
- :artist => 'foo artist',
254
- :track => 'foo track',
255
- }, :get, true, true).and_return(make_response('track_get_tags'))
256
-
257
- tags = @lastfm.track.get_tags('foo artist', 'foo track')
258
- tags.size.should eql(2)
259
- tags[0]['name'].should eql('swedish')
260
- tags[0]['url'].should eql('http://www.last.fm/tag/swedish')
261
- end
262
-
263
- it 'should get top fans' do
264
- @lastfm.should_receive(:request).with('track.getTopFans', {
265
- :artist => 'foo artist',
266
- :track => 'foo track',
267
- }).and_return(make_response('track_get_top_fans'))
268
-
269
- users = @lastfm.track.get_top_fans('foo artist', 'foo track')
270
- users.size.should eql(2)
271
- users[0]['name'].should eql('Through0glass')
272
- end
273
-
274
- it 'should get top tags' do
275
- @lastfm.should_receive(:request).with('track.getTopTags', {
276
- :artist => 'foo artist',
277
- :track => 'foo track',
278
- }).and_return(make_response('track_get_top_tags'))
279
-
280
- tags = @lastfm.track.get_top_tags('foo artist', 'foo track')
281
- tags.size.should eql(2)
282
- tags[0]['name'].should eql('alternative')
283
- tags[0]['count'].should eql('100')
284
- tags[0]['url'].should eql('www.last.fm/tag/alternative')
285
- end
286
-
287
- it 'should love' do
288
- @lastfm.should_receive(:request).with('track.love', {
289
- :artist => 'foo artist',
290
- :track => 'foo track',
291
- }, :post, true, true).and_return(@ok_response)
292
-
293
- @lastfm.track.love('foo artist', 'foo track').should be_true
294
- end
295
-
296
- it 'should remove tag' do
297
- @lastfm.should_receive(:request).with('track.removeTag', {
298
- :artist => 'foo artist',
299
- :track => 'foo track',
300
- :tag => 'aaa'
301
- }, :post, true, true).and_return(@ok_response)
302
-
303
- @lastfm.track.remove_tag('foo artist', 'foo track', 'aaa').should be_true
304
- end
305
-
306
- it 'should search' do
307
- @lastfm.should_receive(:request).with('track.search', {
308
- :artist => nil,
309
- :track => 'Believe',
310
- :limit => 10,
311
- :page => 3,
312
- }).and_return(make_response('track_search'))
313
-
314
- tracks = @lastfm.track.search('Believe', nil, 10, 3)
315
- tracks['results']['for'].should eql('Believe')
316
- tracks['results']['totalResults'].should eql('40540')
317
- tracks['results']['trackmatches']['track'].size.should eql(2)
318
- tracks['results']['trackmatches']['track'][0]['name'].should eql('Make Me Believe')
319
- end
320
-
321
- it 'should share' do
322
- @lastfm.should_receive(:request).with('track.share', {
323
- :artist => 'foo artist',
324
- :track => 'foo track',
325
- :message => 'this is a message',
326
- :recipient => 'foo@example.com',
327
- }, :post, true, true).and_return(@ok_response)
328
-
329
- @lastfm.track.share('foo artist', 'foo track', 'foo@example.com', 'this is a message').should be_true
330
- end
331
-
332
- it 'should scrobble' do
333
- time = Time.now
334
- @lastfm.should_receive(:request).with('track.scrobble', {
335
- :artist => 'foo artist',
336
- :track => 'foo track',
337
- :album => 'foo album',
338
- :mbid => '0383dadf-2a4e-4d10-a46a-e9e041da8eb3',
339
- :timestamp => time,
340
- :trackNumber => 1,
341
- :duration => nil,
342
- :albumArtist => nil,
343
- }, :post, true, true).and_return(@ok_response)
344
-
345
- @lastfm.track.scrobble('foo artist', 'foo track', time, 'foo album', 1, '0383dadf-2a4e-4d10-a46a-e9e041da8eb3', nil, nil)
346
- end
347
-
348
-
349
- it 'should update now playing' do
350
- @lastfm.should_receive(:request).with('track.updateNowPlaying', {
351
- :artist => 'foo artist',
352
- :track => 'foo track',
353
- :album => 'foo album',
354
- :mbid => '0383dadf-2a4e-4d10-a46a-e9e041da8eb3',
355
- :trackNumber => 1,
356
- :duration => nil,
357
- :albumArtist => nil,
358
- }, :post, true, true).and_return(@ok_response)
359
-
360
- @lastfm.track.update_now_playing('foo artist', 'foo track', 'foo album', 1, '0383dadf-2a4e-4d10-a46a-e9e041da8eb3', nil, nil)
361
- end
362
- end
363
-
364
- describe '#artist' do
365
- it 'should return an instance of Lastfm::Artist' do
366
- @lastfm.artist.should be_an_instance_of(Lastfm::MethodCategory::Artist)
367
- end
368
-
369
- it 'should get info' do
370
- @lastfm.should_receive(:request).with('artist.getInfo', {
371
- :artist => 'Cher'
372
- }).and_return(make_response('artist_get_info'))
373
-
374
- artist = @lastfm.artist.get_info('Cher')
375
- artist['name'].should eql('Cher')
376
- artist['mbid'].should eql('bfcc6d75-a6a5-4bc6-8282-47aec8531818')
377
- artist['url'].should eql('http://www.last.fm/music/Cher')
378
- artist['image'].size.should eql(5)
379
- end
380
-
381
- it 'should get events' do
382
- @lastfm.should_receive(:request).with('artist.getEvents', {
383
- :artist => 'Cher'
384
- }).and_return(make_response('artist_get_events'))
385
-
386
- events = @lastfm.artist.get_events('Cher')
387
- events.size.should eql(1)
388
- events[0]['title'].should eql('Cher')
389
- events[0]['artists'].size.should == 2
390
- events[0]['artists']['headliner'].should eql('Cher')
391
- events[0]['venue']['name'].should eql('The Colosseum At Caesars Palace')
392
- events[0]['venue']['location']['city'].should eql('Las Vegas(, NV)')
393
- events[0]['venue']['location']['point']['lat'].should eql("36.116143")
394
- events[0]['image'].size.should eql(4)
395
- events[0]['image'][0]['size'].should eql('small')
396
- events[0]['image'][0]['content'].should eql('http://userserve-ak.last.fm/serve/34/34814037.jpg')
397
- events[0]['startDate'].should eql("Sat, 23 Oct 2010 19:30:00")
398
- events[0]['tickets']['ticket']['supplier'].should eql("TicketMaster")
399
- events[0]['tickets']['ticket']['content'].should eql("http://www.last.fm/affiliate/byid/29/1584537/12/ws.artist.events.b25b959554ed76058ac220b7b2e0a026")
400
- events[0]['tags']['tag'].should == ["pop", "dance", "female vocalists", "80s", "cher"]
401
- end
402
- end
403
-
404
- describe '#album' do
405
- it 'should return an instance of Lastfm::Album' do
406
- @lastfm.album.should be_an_instance_of(Lastfm::MethodCategory::Album)
407
- end
408
-
409
- it 'should get info' do
410
- @lastfm.should_receive(:request).with('album.getInfo', {
411
- :artist => 'Cher', :album => 'Believe'
412
- }).and_return(make_response('album_get_info'))
413
-
414
- album = @lastfm.album.get_info('Cher', 'Believe')
415
- album['name'].should eql('Believe')
416
- album['artist'].should eql('Cher')
417
- album['id'].should eql('2026126')
418
- album['mbid'].should eql('61bf0388-b8a9-48f4-81d1-7eb02706dfb0')
419
- album['url'].should eql('http://www.last.fm/music/Cher/Believe')
420
- album['image'].size.should eql(5)
421
- album['releasedate'].should eql('6 Apr 1999, 00:00')
422
- album['tracks']['track'].size.should eql(10)
423
- album['tracks']['track'][0]['name'].should eql('Believe')
424
- album['tracks']['track'][0]['duration'].should eql('239')
425
- album['tracks']['track'][0]['url'].should eql('http://www.last.fm/music/Cher/_/Believe')
426
- end
427
-
428
- end
429
-
430
- describe '#geo' do
431
- it 'should return an instance of Lastfm::Geo' do
432
- @lastfm.geo.should be_an_instance_of(Lastfm::MethodCategory::Geo)
433
- end
434
-
435
- it 'should get events' do
436
- @lastfm.should_receive(:request).with('geo.getEvents', {
437
- :location => 'Boulder',
438
- :distance => nil,
439
- :limit => nil,
440
- :page => nil
441
- }).and_return(make_response('geo_get_events'))
442
-
443
- events = @lastfm.geo.get_events('Boulder')
444
- events.size.should eql(1)
445
- events[0]['title'].should eql('Transistor Festival')
446
- events[0]['artists'].size.should == 2
447
- events[0]['artists']['headliner'].should eql('Not Breathing')
448
- events[0]['venue']['name'].should eql('The Walnut Room')
449
- events[0]['venue']['location']['city'].should eql('Denver, CO')
450
- events[0]['venue']['location']['point']['lat'].should eql("39.764316")
451
- events[0]['image'].size.should eql(4)
452
- events[0]['image'][0]['size'].should eql('small')
453
- events[0]['image'][0]['content'].should eql('http://userserve-ak.last.fm/serve/34/166214.jpg')
454
- events[0]['startDate'].should eql("Fri, 10 Jun 2011 01:58:01")
455
- end
456
- end
457
-
458
- describe '#user' do
459
- it 'should return an instance of Lastfm::User' do
460
- @lastfm.user.should be_an_instance_of(Lastfm::MethodCategory::User)
461
- end
462
-
463
- describe '#get_info' do
464
- it 'should get user info' do
465
- @lastfm.should_receive(:request).with('user.getInfo', {:user => 'test'}).and_return(make_response('user_get_info'))
466
- info = @lastfm.user.get_info('test')
467
- info['id'].should eql('1000002')
468
- end
469
- end
470
-
471
- describe '#get_top_artists' do
472
- it 'should get user\'s top artists' do
473
- @lastfm.should_receive(:request).with('user.getTopArtists', {
474
- :user => 'test',
475
- :period => 'overall',
476
- :limit => nil,
477
- :page => nil
478
- }).and_return(make_response('user_get_top_artists'))
479
-
480
- artists = @lastfm.user.get_top_artists('test', 'overall', nil, nil)
481
-
482
- artists.size.should == 3
483
- artists[0]['name'].should == "Pain of Salvation"
484
- artists[0]['playcount'].should == '1354'
485
-
486
- artists[1]['name'].should == "Opeth"
487
- artists[1]['playcount'].should == '1186'
488
-
489
- artists[2]['name'].should == "Nevermore"
490
- artists[2]['playcount'].should == '959'
491
- end
492
- end
493
-
494
- describe '#get_top_albums' do
495
- it 'should get user\'s top albums' do
496
- @lastfm.should_receive(:request).with('user.getTopAlbums', {
497
- :user => 'test',
498
- :period => 'overall',
499
- :limit => nil,
500
- :page => nil
501
- }).and_return(make_response('user_get_top_albums'))
502
-
503
- albums = @lastfm.user.get_top_albums('test', 'overall', nil, nil)
504
-
505
- albums.size.should == 2
506
-
507
- albums[0]['rank'].should == '1'
508
- albums[0]['name'].should == 'The Wall'
509
- albums[0]['artist']['name'].should == 'Pink Floyd'
510
-
511
- albums[1]['rank'].should == '2'
512
- albums[1]['name'].should == 'The Perfect Element, Part I'
513
- albums[1]['artist']['name'].should == 'Pain of Salvation'
514
- end
515
- end
516
-
517
- describe '#get_top_tracks' do
518
- it 'should get user\'s top tracks' do
519
- @lastfm.should_receive(:request).with('user.getTopTracks', {
520
- :user => 'test',
521
- :period => '7day',
522
- :limit => nil,
523
- :page => nil
524
- }).and_return(make_response('user_get_top_tracks'))
525
-
526
- tracks = @lastfm.user.get_top_tracks('test', '7day', nil, nil)
527
-
528
- tracks.size.should == 2
529
-
530
- tracks[0]['rank'].should == '1'
531
- tracks[0]['name'].should == 'No Light, No Light (TV On The Radio Remix)'
532
- tracks[0]['artist']['name'].should == 'Florence + the Machine'
533
-
534
- tracks[1]['rank'].should == '2'
535
- tracks[1]['name'].should == 'Backwords (Porcelain Raft cover)'
536
- tracks[1]['artist']['name'].should == 'Oupa & Tony Crow'
537
- end
538
- end
539
-
540
- describe '#get_loved_tracks' do
541
- it 'should get user\'s loved tracks' do
542
- @lastfm.should_receive(:request).with('user.getLovedTracks', {
543
- :user => 'test',
544
- :period => nil,
545
- :limit => nil,
546
- :page => nil
547
- }).and_return(make_response('user_get_loved_tracks'))
548
-
549
- tracks = @lastfm.user.get_loved_tracks('test', nil, nil, nil)
550
-
551
- tracks.size.should == 2
552
-
553
- tracks[0]['rank'].should == nil
554
- tracks[0]['name'].should == 'I Spy'
555
- tracks[0]['artist']['name'].should == 'Mikhael Paskalev'
556
-
557
- tracks[1]['rank'].should == nil
558
- tracks[1]['name'].should == 'Working Titles'
559
- tracks[1]['artist']['name'].should == 'Damien Jurado'
560
- end
561
- end
562
-
563
- describe '#get_friends' do
564
- it 'should get user\'s friends' do
565
- @lastfm.should_receive(:request).with('user.getFriends', {
566
- :user => 'test',
567
- :recenttracks => nil,
568
- :page => nil,
569
- :limit => nil
570
- }).and_return(make_response('user_get_friends'))
571
- friends = @lastfm.user.get_friends('test')
572
- friends.size.should == 1
573
- friends[0]['name'].should eql('polaroide')
574
- end
575
- end
576
-
577
- describe '#get_neighbours' do
578
- it 'should get user\'s neighbours' do
579
- @lastfm.should_receive(:request).with('user.getNeighbours', {
580
- :user => 'rj',
581
- :recenttracks => nil,
582
- :page => nil,
583
- :limit => nil
584
- }).and_return(make_response('user_get_neighbours'))
585
- neighbours = @lastfm.user.get_neighbours('rj')
586
- neighbours.size.should == 50
587
- neighbours[0]['name'].should eql('willywongi')
588
- end
589
- end
590
-
591
- describe '#get_recent_tracks' do
592
- it 'should get user\'s recent tracks' do
593
- @lastfm.should_receive(:request).with('user.getRecentTracks', {
594
- :user => 'test',
595
- :page => nil,
596
- :limit => nil,
597
- :to => nil,
598
- :from => nil
599
- }).and_return(make_response('user_get_recent_tracks'))
600
- tracks = @lastfm.user.get_recent_tracks('test')
601
- tracks[1]['artist']['content'].should eql('Kylie Minogue')
602
- tracks.size.should == 2
603
- end
604
- end
605
- end
606
-
607
- describe '#library' do
608
- it 'should return an instance of Lastfm::Library' do
609
- @lastfm.library.should be_an_instance_of(Lastfm::MethodCategory::Library)
610
- end
611
-
612
- describe '#get_tracks' do
613
- it 'should get the tracks\' info' do
614
- @lastfm.should_receive(:request).with('library.getTracks', {
615
- :user => 'test',
616
- :artist => 'foo',
617
- :album => 'bar',
618
- :limit => nil,
619
- :page => nil
620
- }).and_return(make_response('library_get_tracks'))
621
- tracks = @lastfm.library.get_tracks('test', 'foo', 'bar')
622
- tracks[0]['name'].should eql('Learning to Live')
623
- tracks.size.should == 1
624
- end
625
- end
626
-
627
- describe '#get_artists' do
628
- it 'should get the artists\' info' do
629
- @lastfm.should_receive(:request).with('library.getArtists', {
630
- :user => 'test',
631
- :limit => nil,
632
- :page => nil
633
- }).and_return(make_response('library_get_artists'))
634
- artists = @lastfm.library.get_artists('test')
635
- artists[1]['name'].should eql('Dark Castle')
636
- artists.size.should == 2
637
- end
153
+ session['name'].should == 'MyLastFMUsername'
154
+ session['key'].should == 'zzzyyyxxx'
638
155
  end
639
156
  end
640
157
  end