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
@@ -30,8 +30,8 @@ describe "ApiResponse" do
30
30
  end
31
31
 
32
32
  it "should be serializable" do
33
- original_response = Sevendigital::ApiResponseDigestor.new(@client).from_xml\
34
- ("<response status='ok'><testElement id='123'>value</testElement></response>")
33
+ original_response = Sevendigital::ApiResponse.new
34
+ original_response.content = "<response status='ok'><testElement id='123'>value</testElement></response>"
35
35
  original_response.error_code = 99
36
36
  original_response.headers = {"header" => "value"}
37
37
 
@@ -41,7 +41,7 @@ describe "ApiResponse" do
41
41
 
42
42
  restored_response.error_code.should == original_response.error_code
43
43
  restored_response.content.to_s.should == original_response.content.to_s
44
- restored_response.content.test_element.value.should == "value"
44
+ restored_response.item_xml("response").to_s == "value"
45
45
  restored_response.headers.should == original_response.headers
46
46
 
47
47
  end
@@ -21,7 +21,7 @@ describe "Artist" do
21
21
  (options.keys & expected_options.keys).should == expected_options.keys
22
22
  fresh_artist
23
23
  }
24
- @artist.get_details(expected_options)
24
+ @artist.get_details(expected_options).should == fresh_artist
25
25
 
26
26
  @artist.sort_name.should == fresh_artist.sort_name
27
27
  @artist.image.should == fresh_artist.image
@@ -151,5 +151,5 @@ describe "Artist" do
151
151
  artist.image = "image"
152
152
  artist.url = "url"
153
153
  artist
154
- end
154
+ end
155
155
  end
@@ -5,11 +5,11 @@ describe "SevendigitalObject" do
5
5
 
6
6
  before do
7
7
 
8
- @configuration = stub(Sevendigital::ClientConfiguration)
9
- @configuration.stub!(:lazy_load).and_return(true)
8
+ @configuration = test_configuration
9
+ @configuration.lazy_load = true
10
+
11
+ stub_api_client(@configuration)
10
12
 
11
- @client = stub(Sevendigital::Client)
12
- @client.stub!(:configuration).and_return(@configuration)
13
13
  @client.stub!(:verbose?).and_return(true)
14
14
  @test_object = Sevendigital::SevendigitalObject.new(@client)
15
15
  end
@@ -13,6 +13,21 @@ describe "User" do
13
13
  @user = Sevendigital::User.new(@client)
14
14
  end
15
15
 
16
+ it "get_details should get user's basic details from manager" do
17
+ @user.oauth_access_token = OAuth::AccessToken.new(nil, "TOKEN", "SECRET")
18
+ fresh_user = fake_user_with_details
19
+ expected_options = {:page => 2}
20
+
21
+ @user_manager.should_receive(:get_details) { |token, options|
22
+ token.should == @user.oauth_access_token
23
+ (options.keys & expected_options.keys).should == expected_options.keys
24
+ fresh_user
25
+ }
26
+ @user.get_details(expected_options).should == fresh_user
27
+ @user.email_address.should == fresh_user.email_address
28
+
29
+ end
30
+
16
31
  it "should not be authorised if does not have access_token" do
17
32
  @user.oauth_access_token = nil
18
33
  @user.authenticated?.should == false
@@ -158,4 +173,10 @@ describe "User" do
158
173
  running {@user.get_locker}.should raise_error(Sevendigital::SevendigitalError)
159
174
  end
160
175
 
176
+ def fake_user_with_details
177
+ user = Sevendigital::User.new(@client)
178
+ user.email_address = "user@7digital.com"
179
+ user
180
+ end
181
+
161
182
  end
@@ -2,26 +2,19 @@
2
2
  #$: << 'spec'
3
3
 
4
4
  =begin
5
-
6
5
  require 'simplecov'
7
-
8
6
  SimpleCov.start do
9
7
  add_group 'Management', 'lib/sevendigital/management'
10
8
  add_group 'Digestion', 'lib/sevendigital/digestion_tract'
11
9
  add_group 'Model', 'lib/sevendigital/model'
12
10
  end
13
-
14
11
  =end
15
12
 
16
- require 'spec'
13
+ require 'rspec'
17
14
  require File.expand_path(
18
15
  File.join(File.dirname(__FILE__), %w[.. lib sevendigital]))
19
16
 
20
- require "peachy_spec_helper_patch"
21
-
22
- Peachy.whine
23
-
24
- Spec::Runner.configure do |config|
17
+ Rspec.configure do |config|
25
18
  # == Mock Framework
26
19
  #
27
20
  # RSpec uses it's own mocking framework by default. If you prefer to
@@ -34,6 +27,8 @@ end
34
27
 
35
28
  alias running lambda
36
29
 
30
+ VALID_7DIGITAL_URL = /http\:\/\/.+7digital\..+partner=[\d]+/
31
+
37
32
  def load_sample_method_xml(method_name)
38
33
  method_name = "test-xml/methods/" + method_name + ".xml"
39
34
  IO.read( File.join(File.dirname(__FILE__), method_name.split('/')))
@@ -45,11 +40,15 @@ end
45
40
  end
46
41
 
47
42
  def fake_api_response(method_name)
48
- Sevendigital::ApiResponseDigestor.new(nil).from_xml(load_sample_method_xml(method_name))
43
+ response = Sevendigital::ApiResponse.new
44
+ response.content = load_sample_method_xml(method_name)
45
+ response.stub(:ok?).and_return true
46
+ # Sevendigital::ApiResponseDigestor.new(nil).from_xml_string(load_sample_method_xml(method_name))
47
+ response
49
48
  end
50
49
 
51
50
  def fake_api_error_response(code)
52
- Sevendigital::ApiResponseDigestor.new(nil).from_xml("<response status=\"error\"><error code=\"#{code}\"></error></response>")
51
+ Sevendigital::ApiResponseDigestor.new(nil).from_xml_string("<response status=\"error\"><error code=\"#{code}\"></error></response>")
53
52
  end
54
53
 
55
54
  def mock_client_digestor(client, digestor_class)
@@ -62,3 +61,24 @@ end
62
61
  str.split('_').map {|w| w.capitalize}.join
63
62
  end
64
63
 
64
+ def stub_api_client(configuration, response_digestor=nil)
65
+ @client = stub(Sevendigital::Client)
66
+ @client.stub!(:configuration).and_return(configuration)
67
+ @client.stub!(:oauth_consumer).and_return(OAuth::Consumer.new( configuration.oauth_consumer_key, configuration.oauth_consumer_secret))
68
+ @client.stub!(:api_response_digestor).and_return(response_digestor)
69
+ @client.stub!(:default_parameters).and_return({:country => 'sk'})
70
+ @client.stub!(:user_agent_info).and_return("7digital")
71
+ @client.stub!(:verbose?).and_return(false)
72
+ @client.stub!(:very_verbose?).and_return(false)
73
+ @client.stub!(:api_host_and_version).and_return(["base.api.url","version"])
74
+ @client.stub!(:log).and_yield()
75
+ @client
76
+ end
77
+
78
+ def test_configuration
79
+ configuration = OpenStruct.new
80
+ configuration.oauth_consumer_key = "oauth_consumer_key"
81
+ configuration
82
+ end
83
+
84
+
@@ -0,0 +1,7 @@
1
+ <response status="ok" version="1.2" xsi:noNamespaceSchemaLocation="http://api.7digital.com/1.2/static/7digitalAPI.xsd"
2
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3
+ <GeoIpLookup>
4
+ <ipaddress>1.2.3.4</ipaddress>
5
+ <countryCode>AU</countryCode>
6
+ </GeoIpLookup>
7
+ </response>
@@ -0,0 +1,171 @@
1
+ <response status="ok" version="1.2" xsi:noNamespaceSchemaLocation="http://api.7digital.com/1.2/static/7digitalAPI.xsd"
2
+ xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
3
+ <list id="3202">
4
+ <key>featured_albums</key>
5
+ <listItems>
6
+ <listItem id="1889735">
7
+ <type>release</type>
8
+ <release id="1889735">
9
+ <title>Battle Born</title>
10
+ <version/>
11
+ <type>Album</type>
12
+ <barcode>00602537147700</barcode>
13
+ <year>2009</year>
14
+ <explicitContent>false</explicitContent>
15
+ <artist id="616">
16
+ <name>The Killers</name>
17
+ <appearsAs>The Killers</appearsAs>
18
+ <url>http://www.7digital.com/artists/the-killers/?partner=1401</url>
19
+ </artist>
20
+ <url>http://www.7digital.com/artists/the-killers/battle-born-2/?partner=1401</url>
21
+ <image>http://cdn.7static.com/static/img/sleeveart/00/018/897/0001889735_50.jpg</image>
22
+ <releaseDate>2012-09-17T00:00:00+01:00</releaseDate>
23
+ <price>
24
+ <currency code="GBP"/>
25
+ <value>5</value>
26
+ <formattedPrice>£5.00</formattedPrice>
27
+ <rrp>7.99</rrp>
28
+ <formattedRrp>£7.99</formattedRrp>
29
+ <onSale>true</onSale>
30
+ </price>
31
+ <formats availableDrmFree="true">
32
+ <format id="17">
33
+ <fileFormat>MP3</fileFormat>
34
+ <bitRate>320</bitRate>
35
+ <drmFree>true</drmFree>
36
+ </format>
37
+ </formats>
38
+ <label id="133987">
39
+ <name>Digital Distribution Turkey</name>
40
+ </label>
41
+ </release>
42
+ </listItem>
43
+ <listItem id="1863720">
44
+ <type>release</type>
45
+ <release id="1863720">
46
+ <title>Shields</title>
47
+ <version/>
48
+ <type>Album</type>
49
+ <barcode>0801061022938</barcode>
50
+ <year>2012</year>
51
+ <explicitContent>false</explicitContent>
52
+ <artist id="171648">
53
+ <name>Grizzly Bear</name>
54
+ <appearsAs>Grizzly Bear</appearsAs>
55
+ <url>http://www.7digital.com/artists/grizzly-bear/?partner=1401</url>
56
+ </artist>
57
+ <url>http://www.7digital.com/artists/grizzly-bear/shields/?partner=1401</url>
58
+ <image>http://cdn.7static.com/static/img/sleeveart/00/018/637/0001863720_50.jpg</image>
59
+ <releaseDate>2012-09-16T00:00:00+01:00</releaseDate>
60
+ <price>
61
+ <currency code="GBP"/>
62
+ <value>5</value>
63
+ <formattedPrice>£5.00</formattedPrice>
64
+ <rrp>7.99</rrp>
65
+ <formattedRrp>£7.99</formattedRrp>
66
+ <onSale>true</onSale>
67
+ </price>
68
+ <formats availableDrmFree="true">
69
+ <format id="17">
70
+ <fileFormat>MP3</fileFormat>
71
+ <bitRate>320</bitRate>
72
+ <drmFree>true</drmFree>
73
+ </format>
74
+ <format id="33">
75
+ <fileFormat>M4A</fileFormat>
76
+ <bitRate>320</bitRate>
77
+ <drmFree>true</drmFree>
78
+ </format>
79
+ </formats>
80
+ <label id="811">
81
+ <name>Warp Records</name>
82
+ </label>
83
+ </release>
84
+ </listItem>
85
+ <listItem id="1848275">
86
+ <type>release</type>
87
+ <release id="1848275">
88
+ <title>Total Loss</title>
89
+ <version/>
90
+ <type>Album</type>
91
+ <barcode>5055453701450</barcode>
92
+ <year>2012</year>
93
+ <explicitContent>false</explicitContent>
94
+ <artist id="766646">
95
+ <name>How To Dress Well</name>
96
+ <appearsAs>How To Dress Well</appearsAs>
97
+ <url>http://www.7digital.com/artists/how-to-dress-well/?partner=1401</url>
98
+ </artist>
99
+ <url>http://www.7digital.com/artists/how-to-dress-well/total-loss/?partner=1401</url>
100
+ <image>http://cdn.7static.com/static/img/sleeveart/00/018/482/0001848275_50.jpg</image>
101
+ <releaseDate>2012-09-17T00:00:00+01:00</releaseDate>
102
+ <price>
103
+ <currency code="GBP"/>
104
+ <value>5</value>
105
+ <formattedPrice>£5.00</formattedPrice>
106
+ <rrp>7.99</rrp>
107
+ <formattedRrp>£7.99</formattedRrp>
108
+ <onSale>true</onSale>
109
+ </price>
110
+ <formats availableDrmFree="true">
111
+ <format id="17">
112
+ <fileFormat>MP3</fileFormat>
113
+ <bitRate>320</bitRate>
114
+ <drmFree>true</drmFree>
115
+ </format>
116
+ <format id="33">
117
+ <fileFormat>M4A</fileFormat>
118
+ <bitRate>320</bitRate>
119
+ <drmFree>true</drmFree>
120
+ </format>
121
+ </formats>
122
+ <label id="74276">
123
+ <name>Weird World</name>
124
+ </label>
125
+ </release>
126
+ </listItem>
127
+ <listItem id="1896829">
128
+ <type>release</type>
129
+ <release id="1896829">
130
+ <title>Maybe Today, Maybe Tomorrow</title>
131
+ <version/>
132
+ <type>Album</type>
133
+ <barcode>5060246123500</barcode>
134
+ <year>2012</year>
135
+ <explicitContent>false</explicitContent>
136
+ <artist id="479133">
137
+ <name>We Are The Ocean</name>
138
+ <appearsAs>We Are The Ocean</appearsAs>
139
+ <url>http://www.7digital.com/artists/we-are-the-ocean/?partner=1401</url>
140
+ </artist>
141
+ <url>http://www.7digital.com/artists/we-are-the-ocean/maybe-today-maybe-tomorrow-2/?partner=1401</url>
142
+ <image>http://cdn.7static.com/static/img/sleeveart/00/018/968/0001896829_50.jpg</image>
143
+ <releaseDate>2012-09-17T00:00:00+01:00</releaseDate>
144
+ <price>
145
+ <currency code="GBP"/>
146
+ <value>5</value>
147
+ <formattedPrice>£5.00</formattedPrice>
148
+ <rrp>7.99</rrp>
149
+ <formattedRrp>£7.99</formattedRrp>
150
+ <onSale>true</onSale>
151
+ </price>
152
+ <formats availableDrmFree="true">
153
+ <format id="17">
154
+ <fileFormat>MP3</fileFormat>
155
+ <bitRate>320</bitRate>
156
+ <drmFree>true</drmFree>
157
+ </format>
158
+ <format id="33">
159
+ <fileFormat>M4A</fileFormat>
160
+ <bitRate>320</bitRate>
161
+ <drmFree>true</drmFree>
162
+ </format>
163
+ </formats>
164
+ <label id="838">
165
+ <name>Hassle Records</name>
166
+ </label>
167
+ </release>
168
+ </listItem>
169
+ </listItems>
170
+ </list>
171
+ </response>
@@ -0,0 +1,5 @@
1
+ <response status="ok" version="1.2">
2
+ <user>
3
+ <emailAddress>user@example.com</emailAddress>
4
+ </user>
5
+ </response>
@@ -4,4 +4,5 @@
4
4
  <appearsAs>The E.A.</appearsAs>
5
5
  <image>http://somewhere.com/tea.jpg</image>
6
6
  <url>http://7digital.com/artists/tea?partner=1</url>
7
+ <popularity>0.55</popularity>
7
8
  </artist>
@@ -0,0 +1,89 @@
1
+ <list id="3202">
2
+ <key>featured_albums</key>
3
+ <listItems>
4
+ <listItem id="1879539">
5
+ <type>release</type>
6
+ <release id="1879539">
7
+ <title>Coexist</title>
8
+ <version/>
9
+ <type>Album</type>
10
+ <barcode>634904608057</barcode>
11
+ <year>2012</year>
12
+ <explicitContent>false</explicitContent>
13
+ <artist id="382774">
14
+ <name>The xx</name>
15
+ <appearsAs>The xx</appearsAs>
16
+ <url>http://www.7digital.com/artists/the-xx/?partner=1401</url>
17
+ </artist>
18
+ <url>http://www.7digital.com/artists/the-xx/coexist/?partner=1401</url>
19
+ <image>http://cdn.7static.com/static/img/sleeveart/00/018/795/0001879539_50.jpg</image>
20
+ <releaseDate>2012-09-10T00:00:00+01:00</releaseDate>
21
+ <price>
22
+ <currency code="GBP"/>
23
+ <value>5</value>
24
+ <formattedPrice>£5.00</formattedPrice>
25
+ <rrp>7.99</rrp>
26
+ <formattedRrp>£7.99</formattedRrp>
27
+ <onSale>true</onSale>
28
+ </price>
29
+ <formats availableDrmFree="true">
30
+ <format id="17">
31
+ <fileFormat>MP3</fileFormat>
32
+ <bitRate>320</bitRate>
33
+ <drmFree>true</drmFree>
34
+ </format>
35
+ <format id="33">
36
+ <fileFormat>M4A</fileFormat>
37
+ <bitRate>320</bitRate>
38
+ <drmFree>true</drmFree>
39
+ </format>
40
+ </formats>
41
+ <label id="10983">
42
+ <name>Young Turks</name>
43
+ </label>
44
+ </release>
45
+ </listItem>
46
+ <listItem id="1879543">
47
+ <type>release</type>
48
+ <release id="1879543">
49
+ <title>Love This Giant</title>
50
+ <version/>
51
+ <type>Album</type>
52
+ <barcode>652637323160</barcode>
53
+ <year>2012</year>
54
+ <explicitContent>false</explicitContent>
55
+ <artist id="2640">
56
+ <name>David Byrne</name>
57
+ <appearsAs>David Byrne &amp; St. Vincent</appearsAs>
58
+ <url>http://www.7digital.com/artists/david-byrne/?partner=1401</url>
59
+ </artist>
60
+ <url>http://www.7digital.com/artists/david-byrne/love-this-giant/?partner=1401</url>
61
+ <image>http://cdn.7static.com/static/img/sleeveart/00/018/795/0001879543_50.jpg</image>
62
+ <releaseDate>2012-09-10T00:00:00+01:00</releaseDate>
63
+ <price>
64
+ <currency code="GBP"/>
65
+ <value>5</value>
66
+ <formattedPrice>£5.00</formattedPrice>
67
+ <rrp>7.99</rrp>
68
+ <formattedRrp>£7.99</formattedRrp>
69
+ <onSale>true</onSale>
70
+ </price>
71
+ <formats availableDrmFree="true">
72
+ <format id="17">
73
+ <fileFormat>MP3</fileFormat>
74
+ <bitRate>320</bitRate>
75
+ <drmFree>true</drmFree>
76
+ </format>
77
+ <format id="33">
78
+ <fileFormat>M4A</fileFormat>
79
+ <bitRate>320</bitRate>
80
+ <drmFree>true</drmFree>
81
+ </format>
82
+ </formats>
83
+ <label id="905">
84
+ <name>4AD</name>
85
+ </label>
86
+ </release>
87
+ </listItem>
88
+ </listItems>
89
+ </list>