7digital 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
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,112 +1,49 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
- require 'time'
3
-
4
- describe "ApiResponse" do
5
-
6
- it "should be ok if error code is 0 and content is not empty" do
7
-
8
- response = Sevendigital::ApiResponse.new
9
- response.error_code = 0
10
- response.content = '<xml></xml>'
11
- response.ok?.should == true
12
-
13
- end
14
-
15
- it "should not be ok if error code is not 0" do
16
-
17
- response = Sevendigital::ApiResponse.new
18
- response.error_code = 5
19
- response.content = '<xml></xml>'
20
- response.ok?.should == false
21
-
22
- end
23
-
24
- it "should not be ok if response content is nil" do
25
-
26
- response = Sevendigital::ApiResponse.new
27
- response.error_code = 0
28
- response.ok?.should == false
29
-
30
- end
31
-
32
- it "should be serializable" do
33
- original_response = Sevendigital::ApiResponseDigestor.new(@client).from_xml\
34
- ("<response status='ok'><testElement id='123'>value</testElement></response>")
35
- original_response.error_code = 99
36
- original_response.headers = {"header" => "value"}
37
-
38
-
39
- tmp = Marshal.dump(original_response)
40
- restored_response = Marshal.load(tmp)
41
-
42
- restored_response.error_code.should == original_response.error_code
43
- restored_response.content.to_s.should == original_response.content.to_s
44
- restored_response.content.test_element.value.should == "value"
45
- restored_response.headers.should == original_response.headers
46
-
47
- end
48
-
49
- it "should be out of date if it's past its cache max age" do
50
- now = Time.now.utc
51
- yesterday = now - 24*60*60
52
- max_age = 12*60*60
53
-
54
- response = Sevendigital::ApiResponse.new
55
- response.headers = {"cache-control" => "private, max-age=#{max_age}", "Date" => yesterday.httpdate}
56
-
57
- response.out_of_date?(now).should == true
58
-
59
- end
60
-
61
- it "should be out of date if it's past its cache max age" do
62
- now = Time.now.utc
63
- yesterday = now - 24*60*60
64
- max_age = 12*60*60
65
-
66
- response = Sevendigital::ApiResponse.new
67
- response.headers = {"cache-control" => "private, max-age=#{max_age}", "Date" => yesterday.httpdate}
68
-
69
- response.out_of_date?(now).should == true
70
-
71
- end
72
-
73
- it "should not be out of date if it's within its cache max age" do
74
- now = Time.now.utc
75
- yesterday = now - 24*60*60
76
- max_age = 48*60*60
77
- # stub_time(now)
78
-
79
- response = Sevendigital::ApiResponse.new
80
- response.headers = {"cache-control" => "private, max-age=#{max_age}", "Date" => yesterday.httpdate}
81
-
82
- response.out_of_date?(now).should == false
83
-
84
- end
85
-
86
- it "should be out of date if it is missing caching headers" do
87
-
88
- response = Sevendigital::ApiResponse.new
89
- response.out_of_date?(Time.now.utc).should == true
90
-
91
- response.headers = {"Date" => Time.now.utc.httpdate}
92
- response.out_of_date?(Time.now.utc).should == true
93
-
94
- end
95
-
96
- it "should be out of date if no max-age has been specified" do
97
-
98
- response = Sevendigital::ApiResponse.new
99
- response.headers = {"cache-control" => "no-cache", "Date" => Time.now.utc.httpdate}
100
- response.out_of_date?(Time.now.utc).should == true
101
-
102
- end
103
-
104
- it "should be out of date if it is missing Date header" do
105
-
106
- response = Sevendigital::ApiResponse.new
107
- response.headers = {"cache-control" => "private, max-age=#{2**30}"}
108
- response.out_of_date?(Time.now.utc).should == true
109
-
110
- end
111
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+ require 'time'
3
+
4
+ describe "ApiResponse" do
5
+
6
+ it "should be ok if error code is 0 and content is not empty" do
7
+
8
+ response = Sevendigital::ApiResponse.new
9
+ response.error_code = 0
10
+ response.content = '<xml></xml>'
11
+ response.ok?.should == true
12
+
13
+ end
14
+
15
+ it "should not be ok if error code is not 0" do
16
+
17
+ response = Sevendigital::ApiResponse.new
18
+ response.error_code = 5
19
+ response.content = '<xml></xml>'
20
+ response.ok?.should == false
21
+
22
+ end
23
+
24
+ it "should not be ok if response content is nil" do
25
+
26
+ response = Sevendigital::ApiResponse.new
27
+ response.error_code = 0
28
+ response.ok?.should == false
29
+
30
+ end
31
+
32
+ it "should be serializable" do
33
+ original_response = Sevendigital::ApiResponseDigestor.new(@client).from_xml\
34
+ ("<response status='ok'><testElement id='123'>value</testElement></response>")
35
+ original_response.error_code = 99
36
+ original_response.headers = {"header" => "value"}
37
+
38
+
39
+ tmp = Marshal.dump(original_response)
40
+ restored_response = Marshal.load(tmp)
41
+
42
+ restored_response.error_code.should == original_response.error_code
43
+ restored_response.content.to_s.should == original_response.content.to_s
44
+ restored_response.content.test_element.value.should == "value"
45
+ restored_response.headers.should == original_response.headers
46
+
47
+ end
48
+
112
49
  end
@@ -1,142 +1,155 @@
1
- require "date"
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "Artist" do
5
-
6
- before do
7
- @client = stub(Sevendigital::Client)
8
- @artist_manager = mock(Sevendigital::ArtistManager)
9
- @client.stub!(:artist).and_return @artist_manager
10
-
11
- @artist = Sevendigital::Artist.new(@client)
12
- @artist.id = 1234
13
- end
14
-
15
- it "get_details should get artist's basic details from manager" do
16
- expected_options = {:page => 2}
17
- fresh_artist = fake_artist_with_details
18
-
19
- @artist_manager.should_receive(:get_details) { |artist_id, options|
20
- artist_id.should == @artist.id
21
- (options.keys & expected_options.keys).should == expected_options.keys
22
- fresh_artist
23
- }
24
- @artist.get_details(expected_options)
25
-
26
- @artist.sort_name.should == fresh_artist.sort_name
27
- @artist.image.should == fresh_artist.image
28
- @artist.url.should == fresh_artist.url
29
-
30
- end
31
-
32
- it "get_releases should get releases from manager" do
33
- expected_options = {:page => 2}
34
-
35
- @artist_manager.should_receive(:get_releases) { |artist_id, options|
36
- artist_id.should == @artist.id
37
- (options.keys & expected_options.keys).should == expected_options.keys
38
- fake_release_list
39
- }
40
- @artist.get_releases(expected_options)
41
-
42
- end
43
-
44
- it "get_top_tracks should get tracks from manager" do
45
- expected_options = {:page => 2}
46
-
47
- @artist_manager.should_receive(:get_top_tracks) { |artist_id, options|
48
- artist_id.should == @artist.id
49
- (options.keys & expected_options.keys).should == expected_options.keys
50
- fake_track_list
51
- }
52
- @artist.get_top_tracks(expected_options)
53
-
54
- end
55
-
56
- it "get_similar should get similar artists from manager" do
57
- expected_options = {:page => 2}
58
-
59
- @artist_manager.should_receive(:get_similar) { |artist_id, options|
60
- artist_id.should == @artist.id
61
- (options.keys & expected_options.keys).should == expected_options.keys
62
- fake_artist_list
63
- }
64
- @artist.get_similar(expected_options)
65
-
66
- end
67
-
68
- it "should be a various artist if name contains various" do
69
-
70
- @artist.name = "various"
71
- @artist.various?.should == true
72
-
73
- end
74
-
75
- it "should be a various artist if appears as contains various" do
76
-
77
- @artist.name = "mr"
78
- @artist.appears_as = "mr various"
79
- @artist.various?.should == true
80
-
81
- end
82
-
83
- it "should be a various artist if resembles various artist" do
84
-
85
- @artist.name = "v.a."
86
- @artist.various?.should == true
87
- @artist.name = "vario"
88
- @artist.various?.should == true
89
- @artist.name = "vaious"
90
- @artist.various?.should == true
91
- @artist.name = "varios"
92
- @artist.various?.should == true
93
- @artist.name = "aaaa"
94
- @artist.various?.should == false
95
- @artist.name = "vaious"
96
- @artist.various?.should == true
97
- @artist.name = "varoius"
98
- @artist.various?.should == true
99
- @artist.name = "variuos"
100
- @artist.various?.should == true
101
-
102
- end
103
-
104
- it "should not be a various artist if it doesn't resemble various artist" do
105
-
106
- @artist.name = "mr small"
107
- @artist.appears_as = "mr big"
108
- @artist.various?.should == false
109
-
110
- end
111
-
112
-
113
-
114
- def fake_track_list
115
- tracks = Array.new
116
- tracks << Sevendigital::Track.new(@client)
117
- tracks << Sevendigital::Track.new(@client)
118
- tracks
119
- end
120
-
121
- def fake_release_list
122
- releases = Array.new
123
- releases << Sevendigital::Release.new(@client)
124
- releases << Sevendigital::Release.new(@client)
125
- releases
126
- end
127
-
128
- def fake_artist_list
129
- artists = Array.new
130
- artists << Sevendigital::Artist.new(@client)
131
- artists << Sevendigital::Artist.new(@client)
132
- artists
133
- end
134
-
135
- def fake_artist_with_details
136
- artist = Sevendigital::Artist.new(@client)
137
- artist.sort_name = "The, The"
138
- artist.image = "image"
139
- artist.url = "url"
140
- artist
141
- end
1
+ require "date"
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "Artist" do
5
+
6
+ before do
7
+ @client = stub(Sevendigital::Client)
8
+ @artist_manager = mock(Sevendigital::ArtistManager)
9
+ @client.stub!(:artist).and_return @artist_manager
10
+
11
+ @artist = Sevendigital::Artist.new(@client)
12
+ @artist.id = 1234
13
+ end
14
+
15
+ it "get_details should get artist's basic details from manager" do
16
+ expected_options = {:page => 2}
17
+ fresh_artist = fake_artist_with_details
18
+
19
+ @artist_manager.should_receive(:get_details) { |artist_id, options|
20
+ artist_id.should == @artist.id
21
+ (options.keys & expected_options.keys).should == expected_options.keys
22
+ fresh_artist
23
+ }
24
+ @artist.get_details(expected_options)
25
+
26
+ @artist.sort_name.should == fresh_artist.sort_name
27
+ @artist.image.should == fresh_artist.image
28
+ @artist.url.should == fresh_artist.url
29
+
30
+ end
31
+
32
+ it "get_releases should get releases from manager" do
33
+ expected_options = {:page => 2}
34
+
35
+ @artist_manager.should_receive(:get_releases) { |artist_id, options|
36
+ artist_id.should == @artist.id
37
+ (options.keys & expected_options.keys).should == expected_options.keys
38
+ fake_release_list
39
+ }
40
+ @artist.get_releases(expected_options)
41
+
42
+ end
43
+
44
+ it "get_top_tracks should get tracks from manager" do
45
+ expected_options = {:page => 2}
46
+
47
+ @artist_manager.should_receive(:get_top_tracks) { |artist_id, options|
48
+ artist_id.should == @artist.id
49
+ (options.keys & expected_options.keys).should == expected_options.keys
50
+ fake_track_list
51
+ }
52
+ @artist.get_top_tracks(expected_options)
53
+
54
+ end
55
+
56
+ it "get_similar should get similar artists from manager" do
57
+ expected_options = {:page => 2}
58
+
59
+ @artist_manager.should_receive(:get_similar) { |artist_id, options|
60
+ artist_id.should == @artist.id
61
+ (options.keys & expected_options.keys).should == expected_options.keys
62
+ fake_artist_list
63
+ }
64
+ @artist.get_similar(expected_options)
65
+
66
+ end
67
+
68
+ it "get_tags should get tags from manager" do
69
+ expected_options = {:page => 2}
70
+
71
+ @artist_manager.should_receive(:get_tags) { |artist_id, options|
72
+ artist_id.should == @artist.id
73
+ (options.keys & expected_options.keys).should == expected_options.keys
74
+ []
75
+ }
76
+ @artist.get_tags(expected_options)
77
+
78
+ end
79
+
80
+
81
+ it "should be a various artist if name contains various" do
82
+
83
+ @artist.name = "various"
84
+ @artist.various?.should == true
85
+
86
+ end
87
+
88
+ it "should be a various artist if appears as contains various" do
89
+
90
+ @artist.name = "mr"
91
+ @artist.appears_as = "mr various"
92
+ @artist.various?.should == true
93
+
94
+ end
95
+
96
+ it "should be a various artist if resembles various artist" do
97
+
98
+ @artist.name = "v.a."
99
+ @artist.various?.should == true
100
+ @artist.name = "vario"
101
+ @artist.various?.should == true
102
+ @artist.name = "vaious"
103
+ @artist.various?.should == true
104
+ @artist.name = "varios"
105
+ @artist.various?.should == true
106
+ @artist.name = "aaaa"
107
+ @artist.various?.should == false
108
+ @artist.name = "vaious"
109
+ @artist.various?.should == true
110
+ @artist.name = "varoius"
111
+ @artist.various?.should == true
112
+ @artist.name = "variuos"
113
+ @artist.various?.should == true
114
+
115
+ end
116
+
117
+ it "should not be a various artist if it doesn't resemble various artist" do
118
+
119
+ @artist.name = "mr small"
120
+ @artist.appears_as = "mr big"
121
+ @artist.various?.should == false
122
+
123
+ end
124
+
125
+
126
+
127
+ def fake_track_list
128
+ tracks = Array.new
129
+ tracks << Sevendigital::Track.new(@client)
130
+ tracks << Sevendigital::Track.new(@client)
131
+ tracks
132
+ end
133
+
134
+ def fake_release_list
135
+ releases = Array.new
136
+ releases << Sevendigital::Release.new(@client)
137
+ releases << Sevendigital::Release.new(@client)
138
+ releases
139
+ end
140
+
141
+ def fake_artist_list
142
+ artists = Array.new
143
+ artists << Sevendigital::Artist.new(@client)
144
+ artists << Sevendigital::Artist.new(@client)
145
+ artists
146
+ end
147
+
148
+ def fake_artist_with_details
149
+ artist = Sevendigital::Artist.new(@client)
150
+ artist.sort_name = "The, The"
151
+ artist.image = "image"
152
+ artist.url = "url"
153
+ artist
154
+ end
142
155
  end