7digital 0.0.7 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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