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
@@ -15,7 +15,7 @@ describe "PriceDigestor" do
15
15
  </xxx>
16
16
  XML
17
17
 
18
- running {@price_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
+ running {@price_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
19
  end
20
20
 
21
21
  it "should parse from xml and populate minimum available properties" do
@@ -29,7 +29,7 @@ XML
29
29
  </price>
30
30
  XML
31
31
 
32
- price = @price_digestor.from_xml(xml_response)
32
+ price = @price_digestor.from_xml_string(xml_response)
33
33
  price.currency_code.should == :GBP
34
34
  price.currency_symbol.should == "£"
35
35
  price.value.should == 1.79
@@ -48,7 +48,7 @@ XML
48
48
  </price>
49
49
  XML
50
50
 
51
- price = @price_digestor.from_xml(xml_response)
51
+ price = @price_digestor.from_xml_string(xml_response)
52
52
  price.currency_code.should == :GBP
53
53
  price.currency_symbol.should == "£"
54
54
  price.value.should == nil
@@ -60,7 +60,7 @@ XML
60
60
 
61
61
  xml_response = load_sample_object_xml("price")
62
62
 
63
- price = @price_digestor.from_xml(xml_response)
63
+ price = @price_digestor.from_xml_string(xml_response)
64
64
  price.currency_code.should == :GBP
65
65
  price.currency_symbol.should == "£"
66
66
  price.value.should == 1.79
@@ -16,7 +16,7 @@ describe "ReleaseDigestor" do
16
16
  </artist>
17
17
  XML
18
18
 
19
- running {@release_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ running {@release_digestor.from_xml_doc(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
20
  end
21
21
 
22
22
  it "should digest release xml and populate minimum available properties" do
@@ -31,7 +31,7 @@ XML
31
31
  </release>
32
32
  XML
33
33
 
34
- release = @release_digestor.from_xml(xml_response)
34
+ release = @release_digestor.from_xml_string(xml_response)
35
35
  release.id.should == 123
36
36
  release.title.should == "expected release title"
37
37
  release.artist.id.should == 345
@@ -43,7 +43,7 @@ XML
43
43
 
44
44
  xml_response = load_sample_object_xml("release")
45
45
 
46
- release = @release_digestor.from_xml(xml_response)
46
+ release = @release_digestor.from_xml_string(xml_response)
47
47
 
48
48
  release.id.should == 155408
49
49
  release.title.should == "Dreams"
@@ -78,7 +78,7 @@ XML
78
78
 
79
79
  xml_response = load_sample_object_xml("release_list")
80
80
 
81
- releases = @release_digestor.list_from_xml(xml_response, :results)
81
+ releases = @release_digestor.list_from_xml_string(xml_response, :results)
82
82
  releases[0].id.should == 123
83
83
  releases[0].artist.id.should == 345
84
84
  releases[1].id.should == 456
@@ -92,10 +92,24 @@ XML
92
92
 
93
93
  xml_response = load_sample_object_xml("release_list_empty")
94
94
 
95
- releases = @release_digestor.list_from_xml(xml_response, :results)
95
+ releases = @release_digestor.list_from_xml_string(xml_response, :results)
96
96
  releases.size.should == 0
97
97
  releases.total_entries.should == 0
98
98
 
99
99
  end
100
100
 
101
+ it "should digest xml containing nested list of releases and return a paginated array" do
102
+
103
+ xml_response = load_sample_object_xml("nested_release_list")
104
+
105
+ releases = @release_digestor.nested_list_from_xml_string(xml_response, :results, :result)
106
+ releases[0].id.should == 123
107
+ releases[0].artist.id.should == 345
108
+ releases[1].id.should == 456
109
+ releases[1].artist.id.should == 789
110
+ releases.size.should == 2
111
+ releases.total_entries.should == 50
112
+
113
+ end
114
+
101
115
  end
@@ -15,7 +15,7 @@ describe "TagDigestor" do
15
15
  </xxx>
16
16
  XML
17
17
 
18
- running {@tag_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
+ running {@tag_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
19
  end
20
20
 
21
21
  it "should parse from xml and populate minimum available properties" do
@@ -26,7 +26,7 @@ XML
26
26
  </tag>
27
27
  XML
28
28
 
29
- tag = @tag_digestor.from_xml(xml_response)
29
+ tag = @tag_digestor.from_xml_string(xml_response)
30
30
  tag.id.should == 'rock'
31
31
  tag.text.should == "ROCK"
32
32
 
@@ -36,7 +36,7 @@ XML
36
36
 
37
37
  xml_response = load_sample_object_xml("tag")
38
38
 
39
- tag = @tag_digestor.from_xml(xml_response)
39
+ tag = @tag_digestor.from_xml_string(xml_response)
40
40
  tag.id.should == "pop"
41
41
  tag.text.should == "pop"
42
42
  tag.url.should == "http://www.7digital.com/tags/pop?partner=123"
@@ -16,7 +16,7 @@ describe "TrackDigestor" do
16
16
  </artist>
17
17
  XML
18
18
 
19
- running {@track_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
+ running {@track_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
20
  end
21
21
 
22
22
  it "should digest track xml and populate minimum available properties" do
@@ -31,7 +31,7 @@ XML
31
31
  </track>
32
32
  XML
33
33
 
34
- track = @track_digestor.from_xml(xml_response)
34
+ track = @track_digestor.from_xml_string(xml_response)
35
35
  track.id.should == 123
36
36
  track.title.should == "expected track title"
37
37
  track.artist.id.should == 345
@@ -43,7 +43,7 @@ XML
43
43
 
44
44
  xml_response = load_sample_object_xml("track")
45
45
 
46
- track = @track_digestor.from_xml(xml_response)
46
+ track = @track_digestor.from_xml_string(xml_response)
47
47
  track.id.should == 1628015
48
48
  track.title.should == "Burning"
49
49
  track.version.should == ""
@@ -91,7 +91,7 @@ XML
91
91
  </results>
92
92
  XML
93
93
 
94
- tracks = @track_digestor.list_from_xml(xml_response, :results)
94
+ tracks = @track_digestor.list_from_xml_string(xml_response, :results)
95
95
  tracks[0].id.should == 123
96
96
  tracks[0].artist.id.should == 345
97
97
  tracks[1].id.should == 456
@@ -4,7 +4,7 @@ require File.expand_path('../../spec_helper', __FILE__)
4
4
  describe "UserCardDigestor" do
5
5
 
6
6
  before do
7
- @card_digestor = Sevendigital::UserCardDigestor.new(nil)
7
+ @card_digestor = Sevendigital::UserCardDigestor.new(Sevendigital::Client.new(nil))
8
8
  end
9
9
 
10
10
  it "should not digest from invalid xml but throw up (exception)" do
@@ -15,7 +15,7 @@ describe "UserCardDigestor" do
15
15
  </xxx>
16
16
  XML
17
17
 
18
- running {@card_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
+ running {@card_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
19
  end
20
20
 
21
21
  it "should parse from xml and populate minimum available properties" do
@@ -27,7 +27,7 @@ XML
27
27
  </card>
28
28
  XML
29
29
 
30
- card = @card_digestor.from_xml(xml_response)
30
+ card = @card_digestor.from_xml_string(xml_response)
31
31
  card.type.should == "MasterCard"
32
32
  card.last_4_digits.should == "1234"
33
33
 
@@ -37,7 +37,7 @@ XML
37
37
 
38
38
  xml_response = load_sample_object_xml("user_payment_card")
39
39
 
40
- card = @card_digestor.from_xml(xml_response)
40
+ card = @card_digestor.from_xml_string(xml_response)
41
41
  card.id.should == 9876
42
42
  card.type.should == "VISA"
43
43
  card.last_4_digits.should == "2345"
@@ -50,7 +50,7 @@ XML
50
50
 
51
51
  xml_response = load_sample_object_xml("user_payment_card_list_empty")
52
52
 
53
- cards = @card_digestor.list_from_xml(xml_response, :cards)
53
+ cards = @card_digestor.list_from_xml_string(xml_response)
54
54
  cards.size.should == 0
55
55
 
56
56
  end
@@ -15,27 +15,25 @@ describe "UserDigestor" do
15
15
  </xxx>
16
16
  XML
17
17
 
18
- running {@user_digestor.from_xml(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
+ running {@user_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
19
19
  end
20
20
 
21
21
  it "should parse from xml and populate minimum available properties" do
22
22
 
23
23
  xml_response = <<XML
24
24
  <user>
25
- <type>7digital</type>
26
25
  </user>
27
26
  XML
28
27
 
29
- user = @user_digestor.from_xml(xml_response)
30
- user.type.should == :"7digital"
31
-
28
+ user = @user_digestor.from_xml_string(xml_response)
29
+ user.should_not be_nil
32
30
  end
33
31
 
34
32
  it "should parse from xml and populate all properties" do
35
33
 
36
34
  xml_response = load_sample_object_xml("user")
37
35
 
38
- user = @user_digestor.from_xml(xml_response)
36
+ user = @user_digestor.from_xml_string(xml_response)
39
37
  user.id.should == "123456"
40
38
  user.type.should == :"7digital"
41
39
  user.email_address.should == "user@example.com"
@@ -0,0 +1,86 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "Artist integration test" do
5
+
6
+ before do
7
+ @api_client = Sevendigital::Client.new(
8
+ File.join(File.dirname(__FILE__),"sevendigital_spec.yml"),
9
+ :verbose => "verbose"
10
+ )
11
+
12
+ end
13
+
14
+ it "should browse artists" do
15
+ artists = @api_client.artist.browse("KEA")
16
+ artists.current_page.should == 1
17
+ artists.total_entries.should >= 1
18
+ artists.each do |artist|
19
+ artist.name[0..2].downcase.should == "kea"
20
+ artist.id.should >= 1
21
+ artist.url.should =~ VALID_7DIGITAL_URL
22
+ end
23
+ end
24
+
25
+ it "should get artist chart" do
26
+ chart = @api_client.artist.get_chart(:period => :year, :toDate => 20111231)
27
+ chart.current_page.should == 1
28
+ chart.total_entries.should >= 20
29
+ chart.first.position.should == 1
30
+ chart.last.position.should == 10
31
+ chart.first.item.id.should == 142111
32
+ chart.first.item.name.should == "Adele"
33
+ end
34
+
35
+ it "should get artist details" do
36
+ artist = @api_client.artist.get_details(1)
37
+ artist.name.should == "Keane"
38
+ artist.id.should == 1
39
+ end
40
+
41
+ it "should get artist releases" do
42
+ releases = @api_client.artist.get_details(1).get_releases(:type => :single)
43
+ releases.current_page.should == 1
44
+ releases.total_entries.should >= 1
45
+ releases.each do |release|
46
+ release.artist.name.should == "Keane"
47
+ release.id.should >= 1
48
+ release.title.should_not be_empty
49
+ release.label.should_not be_nil
50
+ release.year.should >= 1990
51
+ release.type.should == :single
52
+ end
53
+ end
54
+
55
+ it "should search and find an artist" do
56
+ artists = @api_client.artist.search("keane")
57
+ artists.current_page.should == 1
58
+ artists.total_entries.should >= 1
59
+ artists.first.name.should == "Keane"
60
+ artists.first.id.should == 1
61
+ end
62
+
63
+ it "should get top tracks" do
64
+ tracks = @api_client.artist.get_details(1).get_top_tracks
65
+ tracks.current_page.should == 1
66
+ tracks.total_entries.should >= 1
67
+ tracks.each do |track|
68
+ track.artist.name.should == "Keane"
69
+ track.id.should >= 1
70
+ track.title.should_not be_empty
71
+ track.release.should_not be_nil
72
+ end
73
+ end
74
+
75
+ it "should get similar artists" do
76
+ artists = @api_client.artist.get_details(1).get_similar
77
+ artists.current_page.should == 1
78
+ artists.total_entries.should >= 1
79
+ artists.each do |artist|
80
+ artist.name.should_not be_empty
81
+ artist.id.should >= 1
82
+ artist.url.should =~ VALID_7DIGITAL_URL
83
+ end
84
+ end
85
+
86
+ end
@@ -0,0 +1,18 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "Country integration tests" do
5
+
6
+ before do
7
+ @api_client = Sevendigital::Client.new(
8
+ File.join(File.dirname(__FILE__),"sevendigital_spec.yml"),
9
+ :verbose => "verbose"
10
+ )
11
+
12
+ end
13
+
14
+ it "should resolve country from IP address" do
15
+ @api_client.country.resolve("1.2.3.4").should == 'AU'
16
+ end
17
+
18
+ end
@@ -0,0 +1,22 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "List integration tests" do
5
+
6
+ before do
7
+ @api_client = Sevendigital::Client.new(
8
+ File.join(File.dirname(__FILE__),"sevendigital_spec.yml"),
9
+ :verbose => "verbose"
10
+ )
11
+
12
+ end
13
+
14
+ it "should get editorial list" do
15
+ list = @api_client.list.get_editorial_list("featured_albums")
16
+ list.key.should == "featured_albums"
17
+ list.id.should > 0
18
+ list.list_items.size.should > 1
19
+ list.list_items[0].release.type.should == :album
20
+ end
21
+
22
+ end
@@ -0,0 +1,24 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+ require 'date'
4
+
5
+ describe "Purchasing integration tests" do
6
+
7
+ before do
8
+ @api_client = Sevendigital::Client.new(
9
+ File.join(File.dirname(__FILE__),"sevendigital_spec.yml"),
10
+ :verbose => "verbose"
11
+ )
12
+
13
+ end
14
+
15
+ it "should create and purchase basket" do
16
+ test_track_id = 8515447
17
+ basket = @api_client.basket.create
18
+ basket.add_item(769006, test_track_id)
19
+
20
+ user = @api_client.user.authenticate("test@7digital.com", "password")
21
+ purchase_response = user.purchase_basket!(basket.id)
22
+ purchase_response.locker_releases.first.locker_tracks.first.track.id.should == test_track_id
23
+ end
24
+ end
@@ -0,0 +1,34 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+ require 'date'
4
+
5
+ describe "Release integration tests" do
6
+
7
+ before do
8
+ @api_client = Sevendigital::Client.new(
9
+ File.join(File.dirname(__FILE__),"sevendigital_spec.yml"),
10
+ :verbose => "verbose"
11
+ )
12
+
13
+ end
14
+
15
+ it "should get releases by date" do
16
+ releases = @api_client.release.get_by_date(Date.today, Date.today)
17
+ releases.each do |release|
18
+ release.id.should >= 1
19
+ release.title.should_not be_empty
20
+ release.artist.should_not be_nil
21
+ release.price.value.should >= 0
22
+ release.release_date.to_date.should == Date.today
23
+ end
24
+ end
25
+
26
+ it "should search and find releases" do
27
+ releases = @api_client.release.search("love", :page_size => 20, :page=>2)
28
+ releases.size.should == 20
29
+ releases.current_page.should == 2
30
+ releases.total_entries.should > 100
31
+ releases.first.price.value.should > 0
32
+ end
33
+
34
+ end
@@ -0,0 +1,5 @@
1
+ #Your API access key and secret
2
+ oauth_consumer_key: "YOUR_KEY_HERE"
3
+ oauth_consumer_secret: "YOUR_SECRET_HERE"
4
+
5
+ lazy_load: false
@@ -0,0 +1,23 @@
1
+ # encoding: UTF-8
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+ require 'date'
4
+
5
+ describe "Track integration tests" do
6
+
7
+ before do
8
+ @api_client = Sevendigital::Client.new(
9
+ File.join(File.dirname(__FILE__),"sevendigital_spec.yml"),
10
+ :verbose => "verbose"
11
+ )
12
+
13
+ end
14
+
15
+ it "should search and find a track with a price" do
16
+ tracks = @api_client.track.search("radiohead creep")
17
+ tracks.current_page.should == 1
18
+ tracks.first.artist.appears_as.should == "Radiohead"
19
+ tracks.first.release.should_not be_nil
20
+ # not working yet on 7digital API tracks.first.price.value.should > 0
21
+ end
22
+
23
+ end