7digital 0.0.7 → 0.1.0

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 (211) hide show
  1. data/README.rdoc +8 -1
  2. data/lib/sevendigital.rb +4 -2
  3. data/lib/sevendigital/api_operator.rb +92 -94
  4. data/lib/sevendigital/api_operator_cached.rb +55 -33
  5. data/lib/sevendigital/api_request.rb +50 -54
  6. data/lib/sevendigital/client.rb +15 -6
  7. data/lib/sevendigital/client_configuration.rb +0 -3
  8. data/lib/sevendigital/client_digestors.rb +15 -0
  9. data/lib/sevendigital/client_managers.rb +11 -1
  10. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +31 -40
  11. data/lib/sevendigital/digestion_tract/artist_digestor.rb +16 -13
  12. data/lib/sevendigital/digestion_tract/basket_digestor.rb +5 -5
  13. data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +12 -12
  14. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +17 -11
  15. data/lib/sevendigital/digestion_tract/country_digestor.rb +16 -0
  16. data/lib/sevendigital/digestion_tract/digestor.rb +82 -28
  17. data/lib/sevendigital/digestion_tract/download_url_digestor.rb +10 -7
  18. data/lib/sevendigital/digestion_tract/format_digestor.rb +11 -9
  19. data/lib/sevendigital/digestion_tract/label_digestor.rb +8 -7
  20. data/lib/sevendigital/digestion_tract/list_digestor.rb +24 -0
  21. data/lib/sevendigital/digestion_tract/list_item_digestor.rb +26 -0
  22. data/lib/sevendigital/digestion_tract/locker_digestor.rb +9 -5
  23. data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +13 -7
  24. data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +13 -9
  25. data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +7 -3
  26. data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +7 -3
  27. data/lib/sevendigital/digestion_tract/pager_digestor.rb +13 -9
  28. data/lib/sevendigital/digestion_tract/price_digestor.rb +15 -12
  29. data/lib/sevendigital/digestion_tract/release_digestor.rb +26 -34
  30. data/lib/sevendigital/digestion_tract/tag_digestor.rb +8 -7
  31. data/lib/sevendigital/digestion_tract/track_digestor.rb +27 -28
  32. data/lib/sevendigital/digestion_tract/user_card_digestor.rb +9 -8
  33. data/lib/sevendigital/digestion_tract/user_digestor.rb +8 -7
  34. data/lib/sevendigital/management/artist_manager.rb +9 -11
  35. data/lib/sevendigital/management/basket_manager.rb +4 -4
  36. data/lib/sevendigital/management/country_manager.rb +11 -0
  37. data/lib/sevendigital/management/list_manager.rb +18 -0
  38. data/lib/sevendigital/management/oauth_manager.rb +2 -2
  39. data/lib/sevendigital/management/release_manager.rb +9 -11
  40. data/lib/sevendigital/management/tag_manager.rb +1 -1
  41. data/lib/sevendigital/management/track_manager.rb +4 -5
  42. data/lib/sevendigital/management/user_card_manager.rb +2 -2
  43. data/lib/sevendigital/management/user_manager.rb +9 -4
  44. data/lib/sevendigital/model/api_response.rb +12 -4
  45. data/lib/sevendigital/model/artist.rb +5 -0
  46. data/lib/sevendigital/model/list.rb +5 -0
  47. data/lib/sevendigital/model/list_item.rb +9 -0
  48. data/lib/sevendigital/model/release.rb +2 -2
  49. data/lib/sevendigital/model/sevendigital_object.rb +1 -1
  50. data/lib/sevendigital/model/user.rb +12 -1
  51. data/lib/sevendigital/pager.rb +2 -6
  52. data/lib/sevendigital/version.rb +1 -1
  53. data/spec/api_operator_cached_spec.rb +14 -14
  54. data/spec/api_operator_spec.rb +18 -34
  55. data/spec/digestion_tract/api_response_digestor_spec.rb +26 -25
  56. data/spec/digestion_tract/artist_digestor_spec.rb +9 -9
  57. data/spec/digestion_tract/basket_digestor_spec.rb +2 -2
  58. data/spec/digestion_tract/basket_item_digestor_spec.rb +4 -4
  59. data/spec/digestion_tract/chart_digestor_spec.rb +4 -4
  60. data/spec/digestion_tract/country_digestor_spec.rb +33 -0
  61. data/spec/digestion_tract/digestor_spec.rb +34 -0
  62. data/spec/digestion_tract/download_url_digestor_spec.rb +2 -2
  63. data/spec/digestion_tract/format_digestor_spec.rb +2 -2
  64. data/spec/digestion_tract/label_digestor_spec.rb +2 -2
  65. data/spec/digestion_tract/list_digestor_spec.rb +32 -0
  66. data/spec/digestion_tract/list_item_digestor_spec.rb +80 -0
  67. data/spec/digestion_tract/locker_digestor_spec.rb +2 -2
  68. data/spec/digestion_tract/locker_release_digestor_spec.rb +5 -5
  69. data/spec/digestion_tract/locker_track_digestor_spec.rb +4 -4
  70. data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +2 -2
  71. data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +2 -2
  72. data/spec/digestion_tract/pager_digestor_spec.rb +3 -3
  73. data/spec/digestion_tract/price_digestor_spec.rb +4 -4
  74. data/spec/digestion_tract/release_digestor_spec.rb +19 -5
  75. data/spec/digestion_tract/tag_digestor_spec.rb +3 -3
  76. data/spec/digestion_tract/track_digestor_spec.rb +4 -4
  77. data/spec/digestion_tract/user_card_digestor_spec.rb +5 -5
  78. data/spec/digestion_tract/user_digestor_spec.rb +4 -6
  79. data/spec/integration/artist_spec.rb +86 -0
  80. data/spec/integration/country_spec.rb +18 -0
  81. data/spec/integration/list_spec.rb +22 -0
  82. data/spec/integration/purchasing_spec.rb +24 -0
  83. data/spec/integration/release_spec.rb +34 -0
  84. data/spec/integration/sevendigital_spec.yml +5 -0
  85. data/spec/integration/track_spec.rb +23 -0
  86. data/spec/integration/user_spec.rb +22 -0
  87. data/spec/management/artist_manager_spec.rb +32 -11
  88. data/spec/management/basket_manager_spec.rb +4 -4
  89. data/spec/management/country_manager_spec.rb +34 -0
  90. data/spec/management/list_manager_spec.rb +27 -0
  91. data/spec/management/oauth_manager_spec.rb +4 -4
  92. data/spec/management/release_manager_spec.rb +13 -13
  93. data/spec/management/tag_manager_spec.rb +1 -1
  94. data/spec/management/track_manager_spec.rb +4 -4
  95. data/spec/management/user_card_manager_spec.rb +2 -2
  96. data/spec/management/user_manager_spec.rb +20 -4
  97. data/spec/model/api_response_spec.rb +3 -3
  98. data/spec/model/artist_spec.rb +2 -2
  99. data/spec/model/sevendigital_object_spec.rb +4 -4
  100. data/spec/model/user_spec.rb +21 -0
  101. data/spec/spec_helper.rb +31 -11
  102. data/spec/test-xml/methods/country/resolve.xml +7 -0
  103. data/spec/test-xml/methods/editorial/list.xml +171 -0
  104. data/spec/test-xml/methods/user/details.xml +5 -0
  105. data/spec/test-xml/objects/artist.xml +1 -0
  106. data/spec/test-xml/objects/list.xml +89 -0
  107. data/spec/test-xml/objects/list_item_list.xml +86 -0
  108. data/spec/test-xml/objects/list_item_release.xml +14 -0
  109. data/spec/test-xml/objects/nested_release_list.xml +23 -0
  110. metadata +126 -273
  111. data/lib/sevendigital/peachy_patchy.rb +0 -9
  112. data/lib/sevendigital/proxy_police.rb +0 -28
  113. data/spec/coverage/assets/0.3.9/app.js +0 -66
  114. data/spec/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  115. data/spec/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  116. data/spec/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  117. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  118. data/spec/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  119. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  120. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  121. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  122. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  123. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  124. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  125. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  126. data/spec/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  127. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  128. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  129. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  130. data/spec/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  131. data/spec/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  132. data/spec/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  133. data/spec/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  134. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
  135. data/spec/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
  136. data/spec/coverage/assets/0.3.9/favicon.png +0 -0
  137. data/spec/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
  138. data/spec/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
  139. data/spec/coverage/assets/0.3.9/jquery.timeago.js +0 -141
  140. data/spec/coverage/assets/0.3.9/jquery.url.js +0 -174
  141. data/spec/coverage/assets/0.3.9/loading.gif +0 -0
  142. data/spec/coverage/assets/0.3.9/magnify.png +0 -0
  143. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  144. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  145. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  146. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  147. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  148. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  149. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  150. data/spec/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  151. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  152. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  153. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  154. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  155. data/spec/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  156. data/spec/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
  157. data/spec/coverage/assets/0.3.9/stylesheet.css +0 -341
  158. data/spec/coverage/index.html +0 -47481
  159. data/spec/coverage/resultset.yml +0 -3556
  160. data/spec/model/coverage/assets/0.3.9/app.js +0 -66
  161. data/spec/model/coverage/assets/0.3.9/fancybox/blank.gif +0 -0
  162. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_close.png +0 -0
  163. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_loading.png +0 -0
  164. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_left.png +0 -0
  165. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_nav_right.png +0 -0
  166. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_e.png +0 -0
  167. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_n.png +0 -0
  168. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_ne.png +0 -0
  169. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_nw.png +0 -0
  170. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_s.png +0 -0
  171. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_se.png +0 -0
  172. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_sw.png +0 -0
  173. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_shadow_w.png +0 -0
  174. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_left.png +0 -0
  175. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_main.png +0 -0
  176. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_over.png +0 -0
  177. data/spec/model/coverage/assets/0.3.9/fancybox/fancy_title_right.png +0 -0
  178. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-x.png +0 -0
  179. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox-y.png +0 -0
  180. data/spec/model/coverage/assets/0.3.9/fancybox/fancybox.png +0 -0
  181. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.css +0 -363
  182. data/spec/model/coverage/assets/0.3.9/fancybox/jquery.fancybox-1.3.1.pack.js +0 -44
  183. data/spec/model/coverage/assets/0.3.9/favicon.png +0 -0
  184. data/spec/model/coverage/assets/0.3.9/jquery-1.4.2.min.js +0 -155
  185. data/spec/model/coverage/assets/0.3.9/jquery.dataTables.min.js +0 -152
  186. data/spec/model/coverage/assets/0.3.9/jquery.timeago.js +0 -141
  187. data/spec/model/coverage/assets/0.3.9/jquery.url.js +0 -174
  188. data/spec/model/coverage/assets/0.3.9/loading.gif +0 -0
  189. data/spec/model/coverage/assets/0.3.9/magnify.png +0 -0
  190. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_0_aaaaaa_40x100.png +0 -0
  191. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_flat_75_ffffff_40x100.png +0 -0
  192. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_55_fbf9ee_1x400.png +0 -0
  193. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_65_ffffff_1x400.png +0 -0
  194. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_dadada_1x400.png +0 -0
  195. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  196. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_glass_95_fef1ec_1x400.png +0 -0
  197. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  198. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_222222_256x240.png +0 -0
  199. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_2e83ff_256x240.png +0 -0
  200. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_454545_256x240.png +0 -0
  201. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_888888_256x240.png +0 -0
  202. data/spec/model/coverage/assets/0.3.9/smoothness/images/ui-icons_cd0a0a_256x240.png +0 -0
  203. data/spec/model/coverage/assets/0.3.9/smoothness/jquery-ui-1.8.4.custom.css +0 -295
  204. data/spec/model/coverage/assets/0.3.9/stylesheet.css +0 -341
  205. data/spec/model/coverage/index.html +0 -8637
  206. data/spec/model/coverage/resultset.yml +0 -642
  207. data/spec/pager_spec.rb +0 -7
  208. data/spec/peachy_spec_helper_patch.rb +0 -7
  209. data/spec/proxy_police_spec.rb +0 -70
  210. data/spec/sevendigital_spec.rb +0 -51
  211. data/spec/sevendigital_spec.yml +0 -5
@@ -16,14 +16,14 @@ describe "BasketItemDigestor" do
16
16
  </artist>
17
17
  XML
18
18
 
19
- running {@basket_item_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ running {@basket_item_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
20
  end
21
21
 
22
22
  it "should digest basket item xml and populate all properties" do
23
23
 
24
24
  xml_response = load_sample_object_xml("basket_item")
25
25
 
26
- basket_item = @basket_item_digestor.from_xml(xml_response)
26
+ basket_item = @basket_item_digestor.from_xml_string(xml_response)
27
27
  basket_item.id.should == 15284882
28
28
  basket_item.type.should == :track
29
29
  basket_item.item_name.should == "Test"
@@ -37,7 +37,7 @@ XML
37
37
 
38
38
  xml_response = load_sample_object_xml("basket_item_list")
39
39
 
40
- basket_items = @basket_item_digestor.list_from_xml(xml_response)
40
+ basket_items = @basket_item_digestor.list_from_xml_string(xml_response)
41
41
  basket_items[0].id.should == 15284882
42
42
  basket_items[0].type.should == :track
43
43
  basket_items[1].id.should == 15284883
@@ -50,7 +50,7 @@ XML
50
50
 
51
51
  xml_response = load_sample_object_xml("basket_item_list_empty")
52
52
 
53
- basket_items = @basket_item_digestor.list_from_xml(xml_response)
53
+ basket_items = @basket_item_digestor.list_from_xml_string(xml_response)
54
54
  basket_items.size.should == 0
55
55
 
56
56
  end
@@ -14,13 +14,13 @@ describe "ChartItemDigestor" do
14
14
  </release>
15
15
  XML
16
16
 
17
- running {@chart_item_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
17
+ running {@chart_item_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
18
  end
19
19
 
20
20
  it "should digest artist chart item" do
21
21
  xml_response = load_sample_object_xml("artist_chart_item")
22
22
 
23
- chart_item = @chart_item_digestor.from_xml(xml_response)
23
+ chart_item = @chart_item_digestor.from_xml_string(xml_response)
24
24
  chart_item.position.should == 2
25
25
  chart_item.change.should == :up
26
26
  chart_item.item.id.should == 33154
@@ -31,7 +31,7 @@ XML
31
31
  it "should digest release chart item" do
32
32
  xml_response = load_sample_object_xml("release_chart_item")
33
33
 
34
- chart_item = @chart_item_digestor.from_xml(xml_response)
34
+ chart_item = @chart_item_digestor.from_xml_string(xml_response)
35
35
  chart_item.position.should == 1
36
36
  chart_item.change.should == :up
37
37
  chart_item.item.id.should == 932151
@@ -42,7 +42,7 @@ XML
42
42
 
43
43
  xml_response = load_sample_object_xml("track_chart_item")
44
44
 
45
- chart_item = @chart_item_digestor.from_xml(xml_response)
45
+ chart_item = @chart_item_digestor.from_xml_string(xml_response)
46
46
  chart_item.position.should == 99
47
47
  chart_item.change.should == :down
48
48
  chart_item.item.id.should == 2825304
@@ -0,0 +1,33 @@
1
+ # coding: utf-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "CountryDigestor" do
5
+
6
+ before do
7
+ @country_digestor = Sevendigital::CountryDigestor.new(nil)
8
+ end
9
+
10
+ it "should not digest from invalid xml but throw up (exception)" do
11
+
12
+ xml_response = <<XML
13
+ <xxx>
14
+ <text>pop</text>
15
+ </xxx>
16
+ XML
17
+
18
+ running {@country_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ end
20
+
21
+ it "should parse from xml and return country code" do
22
+
23
+ xml_response = <<XML
24
+ <GeoIpLookup>
25
+ <countryCode>SK</countryCode>
26
+ </GeoIpLookup>
27
+ XML
28
+
29
+ @country_digestor.from_xml_string(xml_response, 'GeoIpLookup').should == 'SK'
30
+
31
+ end
32
+
33
+ end
@@ -0,0 +1,34 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "Digestor" do
4
+
5
+ before do
6
+ @digestor = Sevendigital::Digestor.new(Sevendigital::Client.new(nil))
7
+ end
8
+
9
+ it "should get nil if an optional element is missing" do
10
+
11
+ xml = "<artist>test</artist>"
12
+ result = @digestor.get_optional_value(Nokogiri::XML(xml), "release")
13
+ result.should == nil
14
+
15
+ end
16
+
17
+ it "should get the value of optional element" do
18
+
19
+ xml = "<release>test</release>"
20
+ result = @digestor.get_optional_value(Nokogiri::XML(xml), "release")
21
+ result.should == "test"
22
+
23
+ end
24
+
25
+ it "should get an optional value" do
26
+
27
+ xml = "<release>123</release>"
28
+ result = @digestor.get_optional_value(Nokogiri::XML(xml), "release") {|v| v.to_i}
29
+ result.should == 123
30
+
31
+ end
32
+
33
+
34
+ end
@@ -16,7 +16,7 @@ describe "DownloadUrlDigestor" do
16
16
  </zzz>
17
17
  XML
18
18
 
19
- running {@download_url_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ running {@download_url_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
20
  end
21
21
 
22
22
  it "should parse from xml and populate all properties" do
@@ -32,7 +32,7 @@ XML
32
32
  </downloadUrl>
33
33
  XML
34
34
 
35
- download_url = @download_url_digestor.from_xml(xml_response)
35
+ download_url = @download_url_digestor.from_xml_string(xml_response)
36
36
  download_url.url.should == "http://media3.7digital.com/media/user/downloadtrack?"
37
37
  download_url.format.id.should == 17
38
38
  download_url.format.file_format.should == :MP3
@@ -16,7 +16,7 @@ describe "FormatDigestor" do
16
16
  </zzz>
17
17
  XML
18
18
 
19
- running {@format_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ running {@format_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
20
  end
21
21
 
22
22
  it "should parse from xml and populate all properties" do
@@ -29,7 +29,7 @@ XML
29
29
  </format>
30
30
  XML
31
31
 
32
- format = @format_digestor.from_xml(xml_response)
32
+ format = @format_digestor.from_xml_string(xml_response)
33
33
  format.id.should == 17
34
34
  format.file_format.should == :MP3
35
35
  format.bit_rate.should == 320
@@ -15,7 +15,7 @@ describe "LabelDigestor" do
15
15
  </release>
16
16
  XML
17
17
 
18
- running {@label_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
+ running {@label_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
19
  end
20
20
 
21
21
  it "should digest label xml and populate all properties" do
@@ -26,7 +26,7 @@ XML
26
26
  </label>
27
27
  XML
28
28
 
29
- label = @label_digestor.from_xml(xml_response)
29
+ label = @label_digestor.from_xml_string(xml_response)
30
30
  label.id.should == 123
31
31
  label.name.should == "expected label name"
32
32
  end
@@ -0,0 +1,32 @@
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "ListDigestor" do
4
+
5
+ before do
6
+ @list_digestor = Sevendigital::ListDigestor.new(Sevendigital::Client.new(nil))
7
+ end
8
+
9
+ it "should not digest from invalid xml but throw up (exception)" do
10
+
11
+ xml_response = <<XML
12
+ <zzz id="17">
13
+ <aaa>MP3</aaa>
14
+ </zzz>
15
+ XML
16
+
17
+ running {@list_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
+ end
19
+
20
+ it "should parse from xml and populate all properties" do
21
+
22
+ xml_response = load_sample_object_xml("list")
23
+
24
+ list = @list_digestor.from_xml_string(xml_response)
25
+ list.id.should == 3202
26
+ list.key.should == "featured_albums"
27
+ list.list_items.size.should == 2
28
+ list.list_items[0].release.id.should == 1879539
29
+ list.list_items[1].release.id.should == 1879543
30
+ end
31
+
32
+ end
@@ -0,0 +1,80 @@
1
+ # coding: utf-8
2
+ require 'date'
3
+ require File.expand_path('../../spec_helper', __FILE__)
4
+
5
+ describe "ListItemDigestor" do
6
+
7
+ before do
8
+ @list_item_digestor = Sevendigital::ListItemDigestor.new(Sevendigital::Client.new(nil))
9
+ end
10
+
11
+ it "should not digest from invalid xml but throw up (exception)" do
12
+
13
+ xml_response = <<XML
14
+ <foo id="123">
15
+ <bar>test</bar>
16
+ </foo>
17
+ XML
18
+
19
+ running {@list_item_digestor.from_xml_doc(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
+ end
21
+
22
+ it "should digest list item xml and populate available properties" do
23
+
24
+ xml_response = load_sample_object_xml("list_item_release")
25
+
26
+ list_item = @list_item_digestor.from_xml_string(xml_response)
27
+
28
+ list_item.id.should == 123456
29
+ list_item.type.should == :release
30
+ list_item.release.id.should == 1136112
31
+ list_item.release.title.should == "Collapse Into Now"
32
+ list_item.release.artist.id.should == 590
33
+ list_item.release.artist.name.should == "R.E.M."
34
+ list_item.release.artist.appears_as == "R.E.M."
35
+ list_item.release.artist.url.should == "http://www.7digital.com/artists/r-e-m"
36
+ list_item.release.url.should == "http://www.7digital.com/artists/r-e-m/collapse-into-now?partner=123"
37
+ list_item.release.image.should == "http://cdn.7static.com/static/img/sleeveart/00/011/361/0001136112_50.jpg"
38
+ list_item.release.explicit_content == false
39
+ end
40
+
41
+ it "should not digest unknown list item xml but throw up (exception) " do
42
+
43
+ xml_response = <<XML
44
+ <listItem id="123">
45
+ <type>track</type>
46
+ <track id="1136112">
47
+ </track>
48
+ </release>
49
+ XML
50
+
51
+ running {@list_item_digestor.from_xml_doc(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
52
+ end
53
+
54
+ it "should digest xml containing list of list items and return an array" do
55
+
56
+ xml_response = load_sample_object_xml("list_item_list")
57
+
58
+ list_items = @list_item_digestor.list_from_xml_string(xml_response)
59
+ list_items[0].id.should == 1879539
60
+ list_items[0].release.id.should == 1879539
61
+ list_items[1].id.should == 1879543
62
+ list_items[1].release.id.should == 1879543
63
+ list_items.size.should == 2
64
+
65
+ end
66
+
67
+ it "should digest xml containing empty list of list items and return an empty array" do
68
+
69
+ xml_response = <<XML
70
+ <listItems>
71
+ </listItems>
72
+ XML
73
+
74
+ releases = @list_item_digestor.list_from_xml_string(xml_response)
75
+ releases.size.should == 0
76
+
77
+ end
78
+
79
+
80
+ end
@@ -16,14 +16,14 @@ describe "LockerDigestor" do
16
16
  </zzz>
17
17
  XML
18
18
 
19
- running {@locker_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ running {@locker_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
20
  end
21
21
 
22
22
  it "should parse from xml and populate all properties" do
23
23
 
24
24
  xml_response = load_sample_object_xml("locker")
25
25
 
26
- locker = @locker_digestor.from_xml(xml_response)
26
+ locker = @locker_digestor.from_xml_string(xml_response)
27
27
  locker.locker_releases.size.should == 1
28
28
  locker.locker_releases[0].release.id.should == 302123
29
29
  end
@@ -16,14 +16,14 @@ describe "LockerReleaseDigestor" do
16
16
  </artist>
17
17
  XML
18
18
 
19
- running {@locker_release_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ running {@locker_release_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
20
  end
21
21
 
22
22
  it "should digest locker release xml and populate all available properties" do
23
23
 
24
24
  xml_response = load_sample_object_xml("locker_release")
25
25
 
26
- locker_release = @locker_release_digestor.from_xml(xml_response)
26
+ locker_release = @locker_release_digestor.from_xml_string(xml_response)
27
27
 
28
28
  locker_release.release.id.should == 302123
29
29
  locker_release.release.title.should == "Original Album Classics"
@@ -39,7 +39,7 @@ XML
39
39
 
40
40
  xml_response = load_sample_object_xml("locker_release_list")
41
41
 
42
- locker_releases = @locker_release_digestor.list_from_xml(xml_response, :locker_releases)
42
+ locker_releases = @locker_release_digestor.list_from_xml_string(xml_response)
43
43
  locker_releases[0].release.id.should == 302123
44
44
  locker_releases[0].locker_tracks[0].track.id.should == 3544116
45
45
  locker_releases.size.should == 2
@@ -51,7 +51,7 @@ XML
51
51
 
52
52
  xml_response = load_sample_object_xml("locker_release_one_item_list")
53
53
 
54
- locker_releases = @locker_release_digestor.list_from_xml(xml_response, :locker_releases)
54
+ locker_releases = @locker_release_digestor.list_from_xml_string(xml_response)
55
55
  locker_releases[0].release.id.should == 302123
56
56
  locker_releases[0].locker_tracks[0].track.id.should == 3544116
57
57
  locker_releases.size.should == 1
@@ -61,7 +61,7 @@ XML
61
61
 
62
62
  xml_response = load_sample_object_xml("locker_release_list_empty")
63
63
 
64
- locker_releases = @locker_release_digestor.list_from_xml(xml_response, :locker_releases)
64
+ locker_releases = @locker_release_digestor.list_from_xml_string(xml_response)
65
65
  locker_releases.size.should == 0
66
66
  locker_releases.total_entries.should == 0
67
67
 
@@ -16,14 +16,14 @@ describe "LockerTrackDigestor" do
16
16
  </artist>
17
17
  XML
18
18
 
19
- running {@locker_track_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ running {@locker_track_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
20
  end
21
21
 
22
22
  it "should digest locker track xml and populate all available properties" do
23
23
 
24
24
  xml_response = load_sample_object_xml("locker_track")
25
25
 
26
- locker_track = @locker_track_digestor.from_xml(xml_response)
26
+ locker_track = @locker_track_digestor.from_xml_string(xml_response)
27
27
 
28
28
  locker_track.track.id.should == 3544116
29
29
  locker_track.track.title.should == "Gloria"
@@ -38,7 +38,7 @@ XML
38
38
 
39
39
  xml_response = load_sample_object_xml("locker_track_list")
40
40
 
41
- locker_tracks = @locker_track_digestor.list_from_xml(xml_response, :locker_tracks)
41
+ locker_tracks = @locker_track_digestor.list_from_xml_string(xml_response)
42
42
  locker_tracks[0].track.id.should == 3544116
43
43
  locker_tracks[0].download_urls[0].url.should == "http://media3.7digital.com/media/user/downloadtrack?"
44
44
  locker_tracks.size.should == 1
@@ -48,7 +48,7 @@ XML
48
48
 
49
49
  xml_response = load_sample_object_xml("locker_track_list_empty")
50
50
 
51
- locker_tracks = @locker_track_digestor.list_from_xml(xml_response, :locker_tracks)
51
+ locker_tracks = @locker_track_digestor.list_from_xml_string(xml_response)
52
52
  locker_tracks.size.should == 0
53
53
 
54
54
  end
@@ -18,14 +18,14 @@ describe "OAuthAccessTokenDigestor" do
18
18
  </release>
19
19
  XML
20
20
 
21
- running {@token_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
21
+ running {@token_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
22
22
  end
23
23
 
24
24
  it "should digest access token xml and populate all properties" do
25
25
 
26
26
  xml_response = load_sample_object_xml("oauth_access_token")
27
27
 
28
- token = @token_digestor.from_xml(xml_response, :oauth_access_token)
28
+ token = @token_digestor.from_xml_string(xml_response, :oauth_access_token)
29
29
  token.kind_of?(OAuth::AccessToken).should == true
30
30
  token.token.should == "E3w4FV3oirRfj4KfT7alOpa893mmn4HJ"
31
31
  token.secret.should == "923kj3Kspa304n4Oamd3201pLkgjeM32"
@@ -18,14 +18,14 @@ describe "OAuthRequestTokenDigestor" do
18
18
  </release>
19
19
  XML
20
20
 
21
- running {@token_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
21
+ running {@token_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
22
22
  end
23
23
 
24
24
  it "should digest request token xml and populate all properties" do
25
25
 
26
26
  xml_response = load_sample_object_xml("oauth_request_token")
27
27
 
28
- token = @token_digestor.from_xml(xml_response, :oauth_request_token)
28
+ token = @token_digestor.from_xml_string(xml_response, :oauth_request_token)
29
29
  token.kind_of?(OAuth::RequestToken).should == true
30
30
  token.token.should == "yu87230J29DT7tyuGslO98wrR43e39Of"
31
31
  token.secret.should == "d2I8uj7yaoa39KKdu3upasybu98f89fln"
@@ -15,7 +15,7 @@ describe "PagerDigestor" do
15
15
  </release>
16
16
  XML
17
17
 
18
- running {@pager_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
+ running {@pager_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
19
  end
20
20
 
21
21
  it "should not digest if paging info is missing from xml but spit out nil" do
@@ -28,7 +28,7 @@ XML
28
28
  </results>
29
29
  XML
30
30
 
31
- pager = @pager_digestor.from_xml(xml_response, :results)
31
+ pager = @pager_digestor.from_xml_string(xml_response, :results)
32
32
  pager.should == nil
33
33
  end
34
34
 
@@ -42,7 +42,7 @@ XML
42
42
  </pager>
43
43
  XML
44
44
 
45
- pager = @pager_digestor.from_xml(xml_response, :pager)
45
+ pager = @pager_digestor.from_xml_string(xml_response, :pager)
46
46
  pager.page.should == 3
47
47
  pager.page_size.should == 22
48
48
  pager.total_items.should == 99