7digital 0.1.2 → 0.1.5

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.
Files changed (197) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +143 -143
  3. data/lib/sevendigital.rb +55 -55
  4. data/lib/sevendigital/api_operator.rb +127 -127
  5. data/lib/sevendigital/api_operator_cached.rb +91 -62
  6. data/lib/sevendigital/api_request.rb +72 -62
  7. data/lib/sevendigital/client.rb +122 -122
  8. data/lib/sevendigital/client_configuration.rb +85 -83
  9. data/lib/sevendigital/client_digestors.rb +122 -122
  10. data/lib/sevendigital/client_managers.rb +57 -57
  11. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +48 -48
  12. data/lib/sevendigital/digestion_tract/artist_digestor.rb +35 -35
  13. data/lib/sevendigital/digestion_tract/basket_digestor.rb +19 -19
  14. data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +26 -26
  15. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +34 -34
  16. data/lib/sevendigital/digestion_tract/country_digestor.rb +15 -15
  17. data/lib/sevendigital/digestion_tract/digestor.rb +122 -122
  18. data/lib/sevendigital/digestion_tract/download_url_digestor.rb +23 -23
  19. data/lib/sevendigital/digestion_tract/format_digestor.rb +24 -24
  20. data/lib/sevendigital/digestion_tract/label_digestor.rb +21 -21
  21. data/lib/sevendigital/digestion_tract/list_digestor.rb +24 -24
  22. data/lib/sevendigital/digestion_tract/list_item_digestor.rb +26 -26
  23. data/lib/sevendigital/digestion_tract/locker_digestor.rb +22 -22
  24. data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +26 -26
  25. data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +26 -26
  26. data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +18 -18
  27. data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +18 -18
  28. data/lib/sevendigital/digestion_tract/pager_digestor.rb +28 -28
  29. data/lib/sevendigital/digestion_tract/price_digestor.rb +28 -28
  30. data/lib/sevendigital/digestion_tract/release_digestor.rb +45 -45
  31. data/lib/sevendigital/digestion_tract/tag_digestor.rb +23 -23
  32. data/lib/sevendigital/digestion_tract/track_digestor.rb +38 -37
  33. data/lib/sevendigital/digestion_tract/user_card_digestor.rb +24 -24
  34. data/lib/sevendigital/digestion_tract/user_digestor.rb +21 -21
  35. data/lib/sevendigital/management/artist_manager.rb +97 -97
  36. data/lib/sevendigital/management/basket_manager.rb +29 -29
  37. data/lib/sevendigital/management/country_manager.rb +10 -10
  38. data/lib/sevendigital/management/list_manager.rb +18 -18
  39. data/lib/sevendigital/management/manager.rb +12 -12
  40. data/lib/sevendigital/management/oauth_manager.rb +23 -23
  41. data/lib/sevendigital/management/release_manager.rb +54 -54
  42. data/lib/sevendigital/management/tag_manager.rb +10 -10
  43. data/lib/sevendigital/management/track_manager.rb +29 -27
  44. data/lib/sevendigital/management/user_card_manager.rb +26 -26
  45. data/lib/sevendigital/management/user_manager.rb +76 -76
  46. data/lib/sevendigital/model/api_response.rb +32 -32
  47. data/lib/sevendigital/model/artist.rb +104 -104
  48. data/lib/sevendigital/model/basket.rb +15 -15
  49. data/lib/sevendigital/model/basket_item.rb +14 -14
  50. data/lib/sevendigital/model/card.rb +11 -11
  51. data/lib/sevendigital/model/chart_item.rb +9 -9
  52. data/lib/sevendigital/model/download_url.rb +7 -7
  53. data/lib/sevendigital/model/format.rb +7 -7
  54. data/lib/sevendigital/model/label.rb +7 -7
  55. data/lib/sevendigital/model/list.rb +4 -4
  56. data/lib/sevendigital/model/list_item.rb +8 -8
  57. data/lib/sevendigital/model/locker.rb +4 -4
  58. data/lib/sevendigital/model/locker_release.rb +9 -9
  59. data/lib/sevendigital/model/locker_track.rb +9 -9
  60. data/lib/sevendigital/model/price.rb +9 -9
  61. data/lib/sevendigital/model/release.rb +57 -57
  62. data/lib/sevendigital/model/sevendigital_error.rb +11 -11
  63. data/lib/sevendigital/model/sevendigital_object.rb +57 -57
  64. data/lib/sevendigital/model/tag.rb +7 -7
  65. data/lib/sevendigital/model/track.rb +87 -83
  66. data/lib/sevendigital/model/user.rb +74 -74
  67. data/lib/sevendigital/pager.rb +20 -20
  68. data/lib/sevendigital/version.rb +5 -5
  69. data/spec/api_operator_cached_spec.rb +233 -178
  70. data/spec/api_operator_spec.rb +320 -320
  71. data/spec/api_request_spec.rb +46 -31
  72. data/spec/client_configuration_spec.rb +78 -78
  73. data/spec/client_spec.rb +161 -161
  74. data/spec/data/config/sevendigital.yml +5 -5
  75. data/spec/data/configuration_env_override.yml +5 -5
  76. data/spec/data/configuration_override.yml +1 -1
  77. data/spec/digestion_tract/api_response_digestor_spec.rb +93 -93
  78. data/spec/digestion_tract/artist_digestor_spec.rb +81 -81
  79. data/spec/digestion_tract/basket_digestor_spec.rb +31 -31
  80. data/spec/digestion_tract/basket_item_digestor_spec.rb +58 -58
  81. data/spec/digestion_tract/chart_digestor_spec.rb +52 -52
  82. data/spec/digestion_tract/country_digestor_spec.rb +33 -33
  83. data/spec/digestion_tract/digestor_spec.rb +33 -33
  84. data/spec/digestion_tract/download_url_digestor_spec.rb +40 -40
  85. data/spec/digestion_tract/format_digestor_spec.rb +38 -38
  86. data/spec/digestion_tract/label_digestor_spec.rb +33 -33
  87. data/spec/digestion_tract/list_digestor_spec.rb +31 -31
  88. data/spec/digestion_tract/list_item_digestor_spec.rb +80 -80
  89. data/spec/digestion_tract/locker_digestor_spec.rb +30 -30
  90. data/spec/digestion_tract/locker_release_digestor_spec.rb +70 -70
  91. data/spec/digestion_tract/locker_track_digestor_spec.rb +56 -56
  92. data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +34 -34
  93. data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +34 -34
  94. data/spec/digestion_tract/pager_digestor_spec.rb +50 -50
  95. data/spec/digestion_tract/price_digestor_spec.rb +73 -73
  96. data/spec/digestion_tract/release_digestor_spec.rb +115 -115
  97. data/spec/digestion_tract/tag_digestor_spec.rb +46 -46
  98. data/spec/digestion_tract/track_digestor_spec.rb +105 -104
  99. data/spec/digestion_tract/user_card_digestor_spec.rb +58 -58
  100. data/spec/digestion_tract/user_digestor_spec.rb +42 -42
  101. data/spec/integration/artist_spec.rb +99 -86
  102. data/spec/integration/country_spec.rb +18 -18
  103. data/spec/integration/list_spec.rb +22 -22
  104. data/spec/integration/purchasing_spec.rb +24 -24
  105. data/spec/integration/release_spec.rb +34 -34
  106. data/spec/integration/sevendigital_spec.yml +4 -4
  107. data/spec/integration/track_spec.rb +38 -23
  108. data/spec/integration/user_spec.rb +22 -22
  109. data/spec/management/artist_manager_spec.rb +172 -172
  110. data/spec/management/basket_manager_spec.rb +77 -77
  111. data/spec/management/country_manager_spec.rb +34 -34
  112. data/spec/management/list_manager_spec.rb +26 -26
  113. data/spec/management/oauth_manager_spec.rb +72 -72
  114. data/spec/management/release_manager_spec.rb +200 -200
  115. data/spec/management/tag_manager_spec.rb +34 -34
  116. data/spec/management/track_manager_spec.rb +111 -107
  117. data/spec/management/user_card_manager_spec.rb +78 -78
  118. data/spec/management/user_manager_spec.rb +218 -218
  119. data/spec/model/api_response_spec.rb +48 -48
  120. data/spec/model/artist_spec.rb +162 -162
  121. data/spec/model/basket_spec.rb +62 -62
  122. data/spec/model/release_spec.rb +133 -133
  123. data/spec/model/sevendigital_object_spec.rb +73 -73
  124. data/spec/model/track_spec.rb +146 -144
  125. data/spec/model/user_spec.rb +181 -181
  126. data/spec/spec_helper.rb +86 -84
  127. data/spec/test-xml/methods/artist/browse.xml +21 -21
  128. data/spec/test-xml/methods/artist/byTag/top.xml +50 -50
  129. data/spec/test-xml/methods/artist/chart.xml +30 -30
  130. data/spec/test-xml/methods/artist/details.xml +9 -9
  131. data/spec/test-xml/methods/artist/releases.xml +544 -544
  132. data/spec/test-xml/methods/artist/search.xml +18 -18
  133. data/spec/test-xml/methods/artist/similar.xml +39 -39
  134. data/spec/test-xml/methods/artist/tags.xml +11 -11
  135. data/spec/test-xml/methods/artist/toptracks.xml +279 -279
  136. data/spec/test-xml/methods/basket/additem.xml +23 -23
  137. data/spec/test-xml/methods/basket/create.xml +10 -10
  138. data/spec/test-xml/methods/basket/index.xml +23 -23
  139. data/spec/test-xml/methods/basket/removeitem.xml +10 -10
  140. data/spec/test-xml/methods/country/resolve.xml +6 -6
  141. data/spec/test-xml/methods/editorial/list.xml +170 -170
  142. data/spec/test-xml/methods/oauth/accesstoken.xml +5 -5
  143. data/spec/test-xml/methods/oauth/requesttoken.xml +5 -5
  144. data/spec/test-xml/methods/release/bydate.xml +173 -173
  145. data/spec/test-xml/methods/release/bytag/top.xml +150 -150
  146. data/spec/test-xml/methods/release/chart.xml +181 -181
  147. data/spec/test-xml/methods/release/details.xml +48 -48
  148. data/spec/test-xml/methods/release/recommend.xml +89 -89
  149. data/spec/test-xml/methods/release/search.xml +194 -194
  150. data/spec/test-xml/methods/release/tags.xml +27 -27
  151. data/spec/test-xml/methods/release/tracks.xml +28 -28
  152. data/spec/test-xml/methods/tag/index.xml +16 -16
  153. data/spec/test-xml/methods/track/chart.xml +149 -149
  154. data/spec/test-xml/methods/track/details.xml +30 -30
  155. data/spec/test-xml/methods/track/search.xml +159 -159
  156. data/spec/test-xml/methods/user/details.xml +4 -4
  157. data/spec/test-xml/methods/user/locker.xml +49 -49
  158. data/spec/test-xml/methods/user/payment/card/add.xml +7 -7
  159. data/spec/test-xml/methods/user/payment/card/index.xml +7 -7
  160. data/spec/test-xml/methods/user/purchase/basket.xml +48 -48
  161. data/spec/test-xml/methods/user/purchase/item.xml +48 -48
  162. data/spec/test-xml/methods/user/signUp.xml +5 -5
  163. data/spec/test-xml/objects/artist.xml +7 -7
  164. data/spec/test-xml/objects/artist_chart_item.xml +7 -7
  165. data/spec/test-xml/objects/artist_list.xml +22 -22
  166. data/spec/test-xml/objects/artist_list_empty.xml +4 -4
  167. data/spec/test-xml/objects/basket.xml +21 -21
  168. data/spec/test-xml/objects/basket_item.xml +11 -11
  169. data/spec/test-xml/objects/basket_item_list.xml +25 -25
  170. data/spec/test-xml/objects/basket_item_list_empty.xml +1 -1
  171. data/spec/test-xml/objects/download_url.xml +7 -7
  172. data/spec/test-xml/objects/list.xml +89 -89
  173. data/spec/test-xml/objects/list_item_list.xml +85 -85
  174. data/spec/test-xml/objects/list_item_release.xml +13 -13
  175. data/spec/test-xml/objects/locker.xml +47 -47
  176. data/spec/test-xml/objects/locker_release.xml +40 -40
  177. data/spec/test-xml/objects/locker_release_list.xml +87 -87
  178. data/spec/test-xml/objects/locker_release_list_empty.xml +4 -4
  179. data/spec/test-xml/objects/locker_release_one_item_list.xml +43 -43
  180. data/spec/test-xml/objects/locker_track.xml +25 -25
  181. data/spec/test-xml/objects/locker_track_list.xml +26 -26
  182. data/spec/test-xml/objects/locker_track_list_empty.xml +2 -2
  183. data/spec/test-xml/objects/nested_release_list.xml +22 -22
  184. data/spec/test-xml/objects/oauth_access_token.xml +3 -3
  185. data/spec/test-xml/objects/oauth_request_token.xml +3 -3
  186. data/spec/test-xml/objects/price.xml +7 -7
  187. data/spec/test-xml/objects/release.xml +40 -40
  188. data/spec/test-xml/objects/release_chart_item.xml +39 -39
  189. data/spec/test-xml/objects/release_list.xml +18 -18
  190. data/spec/test-xml/objects/release_list_empty.xml +4 -4
  191. data/spec/test-xml/objects/response.xml +38 -38
  192. data/spec/test-xml/objects/tag.xml +4 -4
  193. data/spec/test-xml/objects/track.xml +34 -33
  194. data/spec/test-xml/objects/track_chart_item.xml +27 -27
  195. data/spec/test-xml/objects/user.xml +4 -4
  196. data/spec/test-xml/objects/user_payment_card.xml +5 -5
  197. metadata +15 -25
@@ -1,34 +1,34 @@
1
- # encoding: UTF-8
2
- require 'date'
3
- require File.expand_path('../../spec_helper', __FILE__)
4
-
5
- describe "CountryManager" do
6
-
7
- before do
8
-
9
- @client = stub(Sevendigital::Client)
10
- @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
11
- @country_manager = Sevendigital::CountryManager.new(@client)
12
-
13
- end
14
-
15
-
16
- it "resolve should call country/resolve api method and digest the country code from response" do
17
-
18
- an_api_response = fake_api_response("country/resolve")
19
- a_country_code = 'XX'
20
- an_ip_address = '127.0.0.1'
21
-
22
- mock_client_digestor(@client, :country_digestor) \
23
- .should_receive(:from_xml_doc).with(an_api_response.item_xml("GeoIpLookup") ).and_return(a_country_code)
24
-
25
- @client.should_receive(:make_api_request) \
26
- .with(:GET, "country/resolve", {:ipaddress => an_ip_address}, {}) \
27
- .and_return(an_api_response)
28
-
29
-
30
- @country_manager.resolve(an_ip_address).should == a_country_code
31
- end
32
-
33
-
34
- end
1
+ # encoding: UTF-8
2
+ require 'date'
3
+ require File.expand_path('../../spec_helper', __FILE__)
4
+
5
+ describe "CountryManager" do
6
+
7
+ before do
8
+
9
+ @client = stub(Sevendigital::Client)
10
+ @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
11
+ @country_manager = Sevendigital::CountryManager.new(@client)
12
+
13
+ end
14
+
15
+
16
+ it "resolve should call country/resolve api method and digest the country code from response" do
17
+
18
+ an_api_response = fake_api_response("country/resolve")
19
+ a_country_code = 'XX'
20
+ an_ip_address = '127.0.0.1'
21
+
22
+ mock_client_digestor(@client, :country_digestor) \
23
+ .should_receive(:from_xml_doc).with(an_api_response.item_xml("GeoIpLookup") ).and_return(a_country_code)
24
+
25
+ @client.should_receive(:make_api_request) \
26
+ .with(:GET, "country/resolve", {:ipaddress => an_ip_address}, {}) \
27
+ .and_return(an_api_response)
28
+
29
+
30
+ @country_manager.resolve(an_ip_address).should == a_country_code
31
+ end
32
+
33
+
34
+ end
@@ -1,27 +1,27 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "ListManager" do
4
-
5
- before do
6
- @client = stub(Sevendigital::Client)
7
- @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
8
- @list_manager = Sevendigital::ListManager.new(@client)
9
- end
10
-
11
- it "get_editorial_list should call editorial/list api method and return digested list" do
12
- an_editorial_list_key = "featured"
13
- an_editorial_list = Sevendigital::List.new(@client)
14
- an_api_response = fake_api_response("editorial/list")
15
-
16
- mock_client_digestor(@client, :list_digestor) \
17
- .should_receive(:from_xml_doc).with(an_api_response.item_xml("list")).and_return(an_editorial_list)
18
-
19
- @client.should_receive(:make_api_request) \
20
- .with(:GET, "editorial/list", {:key => an_editorial_list_key}, {}) \
21
- .and_return(an_api_response)
22
-
23
- list = @list_manager.get_editorial_list(an_editorial_list_key)
24
- list.should == an_editorial_list
25
- end
26
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "ListManager" do
4
+
5
+ before do
6
+ @client = stub(Sevendigital::Client)
7
+ @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
8
+ @list_manager = Sevendigital::ListManager.new(@client)
9
+ end
10
+
11
+ it "get_editorial_list should call editorial/list api method and return digested list" do
12
+ an_editorial_list_key = "featured"
13
+ an_editorial_list = Sevendigital::List.new(@client)
14
+ an_api_response = fake_api_response("editorial/list")
15
+
16
+ mock_client_digestor(@client, :list_digestor) \
17
+ .should_receive(:from_xml_doc).with(an_api_response.item_xml("list")).and_return(an_editorial_list)
18
+
19
+ @client.should_receive(:make_api_request) \
20
+ .with(:GET, "editorial/list", {:key => an_editorial_list_key}, {}) \
21
+ .and_return(an_api_response)
22
+
23
+ list = @list_manager.get_editorial_list(an_editorial_list_key)
24
+ list.should == an_editorial_list
25
+ end
26
+
27
27
  end
@@ -1,73 +1,73 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "OAuthManager" do
4
-
5
- before do
6
- @client = stub(Sevendigital::Client)
7
-
8
- @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
9
- @oauth_manager = Sevendigital::OAuthManager.new(@client)
10
- end
11
-
12
- it "get_oauth_request_token should call oauth/requestToken api method and digest the request_token from response" do
13
-
14
- fake_token = OAuth::RequestToken.new("aaa", "bbb", "ccc")
15
- an_api_response = fake_api_response("oauth/requesttoken")
16
-
17
- digestor = mock(Sevendigital::OAuthRequestTokenDigestor)
18
- @client.stub!(:oauth_request_token_digestor).and_return(digestor)
19
-
20
- digestor.should_receive(:from_xml_doc) \
21
- .with(an_api_response.item_xml("oauth_request_token")) \
22
- .and_return(fake_token)
23
-
24
- @client.should_receive(:make_signed_api_request) \
25
- .with(:GET, "oauth/requestToken", {}) \
26
- .and_return(an_api_response)
27
-
28
- token = @oauth_manager.get_request_token
29
- token.should == fake_token
30
-
31
- end
32
-
33
- it "get_oauth_access_token should call oauth/accessToken api method and digest the access_token from response" do
34
-
35
- a_request_token = OAuth::RequestToken.new("aaa", "bbb", "ccc")
36
- fake_token = OAuth::AccessToken.new("aaa", "bbb", "ccc")
37
- an_api_response = fake_api_response("oauth/accessToken")
38
-
39
- digestor = mock(Sevendigital::OAuthAccessTokenDigestor)
40
- @client.stub!(:oauth_access_token_digestor).and_return(digestor)
41
-
42
- digestor.should_receive(:from_xml_doc) \
43
- .with(an_api_response.item_xml("oauth_access_token")) \
44
- .and_return(fake_token)
45
-
46
- @client.should_receive(:make_signed_api_request) \
47
- .with(:GET, "oauth/accessToken", {}, {}, a_request_token) \
48
- .and_return(an_api_response)
49
-
50
- token = @oauth_manager.get_access_token(a_request_token)
51
- token.should == fake_token
52
-
53
- end
54
-
55
- it "authorise_request_token should call oauth/requestToken/authorise api method" do
56
-
57
- a_request_token = OAuth::RequestToken.new("aaa", "bbb", "ccc")
58
- an_email_address = "email"
59
- a_password = "password"
60
- an_api_response = fake_api_response("oauth/requesttoken")
61
-
62
- @client.should_receive(:make_signed_api_request) \
63
- .with(:GET, "oauth/requestToken/authorise", \
64
- {:username => an_email_address, :password => a_password, :token => a_request_token.token}) \
65
- .and_return(an_api_response)
66
-
67
- authorised = @oauth_manager.authorise_request_token(an_email_address, a_password, a_request_token)
68
- authorised.should == true
69
-
70
- end
71
-
72
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "OAuthManager" do
4
+
5
+ before do
6
+ @client = stub(Sevendigital::Client)
7
+
8
+ @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
9
+ @oauth_manager = Sevendigital::OAuthManager.new(@client)
10
+ end
11
+
12
+ it "get_oauth_request_token should call oauth/requestToken api method and digest the request_token from response" do
13
+
14
+ fake_token = OAuth::RequestToken.new("aaa", "bbb", "ccc")
15
+ an_api_response = fake_api_response("oauth/requesttoken")
16
+
17
+ digestor = mock(Sevendigital::OAuthRequestTokenDigestor)
18
+ @client.stub!(:oauth_request_token_digestor).and_return(digestor)
19
+
20
+ digestor.should_receive(:from_xml_doc) \
21
+ .with(an_api_response.item_xml("oauth_request_token")) \
22
+ .and_return(fake_token)
23
+
24
+ @client.should_receive(:make_signed_api_request) \
25
+ .with(:GET, "oauth/requestToken", {}) \
26
+ .and_return(an_api_response)
27
+
28
+ token = @oauth_manager.get_request_token
29
+ token.should == fake_token
30
+
31
+ end
32
+
33
+ it "get_oauth_access_token should call oauth/accessToken api method and digest the access_token from response" do
34
+
35
+ a_request_token = OAuth::RequestToken.new("aaa", "bbb", "ccc")
36
+ fake_token = OAuth::AccessToken.new("aaa", "bbb", "ccc")
37
+ an_api_response = fake_api_response("oauth/accessToken")
38
+
39
+ digestor = mock(Sevendigital::OAuthAccessTokenDigestor)
40
+ @client.stub!(:oauth_access_token_digestor).and_return(digestor)
41
+
42
+ digestor.should_receive(:from_xml_doc) \
43
+ .with(an_api_response.item_xml("oauth_access_token")) \
44
+ .and_return(fake_token)
45
+
46
+ @client.should_receive(:make_signed_api_request) \
47
+ .with(:GET, "oauth/accessToken", {}, {}, a_request_token) \
48
+ .and_return(an_api_response)
49
+
50
+ token = @oauth_manager.get_access_token(a_request_token)
51
+ token.should == fake_token
52
+
53
+ end
54
+
55
+ it "authorise_request_token should call oauth/requestToken/authorise api method" do
56
+
57
+ a_request_token = OAuth::RequestToken.new("aaa", "bbb", "ccc")
58
+ an_email_address = "email"
59
+ a_password = "password"
60
+ an_api_response = fake_api_response("oauth/requesttoken")
61
+
62
+ @client.should_receive(:make_signed_api_request) \
63
+ .with(:GET, "oauth/requestToken/authorise", \
64
+ {:username => an_email_address, :password => a_password, :token => a_request_token.token}) \
65
+ .and_return(an_api_response)
66
+
67
+ authorised = @oauth_manager.authorise_request_token(an_email_address, a_password, a_request_token)
68
+ authorised.should == true
69
+
70
+ end
71
+
72
+
73
73
  end
@@ -1,200 +1,200 @@
1
- # encoding: UTF-8
2
- require 'date'
3
- require File.expand_path('../../spec_helper', __FILE__)
4
-
5
- describe "ReleaseManager" do
6
-
7
- before do
8
-
9
- @client = stub(Sevendigital::Client)
10
- @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
11
- @release_manager = Sevendigital::ReleaseManager.new(@client)
12
-
13
- end
14
-
15
- it "should get release by release id" do
16
- expected_release_id = 123
17
- api_response = fake_api_response("release/details")
18
- a_release = Sevendigital::Release.new(@client)
19
-
20
- mock_client_digestor(@client, :release_digestor) \
21
- .should_receive(:from_xml_doc).with(api_response.item_xml("release")).and_return(a_release)
22
-
23
- @client.should_receive(:make_api_request) \
24
- .with(:GET, "release/details", {:releaseId => expected_release_id}, {}) \
25
- .and_return(api_response)
26
-
27
- @release_manager.get_details(expected_release_id).should == a_release
28
-
29
- end
30
-
31
- it "get_tracks should call release/tracks api method and digest the track list from response" do
32
- expected_options = {:page_size => 20}
33
- a_release_id = 123
34
- api_response = fake_api_response("release/tracks")
35
- a_track_list = []
36
-
37
- mock_client_digestor(@client, :track_digestor) \
38
- .should_receive(:list_from_xml_doc).with(api_response.item_xml("tracks")).and_return(a_track_list)
39
-
40
- @client.should_receive(:make_api_request) \
41
- .with(:GET, "release/tracks", {:releaseId=>a_release_id}, expected_options) \
42
- .and_return(api_response)
43
-
44
- tracks = @release_manager.get_tracks(a_release_id, expected_options)
45
- tracks.should == a_track_list
46
-
47
- end
48
-
49
- it "get_tracks should call use page size 100 by default" do
50
-
51
- a_release_id = 123
52
- api_response = fake_api_response("release/tracks")
53
- a_track_list = []
54
-
55
- mock_client_digestor(@client, :track_digestor) \
56
- .should_receive(:list_from_xml_doc).with(api_response.item_xml("tracks")).and_return(a_track_list)
57
-
58
- @client.should_receive(:make_api_request) \
59
- .with(:GET, "release/tracks", {:releaseId => a_release_id}, {:page_size => 100}) \
60
- .and_return(api_response)
61
-
62
- tracks = @release_manager.get_tracks(a_release_id)
63
- tracks.should == a_track_list
64
-
65
- end
66
-
67
-
68
- it "get_chart should call release/chart api method and digest the release list from response" do
69
-
70
- api_response = fake_api_response("release/chart")
71
- a_chart = []
72
-
73
- mock_client_digestor(@client, :chart_item_digestor) \
74
- .should_receive(:list_from_xml_doc).with(api_response.item_xml("chart")).and_return(a_chart)
75
-
76
- @client.should_receive(:make_api_request) \
77
- .with(:GET, "release/chart", {}, {}) \
78
- .and_return(api_response)
79
-
80
- chart = @release_manager.get_chart
81
- chart.should == a_chart
82
- end
83
-
84
- it "get_by_date should call release/byDate with supplied parameters and digest the release list from response" do
85
-
86
- from_date = DateTime.new(2010, 01, 01)
87
- to_date = DateTime.new(2010, 05, 01)
88
- api_response = fake_api_response("release/bydate")
89
- a_release_list = []
90
-
91
- mock_client_digestor(@client, :release_digestor) \
92
- .should_receive(:list_from_xml_doc).with(api_response.item_xml("releases")).and_return(a_release_list)
93
-
94
- @client.should_receive(:make_api_request) \
95
- .with(:GET, "release/byDate", {:fromDate => from_date.strftime("%Y%m%d"), :toDate => to_date.strftime("%Y%m%d")}, {}) \
96
- .and_return(api_response)
97
-
98
- tracks = @release_manager.get_by_date(from_date, to_date)
99
- tracks.should == a_release_list
100
-
101
- end
102
-
103
- it "get_by_date should call release/tracks with no parameters and digest the release list from response" do
104
-
105
- api_response = fake_api_response("release/bydate")
106
- a_release_list = []
107
-
108
- mock_client_digestor(@client, :release_digestor) \
109
- .should_receive(:list_from_xml_doc).with(api_response.item_xml("releases")).and_return(a_release_list)
110
-
111
- @client.should_receive(:make_api_request) \
112
- .with(:GET, "release/byDate", {}, {}) \
113
- .and_return(api_response)
114
-
115
- releases = @release_manager.get_by_date
116
- releases.should == a_release_list
117
-
118
- end
119
-
120
- it "get_recommendations should call release/recommend api method and digest the nested release list from response" do
121
-
122
- a_release_id = 123
123
- api_response = fake_api_response("release/recommend")
124
- a_release_list = []
125
-
126
- mock_client_digestor(@client, :release_digestor) \
127
- .should_receive(:nested_list_from_xml_doc) \
128
- .with(api_response.item_xml("recommendations"), :recommendedItem, :release) \
129
- .and_return(a_release_list)
130
-
131
- @client.should_receive(:make_api_request) \
132
- .with(:GET, "release/recommend", {:releaseId => a_release_id}, {}) \
133
- .and_return(api_response)
134
-
135
- releases = @release_manager.get_recommendations(a_release_id)
136
- releases.should == a_release_list
137
-
138
- end
139
-
140
- it "get_top_by_tag should call release/byTag/top api method and digest the nested release list from response" do
141
-
142
- tags = "alternative-indie"
143
- api_response = fake_api_response("release/byTag/top")
144
- a_release_list = []
145
-
146
- mock_client_digestor(@client, :release_digestor) \
147
- .should_receive(:nested_list_from_xml_doc) \
148
- .with(api_response.item_xml("taggedResults"), :taggedItem, :release) \
149
- .and_return(a_release_list)
150
-
151
- @client.should_receive(:make_api_request) \
152
- .with(:GET, "release/byTag/top", {:tags => tags}, {}) \
153
- .and_return(api_response)
154
-
155
- releases = @release_manager.get_top_by_tag(tags)
156
- releases.should == a_release_list
157
-
158
- end
159
-
160
- it "search should call release/search api method and digest the nested release list from response" do
161
-
162
- query = "radiohead"
163
- api_response = fake_api_response("release/search")
164
- a_release_list = []
165
-
166
- mock_client_digestor(@client, :release_digestor) \
167
- .should_receive(:nested_list_from_xml_doc) \
168
- .with(api_response.item_xml("searchResults"), :searchResult, :release) \
169
- .and_return(a_release_list)
170
-
171
- @client.should_receive(:make_api_request) \
172
- .with(:GET, "release/search", {:q => query}, {}) \
173
- .and_return(api_response)
174
-
175
- releases = @release_manager.search(query)
176
- releases.should == a_release_list
177
-
178
- end
179
-
180
- it "get_tags should call release/tags api method and digest the tag list from response" do
181
- expected_options = {:page_size => 20}
182
- a_release_id = 123
183
- api_response = fake_api_response("release/tags")
184
- a_tag_list = []
185
-
186
- mock_client_digestor(@client, :tag_digestor) \
187
- .should_receive(:list_from_xml_doc).with(api_response.item_xml("tags")).and_return(a_tag_list)
188
-
189
- @client.should_receive(:make_api_request) \
190
- .with(:GET, "release/tags", {:releaseId=>a_release_id}, expected_options) \
191
- .and_return(api_response)
192
-
193
- tracks = @release_manager.get_tags(a_release_id, expected_options)
194
- tracks.should == a_tag_list
195
-
196
- end
197
-
198
-
199
-
200
- end
1
+ # encoding: UTF-8
2
+ require 'date'
3
+ require File.expand_path('../../spec_helper', __FILE__)
4
+
5
+ describe "ReleaseManager" do
6
+
7
+ before do
8
+
9
+ @client = stub(Sevendigital::Client)
10
+ @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
11
+ @release_manager = Sevendigital::ReleaseManager.new(@client)
12
+
13
+ end
14
+
15
+ it "should get release by release id" do
16
+ expected_release_id = 123
17
+ api_response = fake_api_response("release/details")
18
+ a_release = Sevendigital::Release.new(@client)
19
+
20
+ mock_client_digestor(@client, :release_digestor) \
21
+ .should_receive(:from_xml_doc).with(api_response.item_xml("release")).and_return(a_release)
22
+
23
+ @client.should_receive(:make_api_request) \
24
+ .with(:GET, "release/details", {:releaseId => expected_release_id}, {}) \
25
+ .and_return(api_response)
26
+
27
+ @release_manager.get_details(expected_release_id).should == a_release
28
+
29
+ end
30
+
31
+ it "get_tracks should call release/tracks api method and digest the track list from response" do
32
+ expected_options = {:page_size => 20}
33
+ a_release_id = 123
34
+ api_response = fake_api_response("release/tracks")
35
+ a_track_list = []
36
+
37
+ mock_client_digestor(@client, :track_digestor) \
38
+ .should_receive(:list_from_xml_doc).with(api_response.item_xml("tracks")).and_return(a_track_list)
39
+
40
+ @client.should_receive(:make_api_request) \
41
+ .with(:GET, "release/tracks", {:releaseId=>a_release_id}, expected_options) \
42
+ .and_return(api_response)
43
+
44
+ tracks = @release_manager.get_tracks(a_release_id, expected_options)
45
+ tracks.should == a_track_list
46
+
47
+ end
48
+
49
+ it "get_tracks should call use page size 100 by default" do
50
+
51
+ a_release_id = 123
52
+ api_response = fake_api_response("release/tracks")
53
+ a_track_list = []
54
+
55
+ mock_client_digestor(@client, :track_digestor) \
56
+ .should_receive(:list_from_xml_doc).with(api_response.item_xml("tracks")).and_return(a_track_list)
57
+
58
+ @client.should_receive(:make_api_request) \
59
+ .with(:GET, "release/tracks", {:releaseId => a_release_id}, {:page_size => 100}) \
60
+ .and_return(api_response)
61
+
62
+ tracks = @release_manager.get_tracks(a_release_id)
63
+ tracks.should == a_track_list
64
+
65
+ end
66
+
67
+
68
+ it "get_chart should call release/chart api method and digest the release list from response" do
69
+
70
+ api_response = fake_api_response("release/chart")
71
+ a_chart = []
72
+
73
+ mock_client_digestor(@client, :chart_item_digestor) \
74
+ .should_receive(:list_from_xml_doc).with(api_response.item_xml("chart")).and_return(a_chart)
75
+
76
+ @client.should_receive(:make_api_request) \
77
+ .with(:GET, "release/chart", {}, {}) \
78
+ .and_return(api_response)
79
+
80
+ chart = @release_manager.get_chart
81
+ chart.should == a_chart
82
+ end
83
+
84
+ it "get_by_date should call release/byDate with supplied parameters and digest the release list from response" do
85
+
86
+ from_date = DateTime.new(2010, 01, 01)
87
+ to_date = DateTime.new(2010, 05, 01)
88
+ api_response = fake_api_response("release/bydate")
89
+ a_release_list = []
90
+
91
+ mock_client_digestor(@client, :release_digestor) \
92
+ .should_receive(:list_from_xml_doc).with(api_response.item_xml("releases")).and_return(a_release_list)
93
+
94
+ @client.should_receive(:make_api_request) \
95
+ .with(:GET, "release/byDate", {:fromDate => from_date.strftime("%Y%m%d"), :toDate => to_date.strftime("%Y%m%d")}, {}) \
96
+ .and_return(api_response)
97
+
98
+ tracks = @release_manager.get_by_date(from_date, to_date)
99
+ tracks.should == a_release_list
100
+
101
+ end
102
+
103
+ it "get_by_date should call release/tracks with no parameters and digest the release list from response" do
104
+
105
+ api_response = fake_api_response("release/bydate")
106
+ a_release_list = []
107
+
108
+ mock_client_digestor(@client, :release_digestor) \
109
+ .should_receive(:list_from_xml_doc).with(api_response.item_xml("releases")).and_return(a_release_list)
110
+
111
+ @client.should_receive(:make_api_request) \
112
+ .with(:GET, "release/byDate", {}, {}) \
113
+ .and_return(api_response)
114
+
115
+ releases = @release_manager.get_by_date
116
+ releases.should == a_release_list
117
+
118
+ end
119
+
120
+ it "get_recommendations should call release/recommend api method and digest the nested release list from response" do
121
+
122
+ a_release_id = 123
123
+ api_response = fake_api_response("release/recommend")
124
+ a_release_list = []
125
+
126
+ mock_client_digestor(@client, :release_digestor) \
127
+ .should_receive(:nested_list_from_xml_doc) \
128
+ .with(api_response.item_xml("recommendations"), :recommendedItem, :release) \
129
+ .and_return(a_release_list)
130
+
131
+ @client.should_receive(:make_api_request) \
132
+ .with(:GET, "release/recommend", {:releaseId => a_release_id}, {}) \
133
+ .and_return(api_response)
134
+
135
+ releases = @release_manager.get_recommendations(a_release_id)
136
+ releases.should == a_release_list
137
+
138
+ end
139
+
140
+ it "get_top_by_tag should call release/byTag/top api method and digest the nested release list from response" do
141
+
142
+ tags = "alternative-indie"
143
+ api_response = fake_api_response("release/byTag/top")
144
+ a_release_list = []
145
+
146
+ mock_client_digestor(@client, :release_digestor) \
147
+ .should_receive(:nested_list_from_xml_doc) \
148
+ .with(api_response.item_xml("taggedResults"), :taggedItem, :release) \
149
+ .and_return(a_release_list)
150
+
151
+ @client.should_receive(:make_api_request) \
152
+ .with(:GET, "release/byTag/top", {:tags => tags}, {}) \
153
+ .and_return(api_response)
154
+
155
+ releases = @release_manager.get_top_by_tag(tags)
156
+ releases.should == a_release_list
157
+
158
+ end
159
+
160
+ it "search should call release/search api method and digest the nested release list from response" do
161
+
162
+ query = "radiohead"
163
+ api_response = fake_api_response("release/search")
164
+ a_release_list = []
165
+
166
+ mock_client_digestor(@client, :release_digestor) \
167
+ .should_receive(:nested_list_from_xml_doc) \
168
+ .with(api_response.item_xml("searchResults"), :searchResult, :release) \
169
+ .and_return(a_release_list)
170
+
171
+ @client.should_receive(:make_api_request) \
172
+ .with(:GET, "release/search", {:q => query}, {}) \
173
+ .and_return(api_response)
174
+
175
+ releases = @release_manager.search(query)
176
+ releases.should == a_release_list
177
+
178
+ end
179
+
180
+ it "get_tags should call release/tags api method and digest the tag list from response" do
181
+ expected_options = {:page_size => 20}
182
+ a_release_id = 123
183
+ api_response = fake_api_response("release/tags")
184
+ a_tag_list = []
185
+
186
+ mock_client_digestor(@client, :tag_digestor) \
187
+ .should_receive(:list_from_xml_doc).with(api_response.item_xml("tags")).and_return(a_tag_list)
188
+
189
+ @client.should_receive(:make_api_request) \
190
+ .with(:GET, "release/tags", {:releaseId=>a_release_id}, expected_options) \
191
+ .and_return(api_response)
192
+
193
+ tracks = @release_manager.get_tags(a_release_id, expected_options)
194
+ tracks.should == a_tag_list
195
+
196
+ end
197
+
198
+
199
+
200
+ end