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,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