7digital 0.0.5 → 0.0.6

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 (271) hide show
  1. data/README.rdoc +136 -136
  2. data/lib/sevendigital.rb +53 -53
  3. data/lib/sevendigital/api_operator.rb +130 -124
  4. data/lib/sevendigital/api_operator_cached.rb +41 -29
  5. data/lib/sevendigital/api_request.rb +65 -64
  6. data/lib/sevendigital/client.rb +113 -98
  7. data/lib/sevendigital/client_configuration.rb +86 -86
  8. data/lib/sevendigital/client_digestors.rb +107 -79
  9. data/lib/sevendigital/client_managers.rb +47 -34
  10. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +58 -57
  11. data/lib/sevendigital/digestion_tract/artist_digestor.rb +32 -31
  12. data/lib/sevendigital/digestion_tract/basket_digestor.rb +19 -18
  13. data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +26 -25
  14. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +28 -27
  15. data/lib/sevendigital/digestion_tract/digestor.rb +71 -70
  16. data/lib/sevendigital/digestion_tract/download_url_digestor.rb +20 -19
  17. data/lib/sevendigital/digestion_tract/format_digestor.rb +22 -21
  18. data/lib/sevendigital/digestion_tract/label_digestor.rb +20 -19
  19. data/lib/sevendigital/digestion_tract/locker_digestor.rb +18 -17
  20. data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +20 -19
  21. data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +22 -21
  22. data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +14 -13
  23. data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +14 -13
  24. data/lib/sevendigital/digestion_tract/pager_digestor.rb +24 -23
  25. data/lib/sevendigital/digestion_tract/price_digestor.rb +25 -24
  26. data/lib/sevendigital/digestion_tract/release_digestor.rb +53 -52
  27. data/lib/sevendigital/digestion_tract/tag_digestor.rb +22 -21
  28. data/lib/sevendigital/digestion_tract/track_digestor.rb +38 -37
  29. data/lib/sevendigital/digestion_tract/user_card_digestor.rb +24 -0
  30. data/lib/sevendigital/digestion_tract/user_digestor.rb +21 -0
  31. data/lib/sevendigital/management/artist_manager.rb +99 -82
  32. data/lib/sevendigital/management/basket_manager.rb +29 -29
  33. data/lib/sevendigital/management/manager.rb +12 -11
  34. data/lib/sevendigital/management/oauth_manager.rb +23 -23
  35. data/lib/sevendigital/management/release_manager.rb +56 -50
  36. data/lib/sevendigital/management/tag_manager.rb +10 -10
  37. data/lib/sevendigital/management/track_manager.rb +28 -28
  38. data/lib/sevendigital/management/user_card_manager.rb +27 -0
  39. data/lib/sevendigital/management/user_manager.rb +71 -51
  40. data/lib/sevendigital/model/api_response.rb +25 -40
  41. data/lib/sevendigital/model/artist.rb +94 -64
  42. data/lib/sevendigital/model/basket.rb +15 -15
  43. data/lib/sevendigital/model/basket_item.rb +14 -14
  44. data/lib/sevendigital/model/card.rb +12 -0
  45. data/lib/sevendigital/model/chart_item.rb +9 -9
  46. data/lib/sevendigital/model/download_url.rb +7 -7
  47. data/lib/sevendigital/model/format.rb +7 -7
  48. data/lib/sevendigital/model/label.rb +7 -7
  49. data/lib/sevendigital/model/locker.rb +4 -4
  50. data/lib/sevendigital/model/locker_release.rb +9 -9
  51. data/lib/sevendigital/model/locker_track.rb +9 -9
  52. data/lib/sevendigital/model/price.rb +9 -9
  53. data/lib/sevendigital/model/release.rb +52 -47
  54. data/lib/sevendigital/model/sevendigital_error.rb +11 -11
  55. data/lib/sevendigital/model/sevendigital_object.rb +57 -56
  56. data/lib/sevendigital/model/tag.rb +7 -7
  57. data/lib/sevendigital/model/track.rb +83 -28
  58. data/lib/sevendigital/model/user.rb +63 -33
  59. data/lib/sevendigital/pager.rb +23 -22
  60. data/lib/sevendigital/peachy_patchy.rb +9 -0
  61. data/lib/sevendigital/proxy_police.rb +27 -27
  62. data/lib/sevendigital/version.rb +5 -5
  63. data/spec/api_operator_cached_spec.rb +178 -102
  64. data/spec/api_operator_spec.rb +336 -338
  65. data/spec/api_request_spec.rb +31 -31
  66. data/spec/client_configuration_spec.rb +74 -74
  67. data/spec/client_spec.rb +162 -153
  68. data/spec/data/config/sevendigital.yml +5 -5
  69. data/spec/data/configuration_env_override.yml +5 -5
  70. data/spec/data/configuration_override.yml +1 -1
  71. data/spec/digestion_tract/api_response_digestor_spec.rb +92 -92
  72. data/spec/digestion_tract/artist_digestor_spec.rb +81 -81
  73. data/spec/digestion_tract/basket_digestor_spec.rb +31 -31
  74. data/spec/digestion_tract/basket_item_digestor_spec.rb +58 -58
  75. data/spec/digestion_tract/chart_digestor_spec.rb +52 -52
  76. data/spec/digestion_tract/download_url_digestor_spec.rb +40 -40
  77. data/spec/digestion_tract/format_digestor_spec.rb +38 -38
  78. data/spec/digestion_tract/label_digestor_spec.rb +33 -33
  79. data/spec/digestion_tract/locker_digestor_spec.rb +30 -30
  80. data/spec/digestion_tract/locker_release_digestor_spec.rb +70 -71
  81. data/spec/digestion_tract/locker_track_digestor_spec.rb +56 -56
  82. data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +34 -34
  83. data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +34 -34
  84. data/spec/digestion_tract/pager_digestor_spec.rb +50 -50
  85. data/spec/digestion_tract/price_digestor_spec.rb +73 -73
  86. data/spec/digestion_tract/release_digestor_spec.rb +101 -101
  87. data/spec/digestion_tract/tag_digestor_spec.rb +46 -46
  88. data/spec/digestion_tract/track_digestor_spec.rb +104 -104
  89. data/spec/digestion_tract/user_card_digestor_spec.rb +58 -0
  90. data/spec/digestion_tract/user_digestor_spec.rb +44 -0
  91. data/spec/management/artist_manager_spec.rb +151 -133
  92. data/spec/management/basket_manager_spec.rb +77 -77
  93. data/spec/management/oauth_manager_spec.rb +72 -72
  94. data/spec/management/release_manager_spec.rb +200 -181
  95. data/spec/management/tag_manager_spec.rb +34 -34
  96. data/spec/management/track_manager_spec.rb +107 -105
  97. data/spec/management/user_card_manager_spec.rb +79 -0
  98. data/spec/management/user_manager_spec.rb +202 -162
  99. data/spec/model/api_response_spec.rb +48 -111
  100. data/spec/model/artist_spec.rb +154 -141
  101. data/spec/model/basket_spec.rb +62 -62
  102. data/spec/model/release_spec.rb +122 -110
  103. data/spec/model/sevendigital_object_spec.rb +73 -73
  104. data/spec/model/track_spec.rb +144 -143
  105. data/spec/model/user_spec.rb +160 -97
  106. data/spec/pager_spec.rb +7 -7
  107. data/spec/peachy_spec_helper_patch.rb +6 -6
  108. data/spec/proxy_police_spec.rb +69 -47
  109. data/spec/sevendigital_spec.rb +70 -0
  110. data/spec/sevendigital_spec.yml +5 -0
  111. data/spec/spec_helper.rb +64 -60
  112. data/spec/test-xml/methods/artist/browse.xml +21 -21
  113. data/spec/test-xml/methods/artist/byTag/top.xml +50 -50
  114. data/spec/test-xml/methods/artist/chart.xml +30 -30
  115. data/spec/test-xml/methods/artist/details.xml +9 -9
  116. data/spec/test-xml/methods/artist/releases.xml +544 -544
  117. data/spec/test-xml/methods/artist/search.xml +18 -18
  118. data/spec/test-xml/methods/artist/similar.xml +39 -39
  119. data/spec/test-xml/methods/artist/tags.xml +12 -0
  120. data/spec/test-xml/methods/artist/toptracks.xml +279 -279
  121. data/spec/test-xml/methods/basket/additem.xml +23 -23
  122. data/spec/test-xml/methods/basket/create.xml +10 -10
  123. data/spec/test-xml/methods/basket/index.xml +23 -23
  124. data/spec/test-xml/methods/basket/removeitem.xml +10 -10
  125. data/spec/test-xml/methods/oauth/accesstoken.xml +5 -5
  126. data/spec/test-xml/methods/oauth/requesttoken.xml +5 -5
  127. data/spec/test-xml/methods/release/bydate.xml +173 -173
  128. data/spec/test-xml/methods/release/bytag/top.xml +150 -150
  129. data/spec/test-xml/methods/release/chart.xml +181 -181
  130. data/spec/test-xml/methods/release/details.xml +48 -48
  131. data/spec/test-xml/methods/release/recommend.xml +89 -89
  132. data/spec/test-xml/methods/release/search.xml +194 -194
  133. data/spec/test-xml/methods/release/tags.xml +27 -0
  134. data/spec/test-xml/methods/release/tracks.xml +28 -28
  135. data/spec/test-xml/methods/tag/index.xml +16 -16
  136. data/spec/test-xml/methods/track/chart.xml +149 -149
  137. data/spec/test-xml/methods/track/details.xml +30 -30
  138. data/spec/test-xml/methods/track/search.xml +159 -159
  139. data/spec/test-xml/methods/user/locker.xml +49 -49
  140. data/spec/test-xml/methods/user/payment/card/add.xml +8 -0
  141. data/spec/test-xml/methods/user/payment/card/index.xml +8 -0
  142. data/spec/test-xml/methods/user/payment/card/select.xml +1 -0
  143. data/spec/test-xml/methods/user/purchase/item.xml +48 -48
  144. data/spec/test-xml/methods/user/signUp.xml +6 -0
  145. data/spec/test-xml/objects/artist.xml +6 -6
  146. data/spec/test-xml/objects/artist_chart_item.xml +7 -7
  147. data/spec/test-xml/objects/artist_list.xml +22 -22
  148. data/spec/test-xml/objects/artist_list_empty.xml +4 -4
  149. data/spec/test-xml/objects/basket.xml +21 -21
  150. data/spec/test-xml/objects/basket_item.xml +11 -11
  151. data/spec/test-xml/objects/basket_item_list.xml +25 -25
  152. data/spec/test-xml/objects/basket_item_list_empty.xml +1 -1
  153. data/spec/test-xml/objects/download_url.xml +7 -7
  154. data/spec/test-xml/objects/locker.xml +47 -47
  155. data/spec/test-xml/objects/locker_release.xml +40 -40
  156. data/spec/test-xml/objects/locker_release_list.xml +87 -87
  157. data/spec/test-xml/objects/locker_release_list_empty.xml +4 -4
  158. data/spec/test-xml/objects/locker_release_one_item_list.xml +43 -43
  159. data/spec/test-xml/objects/locker_track.xml +25 -25
  160. data/spec/test-xml/objects/locker_track_list.xml +26 -26
  161. data/spec/test-xml/objects/locker_track_list_empty.xml +2 -2
  162. data/spec/test-xml/objects/oauth_access_token.xml +3 -3
  163. data/spec/test-xml/objects/oauth_request_token.xml +3 -3
  164. data/spec/test-xml/objects/price.xml +7 -7
  165. data/spec/test-xml/objects/release.xml +40 -40
  166. data/spec/test-xml/objects/release_chart_item.xml +39 -39
  167. data/spec/test-xml/objects/release_list.xml +18 -18
  168. data/spec/test-xml/objects/release_list_empty.xml +4 -4
  169. data/spec/test-xml/objects/response.xml +38 -38
  170. data/spec/test-xml/objects/tag.xml +4 -4
  171. data/spec/test-xml/objects/track.xml +33 -33
  172. data/spec/test-xml/objects/track_chart_item.xml +27 -27
  173. data/spec/test-xml/objects/user.xml +4 -0
  174. data/spec/test-xml/objects/user_payment_card.xml +6 -0
  175. data/spec/test-xml/objects/user_payment_card_list_empty.xml +1 -0
  176. metadata +51 -192
  177. data/lib/sevendigital/default_configuration.yml +0 -2
  178. data/spec/coverage/assets/0.3.9/app.js +0 -66
  179. data/spec/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  180. data/spec/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  181. data/spec/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  182. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  183. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  184. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  185. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  186. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  187. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  188. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  189. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  190. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  191. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  192. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  193. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  194. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  195. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  196. data/spec/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  197. data/spec/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  198. data/spec/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  199. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
  200. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
  201. data/spec/coverage/assets/0.3.9/favicon.png +0 -0
  202. data/spec/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
  203. data/spec/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
  204. data/spec/coverage/assets/0.3.9/jquery.timeago.js +0 -141
  205. data/spec/coverage/assets/0.3.9/jquery.url.js +0 -174
  206. data/spec/coverage/assets/0.3.9/loading.gif +0 -0
  207. data/spec/coverage/assets/0.3.9/magnify.png +0 -0
  208. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  209. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  210. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  211. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  212. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  213. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  214. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  215. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  216. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  217. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  218. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  219. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  220. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  221. data/spec/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
  222. data/spec/coverage/assets/0.3.9/stylesheet.css +0 -341
  223. data/spec/coverage/index.html +0 -43412
  224. data/spec/coverage/resultset.yml +0 -3251
  225. data/spec/model/coverage/assets/0.3.9/app.js +0 -66
  226. data/spec/model/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  227. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  228. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  229. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  230. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  231. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  232. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  233. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  234. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  235. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  236. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  237. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  238. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  239. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  240. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  241. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  242. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  243. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  244. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  245. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  246. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
  247. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
  248. data/spec/model/coverage/assets/0.3.9/favicon.png +0 -0
  249. data/spec/model/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
  250. data/spec/model/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
  251. data/spec/model/coverage/assets/0.3.9/jquery.timeago.js +0 -141
  252. data/spec/model/coverage/assets/0.3.9/jquery.url.js +0 -174
  253. data/spec/model/coverage/assets/0.3.9/loading.gif +0 -0
  254. data/spec/model/coverage/assets/0.3.9/magnify.png +0 -0
  255. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  256. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  257. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  258. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  259. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  260. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  261. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  262. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  263. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  264. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  265. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  266. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  267. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  268. data/spec/model/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
  269. data/spec/model/coverage/assets/0.3.9/stylesheet.css +0 -341
  270. data/spec/model/coverage/index.html +0 -8637
  271. data/spec/model/coverage/resultset.yml +0 -642
@@ -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) \
21
- .with(an_api_response.content.oauth_request_token, :oauth_request_token) \
22
- .and_return(fake_token)
23
-
24
- @client.should_receive(:make_signed_api_request) \
25
- .with("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) \
43
- .with(an_api_response.content.oauth_access_token, :oauth_access_token) \
44
- .and_return(fake_token)
45
-
46
- @client.should_receive(:make_signed_api_request) \
47
- .with("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("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) \
21
+ .with(an_api_response.content.oauth_request_token, :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) \
43
+ .with(an_api_response.content.oauth_access_token, :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,181 +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).with(api_response.content.release).and_return(a_release)
22
-
23
- @client.should_receive(:make_api_request) \
24
- .with("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).with(api_response.content.tracks).and_return(a_track_list)
39
-
40
- @client.should_receive(:make_api_request) \
41
- .with("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).with(api_response.content.tracks).and_return(a_track_list)
57
-
58
- @client.should_receive(:make_api_request) \
59
- .with("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).with(api_response.content.chart).and_return(a_chart)
75
-
76
- @client.should_receive(:make_api_request) \
77
- .with("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).with(api_response.content.releases).and_return(a_release_list)
93
-
94
- @client.should_receive(:make_api_request) \
95
- .with("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).with(api_response.content.releases).and_return(a_release_list)
110
-
111
- @client.should_receive(:make_api_request) \
112
- .with("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) \
128
- .with(api_response.content.recommendations, :recommended_item, :recommendations) \
129
- .and_return(a_release_list)
130
-
131
- @client.should_receive(:make_api_request) \
132
- .with("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) \
148
- .with(api_response.content.tagged_results, :tagged_item, :tagged_results) \
149
- .and_return(a_release_list)
150
-
151
- @client.should_receive(:make_api_request) \
152
- .with("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) \
168
- .with(api_response.content.search_results, :search_result, :search_results) \
169
- .and_return(a_release_list)
170
-
171
- @client.should_receive(:make_api_request) \
172
- .with("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
-
181
- 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).with(api_response.content.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).with(api_response.content.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).with(api_response.content.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).with(api_response.content.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).with(api_response.content.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).with(api_response.content.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) \
128
+ .with(api_response.content.recommendations, :recommended_item, :recommendations) \
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) \
148
+ .with(api_response.content.tagged_results, :tagged_item, :tagged_results) \
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) \
168
+ .with(api_response.content.search_results, :search_result, :search_results) \
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).with(api_response.content.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