7digital 0.0.6 → 0.0.7

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