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,123 +1,123 @@
1
- require "date"
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "Release" do
5
-
6
- before do
7
- @configuration = stub(OpenStruct)
8
- @configuration.stub!(:lazy_load).and_return(true)
9
-
10
- @client = stub(Sevendigital::Client)
11
- @client.stub!(:configuration).and_return(@configuration)
12
- @release_manager = mock(Sevendigital::ReleaseManager)
13
- @client.stub!(:release).and_return @release_manager
14
-
15
- @release = Sevendigital::Release.new(@client)
16
- @release.id = 1234
17
- end
18
-
19
- it "should get its basic details from manager" do
20
- expected_options = {:page => 2}
21
- fresh_release = fake_release_with_details
22
-
23
- @release_manager.should_receive(:get_details) { |release_id, options|
24
- release_id.should == @release.id
25
- (options.keys & expected_options.keys).should == expected_options.keys
26
- fresh_release
27
- }
28
- @release.get_details(expected_options)
29
-
30
- @release.version.should == fresh_release.version
31
- @release.type.should == fresh_release.type
32
- @release.artist.should == fresh_release.artist
33
- @release.image.should == fresh_release.image
34
- @release.url.should == fresh_release.url
35
- @release.release_date.should == fresh_release.release_date
36
- @release.added_date.should == fresh_release.added_date
37
- @release.barcode.should == fresh_release.barcode
38
- @release.year.should == fresh_release.year
39
- @release.explicit_content.should == fresh_release.explicit_content
40
- @release.formats.should == fresh_release.formats
41
- @release.label.should == fresh_release.label
42
- @release.price.should == fresh_release.price
43
-
44
- end
45
-
46
- it "should lazy load price even if already populated but price value is not available" do
47
- @release.price = Sevendigital::Price.new
48
- @release.should_receive(:demand_price)
49
- @release.price
50
-
51
- end
52
-
53
- it "get_tracks should get tracks from manager" do
54
- expected_options = {:page => 2}
55
-
56
- @release_manager.should_receive(:get_tracks) { |release_id, options|
57
- release_id.should == @release.id
58
- (options.keys & expected_options.keys).should == expected_options.keys
59
- fake_track_list
60
- }
61
- @release.get_tracks(expected_options)
62
-
63
- end
64
-
65
-
66
- it "get_recommendations should get recommendations from manager" do
67
- expected_options = {:page => 2}
68
-
69
- @release_manager.should_receive(:get_recommendations) { |release_id, options|
70
- release_id.should == @release.id
71
- (options.keys & expected_options.keys).should == expected_options.keys
72
- fake_releases_list
73
- }
74
- @release.get_recommendations(expected_options)
75
-
76
- end
77
-
78
- it "get_tags should get tags from manager" do
79
- expected_options = {:page => 2}
80
-
81
- @release_manager.should_receive(:get_tags) { |release_id, options|
82
- release_id.should == @release.id
83
- (options.keys & expected_options.keys).should == expected_options.keys
84
- []
85
- }
86
- @release.get_tags(expected_options)
87
-
88
- end
89
-
90
- def fake_releases_list
91
- releases = Array.new
92
- releases << Sevendigital::Release.new(@client)
93
- releases << Sevendigital::Release.new(@client)
94
- releases
95
- end
96
-
97
- def fake_track_list
98
- tracks = Array.new
99
- tracks << Sevendigital::Track.new(@client)
100
- tracks << Sevendigital::Track.new(@client)
101
- tracks
102
- end
103
-
104
- def fake_release_with_details
105
- release = Sevendigital::Release.new(@client)
106
- release.version = "(release version)"
107
- release.type = :album
108
- release.artist = Sevendigital::Artist.new(@client)
109
- release.image = "image"
110
- release.url = "url"
111
- release.release_date = DateTime.new(2010, 1, 1)
112
- release.added_date = DateTime.new(2000, 1, 1)
113
- release.barcode = "AAA"
114
- release.year = 1999
115
- release.explicit_content = true
116
- release.formats = []
117
- release.label = Sevendigital::Label.new
118
- price = Sevendigital::Price.new
119
- price.value = 5
120
- release.price = price
121
- release
122
- end
1
+ require "date"
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "Release" do
5
+
6
+ before do
7
+ @configuration = stub(OpenStruct)
8
+ @configuration.stub!(:lazy_load).and_return(true)
9
+
10
+ @client = stub(Sevendigital::Client)
11
+ @client.stub!(:configuration).and_return(@configuration)
12
+ @release_manager = mock(Sevendigital::ReleaseManager)
13
+ @client.stub!(:release).and_return @release_manager
14
+
15
+ @release = Sevendigital::Release.new(@client)
16
+ @release.id = 1234
17
+ end
18
+
19
+ it "should get its basic details from manager" do
20
+ expected_options = {:page => 2}
21
+ fresh_release = fake_release_with_details
22
+
23
+ @release_manager.should_receive(:get_details) { |release_id, options|
24
+ release_id.should == @release.id
25
+ (options.keys & expected_options.keys).should == expected_options.keys
26
+ fresh_release
27
+ }
28
+ @release.get_details(expected_options)
29
+
30
+ @release.version.should == fresh_release.version
31
+ @release.type.should == fresh_release.type
32
+ @release.artist.should == fresh_release.artist
33
+ @release.image.should == fresh_release.image
34
+ @release.url.should == fresh_release.url
35
+ @release.release_date.should == fresh_release.release_date
36
+ @release.added_date.should == fresh_release.added_date
37
+ @release.barcode.should == fresh_release.barcode
38
+ @release.year.should == fresh_release.year
39
+ @release.explicit_content.should == fresh_release.explicit_content
40
+ @release.formats.should == fresh_release.formats
41
+ @release.label.should == fresh_release.label
42
+ @release.price.should == fresh_release.price
43
+
44
+ end
45
+
46
+ it "should lazy load price even if already populated but price value is not available" do
47
+ @release.price = Sevendigital::Price.new
48
+ @release.should_receive(:demand_price)
49
+ @release.price
50
+
51
+ end
52
+
53
+ it "get_tracks should get tracks from manager" do
54
+ expected_options = {:page => 2}
55
+
56
+ @release_manager.should_receive(:get_tracks) { |release_id, options|
57
+ release_id.should == @release.id
58
+ (options.keys & expected_options.keys).should == expected_options.keys
59
+ fake_track_list
60
+ }
61
+ @release.get_tracks(expected_options)
62
+
63
+ end
64
+
65
+
66
+ it "get_recommendations should get recommendations from manager" do
67
+ expected_options = {:page => 2}
68
+
69
+ @release_manager.should_receive(:get_recommendations) { |release_id, options|
70
+ release_id.should == @release.id
71
+ (options.keys & expected_options.keys).should == expected_options.keys
72
+ fake_releases_list
73
+ }
74
+ @release.get_recommendations(expected_options)
75
+
76
+ end
77
+
78
+ it "get_tags should get tags from manager" do
79
+ expected_options = {:page => 2}
80
+
81
+ @release_manager.should_receive(:get_tags) { |release_id, options|
82
+ release_id.should == @release.id
83
+ (options.keys & expected_options.keys).should == expected_options.keys
84
+ []
85
+ }
86
+ @release.get_tags(expected_options)
87
+
88
+ end
89
+
90
+ def fake_releases_list
91
+ releases = Array.new
92
+ releases << Sevendigital::Release.new(@client)
93
+ releases << Sevendigital::Release.new(@client)
94
+ releases
95
+ end
96
+
97
+ def fake_track_list
98
+ tracks = Array.new
99
+ tracks << Sevendigital::Track.new(@client)
100
+ tracks << Sevendigital::Track.new(@client)
101
+ tracks
102
+ end
103
+
104
+ def fake_release_with_details
105
+ release = Sevendigital::Release.new(@client)
106
+ release.version = "(release version)"
107
+ release.type = :album
108
+ release.artist = Sevendigital::Artist.new(@client)
109
+ release.image = "image"
110
+ release.url = "url"
111
+ release.release_date = DateTime.new(2010, 1, 1)
112
+ release.added_date = DateTime.new(2000, 1, 1)
113
+ release.barcode = "AAA"
114
+ release.year = 1999
115
+ release.explicit_content = true
116
+ release.formats = []
117
+ release.label = Sevendigital::Label.new
118
+ price = Sevendigital::Price.new
119
+ price.value = 5
120
+ release.price = price
121
+ release
122
+ end
123
123
  end
@@ -1,74 +1,74 @@
1
- require "date"
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "SevendigitalObject" do
5
-
6
- before do
7
-
8
- @configuration = stub(Sevendigital::ClientConfiguration)
9
- @configuration.stub!(:lazy_load).and_return(true)
10
-
11
- @client = stub(Sevendigital::Client)
12
- @client.stub!(:configuration).and_return(@configuration)
13
- @client.stub!(:verbose?).and_return(true)
14
- @test_object = Sevendigital::SevendigitalObject.new(@client)
15
- end
16
-
17
- it "sevendigital extended property should define accessor that calls demand method" do
18
- class TestClass < Sevendigital::SevendigitalObject
19
- sevendigital_extended_property :test_property
20
- end
21
-
22
- test_object = TestClass.new(@client)
23
- test_object.should_receive(:demand_test_property)
24
- test_object.test_property
25
-
26
- end
27
-
28
- it "sevendigital extended property should define accessor that doesn't swallow SevenDigital errors" do
29
- class TestClass < Sevendigital::SevendigitalObject
30
- sevendigital_extended_property :test_property
31
- end
32
- @configuration.stub!(:ignorant_lazy_load).and_return(false)
33
- test_object = TestClass.new(@client)
34
- test_object.should_receive(:demand_test_property).and_raise(Sevendigital::SevendigitalError)
35
- running {test_object.test_property}.should raise_error(Sevendigital::SevendigitalError)
36
- end
37
-
38
- it "sevendigital extended property should define accessor that swallows SevenDigital errors if client is ignorant" do
39
- class TestClass < Sevendigital::SevendigitalObject
40
- sevendigital_extended_property :test_property
41
- end
42
- @configuration.stub!(:ignorant_lazy_load).and_return(true)
43
- test_object = TestClass.new(@client)
44
- test_object.should_receive(:demand_test_property).and_raise(Sevendigital::SevendigitalError)
45
- test_object.test_property
46
- end
47
-
48
- it "sevendigital extended property should define demand method that calls get method if property not set" do
49
- class TestClass < Sevendigital::SevendigitalObject
50
- sevendigital_extended_property :test_property
51
- end
52
-
53
- test_object = TestClass.new(@client)
54
- test_object.should_receive(:get_test_property).and_return("a value")
55
- test_object.instance_variable_get("@test_property").should == nil
56
- test_object.demand_test_property
57
- test_object.instance_variable_get("@test_property").should == "a value"
58
-
59
- end
60
-
61
- it "sevendigital extended property should define demand method that does nothing if property is set" do
62
- class TestClass < Sevendigital::SevendigitalObject
63
- sevendigital_extended_property :test_property
64
- end
65
-
66
- test_object = TestClass.new(@client)
67
- test_object.instance_variable_set("@test_property", "a value")
68
- test_object.should_not_receive(:get_test_property)
69
- test_object.demand_test_property
70
-
71
- end
72
-
73
-
1
+ require "date"
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "SevendigitalObject" do
5
+
6
+ before do
7
+
8
+ @configuration = stub(Sevendigital::ClientConfiguration)
9
+ @configuration.stub!(:lazy_load).and_return(true)
10
+
11
+ @client = stub(Sevendigital::Client)
12
+ @client.stub!(:configuration).and_return(@configuration)
13
+ @client.stub!(:verbose?).and_return(true)
14
+ @test_object = Sevendigital::SevendigitalObject.new(@client)
15
+ end
16
+
17
+ it "sevendigital extended property should define accessor that calls demand method" do
18
+ class TestClass < Sevendigital::SevendigitalObject
19
+ sevendigital_extended_property :test_property
20
+ end
21
+
22
+ test_object = TestClass.new(@client)
23
+ test_object.should_receive(:demand_test_property)
24
+ test_object.test_property
25
+
26
+ end
27
+
28
+ it "sevendigital extended property should define accessor that doesn't swallow SevenDigital errors" do
29
+ class TestClass < Sevendigital::SevendigitalObject
30
+ sevendigital_extended_property :test_property
31
+ end
32
+ @configuration.stub!(:ignorant_lazy_load).and_return(false)
33
+ test_object = TestClass.new(@client)
34
+ test_object.should_receive(:demand_test_property).and_raise(Sevendigital::SevendigitalError)
35
+ running {test_object.test_property}.should raise_error(Sevendigital::SevendigitalError)
36
+ end
37
+
38
+ it "sevendigital extended property should define accessor that swallows SevenDigital errors if client is ignorant" do
39
+ class TestClass < Sevendigital::SevendigitalObject
40
+ sevendigital_extended_property :test_property
41
+ end
42
+ @configuration.stub!(:ignorant_lazy_load).and_return(true)
43
+ test_object = TestClass.new(@client)
44
+ test_object.should_receive(:demand_test_property).and_raise(Sevendigital::SevendigitalError)
45
+ test_object.test_property
46
+ end
47
+
48
+ it "sevendigital extended property should define demand method that calls get method if property not set" do
49
+ class TestClass < Sevendigital::SevendigitalObject
50
+ sevendigital_extended_property :test_property
51
+ end
52
+
53
+ test_object = TestClass.new(@client)
54
+ test_object.should_receive(:get_test_property).and_return("a value")
55
+ test_object.instance_variable_get("@test_property").should == nil
56
+ test_object.demand_test_property
57
+ test_object.instance_variable_get("@test_property").should == "a value"
58
+
59
+ end
60
+
61
+ it "sevendigital extended property should define demand method that does nothing if property is set" do
62
+ class TestClass < Sevendigital::SevendigitalObject
63
+ sevendigital_extended_property :test_property
64
+ end
65
+
66
+ test_object = TestClass.new(@client)
67
+ test_object.instance_variable_set("@test_property", "a value")
68
+ test_object.should_not_receive(:get_test_property)
69
+ test_object.demand_test_property
70
+
71
+ end
72
+
73
+
74
74
  end
@@ -1,145 +1,145 @@
1
- require "date"
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "Track" do
5
-
6
- before do
7
- @client = stub(Sevendigital::Client)
8
- @track_manager = mock(Sevendigital::TrackManager)
9
- @client.stub!(:track).and_return @track_manager
10
- @client.stub!(:configuration).and_return OpenStruct.new
11
-
12
- @track = Sevendigital::Track.new(@client)
13
- @track.id = 1234
14
- @track.release = Sevendigital::Release.new(@client)
15
- @track.release.id = 5678
16
- end
17
-
18
- it "get_details should get track's basic details from track manager " do
19
- expected_options = {:page => 2}
20
- fresh_track = fake_track_with_details
21
-
22
- @track_manager.should_receive(:get_details_from_release) { |track_id, release_id, options|
23
- track_id.should == @track.id
24
- release_id.should == @track.release.id
25
- (options.keys & expected_options.keys).should == expected_options.keys
26
- fresh_track
27
- }
28
- @track.get_details(expected_options)
29
-
30
- @track.track_number.should == fresh_track.track_number
31
- @track.duration.should == fresh_track.duration
32
- @track.explicit_content.should == fresh_track.explicit_content
33
- @track.isrc.should == fresh_track.isrc
34
- @track.release.id.should == fresh_track.release.id
35
- @track.url.should == fresh_track.url
36
-
37
- end
38
-
39
- it "preview_url should get preview URL from manager" do
40
- expected_options = {:country => "mx"}
41
- fake_preview_url = "http://preview.com/trackid/123456"
42
-
43
- @track_manager.should_receive(:build_preview_url) { |track_id, options|
44
- track_id.should == @track.id
45
- (options.keys & expected_options.keys).should == expected_options.keys
46
- fake_preview_url
47
- }
48
-
49
- @track.preview_url(expected_options).should == fake_preview_url
50
-
51
- end
52
-
53
- it "should have a short title without any version in brackets" do
54
-
55
- @track.title = "Girl With One Eye (Bayou Percussion Version)"
56
- @track.short_title.should == "Girl With One Eye"
57
-
58
- @track.title = "The Thing I Like Best About Him Is His Girlfriend (Gr's Man-Made Island Edition)"
59
- @track.short_title.should == "The Thing I Like Best About Him Is His Girlfriend"
60
-
61
- @track.title = "Your Head to Your Toes (Live at the BBC)"
62
- @track.short_title.should == "Your Head to Your Toes"
63
-
64
- @track.title = "Welcome To The World of The Plastic Beach (Feat. Snoop Dogg and Hypnotic Brass Ensemble)"
65
- @track.short_title.should == "Welcome To The World of The Plastic Beach"
66
-
67
- @track.title = "(lp version)"
68
- @track.short_title.should == "(lp version)"
69
-
70
- @track.title = "What's the Story (Morning Glory)"
71
- @track.short_title.should == "What's the Story (Morning Glory)"
72
-
73
- @track.title = "track 1 (something else)"
74
- @track.short_title.should == "track 1 (something else)"
75
-
76
- @track.title = "track 1 (dj remix)"
77
- @track.short_title.should == "track 1"
78
-
79
- @track.title = "track 1 ( dj mix )"
80
- @track.short_title.should == "track 1"
81
- end
82
-
83
- describe "alternate_version?" do
84
-
85
- before do
86
- @artist1 = Sevendigital::Artist.new(@client)
87
- @artist2 = Sevendigital::Artist.new(@client)
88
- @track1 = Sevendigital::Track.new(@client)
89
- @track1.artist = @artist1
90
- @track2 = Sevendigital::Track.new(@client)
91
- @track2.artist = @artist2
92
-
93
- @artist1.name = "artist 1"
94
- @track1.title = "track 1"
95
-
96
- end
97
-
98
- it "should be considered alternate version if artist names and titles match" do
99
- @artist2.name = "Artist 1"
100
- @track2.title = "Track 1"
101
-
102
- @track1.alternate_version_of?(@track2).should == true
103
- end
104
-
105
- it "should be considered alternate version if artist names and short titles match" do
106
- @track1.title = "track 1 (uk version)"
107
-
108
- @artist2.name = "Artist 1"
109
- @track2.title = "TRACK 1 (us remix)"
110
-
111
- @track1.alternate_version_of?(@track2).should == true
112
- end
113
-
114
- it "should not be considered alternate version if artist names don't match" do
115
- @artist2.name = "artist 2"
116
- @track2.title = "track 1"
117
-
118
- @track1.alternate_version_of?(@track2).should == false
119
- end
120
-
121
- it "should not be considered alternate version if short titles don't match" do
122
- @artist2.name = "artist 1"
123
- @track2.title = "track 2"
124
-
125
- @track1.alternate_version_of?(@track2).should == false
126
- end
127
-
128
-
129
- end
130
-
131
- def fake_track_with_details
132
- track = Sevendigital::Track.new(@client)
133
- track.title = "Song 1"
134
- track.version = "Version 2"
135
- track.artist = Sevendigital::Artist.new(@client)
136
- track.track_number = 7
137
- track.duration = 77
138
- track.explicit_content = true
139
- track.isrc = "7D"
140
- track.release = Sevendigital::Release.new(@client)
141
- track.release.id = 5678
142
- track.url = "http://aaa.bbb.ccc/"
143
- track
144
- end
1
+ require "date"
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "Track" do
5
+
6
+ before do
7
+ @client = stub(Sevendigital::Client)
8
+ @track_manager = mock(Sevendigital::TrackManager)
9
+ @client.stub!(:track).and_return @track_manager
10
+ @client.stub!(:configuration).and_return OpenStruct.new
11
+
12
+ @track = Sevendigital::Track.new(@client)
13
+ @track.id = 1234
14
+ @track.release = Sevendigital::Release.new(@client)
15
+ @track.release.id = 5678
16
+ end
17
+
18
+ it "get_details should get track's basic details from track manager " do
19
+ expected_options = {:page => 2}
20
+ fresh_track = fake_track_with_details
21
+
22
+ @track_manager.should_receive(:get_details_from_release) { |track_id, release_id, options|
23
+ track_id.should == @track.id
24
+ release_id.should == @track.release.id
25
+ (options.keys & expected_options.keys).should == expected_options.keys
26
+ fresh_track
27
+ }
28
+ @track.get_details(expected_options)
29
+
30
+ @track.track_number.should == fresh_track.track_number
31
+ @track.duration.should == fresh_track.duration
32
+ @track.explicit_content.should == fresh_track.explicit_content
33
+ @track.isrc.should == fresh_track.isrc
34
+ @track.release.id.should == fresh_track.release.id
35
+ @track.url.should == fresh_track.url
36
+
37
+ end
38
+
39
+ it "preview_url should get preview URL from manager" do
40
+ expected_options = {:country => "mx"}
41
+ fake_preview_url = "http://preview.com/trackid/123456"
42
+
43
+ @track_manager.should_receive(:build_preview_url) { |track_id, options|
44
+ track_id.should == @track.id
45
+ (options.keys & expected_options.keys).should == expected_options.keys
46
+ fake_preview_url
47
+ }
48
+
49
+ @track.preview_url(expected_options).should == fake_preview_url
50
+
51
+ end
52
+
53
+ it "should have a short title without any version in brackets" do
54
+
55
+ @track.title = "Girl With One Eye (Bayou Percussion Version)"
56
+ @track.short_title.should == "Girl With One Eye"
57
+
58
+ @track.title = "The Thing I Like Best About Him Is His Girlfriend (Gr's Man-Made Island Edition)"
59
+ @track.short_title.should == "The Thing I Like Best About Him Is His Girlfriend"
60
+
61
+ @track.title = "Your Head to Your Toes (Live at the BBC)"
62
+ @track.short_title.should == "Your Head to Your Toes"
63
+
64
+ @track.title = "Welcome To The World of The Plastic Beach (Feat. Snoop Dogg and Hypnotic Brass Ensemble)"
65
+ @track.short_title.should == "Welcome To The World of The Plastic Beach"
66
+
67
+ @track.title = "(lp version)"
68
+ @track.short_title.should == "(lp version)"
69
+
70
+ @track.title = "What's the Story (Morning Glory)"
71
+ @track.short_title.should == "What's the Story (Morning Glory)"
72
+
73
+ @track.title = "track 1 (something else)"
74
+ @track.short_title.should == "track 1 (something else)"
75
+
76
+ @track.title = "track 1 (dj remix)"
77
+ @track.short_title.should == "track 1"
78
+
79
+ @track.title = "track 1 ( dj mix )"
80
+ @track.short_title.should == "track 1"
81
+ end
82
+
83
+ describe "alternate_version?" do
84
+
85
+ before do
86
+ @artist1 = Sevendigital::Artist.new(@client)
87
+ @artist2 = Sevendigital::Artist.new(@client)
88
+ @track1 = Sevendigital::Track.new(@client)
89
+ @track1.artist = @artist1
90
+ @track2 = Sevendigital::Track.new(@client)
91
+ @track2.artist = @artist2
92
+
93
+ @artist1.name = "artist 1"
94
+ @track1.title = "track 1"
95
+
96
+ end
97
+
98
+ it "should be considered alternate version if artist names and titles match" do
99
+ @artist2.name = "Artist 1"
100
+ @track2.title = "Track 1"
101
+
102
+ @track1.alternate_version_of?(@track2).should == true
103
+ end
104
+
105
+ it "should be considered alternate version if artist names and short titles match" do
106
+ @track1.title = "track 1 (uk version)"
107
+
108
+ @artist2.name = "Artist 1"
109
+ @track2.title = "TRACK 1 (us remix)"
110
+
111
+ @track1.alternate_version_of?(@track2).should == true
112
+ end
113
+
114
+ it "should not be considered alternate version if artist names don't match" do
115
+ @artist2.name = "artist 2"
116
+ @track2.title = "track 1"
117
+
118
+ @track1.alternate_version_of?(@track2).should == false
119
+ end
120
+
121
+ it "should not be considered alternate version if short titles don't match" do
122
+ @artist2.name = "artist 1"
123
+ @track2.title = "track 2"
124
+
125
+ @track1.alternate_version_of?(@track2).should == false
126
+ end
127
+
128
+
129
+ end
130
+
131
+ def fake_track_with_details
132
+ track = Sevendigital::Track.new(@client)
133
+ track.title = "Song 1"
134
+ track.version = "Version 2"
135
+ track.artist = Sevendigital::Artist.new(@client)
136
+ track.track_number = 7
137
+ track.duration = 77
138
+ track.explicit_content = true
139
+ track.isrc = "7D"
140
+ track.release = Sevendigital::Release.new(@client)
141
+ track.release.id = 5678
142
+ track.url = "http://aaa.bbb.ccc/"
143
+ track
144
+ end
145
145
  end