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
data/spec/pager_spec.rb CHANGED
@@ -1,7 +1,7 @@
1
- require "spec_helper"
2
-
3
- describe "Pager" do
4
-
5
- #it "should paginate list"
6
-
7
- end
1
+ require "spec_helper"
2
+
3
+ describe "Pager" do
4
+
5
+ #it "should paginate list"
6
+
7
+ end
@@ -1,7 +1,7 @@
1
- module Peachy
2
- class Proxy
3
- def ==(other_proxy)
4
- (to_s == other_proxy.to_s)
5
- end
6
- end
1
+ module Peachy
2
+ class Proxy
3
+ def ==(other_proxy)
4
+ (to_s == other_proxy.to_s)
5
+ end
6
+ end
7
7
  end
@@ -1,48 +1,70 @@
1
- # encoding: UTF-8
2
- require 'date'
3
- require "spec_helper"
4
-
5
- describe "Proxy Police" do
6
-
7
- it "should create a Peachy proxy from xml string with root element with given name" do
8
-
9
- xml = <<XML
10
- <rootElement id="123">
11
- <subElement>expected value</subElement>
12
- </rootElement>
13
- XML
14
-
15
- proxy = Sevendigital::ProxyPolice.create_release_proxy(xml, :root_element)
16
- proxy.kind_of?(Peachy::Proxy).should == true
17
- proxy.sub_element.value.should == "expected value"
18
- end
19
-
20
- it "should create a Peachy proxy from root of the xml string if no element name given" do
21
-
22
- xml = <<XML
23
- <rootElement id="123">
24
- <subElement>expected value</subElement>
25
- </rootElement>
26
- XML
27
-
28
- proxy = Sevendigital::ProxyPolice.create_release_proxy(xml, nil)
29
- proxy.kind_of?(Peachy::Proxy).should == true
30
- proxy.root_element.sub_element.value.should == "expected value"
31
-
32
- end
33
-
34
- it "should not create a Peachy proxy from xml string without root element with given name" do
35
-
36
- xml = <<XML
37
- <rootElement id="123">
38
- <subElement>expected value</subElement>
39
- </rootElement>
40
- XML
41
-
42
- proxy = Sevendigital::ProxyPolice.create_release_proxy(xml, :different_element)
43
- proxy.should == nil
44
-
45
- end
46
-
47
-
1
+ # encoding: UTF-8
2
+ require 'date'
3
+ require "spec_helper"
4
+
5
+ describe "Proxy Police" do
6
+
7
+ it "should create a Peachy proxy from xml string with root element with given name" do
8
+
9
+ xml = <<XML
10
+ <rootElement id="123">
11
+ <subElement>expected value</subElement>
12
+ </rootElement>
13
+ XML
14
+
15
+ proxy = Sevendigital::ProxyPolice.create_release_proxy(xml, :root_element)
16
+ proxy.kind_of?(Peachy::Proxy).should == true
17
+ proxy.sub_element.value.should == "expected value"
18
+ end
19
+
20
+ it "should create a Peachy proxy from root of the xml string if no element name given" do
21
+
22
+ xml = <<XML
23
+ <rootElement id="123">
24
+ <subElement>expected value</subElement>
25
+ </rootElement>
26
+ XML
27
+
28
+ proxy = Sevendigital::ProxyPolice.create_release_proxy(xml, nil)
29
+ proxy.kind_of?(Peachy::Proxy).should == true
30
+ proxy.root_element.sub_element.value.should == "expected value"
31
+
32
+ end
33
+
34
+ it "should not create a Peachy proxy from xml string without root element with given name" do
35
+
36
+ xml = <<XML
37
+ <rootElement id="123">
38
+ <subElement>expected value</subElement>
39
+ </rootElement>
40
+ XML
41
+
42
+ proxy = Sevendigital::ProxyPolice.create_release_proxy(xml, :different_element)
43
+ proxy.should == nil
44
+
45
+ end
46
+
47
+ it "should just return the input if passed in Peachy proxy " do
48
+
49
+ xml = <<XML
50
+ <rootElement id="123">
51
+ <subElement>expected value</subElement>
52
+ </rootElement>
53
+ XML
54
+ proxy = Peachy::Proxy.new(xml)
55
+ checked_proxy = Sevendigital::ProxyPolice.ensure_is_proxy(proxy, nil)
56
+ checked_proxy.should == proxy
57
+
58
+ end
59
+
60
+ it "should just return the input if passed in Peachy SimpleContent " do
61
+
62
+ xml = "<element/>"
63
+ proxy = Peachy::SimpleContent.new(xml)
64
+ checked_proxy = Sevendigital::ProxyPolice.ensure_is_proxy(proxy, nil)
65
+ checked_proxy.should == proxy
66
+
67
+ end
68
+
69
+
48
70
  end
@@ -0,0 +1,70 @@
1
+ # encoding: UTF-8
2
+ require "spec_helper"
3
+
4
+ describe "Sevendigital Gem" do
5
+
6
+ before do
7
+ @api_client = Sevendigital::Client.new(
8
+ File.join(File.dirname(__FILE__),"sevendigital_spec.yml"),
9
+ :verbose => "verbose"
10
+ )
11
+
12
+ end
13
+
14
+ it "should find an artist" do
15
+ @api_client.artist.search("keane").first.name.should == "Keane"
16
+ end
17
+
18
+ it "should find at least 20 releases" do
19
+ releases = @api_client.release.search("love", :page_size => 20, :page=>2)
20
+ releases.size.should == 20
21
+ releases.current_page.should == 2
22
+ releases.total_entries.should > 100
23
+ releases.first.price.value.should > 0
24
+ end
25
+
26
+ it "should find a track with price" do
27
+ track = @api_client.track.search("radiohead creep").first
28
+ track.artist.appears_as.should == "Radiohead"
29
+ track.release.price.value.should > 1
30
+ track.price.value.should > 0
31
+ end
32
+
33
+ it "should fail to sign up an existing user" do
34
+ running {user = @api_client.user.sign_up("filip@7digital.com", "£$%^&*()_+")}.should raise_error(Sevendigital::SevendigitalError) { |error|
35
+ error.error_message.should == "User with given email already exists"
36
+ error.error_code.should == 2003
37
+ }
38
+
39
+ end
40
+
41
+ it "should manage user's cards" do
42
+ user = @api_client.user.authenticate("test@7digital.com", "password")
43
+ user.add_card("4444333322221111", "VISA", "Mr Test", nil, "201109", nil, 123, "90210", "US")
44
+ user.cards.first.id.should > 0
45
+ user.cards.first.last_4_digits.should == "1111"
46
+
47
+ end
48
+
49
+ it "should select a card as default" do
50
+ user = @api_client.user.authenticate("test@7digital.com", "password")
51
+ user.add_card("4444333322221111", "VISA", "Mr Test", nil, "201109", nil, 123, "90210", "US")
52
+ new_card_id = user.cards.first.id
53
+ old_card_id = user.cards.last.id
54
+ new_card_id.should_not == old_card_id
55
+ user.select_card(old_card_id)
56
+ user.get_cards.first.id.should == old_card_id
57
+
58
+ end
59
+
60
+ it "should create and purchase basket" do
61
+ test_track_id = 8515447
62
+ basket = @api_client.basket.create
63
+ basket.add_item(769006, test_track_id)
64
+
65
+ user = @api_client.user.authenticate("test@7digital.com", "password")
66
+ purchase_response = user.purchase_basket!(basket.id)
67
+ purchase_response.locker_releases.first.locker_tracks.first.track.id.should == test_track_id
68
+ end
69
+
70
+ end
@@ -0,0 +1,5 @@
1
+ #Your API access key and secret
2
+ oauth_consumer_key: "YOUR_KEY_HERE"
3
+ oauth_consumer_secret: "YOUR_SECRET_HERE"
4
+
5
+ lazy_load: true
data/spec/spec_helper.rb CHANGED
@@ -1,60 +1,64 @@
1
- #$: << 'sevendigital'
2
- #$: << 'spec'
3
-
4
- require 'simplecov'
5
-
6
- SimpleCov.start do
7
- add_group 'Management', 'lib/sevendigital/management'
8
- add_group 'Digestion', 'lib/sevendigital/digestion_tract'
9
- add_group 'Model', 'lib/sevendigital/model'
10
- end
11
-
12
- require 'spec'
13
- require File.expand_path(
14
- File.join(File.dirname(__FILE__), %w[.. lib sevendigital]))
15
-
16
- require "peachy_spec_helper_patch"
17
-
18
- Peachy.whine
19
-
20
- Spec::Runner.configure do |config|
21
- # == Mock Framework
22
- #
23
- # RSpec uses it's own mocking framework by default. If you prefer to
24
- # use mocha, flexmock or RR, uncomment the appropriate line:
25
- #
26
- # config.mock_with :mocha
27
- # config.mock_with :flexmock
28
- # config.mock_with :rr
29
- end
30
-
31
- alias running lambda
32
-
33
- def load_sample_method_xml(method_name)
34
- method_name = "test-xml/methods/" + method_name + ".xml"
35
- IO.read( File.join(File.dirname(__FILE__), method_name.split('/')))
36
- end
37
-
38
- def load_sample_object_xml(method_name)
39
- method_name = "test-xml/objects/" + method_name + ".xml"
40
- IO.read( File.join(File.dirname(__FILE__), method_name.split('/')))
41
- end
42
-
43
- def fake_api_response(method_name)
44
- Sevendigital::ApiResponseDigestor.new(nil).from_xml(load_sample_method_xml(method_name))
45
- end
46
-
47
- def fake_api_error_response(code)
48
- Sevendigital::ApiResponseDigestor.new(nil).from_xml("<response status=\"error\"><error code=\"#{code}\"></error></response>")
49
- end
50
-
51
- def mock_client_digestor(client, digestor_class)
52
- digestor = mock(Sevendigital.const_get(camelize(digestor_class.to_s)))
53
- client.stub!(digestor_class).and_return(digestor)
54
- digestor
55
- end
56
-
57
- def camelize(str)
58
- str.split('_').map {|w| w.capitalize}.join
59
- end
60
-
1
+ #$: << 'sevendigital'
2
+ #$: << 'spec'
3
+
4
+ =begin
5
+
6
+ require 'simplecov'
7
+
8
+ SimpleCov.start do
9
+ add_group 'Management', 'lib/sevendigital/management'
10
+ add_group 'Digestion', 'lib/sevendigital/digestion_tract'
11
+ add_group 'Model', 'lib/sevendigital/model'
12
+ end
13
+
14
+ =end
15
+
16
+ require 'spec'
17
+ require File.expand_path(
18
+ File.join(File.dirname(__FILE__), %w[.. lib sevendigital]))
19
+
20
+ require "peachy_spec_helper_patch"
21
+
22
+ Peachy.whine
23
+
24
+ Spec::Runner.configure do |config|
25
+ # == Mock Framework
26
+ #
27
+ # RSpec uses it's own mocking framework by default. If you prefer to
28
+ # use mocha, flexmock or RR, uncomment the appropriate line:
29
+ #
30
+ # config.mock_with :mocha
31
+ # config.mock_with :flexmock
32
+ # config.mock_with :rr
33
+ end
34
+
35
+ alias running lambda
36
+
37
+ def load_sample_method_xml(method_name)
38
+ method_name = "test-xml/methods/" + method_name + ".xml"
39
+ IO.read( File.join(File.dirname(__FILE__), method_name.split('/')))
40
+ end
41
+
42
+ def load_sample_object_xml(method_name)
43
+ method_name = "test-xml/objects/" + method_name + ".xml"
44
+ IO.read( File.join(File.dirname(__FILE__), method_name.split('/')))
45
+ end
46
+
47
+ def fake_api_response(method_name)
48
+ Sevendigital::ApiResponseDigestor.new(nil).from_xml(load_sample_method_xml(method_name))
49
+ end
50
+
51
+ def fake_api_error_response(code)
52
+ Sevendigital::ApiResponseDigestor.new(nil).from_xml("<response status=\"error\"><error code=\"#{code}\"></error></response>")
53
+ end
54
+
55
+ def mock_client_digestor(client, digestor_class)
56
+ digestor = mock(Sevendigital.const_get(camelize(digestor_class.to_s)))
57
+ client.stub!(digestor_class).and_return(digestor)
58
+ digestor
59
+ end
60
+
61
+ def camelize(str)
62
+ str.split('_').map {|w| w.capitalize}.join
63
+ end
64
+
@@ -1,22 +1,22 @@
1
- <?xml version="1.0" encoding="utf-8" ?>
2
- <response status="ok" version="1.2"
3
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
- xsi:noNamespaceSchemaLocation="http://api.7digital.com/1.2/static/7digitalAPI.xsd">
5
- <artists>
6
- <page>1</page>
7
- <pageSize>10</pageSize>
8
- <totalItems>3256</totalItems>
9
- <artist id="144641">
10
- <name>P J Harvey</name>
11
- <url>http://www.7digital.com/artists/p-j-harvey/?partner=123</url>
12
- <sortName>P J Harvey</sortName>
13
- <image>http://cdn.7static.com/static/img/artistimages/00/001/446/0000144641_50.jpg</image>
14
- </artist>
15
- <artist id="17168">
16
- <name>P J Proby</name>
17
- <url>http://www.7digital.com/artists/p-j-proby/?partner=123</url>
18
- <sortName>P J Proby</sortName>
19
- <image>http://cdn.7static.com/static/img/artistimages/00/001/716/000017168_50.jpg</image>
20
- </artist>
21
- </artists>
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <response status="ok" version="1.2"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:noNamespaceSchemaLocation="http://api.7digital.com/1.2/static/7digitalAPI.xsd">
5
+ <artists>
6
+ <page>1</page>
7
+ <pageSize>10</pageSize>
8
+ <totalItems>3256</totalItems>
9
+ <artist id="144641">
10
+ <name>P J Harvey</name>
11
+ <url>http://www.7digital.com/artists/p-j-harvey/?partner=123</url>
12
+ <sortName>P J Harvey</sortName>
13
+ <image>http://cdn.7static.com/static/img/artistimages/00/001/446/0000144641_50.jpg</image>
14
+ </artist>
15
+ <artist id="17168">
16
+ <name>P J Proby</name>
17
+ <url>http://www.7digital.com/artists/p-j-proby/?partner=123</url>
18
+ <sortName>P J Proby</sortName>
19
+ <image>http://cdn.7static.com/static/img/artistimages/00/001/716/000017168_50.jpg</image>
20
+ </artist>
21
+ </artists>
22
22
  </response>
@@ -1,51 +1,51 @@
1
- <?xml version="1.0" encoding="utf-8" ?>
2
- <response status="ok" version="1.2"
3
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
- xsi:noNamespaceSchemaLocation="http://api.7digital.com/1.2/static/7digitalAPI.xsd">
5
- <taggedResults>
6
- <page>1</page>
7
- <pageSize>5</pageSize>
8
- <totalItems>35</totalItems>
9
- <type>artist</type>
10
- <taggedItem>
11
- <artist id="382">
12
- <name>Gorillaz</name>
13
- <sortName>Gorillaz</sortName>
14
- <url>http://www.7digital.com/artists/gorillaz/?partner=712</url>
15
- <image>http://cdn.7static.com/static/img/artistimages/00/000/003/0000000382_150.jpg</image>
16
- </artist>
17
- </taggedItem>
18
- <taggedItem>
19
- <artist id="1244">
20
- <name>Pearl Jam</name>
21
- <sortName>Pearl Jam</sortName>
22
- <url>http://www.7digital.com/artists/pearl-jam/?partner=712</url>
23
- <image>http://cdn.7static.com/static/img/artistimages/00/000/012/0000001244_150.jpg</image>
24
- </artist>
25
- </taggedItem>
26
- <taggedItem>
27
- <artist id="8329">
28
- <name>Oasis</name>
29
- <sortName>Oasis</sortName>
30
- <url>http://www.7digital.com/artists/oasis/?partner=712</url>
31
- <image>http://cdn.7static.com/static/img/artistimages/00/000/083/0000008329_150.jpg</image>
32
- </artist>
33
- </taggedItem>
34
- <taggedItem>
35
- <artist id="922">
36
- <name>Kasabian</name>
37
- <sortName>Kasabian</sortName>
38
- <url>http://www.7digital.com/artists/kasabian/?partner=712</url>
39
- <image>http://cdn.7static.com/static/img/artistimages/00/000/009/0000000922_150.jpg</image>
40
- </artist>
41
- </taggedItem>
42
- <taggedItem>
43
- <artist id="12231">
44
- <name>The Coral</name>
45
- <sortName>Coral, The</sortName>
46
- <url>http://www.7digital.com/artists/the-coral/?partner=712</url>
47
- <image>http://cdn.7static.com/static/img/artistimages/00/000/122/0000012231_150.jpg</image>
48
- </artist>
49
- </taggedItem>
50
- </taggedResults>
1
+ <?xml version="1.0" encoding="utf-8" ?>
2
+ <response status="ok" version="1.2"
3
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
4
+ xsi:noNamespaceSchemaLocation="http://api.7digital.com/1.2/static/7digitalAPI.xsd">
5
+ <taggedResults>
6
+ <page>1</page>
7
+ <pageSize>5</pageSize>
8
+ <totalItems>35</totalItems>
9
+ <type>artist</type>
10
+ <taggedItem>
11
+ <artist id="382">
12
+ <name>Gorillaz</name>
13
+ <sortName>Gorillaz</sortName>
14
+ <url>http://www.7digital.com/artists/gorillaz/?partner=712</url>
15
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/003/0000000382_150.jpg</image>
16
+ </artist>
17
+ </taggedItem>
18
+ <taggedItem>
19
+ <artist id="1244">
20
+ <name>Pearl Jam</name>
21
+ <sortName>Pearl Jam</sortName>
22
+ <url>http://www.7digital.com/artists/pearl-jam/?partner=712</url>
23
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/012/0000001244_150.jpg</image>
24
+ </artist>
25
+ </taggedItem>
26
+ <taggedItem>
27
+ <artist id="8329">
28
+ <name>Oasis</name>
29
+ <sortName>Oasis</sortName>
30
+ <url>http://www.7digital.com/artists/oasis/?partner=712</url>
31
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/083/0000008329_150.jpg</image>
32
+ </artist>
33
+ </taggedItem>
34
+ <taggedItem>
35
+ <artist id="922">
36
+ <name>Kasabian</name>
37
+ <sortName>Kasabian</sortName>
38
+ <url>http://www.7digital.com/artists/kasabian/?partner=712</url>
39
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/009/0000000922_150.jpg</image>
40
+ </artist>
41
+ </taggedItem>
42
+ <taggedItem>
43
+ <artist id="12231">
44
+ <name>The Coral</name>
45
+ <sortName>Coral, The</sortName>
46
+ <url>http://www.7digital.com/artists/the-coral/?partner=712</url>
47
+ <image>http://cdn.7static.com/static/img/artistimages/00/000/122/0000012231_150.jpg</image>
48
+ </artist>
49
+ </taggedItem>
50
+ </taggedResults>
51
51
  </response>