7digital 0.1.2 → 0.1.5

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 (197) hide show
  1. checksums.yaml +7 -0
  2. data/README.rdoc +143 -143
  3. data/lib/sevendigital.rb +55 -55
  4. data/lib/sevendigital/api_operator.rb +127 -127
  5. data/lib/sevendigital/api_operator_cached.rb +91 -62
  6. data/lib/sevendigital/api_request.rb +72 -62
  7. data/lib/sevendigital/client.rb +122 -122
  8. data/lib/sevendigital/client_configuration.rb +85 -83
  9. data/lib/sevendigital/client_digestors.rb +122 -122
  10. data/lib/sevendigital/client_managers.rb +57 -57
  11. data/lib/sevendigital/digestion_tract/api_response_digestor.rb +48 -48
  12. data/lib/sevendigital/digestion_tract/artist_digestor.rb +35 -35
  13. data/lib/sevendigital/digestion_tract/basket_digestor.rb +19 -19
  14. data/lib/sevendigital/digestion_tract/basket_item_digestor.rb +26 -26
  15. data/lib/sevendigital/digestion_tract/chart_item_digestor.rb +34 -34
  16. data/lib/sevendigital/digestion_tract/country_digestor.rb +15 -15
  17. data/lib/sevendigital/digestion_tract/digestor.rb +122 -122
  18. data/lib/sevendigital/digestion_tract/download_url_digestor.rb +23 -23
  19. data/lib/sevendigital/digestion_tract/format_digestor.rb +24 -24
  20. data/lib/sevendigital/digestion_tract/label_digestor.rb +21 -21
  21. data/lib/sevendigital/digestion_tract/list_digestor.rb +24 -24
  22. data/lib/sevendigital/digestion_tract/list_item_digestor.rb +26 -26
  23. data/lib/sevendigital/digestion_tract/locker_digestor.rb +22 -22
  24. data/lib/sevendigital/digestion_tract/locker_release_digestor.rb +26 -26
  25. data/lib/sevendigital/digestion_tract/locker_track_digestor.rb +26 -26
  26. data/lib/sevendigital/digestion_tract/oauth_access_token_digestor.rb +18 -18
  27. data/lib/sevendigital/digestion_tract/oauth_request_token_digestor.rb +18 -18
  28. data/lib/sevendigital/digestion_tract/pager_digestor.rb +28 -28
  29. data/lib/sevendigital/digestion_tract/price_digestor.rb +28 -28
  30. data/lib/sevendigital/digestion_tract/release_digestor.rb +45 -45
  31. data/lib/sevendigital/digestion_tract/tag_digestor.rb +23 -23
  32. data/lib/sevendigital/digestion_tract/track_digestor.rb +38 -37
  33. data/lib/sevendigital/digestion_tract/user_card_digestor.rb +24 -24
  34. data/lib/sevendigital/digestion_tract/user_digestor.rb +21 -21
  35. data/lib/sevendigital/management/artist_manager.rb +97 -97
  36. data/lib/sevendigital/management/basket_manager.rb +29 -29
  37. data/lib/sevendigital/management/country_manager.rb +10 -10
  38. data/lib/sevendigital/management/list_manager.rb +18 -18
  39. data/lib/sevendigital/management/manager.rb +12 -12
  40. data/lib/sevendigital/management/oauth_manager.rb +23 -23
  41. data/lib/sevendigital/management/release_manager.rb +54 -54
  42. data/lib/sevendigital/management/tag_manager.rb +10 -10
  43. data/lib/sevendigital/management/track_manager.rb +29 -27
  44. data/lib/sevendigital/management/user_card_manager.rb +26 -26
  45. data/lib/sevendigital/management/user_manager.rb +76 -76
  46. data/lib/sevendigital/model/api_response.rb +32 -32
  47. data/lib/sevendigital/model/artist.rb +104 -104
  48. data/lib/sevendigital/model/basket.rb +15 -15
  49. data/lib/sevendigital/model/basket_item.rb +14 -14
  50. data/lib/sevendigital/model/card.rb +11 -11
  51. data/lib/sevendigital/model/chart_item.rb +9 -9
  52. data/lib/sevendigital/model/download_url.rb +7 -7
  53. data/lib/sevendigital/model/format.rb +7 -7
  54. data/lib/sevendigital/model/label.rb +7 -7
  55. data/lib/sevendigital/model/list.rb +4 -4
  56. data/lib/sevendigital/model/list_item.rb +8 -8
  57. data/lib/sevendigital/model/locker.rb +4 -4
  58. data/lib/sevendigital/model/locker_release.rb +9 -9
  59. data/lib/sevendigital/model/locker_track.rb +9 -9
  60. data/lib/sevendigital/model/price.rb +9 -9
  61. data/lib/sevendigital/model/release.rb +57 -57
  62. data/lib/sevendigital/model/sevendigital_error.rb +11 -11
  63. data/lib/sevendigital/model/sevendigital_object.rb +57 -57
  64. data/lib/sevendigital/model/tag.rb +7 -7
  65. data/lib/sevendigital/model/track.rb +87 -83
  66. data/lib/sevendigital/model/user.rb +74 -74
  67. data/lib/sevendigital/pager.rb +20 -20
  68. data/lib/sevendigital/version.rb +5 -5
  69. data/spec/api_operator_cached_spec.rb +233 -178
  70. data/spec/api_operator_spec.rb +320 -320
  71. data/spec/api_request_spec.rb +46 -31
  72. data/spec/client_configuration_spec.rb +78 -78
  73. data/spec/client_spec.rb +161 -161
  74. data/spec/data/config/sevendigital.yml +5 -5
  75. data/spec/data/configuration_env_override.yml +5 -5
  76. data/spec/data/configuration_override.yml +1 -1
  77. data/spec/digestion_tract/api_response_digestor_spec.rb +93 -93
  78. data/spec/digestion_tract/artist_digestor_spec.rb +81 -81
  79. data/spec/digestion_tract/basket_digestor_spec.rb +31 -31
  80. data/spec/digestion_tract/basket_item_digestor_spec.rb +58 -58
  81. data/spec/digestion_tract/chart_digestor_spec.rb +52 -52
  82. data/spec/digestion_tract/country_digestor_spec.rb +33 -33
  83. data/spec/digestion_tract/digestor_spec.rb +33 -33
  84. data/spec/digestion_tract/download_url_digestor_spec.rb +40 -40
  85. data/spec/digestion_tract/format_digestor_spec.rb +38 -38
  86. data/spec/digestion_tract/label_digestor_spec.rb +33 -33
  87. data/spec/digestion_tract/list_digestor_spec.rb +31 -31
  88. data/spec/digestion_tract/list_item_digestor_spec.rb +80 -80
  89. data/spec/digestion_tract/locker_digestor_spec.rb +30 -30
  90. data/spec/digestion_tract/locker_release_digestor_spec.rb +70 -70
  91. data/spec/digestion_tract/locker_track_digestor_spec.rb +56 -56
  92. data/spec/digestion_tract/oauth_access_token_digestor_spec.rb +34 -34
  93. data/spec/digestion_tract/oauth_request_token_digestor_spec.rb +34 -34
  94. data/spec/digestion_tract/pager_digestor_spec.rb +50 -50
  95. data/spec/digestion_tract/price_digestor_spec.rb +73 -73
  96. data/spec/digestion_tract/release_digestor_spec.rb +115 -115
  97. data/spec/digestion_tract/tag_digestor_spec.rb +46 -46
  98. data/spec/digestion_tract/track_digestor_spec.rb +105 -104
  99. data/spec/digestion_tract/user_card_digestor_spec.rb +58 -58
  100. data/spec/digestion_tract/user_digestor_spec.rb +42 -42
  101. data/spec/integration/artist_spec.rb +99 -86
  102. data/spec/integration/country_spec.rb +18 -18
  103. data/spec/integration/list_spec.rb +22 -22
  104. data/spec/integration/purchasing_spec.rb +24 -24
  105. data/spec/integration/release_spec.rb +34 -34
  106. data/spec/integration/sevendigital_spec.yml +4 -4
  107. data/spec/integration/track_spec.rb +38 -23
  108. data/spec/integration/user_spec.rb +22 -22
  109. data/spec/management/artist_manager_spec.rb +172 -172
  110. data/spec/management/basket_manager_spec.rb +77 -77
  111. data/spec/management/country_manager_spec.rb +34 -34
  112. data/spec/management/list_manager_spec.rb +26 -26
  113. data/spec/management/oauth_manager_spec.rb +72 -72
  114. data/spec/management/release_manager_spec.rb +200 -200
  115. data/spec/management/tag_manager_spec.rb +34 -34
  116. data/spec/management/track_manager_spec.rb +111 -107
  117. data/spec/management/user_card_manager_spec.rb +78 -78
  118. data/spec/management/user_manager_spec.rb +218 -218
  119. data/spec/model/api_response_spec.rb +48 -48
  120. data/spec/model/artist_spec.rb +162 -162
  121. data/spec/model/basket_spec.rb +62 -62
  122. data/spec/model/release_spec.rb +133 -133
  123. data/spec/model/sevendigital_object_spec.rb +73 -73
  124. data/spec/model/track_spec.rb +146 -144
  125. data/spec/model/user_spec.rb +181 -181
  126. data/spec/spec_helper.rb +86 -84
  127. data/spec/test-xml/methods/artist/browse.xml +21 -21
  128. data/spec/test-xml/methods/artist/byTag/top.xml +50 -50
  129. data/spec/test-xml/methods/artist/chart.xml +30 -30
  130. data/spec/test-xml/methods/artist/details.xml +9 -9
  131. data/spec/test-xml/methods/artist/releases.xml +544 -544
  132. data/spec/test-xml/methods/artist/search.xml +18 -18
  133. data/spec/test-xml/methods/artist/similar.xml +39 -39
  134. data/spec/test-xml/methods/artist/tags.xml +11 -11
  135. data/spec/test-xml/methods/artist/toptracks.xml +279 -279
  136. data/spec/test-xml/methods/basket/additem.xml +23 -23
  137. data/spec/test-xml/methods/basket/create.xml +10 -10
  138. data/spec/test-xml/methods/basket/index.xml +23 -23
  139. data/spec/test-xml/methods/basket/removeitem.xml +10 -10
  140. data/spec/test-xml/methods/country/resolve.xml +6 -6
  141. data/spec/test-xml/methods/editorial/list.xml +170 -170
  142. data/spec/test-xml/methods/oauth/accesstoken.xml +5 -5
  143. data/spec/test-xml/methods/oauth/requesttoken.xml +5 -5
  144. data/spec/test-xml/methods/release/bydate.xml +173 -173
  145. data/spec/test-xml/methods/release/bytag/top.xml +150 -150
  146. data/spec/test-xml/methods/release/chart.xml +181 -181
  147. data/spec/test-xml/methods/release/details.xml +48 -48
  148. data/spec/test-xml/methods/release/recommend.xml +89 -89
  149. data/spec/test-xml/methods/release/search.xml +194 -194
  150. data/spec/test-xml/methods/release/tags.xml +27 -27
  151. data/spec/test-xml/methods/release/tracks.xml +28 -28
  152. data/spec/test-xml/methods/tag/index.xml +16 -16
  153. data/spec/test-xml/methods/track/chart.xml +149 -149
  154. data/spec/test-xml/methods/track/details.xml +30 -30
  155. data/spec/test-xml/methods/track/search.xml +159 -159
  156. data/spec/test-xml/methods/user/details.xml +4 -4
  157. data/spec/test-xml/methods/user/locker.xml +49 -49
  158. data/spec/test-xml/methods/user/payment/card/add.xml +7 -7
  159. data/spec/test-xml/methods/user/payment/card/index.xml +7 -7
  160. data/spec/test-xml/methods/user/purchase/basket.xml +48 -48
  161. data/spec/test-xml/methods/user/purchase/item.xml +48 -48
  162. data/spec/test-xml/methods/user/signUp.xml +5 -5
  163. data/spec/test-xml/objects/artist.xml +7 -7
  164. data/spec/test-xml/objects/artist_chart_item.xml +7 -7
  165. data/spec/test-xml/objects/artist_list.xml +22 -22
  166. data/spec/test-xml/objects/artist_list_empty.xml +4 -4
  167. data/spec/test-xml/objects/basket.xml +21 -21
  168. data/spec/test-xml/objects/basket_item.xml +11 -11
  169. data/spec/test-xml/objects/basket_item_list.xml +25 -25
  170. data/spec/test-xml/objects/basket_item_list_empty.xml +1 -1
  171. data/spec/test-xml/objects/download_url.xml +7 -7
  172. data/spec/test-xml/objects/list.xml +89 -89
  173. data/spec/test-xml/objects/list_item_list.xml +85 -85
  174. data/spec/test-xml/objects/list_item_release.xml +13 -13
  175. data/spec/test-xml/objects/locker.xml +47 -47
  176. data/spec/test-xml/objects/locker_release.xml +40 -40
  177. data/spec/test-xml/objects/locker_release_list.xml +87 -87
  178. data/spec/test-xml/objects/locker_release_list_empty.xml +4 -4
  179. data/spec/test-xml/objects/locker_release_one_item_list.xml +43 -43
  180. data/spec/test-xml/objects/locker_track.xml +25 -25
  181. data/spec/test-xml/objects/locker_track_list.xml +26 -26
  182. data/spec/test-xml/objects/locker_track_list_empty.xml +2 -2
  183. data/spec/test-xml/objects/nested_release_list.xml +22 -22
  184. data/spec/test-xml/objects/oauth_access_token.xml +3 -3
  185. data/spec/test-xml/objects/oauth_request_token.xml +3 -3
  186. data/spec/test-xml/objects/price.xml +7 -7
  187. data/spec/test-xml/objects/release.xml +40 -40
  188. data/spec/test-xml/objects/release_chart_item.xml +39 -39
  189. data/spec/test-xml/objects/release_list.xml +18 -18
  190. data/spec/test-xml/objects/release_list_empty.xml +4 -4
  191. data/spec/test-xml/objects/response.xml +38 -38
  192. data/spec/test-xml/objects/tag.xml +4 -4
  193. data/spec/test-xml/objects/track.xml +34 -33
  194. data/spec/test-xml/objects/track_chart_item.xml +27 -27
  195. data/spec/test-xml/objects/user.xml +4 -4
  196. data/spec/test-xml/objects/user_payment_card.xml +5 -5
  197. metadata +15 -25
@@ -1,5 +1,5 @@
1
- common:
2
- api_url: test-yml-rails-common.7digital.com
3
-
4
- development:
5
- api_url: test-yml-development.7digital.com
1
+ common:
2
+ api_url: test-yml-rails-common.7digital.com
3
+
4
+ development:
5
+ api_url: test-yml-development.7digital.com
@@ -1,5 +1,5 @@
1
- common:
2
- api_url: test-yml-common.7digital.com
3
-
4
- development:
5
- api_url: test-yml-development.7digital.com
1
+ common:
2
+ api_url: test-yml-common.7digital.com
3
+
4
+ development:
5
+ api_url: test-yml-development.7digital.com
@@ -1,2 +1,2 @@
1
- api_url: test-yml-simple.7digital.com
1
+ api_url: test-yml-simple.7digital.com
2
2
  api_version: yml-simple
@@ -1,93 +1,93 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "ApiResponseDigestor" do
4
-
5
- before do
6
- @api_response_digestor = Sevendigital::ApiResponseDigestor.new(nil)
7
- end
8
-
9
- it "should create a response with body from http ok response" do
10
- body = '<response status="ok"></response>'
11
-
12
- stub_http_response = stub_ok_http_response(body)
13
-
14
- response = @api_response_digestor.from_http_response(stub_http_response)
15
- response.error_code.should == 0
16
- response.content.should == body
17
- end
18
-
19
- it "should create an error response from http non-ok response" do
20
- expected_message = 'Authorisation failed'
21
- expected_error_code = 401
22
-
23
- stub_http_response = stub(Net::HTTPSuccess)
24
- stub_http_response.stub!(:is_a?).with(Net::HTTPSuccess).and_return(false)
25
- stub_http_response.stub!(:code).and_return(expected_error_code.to_s)
26
- stub_http_response.stub!(:body).and_return(expected_message)
27
- stub_http_response.stub!(:header).and_return(nil)
28
-
29
- response = @api_response_digestor.from_http_response(stub_http_response)
30
- response.error_code.should == 401
31
- response.error_message.should == expected_message
32
-
33
- end
34
-
35
-
36
- it "should store headers from http response" do
37
-
38
- stub_http_response = stub_ok_http_response('<response status="ok"></response>')
39
- stub_http_response.stub!(:header).and_return({"cache-control" => "test", "date" => "now"})
40
-
41
- response = @api_response_digestor.from_http_response(stub_http_response)
42
- response.headers["cache-control"].should == "test"
43
- response.headers["date"].should == "now"
44
- end
45
-
46
-
47
- it "should create a response with body from xml ok response" do
48
- xml_response = stub_ok_http_response("<response status=\"ok\">body</response>")
49
- response = @api_response_digestor.from_http_response(xml_response)
50
- response.error_code.should == 0
51
- end
52
-
53
-
54
- it "should create a response with error details from xml error response" do
55
-
56
- xml_response = stub_ok_http_response(
57
- '<response status="error"><error code="1000"><errorMessage>expected error message</errorMessage></error></response>')
58
- response = @api_response_digestor.from_http_response(xml_response)
59
- response.error_code.should == 1000
60
- response.error_message.should == 'expected error message'
61
- end
62
-
63
- it "should create a response with error details from invalid xml response" do
64
-
65
- xml_response = stub_ok_http_response('<wrongresponse status="ok"><test /></wrongresponse>')
66
- response = @api_response_digestor.from_http_response(xml_response)
67
- response.error_code.should == 10001
68
- response.error_message.should == 'Invalid 7digital API response'
69
-
70
- xml_response = stub_ok_http_response('<response><test /></response>')
71
- response = @api_response_digestor.from_http_response(xml_response)
72
- response.error_code.should == 10001
73
- response.error_message.should == 'Invalid 7digital API response'
74
- end
75
-
76
-
77
- it "should create a response with error details from valid xml response with invalid status" do
78
-
79
- xml_response = stub_ok_http_response('<response status="unkown"><test></test></response>')
80
- response = @api_response_digestor.from_http_response(xml_response)
81
- response.error_code.should == 10001
82
- response.error_message.should == 'Invalid 7digital API response'
83
- end
84
-
85
- def stub_ok_http_response(body)
86
- stub_http_response = stub(Net::HTTPSuccess)
87
- stub_http_response.stub!(:is_a?).with(Net::HTTPSuccess).and_return(true)
88
- stub_http_response.stub!(:body).and_return(body)
89
- stub_http_response.stub!(:header).and_return(nil)
90
- stub_http_response
91
- end
92
-
93
- end
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "ApiResponseDigestor" do
4
+
5
+ before do
6
+ @api_response_digestor = Sevendigital::ApiResponseDigestor.new(nil)
7
+ end
8
+
9
+ it "should create a response with body from http ok response" do
10
+ body = '<response status="ok"></response>'
11
+
12
+ stub_http_response = stub_ok_http_response(body)
13
+
14
+ response = @api_response_digestor.from_http_response(stub_http_response)
15
+ response.error_code.should == 0
16
+ response.content.should == body
17
+ end
18
+
19
+ it "should create an error response from http non-ok response" do
20
+ expected_message = 'Authorisation failed'
21
+ expected_error_code = 401
22
+
23
+ stub_http_response = stub(Net::HTTPSuccess)
24
+ stub_http_response.stub!(:is_a?).with(Net::HTTPSuccess).and_return(false)
25
+ stub_http_response.stub!(:code).and_return(expected_error_code.to_s)
26
+ stub_http_response.stub!(:body).and_return(expected_message)
27
+ stub_http_response.stub!(:header).and_return(nil)
28
+
29
+ response = @api_response_digestor.from_http_response(stub_http_response)
30
+ response.error_code.should == 401
31
+ response.error_message.should == expected_message
32
+
33
+ end
34
+
35
+
36
+ it "should store headers from http response" do
37
+
38
+ stub_http_response = stub_ok_http_response('<response status="ok"></response>')
39
+ stub_http_response.stub!(:header).and_return({"cache-control" => "test", "date" => "now"})
40
+
41
+ response = @api_response_digestor.from_http_response(stub_http_response)
42
+ response.headers["cache-control"].should == "test"
43
+ response.headers["date"].should == "now"
44
+ end
45
+
46
+
47
+ it "should create a response with body from xml ok response" do
48
+ xml_response = stub_ok_http_response("<response status=\"ok\">body</response>")
49
+ response = @api_response_digestor.from_http_response(xml_response)
50
+ response.error_code.should == 0
51
+ end
52
+
53
+
54
+ it "should create a response with error details from xml error response" do
55
+
56
+ xml_response = stub_ok_http_response(
57
+ '<response status="error"><error code="1000"><errorMessage>expected error message</errorMessage></error></response>')
58
+ response = @api_response_digestor.from_http_response(xml_response)
59
+ response.error_code.should == 1000
60
+ response.error_message.should == 'expected error message'
61
+ end
62
+
63
+ it "should create a response with error details from invalid xml response" do
64
+
65
+ xml_response = stub_ok_http_response('<wrongresponse status="ok"><test /></wrongresponse>')
66
+ response = @api_response_digestor.from_http_response(xml_response)
67
+ response.error_code.should == 10001
68
+ response.error_message.should == 'Invalid 7digital API response'
69
+
70
+ xml_response = stub_ok_http_response('<response><test /></response>')
71
+ response = @api_response_digestor.from_http_response(xml_response)
72
+ response.error_code.should == 10001
73
+ response.error_message.should == 'Invalid 7digital API response'
74
+ end
75
+
76
+
77
+ it "should create a response with error details from valid xml response with invalid status" do
78
+
79
+ xml_response = stub_ok_http_response('<response status="unkown"><test></test></response>')
80
+ response = @api_response_digestor.from_http_response(xml_response)
81
+ response.error_code.should == 10001
82
+ response.error_message.should == 'Invalid 7digital API response'
83
+ end
84
+
85
+ def stub_ok_http_response(body)
86
+ stub_http_response = stub(Net::HTTPSuccess)
87
+ stub_http_response.stub!(:is_a?).with(Net::HTTPSuccess).and_return(true)
88
+ stub_http_response.stub!(:body).and_return(body)
89
+ stub_http_response.stub!(:header).and_return(nil)
90
+ stub_http_response
91
+ end
92
+
93
+ end
@@ -1,82 +1,82 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "ArtistDigestor" do
4
-
5
- before do
6
- @artist_digestor = Sevendigital::ArtistDigestor.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
- <release id="123">
13
- <name>expected artist name</name>
14
- </release>
15
- XML
16
-
17
- running {@artist_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
-
19
- end
20
-
21
- it "should digest artist xml and populate minimum available properties" do
22
-
23
- xml_response = <<XML
24
- <artist id="123">
25
- <name>expected artist name</name>
26
- </artist>
27
- XML
28
-
29
- artist = @artist_digestor.from_xml_string(xml_response)
30
- artist.id.should == 123
31
- artist.name.should == "expected artist name"
32
- end
33
-
34
- it "should digest artist xml and populate all available properties" do
35
-
36
- xml_response = load_sample_object_xml("artist")
37
- artist = @artist_digestor.from_xml_string(xml_response)
38
- artist.id.should == 123
39
- artist.name.should == "The Expected Artist"
40
- artist.sort_name.should == "Expected Artist, The"
41
- artist.appears_as.should == "The E.A."
42
- artist.image.should == "http://somewhere.com/tea.jpg"
43
- artist.url.should == "http://7digital.com/artists/tea?partner=1"
44
- artist.popularity.should == 0.55
45
- end
46
-
47
- it "should digest xml containing list of artists and return a paginated array" do
48
-
49
- xml_response = load_sample_object_xml("artist_list")
50
-
51
- artists = @artist_digestor.list_from_xml_string(xml_response, :artists)
52
- artists[0].id.should == 14
53
- artists[1].id.should == 20
54
- artists[2].id.should == 106
55
- artists.size.should == 3
56
- artists.total_entries.should == 26
57
-
58
- end
59
-
60
- it "should digest xml containing empty list of releases and return an empty paginated array" do
61
-
62
- xml_response = load_sample_object_xml("artist_list_empty")
63
-
64
- artists = @artist_digestor.list_from_xml_string(xml_response, :artists)
65
- artists.size.should == 0
66
- artists.total_entries.should == 0
67
-
68
- end
69
-
70
- it "should not digest list from invalid xml but throw up (exception)" do
71
-
72
- xml_response = <<XML
73
- <release id="123">
74
- <name>expected artist name</name>
75
- </release>
76
- XML
77
-
78
- running {@artist_digestor.list_from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
79
-
80
- end
81
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "ArtistDigestor" do
4
+
5
+ before do
6
+ @artist_digestor = Sevendigital::ArtistDigestor.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
+ <release id="123">
13
+ <name>expected artist name</name>
14
+ </release>
15
+ XML
16
+
17
+ running {@artist_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
18
+
19
+ end
20
+
21
+ it "should digest artist xml and populate minimum available properties" do
22
+
23
+ xml_response = <<XML
24
+ <artist id="123">
25
+ <name>expected artist name</name>
26
+ </artist>
27
+ XML
28
+
29
+ artist = @artist_digestor.from_xml_string(xml_response)
30
+ artist.id.should == 123
31
+ artist.name.should == "expected artist name"
32
+ end
33
+
34
+ it "should digest artist xml and populate all available properties" do
35
+
36
+ xml_response = load_sample_object_xml("artist")
37
+ artist = @artist_digestor.from_xml_string(xml_response)
38
+ artist.id.should == 123
39
+ artist.name.should == "The Expected Artist"
40
+ artist.sort_name.should == "Expected Artist, The"
41
+ artist.appears_as.should == "The E.A."
42
+ artist.image.should == "http://somewhere.com/tea.jpg"
43
+ artist.url.should == "http://7digital.com/artists/tea?partner=1"
44
+ artist.popularity.should == 0.55
45
+ end
46
+
47
+ it "should digest xml containing list of artists and return a paginated array" do
48
+
49
+ xml_response = load_sample_object_xml("artist_list")
50
+
51
+ artists = @artist_digestor.list_from_xml_string(xml_response, :artists)
52
+ artists[0].id.should == 14
53
+ artists[1].id.should == 20
54
+ artists[2].id.should == 106
55
+ artists.size.should == 3
56
+ artists.total_entries.should == 26
57
+
58
+ end
59
+
60
+ it "should digest xml containing empty list of releases and return an empty paginated array" do
61
+
62
+ xml_response = load_sample_object_xml("artist_list_empty")
63
+
64
+ artists = @artist_digestor.list_from_xml_string(xml_response, :artists)
65
+ artists.size.should == 0
66
+ artists.total_entries.should == 0
67
+
68
+ end
69
+
70
+ it "should not digest list from invalid xml but throw up (exception)" do
71
+
72
+ xml_response = <<XML
73
+ <release id="123">
74
+ <name>expected artist name</name>
75
+ </release>
76
+ XML
77
+
78
+ running {@artist_digestor.list_from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
79
+
80
+ end
81
+
82
82
  end
@@ -1,32 +1,32 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "BasketDigestor" do
4
-
5
- before do
6
- @basket_digestor = Sevendigital::BasketDigestor.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
- <fileFormat>MP3</fileFormat>
14
- <bitRate>320</bitRate>
15
- <drmFree>True</drmFree>
16
- </zzz>
17
- XML
18
-
19
- running {@basket_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
- end
21
-
22
- it "should parse from Basket xml and populate all properties" do
23
-
24
- xml_response = load_sample_object_xml("basket")
25
-
26
- basket = @basket_digestor.from_xml_string(xml_response)
27
- basket.id.should == "00000000-0000-0000-0000-000000000000"
28
- basket.basket_items.size == 1
29
- basket.basket_items[0].id == 15284882
30
- end
31
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "BasketDigestor" do
4
+
5
+ before do
6
+ @basket_digestor = Sevendigital::BasketDigestor.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
+ <fileFormat>MP3</fileFormat>
14
+ <bitRate>320</bitRate>
15
+ <drmFree>True</drmFree>
16
+ </zzz>
17
+ XML
18
+
19
+ running {@basket_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
+ end
21
+
22
+ it "should parse from Basket xml and populate all properties" do
23
+
24
+ xml_response = load_sample_object_xml("basket")
25
+
26
+ basket = @basket_digestor.from_xml_string(xml_response)
27
+ basket.id.should == "00000000-0000-0000-0000-000000000000"
28
+ basket.basket_items.size == 1
29
+ basket.basket_items[0].id == 15284882
30
+ end
31
+
32
32
  end
@@ -1,58 +1,58 @@
1
- # coding: utf-8
2
- require 'date'
3
- require File.expand_path('../../spec_helper', __FILE__)
4
-
5
- describe "BasketItemDigestor" do
6
-
7
- before do
8
- @basket_item_digestor = Sevendigital::BasketItemDigestor.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
- <artist id="123">
15
- <name>expected artist name</name>
16
- </artist>
17
- XML
18
-
19
- running {@basket_item_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
- end
21
-
22
- it "should digest basket item xml and populate all properties" do
23
-
24
- xml_response = load_sample_object_xml("basket_item")
25
-
26
- basket_item = @basket_item_digestor.from_xml_string(xml_response)
27
- basket_item.id.should == 15284882
28
- basket_item.type.should == :track
29
- basket_item.item_name.should == "Test"
30
- basket_item.artist_name.should == "Ghetto"
31
- basket_item.track_id.should == 2458384
32
- basket_item.release_id.should == 224820
33
- basket_item.price.value.should == 0.99
34
- end
35
-
36
- it "should digest xml containing list of basket items and return an array" do
37
-
38
- xml_response = load_sample_object_xml("basket_item_list")
39
-
40
- basket_items = @basket_item_digestor.list_from_xml_string(xml_response)
41
- basket_items[0].id.should == 15284882
42
- basket_items[0].type.should == :track
43
- basket_items[1].id.should == 15284883
44
- basket_items[1].type.should == :release
45
- basket_items.size.should == 2
46
-
47
- end
48
-
49
- it "should digest xml containing empty list of releases and return an empty paginated array" do
50
-
51
- xml_response = load_sample_object_xml("basket_item_list_empty")
52
-
53
- basket_items = @basket_item_digestor.list_from_xml_string(xml_response)
54
- basket_items.size.should == 0
55
-
56
- end
57
-
58
- end
1
+ # coding: utf-8
2
+ require 'date'
3
+ require File.expand_path('../../spec_helper', __FILE__)
4
+
5
+ describe "BasketItemDigestor" do
6
+
7
+ before do
8
+ @basket_item_digestor = Sevendigital::BasketItemDigestor.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
+ <artist id="123">
15
+ <name>expected artist name</name>
16
+ </artist>
17
+ XML
18
+
19
+ running {@basket_item_digestor.from_xml_string(xml_response)}.should raise_error(Sevendigital::DigestiveProblem)
20
+ end
21
+
22
+ it "should digest basket item xml and populate all properties" do
23
+
24
+ xml_response = load_sample_object_xml("basket_item")
25
+
26
+ basket_item = @basket_item_digestor.from_xml_string(xml_response)
27
+ basket_item.id.should == 15284882
28
+ basket_item.type.should == :track
29
+ basket_item.item_name.should == "Test"
30
+ basket_item.artist_name.should == "Ghetto"
31
+ basket_item.track_id.should == 2458384
32
+ basket_item.release_id.should == 224820
33
+ basket_item.price.value.should == 0.99
34
+ end
35
+
36
+ it "should digest xml containing list of basket items and return an array" do
37
+
38
+ xml_response = load_sample_object_xml("basket_item_list")
39
+
40
+ basket_items = @basket_item_digestor.list_from_xml_string(xml_response)
41
+ basket_items[0].id.should == 15284882
42
+ basket_items[0].type.should == :track
43
+ basket_items[1].id.should == 15284883
44
+ basket_items[1].type.should == :release
45
+ basket_items.size.should == 2
46
+
47
+ end
48
+
49
+ it "should digest xml containing empty list of releases and return an empty paginated array" do
50
+
51
+ xml_response = load_sample_object_xml("basket_item_list_empty")
52
+
53
+ basket_items = @basket_item_digestor.list_from_xml_string(xml_response)
54
+ basket_items.size.should == 0
55
+
56
+ end
57
+
58
+ end