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
@@ -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