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,58 +1,58 @@
1
- # coding: utf-8
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "UserCardDigestor" do
5
-
6
- before do
7
- @card_digestor = Sevendigital::UserCardDigestor.new(nil)
8
- end
9
-
10
- it "should not digest from invalid xml but throw up (exception)" do
11
-
12
- xml_response = <<XML
13
- <xxx>
14
- <type>invalid</type>
15
- </xxx>
16
- XML
17
-
18
- running {@card_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
- end
20
-
21
- it "should parse from xml and populate minimum available properties" do
22
-
23
- xml_response = <<XML
24
- <card>
25
- <type>MasterCard</type>
26
- <last4digits>1234</last4digits>
27
- </card>
28
- XML
29
-
30
- card = @card_digestor.from_xml(xml_response)
31
- card.type.should == "MasterCard"
32
- card.last_4_digits.should == "1234"
33
-
34
- end
35
-
36
- it "should parse from xml and populate all properties" do
37
-
38
- xml_response = load_sample_object_xml("user_payment_card")
39
-
40
- card = @card_digestor.from_xml(xml_response)
41
- card.id.should == 9876
42
- card.type.should == "VISA"
43
- card.last_4_digits.should == "2345"
44
- card.expiry_date.should == "201109"
45
- card.card_holder_name.should == "Mr. John Smith"
46
-
47
- end
48
-
49
- it "should digest xml containing empty list of cards and return an empty array" do
50
-
51
- xml_response = load_sample_object_xml("user_payment_card_list_empty")
52
-
53
- cards = @card_digestor.list_from_xml(xml_response, :cards)
54
- cards.size.should == 0
55
-
56
- end
57
-
58
- end
1
+ # coding: utf-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "UserCardDigestor" do
5
+
6
+ before do
7
+ @card_digestor = Sevendigital::UserCardDigestor.new(nil)
8
+ end
9
+
10
+ it "should not digest from invalid xml but throw up (exception)" do
11
+
12
+ xml_response = <<XML
13
+ <xxx>
14
+ <type>invalid</type>
15
+ </xxx>
16
+ XML
17
+
18
+ running {@card_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ end
20
+
21
+ it "should parse from xml and populate minimum available properties" do
22
+
23
+ xml_response = <<XML
24
+ <card>
25
+ <type>MasterCard</type>
26
+ <last4digits>1234</last4digits>
27
+ </card>
28
+ XML
29
+
30
+ card = @card_digestor.from_xml(xml_response)
31
+ card.type.should == "MasterCard"
32
+ card.last_4_digits.should == "1234"
33
+
34
+ end
35
+
36
+ it "should parse from xml and populate all properties" do
37
+
38
+ xml_response = load_sample_object_xml("user_payment_card")
39
+
40
+ card = @card_digestor.from_xml(xml_response)
41
+ card.id.should == 9876
42
+ card.type.should == "VISA"
43
+ card.last_4_digits.should == "2345"
44
+ card.expiry_date.should == "201109"
45
+ card.card_holder_name.should == "Mr. John Smith"
46
+
47
+ end
48
+
49
+ it "should digest xml containing empty list of cards and return an empty array" do
50
+
51
+ xml_response = load_sample_object_xml("user_payment_card_list_empty")
52
+
53
+ cards = @card_digestor.list_from_xml(xml_response, :cards)
54
+ cards.size.should == 0
55
+
56
+ end
57
+
58
+ end
@@ -1,44 +1,44 @@
1
- # coding: utf-8
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "UserDigestor" do
5
-
6
- before do
7
- @user_digestor = Sevendigital::UserDigestor.new(nil)
8
- end
9
-
10
- it "should not digest from invalid xml but throw up (exception)" do
11
-
12
- xml_response = <<XML
13
- <xxx>
14
- <type>invalid</type>
15
- </xxx>
16
- XML
17
-
18
- running {@user_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
- end
20
-
21
- it "should parse from xml and populate minimum available properties" do
22
-
23
- xml_response = <<XML
24
- <user>
25
- <type>7digital</type>
26
- </user>
27
- XML
28
-
29
- user = @user_digestor.from_xml(xml_response)
30
- user.type.should == :"7digital"
31
-
32
- end
33
-
34
- it "should parse from xml and populate all properties" do
35
-
36
- xml_response = load_sample_object_xml("user")
37
-
38
- user = @user_digestor.from_xml(xml_response)
39
- user.id.should == "123456"
40
- user.type.should == :"7digital"
41
- user.email_address.should == "user@example.com"
42
- end
43
-
44
- end
1
+ # coding: utf-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "UserDigestor" do
5
+
6
+ before do
7
+ @user_digestor = Sevendigital::UserDigestor.new(nil)
8
+ end
9
+
10
+ it "should not digest from invalid xml but throw up (exception)" do
11
+
12
+ xml_response = <<XML
13
+ <xxx>
14
+ <type>invalid</type>
15
+ </xxx>
16
+ XML
17
+
18
+ running {@user_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ end
20
+
21
+ it "should parse from xml and populate minimum available properties" do
22
+
23
+ xml_response = <<XML
24
+ <user>
25
+ <type>7digital</type>
26
+ </user>
27
+ XML
28
+
29
+ user = @user_digestor.from_xml(xml_response)
30
+ user.type.should == :"7digital"
31
+
32
+ end
33
+
34
+ it "should parse from xml and populate all properties" do
35
+
36
+ xml_response = load_sample_object_xml("user")
37
+
38
+ user = @user_digestor.from_xml(xml_response)
39
+ user.id.should == "123456"
40
+ user.type.should == :"7digital"
41
+ user.email_address.should == "user@example.com"
42
+ end
43
+
44
+ end
@@ -1,152 +1,152 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "ArtistManager" do
4
-
5
- before do
6
- @client = stub(Sevendigital::Client)
7
- @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
8
- @artist_manager = Sevendigital::ArtistManager.new(@client)
9
- end
10
-
11
- it "get_details should call artist/details api method and return digested artist" do
12
- an_artist_id = 123
13
- an_artist = Sevendigital::Artist.new(@client)
14
- an_api_response = fake_api_response("release/details")
15
-
16
- mock_client_digestor(@client, :artist_digestor) \
17
- .should_receive(:from_xml).with(an_api_response.content.artist).and_return(an_artist)
18
-
19
- @client.should_receive(:make_api_request) \
20
- .with(:GET, "artist/details", {:artistId => an_artist_id}, {}) \
21
- .and_return(an_api_response)
22
-
23
- artist = @artist_manager.get_details(an_artist_id)
24
- artist.should == an_artist
25
- end
26
-
27
- it "get_releases should call artist/releases api method and return list of digested releases" do
28
- an_artist_id = 123
29
- a_list_of_releases = [Sevendigital::Release.new(@client), Sevendigital::Release.new(@client)]
30
- an_api_response = fake_api_response("artist/releases")
31
-
32
- mock_client_digestor(@client, :release_digestor) \
33
- .should_receive(:list_from_xml).with(an_api_response.content.releases).and_return(a_list_of_releases)
34
-
35
- @client.should_receive(:make_api_request) \
36
- .with(:GET, "artist/releases", {:artistId => an_artist_id}, {}) \
37
- .and_return(an_api_response)
38
-
39
- releases = @artist_manager.get_releases(an_artist_id)
40
- releases.should == a_list_of_releases
41
- end
42
-
43
- it "get_top_tracks should call artist/topTracks method and digest the returned list of tracks" do
44
- an_artist_id = 123
45
- a_top_tracks_list = [Sevendigital::Track.new(@client)]
46
- an_api_response = fake_api_response("artist/toptracks")
47
-
48
- mock_client_digestor(@client, :track_digestor) \
49
- .should_receive(:list_from_xml).with(an_api_response.content.tracks).and_return(a_top_tracks_list)
50
-
51
- @client.should_receive(:make_api_request) \
52
- .with(:GET, "artist/topTracks", {:artistId => an_artist_id}, {}) \
53
- .and_return(an_api_response)
54
-
55
- tracks = @artist_manager.get_top_tracks(an_artist_id)
56
- tracks.should == a_top_tracks_list
57
-
58
- end
59
-
60
- it "get_similar should call artist/similar method and digest the returned list of artists" do
61
- an_artist_id = 123
62
- a_similar_artists_list = [Sevendigital::Artist.new(@client), Sevendigital::Artist.new(@client)]
63
- an_api_response = fake_api_response("artist/similar")
64
-
65
- mock_client_digestor(@client, :artist_digestor) \
66
- .should_receive(:list_from_xml).with(an_api_response.content.artists).and_return(a_similar_artists_list)
67
-
68
- @client.should_receive(:make_api_request) \
69
- .with(:GET, "artist/similar", {:artistId => an_artist_id}, {}) \
70
- .and_return(an_api_response)
71
-
72
- artists = @artist_manager.get_similar(an_artist_id)
73
- artists.should == a_similar_artists_list
74
-
75
- end
76
-
77
- it "get_top_by_tag should call artist/byTag/top api method and digest the nested artist list from response" do
78
-
79
- tags = "alternative-indie"
80
- an_api_response = fake_api_response("artist/byTag/top")
81
- a_release_list = []
82
-
83
- mock_client_digestor(@client, :artist_digestor) \
84
- .should_receive(:nested_list_from_xml) \
85
- .with(an_api_response.content.tagged_results, :tagged_item, :tagged_results) \
86
- .and_return(a_release_list)
87
-
88
- @client.should_receive(:make_api_request) \
89
- .with(:GET, "artist/byTag/top", {:tags => tags}, {}) \
90
- .and_return(an_api_response)
91
-
92
- releases = @artist_manager.get_top_by_tag(tags)
93
- releases.should == a_release_list
94
-
95
- end
96
-
97
- it "browse should call artist/browse api method and digest the artist list from response" do
98
-
99
- letter = "ra"
100
- an_api_response = fake_api_response("artist/browse")
101
- an_artist_list = []
102
-
103
- mock_client_digestor(@client, :artist_digestor) \
104
- .should_receive(:list_from_xml) \
105
- .with(an_api_response.content.artists) \
106
- .and_return(an_artist_list)
107
-
108
- @client.should_receive(:make_api_request) \
109
- .with(:GET, "artist/browse", {:letter => letter}, {}) \
110
- .and_return(an_api_response)
111
-
112
- artists = @artist_manager.browse(letter)
113
- artists.should == an_artist_list
114
-
115
- end
116
-
117
-
118
- it "get_chart should call artist/chart api method and digest the artist list from response" do
119
-
120
- api_response = fake_api_response("artist/chart")
121
- a_chart = [Sevendigital::ChartItem.new(@client)]
122
-
123
- mock_client_digestor(@client, :chart_item_digestor) \
124
- .should_receive(:list_from_xml).with(api_response.content.chart).and_return(a_chart)
125
-
126
- @client.should_receive(:make_api_request) \
127
- .with(:GET, "artist/chart", {}, {}) \
128
- .and_return(api_response)
129
-
130
- chart = @artist_manager.get_chart
131
- chart.should == a_chart
132
- end
133
-
134
-
135
- it "get_tags should call artist/tags api method and return list of digested tags" do
136
- an_artist_id = 123
137
- a_list_of_tags = [Sevendigital::Tag.new, Sevendigital::Tag.new]
138
- an_api_response = fake_api_response("artist/tags")
139
- options = {:page => 1}
140
-
141
- mock_client_digestor(@client, :tag_digestor) \
142
- .should_receive(:list_from_xml).with(an_api_response.content.tags).and_return(a_list_of_tags)
143
-
144
- @client.should_receive(:make_api_request) \
145
- .with(:GET, "artist/tags", {:artistId => an_artist_id}, options) \
146
- .and_return(an_api_response)
147
-
148
- releases = @artist_manager.get_tags(an_artist_id, options)
149
- releases.should == a_list_of_tags
150
- end
151
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "ArtistManager" do
4
+
5
+ before do
6
+ @client = stub(Sevendigital::Client)
7
+ @client.stub!(:operator).and_return(mock(Sevendigital::ApiOperator))
8
+ @artist_manager = Sevendigital::ArtistManager.new(@client)
9
+ end
10
+
11
+ it "get_details should call artist/details api method and return digested artist" do
12
+ an_artist_id = 123
13
+ an_artist = Sevendigital::Artist.new(@client)
14
+ an_api_response = fake_api_response("release/details")
15
+
16
+ mock_client_digestor(@client, :artist_digestor) \
17
+ .should_receive(:from_xml).with(an_api_response.content.artist).and_return(an_artist)
18
+
19
+ @client.should_receive(:make_api_request) \
20
+ .with(:GET, "artist/details", {:artistId => an_artist_id}, {}) \
21
+ .and_return(an_api_response)
22
+
23
+ artist = @artist_manager.get_details(an_artist_id)
24
+ artist.should == an_artist
25
+ end
26
+
27
+ it "get_releases should call artist/releases api method and return list of digested releases" do
28
+ an_artist_id = 123
29
+ a_list_of_releases = [Sevendigital::Release.new(@client), Sevendigital::Release.new(@client)]
30
+ an_api_response = fake_api_response("artist/releases")
31
+
32
+ mock_client_digestor(@client, :release_digestor) \
33
+ .should_receive(:list_from_xml).with(an_api_response.content.releases).and_return(a_list_of_releases)
34
+
35
+ @client.should_receive(:make_api_request) \
36
+ .with(:GET, "artist/releases", {:artistId => an_artist_id}, {}) \
37
+ .and_return(an_api_response)
38
+
39
+ releases = @artist_manager.get_releases(an_artist_id)
40
+ releases.should == a_list_of_releases
41
+ end
42
+
43
+ it "get_top_tracks should call artist/topTracks method and digest the returned list of tracks" do
44
+ an_artist_id = 123
45
+ a_top_tracks_list = [Sevendigital::Track.new(@client)]
46
+ an_api_response = fake_api_response("artist/toptracks")
47
+
48
+ mock_client_digestor(@client, :track_digestor) \
49
+ .should_receive(:list_from_xml).with(an_api_response.content.tracks).and_return(a_top_tracks_list)
50
+
51
+ @client.should_receive(:make_api_request) \
52
+ .with(:GET, "artist/topTracks", {:artistId => an_artist_id}, {}) \
53
+ .and_return(an_api_response)
54
+
55
+ tracks = @artist_manager.get_top_tracks(an_artist_id)
56
+ tracks.should == a_top_tracks_list
57
+
58
+ end
59
+
60
+ it "get_similar should call artist/similar method and digest the returned list of artists" do
61
+ an_artist_id = 123
62
+ a_similar_artists_list = [Sevendigital::Artist.new(@client), Sevendigital::Artist.new(@client)]
63
+ an_api_response = fake_api_response("artist/similar")
64
+
65
+ mock_client_digestor(@client, :artist_digestor) \
66
+ .should_receive(:list_from_xml).with(an_api_response.content.artists).and_return(a_similar_artists_list)
67
+
68
+ @client.should_receive(:make_api_request) \
69
+ .with(:GET, "artist/similar", {:artistId => an_artist_id}, {}) \
70
+ .and_return(an_api_response)
71
+
72
+ artists = @artist_manager.get_similar(an_artist_id)
73
+ artists.should == a_similar_artists_list
74
+
75
+ end
76
+
77
+ it "get_top_by_tag should call artist/byTag/top api method and digest the nested artist list from response" do
78
+
79
+ tags = "alternative-indie"
80
+ an_api_response = fake_api_response("artist/byTag/top")
81
+ a_release_list = []
82
+
83
+ mock_client_digestor(@client, :artist_digestor) \
84
+ .should_receive(:nested_list_from_xml) \
85
+ .with(an_api_response.content.tagged_results, :tagged_item, :tagged_results) \
86
+ .and_return(a_release_list)
87
+
88
+ @client.should_receive(:make_api_request) \
89
+ .with(:GET, "artist/byTag/top", {:tags => tags}, {}) \
90
+ .and_return(an_api_response)
91
+
92
+ releases = @artist_manager.get_top_by_tag(tags)
93
+ releases.should == a_release_list
94
+
95
+ end
96
+
97
+ it "browse should call artist/browse api method and digest the artist list from response" do
98
+
99
+ letter = "ra"
100
+ an_api_response = fake_api_response("artist/browse")
101
+ an_artist_list = []
102
+
103
+ mock_client_digestor(@client, :artist_digestor) \
104
+ .should_receive(:list_from_xml) \
105
+ .with(an_api_response.content.artists) \
106
+ .and_return(an_artist_list)
107
+
108
+ @client.should_receive(:make_api_request) \
109
+ .with(:GET, "artist/browse", {:letter => letter}, {}) \
110
+ .and_return(an_api_response)
111
+
112
+ artists = @artist_manager.browse(letter)
113
+ artists.should == an_artist_list
114
+
115
+ end
116
+
117
+
118
+ it "get_chart should call artist/chart api method and digest the artist list from response" do
119
+
120
+ api_response = fake_api_response("artist/chart")
121
+ a_chart = [Sevendigital::ChartItem.new(@client)]
122
+
123
+ mock_client_digestor(@client, :chart_item_digestor) \
124
+ .should_receive(:list_from_xml).with(api_response.content.chart).and_return(a_chart)
125
+
126
+ @client.should_receive(:make_api_request) \
127
+ .with(:GET, "artist/chart", {}, {}) \
128
+ .and_return(api_response)
129
+
130
+ chart = @artist_manager.get_chart
131
+ chart.should == a_chart
132
+ end
133
+
134
+
135
+ it "get_tags should call artist/tags api method and return list of digested tags" do
136
+ an_artist_id = 123
137
+ a_list_of_tags = [Sevendigital::Tag.new, Sevendigital::Tag.new]
138
+ an_api_response = fake_api_response("artist/tags")
139
+ options = {:page => 1}
140
+
141
+ mock_client_digestor(@client, :tag_digestor) \
142
+ .should_receive(:list_from_xml).with(an_api_response.content.tags).and_return(a_list_of_tags)
143
+
144
+ @client.should_receive(:make_api_request) \
145
+ .with(:GET, "artist/tags", {:artistId => an_artist_id}, options) \
146
+ .and_return(an_api_response)
147
+
148
+ releases = @artist_manager.get_tags(an_artist_id, options)
149
+ releases.should == a_list_of_tags
150
+ end
151
+
152
152
  end