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,56 +1,56 @@
1
- # coding: utf-8
2
- require 'date'
3
- require File.expand_path('../../spec_helper', __FILE__)
4
-
5
- describe "LockerTrackDigestor" do
6
-
7
- before do
8
- @locker_track_digestor = Sevendigital::LockerTrackDigestor.new(Sevendigital::Client.new(nil))
9
- end
10
-
11
- it "should not digest from invalid xml but throw up (exception)" do
12
-
13
- xml_response = <<XML
14
- <artist id="123">
15
- <name>expected artist name</name>
16
- </artist>
17
- XML
18
-
19
- running {@locker_track_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
- end
21
-
22
- it "should digest locker track xml and populate all available properties" do
23
-
24
- xml_response = load_sample_object_xml("locker_track")
25
-
26
- locker_track = @locker_track_digestor.from_xml(xml_response)
27
-
28
- locker_track.track.id.should == 3544116
29
- locker_track.track.title.should == "Gloria"
30
- locker_track.remaining_downloads.should == 355
31
- locker_track.purchase_date.should == DateTime.new(2009,7,22,11,41,41, 1.quo(24))
32
- locker_track.download_urls.size.should == 1
33
- locker_track.download_urls[0].url.should == "http://media3.7digital.com/media/user/downloadtrack?"
34
-
35
- end
36
-
37
- it "should digest xml containing single item list of locker tracks and return an array" do
38
-
39
- xml_response = load_sample_object_xml("locker_track_list")
40
-
41
- locker_tracks = @locker_track_digestor.list_from_xml(xml_response, :locker_tracks)
42
- locker_tracks[0].track.id.should == 3544116
43
- locker_tracks[0].download_urls[0].url.should == "http://media3.7digital.com/media/user/downloadtrack?"
44
- locker_tracks.size.should == 1
45
- end
46
-
47
- it "should digest xml containing empty list of locker tracks and return an empty array" do
48
-
49
- xml_response = load_sample_object_xml("locker_track_list_empty")
50
-
51
- locker_tracks = @locker_track_digestor.list_from_xml(xml_response, :locker_tracks)
52
- locker_tracks.size.should == 0
53
-
54
- end
55
-
56
- end
1
+ # coding: utf-8
2
+ require 'date'
3
+ require File.expand_path('../../spec_helper', __FILE__)
4
+
5
+ describe "LockerTrackDigestor" do
6
+
7
+ before do
8
+ @locker_track_digestor = Sevendigital::LockerTrackDigestor.new(Sevendigital::Client.new(nil))
9
+ end
10
+
11
+ it "should not digest from invalid xml but throw up (exception)" do
12
+
13
+ xml_response = <<XML
14
+ <artist id="123">
15
+ <name>expected artist name</name>
16
+ </artist>
17
+ XML
18
+
19
+ running {@locker_track_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
+ end
21
+
22
+ it "should digest locker track xml and populate all available properties" do
23
+
24
+ xml_response = load_sample_object_xml("locker_track")
25
+
26
+ locker_track = @locker_track_digestor.from_xml(xml_response)
27
+
28
+ locker_track.track.id.should == 3544116
29
+ locker_track.track.title.should == "Gloria"
30
+ locker_track.remaining_downloads.should == 355
31
+ locker_track.purchase_date.should == DateTime.new(2009,7,22,11,41,41, 1.quo(24))
32
+ locker_track.download_urls.size.should == 1
33
+ locker_track.download_urls[0].url.should == "http://media3.7digital.com/media/user/downloadtrack?"
34
+
35
+ end
36
+
37
+ it "should digest xml containing single item list of locker tracks and return an array" do
38
+
39
+ xml_response = load_sample_object_xml("locker_track_list")
40
+
41
+ locker_tracks = @locker_track_digestor.list_from_xml(xml_response, :locker_tracks)
42
+ locker_tracks[0].track.id.should == 3544116
43
+ locker_tracks[0].download_urls[0].url.should == "http://media3.7digital.com/media/user/downloadtrack?"
44
+ locker_tracks.size.should == 1
45
+ end
46
+
47
+ it "should digest xml containing empty list of locker tracks and return an empty array" do
48
+
49
+ xml_response = load_sample_object_xml("locker_track_list_empty")
50
+
51
+ locker_tracks = @locker_track_digestor.list_from_xml(xml_response, :locker_tracks)
52
+ locker_tracks.size.should == 0
53
+
54
+ end
55
+
56
+ end
@@ -1,35 +1,35 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "OAuthAccessTokenDigestor" do
4
-
5
- before do
6
- @stub_oauth_consumer = stub(OAuth::Consumer)
7
- api_client = stub(Sevendigital::Client)
8
- api_client.stub!(:oauth_consumer).and_return(@stub_oauth_consumer)
9
- @token_digestor = Sevendigital::OAuthAccessTokenDigestor.new(api_client)
10
- end
11
-
12
-
13
- it "should not digest from invalid xml but throw up (exception)" do
14
-
15
- xml_response = <<XML
16
- <release id="123">
17
- <name>expected artist name</name>
18
- </release>
19
- XML
20
-
21
- running {@token_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
22
- end
23
-
24
- it "should digest access token xml and populate all properties" do
25
-
26
- xml_response = load_sample_object_xml("oauth_access_token")
27
-
28
- token = @token_digestor.from_xml(xml_response, :oauth_access_token)
29
- token.kind_of?(OAuth::AccessToken).should == true
30
- token.token.should == "E3w4FV3oirRfj4KfT7alOpa893mmn4HJ"
31
- token.secret.should == "923kj3Kspa304n4Oamd3201pLkgjeM32"
32
- token.consumer.should == @stub_oauth_consumer
33
- end
34
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "OAuthAccessTokenDigestor" do
4
+
5
+ before do
6
+ @stub_oauth_consumer = stub(OAuth::Consumer)
7
+ api_client = stub(Sevendigital::Client)
8
+ api_client.stub!(:oauth_consumer).and_return(@stub_oauth_consumer)
9
+ @token_digestor = Sevendigital::OAuthAccessTokenDigestor.new(api_client)
10
+ end
11
+
12
+
13
+ it "should not digest from invalid xml but throw up (exception)" do
14
+
15
+ xml_response = <<XML
16
+ <release id="123">
17
+ <name>expected artist name</name>
18
+ </release>
19
+ XML
20
+
21
+ running {@token_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
22
+ end
23
+
24
+ it "should digest access token xml and populate all properties" do
25
+
26
+ xml_response = load_sample_object_xml("oauth_access_token")
27
+
28
+ token = @token_digestor.from_xml(xml_response, :oauth_access_token)
29
+ token.kind_of?(OAuth::AccessToken).should == true
30
+ token.token.should == "E3w4FV3oirRfj4KfT7alOpa893mmn4HJ"
31
+ token.secret.should == "923kj3Kspa304n4Oamd3201pLkgjeM32"
32
+ token.consumer.should == @stub_oauth_consumer
33
+ end
34
+
35
35
  end
@@ -1,35 +1,35 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "OAuthRequestTokenDigestor" do
4
-
5
- before do
6
- @stub_oauth_consumer = stub(OAuth::Consumer)
7
- api_client = stub(Sevendigital::Client)
8
- api_client.stub!(:oauth_consumer).and_return(@stub_oauth_consumer)
9
- @token_digestor = Sevendigital::OAuthRequestTokenDigestor.new(api_client)
10
- end
11
-
12
-
13
- it "should not digest from invalid xml but throw up (exception)" do
14
-
15
- xml_response = <<XML
16
- <release id="123">
17
- <name>expected artist name</name>
18
- </release>
19
- XML
20
-
21
- running {@token_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
22
- end
23
-
24
- it "should digest request token xml and populate all properties" do
25
-
26
- xml_response = load_sample_object_xml("oauth_request_token")
27
-
28
- token = @token_digestor.from_xml(xml_response, :oauth_request_token)
29
- token.kind_of?(OAuth::RequestToken).should == true
30
- token.token.should == "yu87230J29DT7tyuGslO98wrR43e39Of"
31
- token.secret.should == "d2I8uj7yaoa39KKdu3upasybu98f89fln"
32
- token.consumer.should == @stub_oauth_consumer
33
- end
34
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "OAuthRequestTokenDigestor" do
4
+
5
+ before do
6
+ @stub_oauth_consumer = stub(OAuth::Consumer)
7
+ api_client = stub(Sevendigital::Client)
8
+ api_client.stub!(:oauth_consumer).and_return(@stub_oauth_consumer)
9
+ @token_digestor = Sevendigital::OAuthRequestTokenDigestor.new(api_client)
10
+ end
11
+
12
+
13
+ it "should not digest from invalid xml but throw up (exception)" do
14
+
15
+ xml_response = <<XML
16
+ <release id="123">
17
+ <name>expected artist name</name>
18
+ </release>
19
+ XML
20
+
21
+ running {@token_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
22
+ end
23
+
24
+ it "should digest request token xml and populate all properties" do
25
+
26
+ xml_response = load_sample_object_xml("oauth_request_token")
27
+
28
+ token = @token_digestor.from_xml(xml_response, :oauth_request_token)
29
+ token.kind_of?(OAuth::RequestToken).should == true
30
+ token.token.should == "yu87230J29DT7tyuGslO98wrR43e39Of"
31
+ token.secret.should == "d2I8uj7yaoa39KKdu3upasybu98f89fln"
32
+ token.consumer.should == @stub_oauth_consumer
33
+ end
34
+
35
35
  end
@@ -1,51 +1,51 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "PagerDigestor" do
4
-
5
- before do
6
- @pager_digestor = Sevendigital::PagerDigestor.new(nil)
7
- end
8
-
9
-
10
- it "should not digest from invalid xml but throw up (exception)" do
11
-
12
- xml_response = <<XML
13
- <release id="123">
14
- <name>expected artist name</name>
15
- </release>
16
- XML
17
-
18
- running {@pager_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
- end
20
-
21
- it "should not digest if paging info is missing from xml but spit out nil" do
22
-
23
- xml_response = <<XML
24
- <results id="123">
25
- <page>3</page>
26
- <totalItems>99</totalItems>
27
- <pageSizeElementMissing>22</pageSizeElementMissing>
28
- </results>
29
- XML
30
-
31
- pager = @pager_digestor.from_xml(xml_response, :results)
32
- pager.should == nil
33
- end
34
-
35
- it "should digest from xml and populate all properties" do
36
-
37
- xml_response = <<XML
38
- <pager a="b">
39
- <page>3</page>
40
- <totalItems>99</totalItems>
41
- <pageSize>22</pageSize>
42
- </pager>
43
- XML
44
-
45
- pager = @pager_digestor.from_xml(xml_response, :pager)
46
- pager.page.should == 3
47
- pager.page_size.should == 22
48
- pager.total_items.should == 99
49
- end
50
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "PagerDigestor" do
4
+
5
+ before do
6
+ @pager_digestor = Sevendigital::PagerDigestor.new(nil)
7
+ end
8
+
9
+
10
+ it "should not digest from invalid xml but throw up (exception)" do
11
+
12
+ xml_response = <<XML
13
+ <release id="123">
14
+ <name>expected artist name</name>
15
+ </release>
16
+ XML
17
+
18
+ running {@pager_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ end
20
+
21
+ it "should not digest if paging info is missing from xml but spit out nil" do
22
+
23
+ xml_response = <<XML
24
+ <results id="123">
25
+ <page>3</page>
26
+ <totalItems>99</totalItems>
27
+ <pageSizeElementMissing>22</pageSizeElementMissing>
28
+ </results>
29
+ XML
30
+
31
+ pager = @pager_digestor.from_xml(xml_response, :results)
32
+ pager.should == nil
33
+ end
34
+
35
+ it "should digest from xml and populate all properties" do
36
+
37
+ xml_response = <<XML
38
+ <pager a="b">
39
+ <page>3</page>
40
+ <totalItems>99</totalItems>
41
+ <pageSize>22</pageSize>
42
+ </pager>
43
+ XML
44
+
45
+ pager = @pager_digestor.from_xml(xml_response, :pager)
46
+ pager.page.should == 3
47
+ pager.page_size.should == 22
48
+ pager.total_items.should == 99
49
+ end
50
+
51
51
  end
@@ -1,73 +1,73 @@
1
- # coding: utf-8
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "PriceDigestor" do
5
-
6
- before do
7
- @price_digestor = Sevendigital::PriceDigestor.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
- <currency code="XXX">X</currency>
15
- </xxx>
16
- XML
17
-
18
- running {@price_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
- <price>
25
- <currency code="GBP">£</currency>
26
- <value>1.79</value>
27
- <formattedPrice>£1.79</formattedPrice>
28
- <onSale>true</onSale>
29
- </price>
30
- XML
31
-
32
- price = @price_digestor.from_xml(xml_response)
33
- price.currency_code.should == :GBP
34
- price.currency_symbol.should == "£"
35
- price.value.should == 1.79
36
- price.formatted_price.should == "£1.79"
37
-
38
- end
39
-
40
- it "should parse from xml and populate N/A price" do
41
-
42
- xml_response = <<XML
43
- <price>
44
- <currency code="GBP">£</currency>
45
- <value />
46
- <formattedPrice>N/A</formattedPrice>
47
- <onSale>false</onSale>
48
- </price>
49
- XML
50
-
51
- price = @price_digestor.from_xml(xml_response)
52
- price.currency_code.should == :GBP
53
- price.currency_symbol.should == "£"
54
- price.value.should == nil
55
- price.formatted_price.should == "N/A"
56
-
57
- end
58
-
59
- it "should parse from xml and populate all properties" do
60
-
61
- xml_response = load_sample_object_xml("price")
62
-
63
- price = @price_digestor.from_xml(xml_response)
64
- price.currency_code.should == :GBP
65
- price.currency_symbol.should == "£"
66
- price.value.should == 1.79
67
- price.formatted_price.should == "£1.79"
68
- price.rrp.should == 1.99
69
- price.formatted_rrp.should == "£1.99"
70
- price.on_sale.should == true
71
- end
72
-
73
- end
1
+ # coding: utf-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "PriceDigestor" do
5
+
6
+ before do
7
+ @price_digestor = Sevendigital::PriceDigestor.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
+ <currency code="XXX">X</currency>
15
+ </xxx>
16
+ XML
17
+
18
+ running {@price_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
+ <price>
25
+ <currency code="GBP">£</currency>
26
+ <value>1.79</value>
27
+ <formattedPrice>£1.79</formattedPrice>
28
+ <onSale>true</onSale>
29
+ </price>
30
+ XML
31
+
32
+ price = @price_digestor.from_xml(xml_response)
33
+ price.currency_code.should == :GBP
34
+ price.currency_symbol.should == "£"
35
+ price.value.should == 1.79
36
+ price.formatted_price.should == "£1.79"
37
+
38
+ end
39
+
40
+ it "should parse from xml and populate N/A price" do
41
+
42
+ xml_response = <<XML
43
+ <price>
44
+ <currency code="GBP">£</currency>
45
+ <value />
46
+ <formattedPrice>N/A</formattedPrice>
47
+ <onSale>false</onSale>
48
+ </price>
49
+ XML
50
+
51
+ price = @price_digestor.from_xml(xml_response)
52
+ price.currency_code.should == :GBP
53
+ price.currency_symbol.should == "£"
54
+ price.value.should == nil
55
+ price.formatted_price.should == "N/A"
56
+
57
+ end
58
+
59
+ it "should parse from xml and populate all properties" do
60
+
61
+ xml_response = load_sample_object_xml("price")
62
+
63
+ price = @price_digestor.from_xml(xml_response)
64
+ price.currency_code.should == :GBP
65
+ price.currency_symbol.should == "£"
66
+ price.value.should == 1.79
67
+ price.formatted_price.should == "£1.79"
68
+ price.rrp.should == 1.99
69
+ price.formatted_rrp.should == "£1.99"
70
+ price.on_sale.should == true
71
+ end
72
+
73
+ end