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,49 +1,49 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
- require 'time'
3
-
4
- describe "ApiResponse" do
5
-
6
- it "should be ok if error code is 0 and content is not empty" do
7
-
8
- response = Sevendigital::ApiResponse.new
9
- response.error_code = 0
10
- response.content = '<xml></xml>'
11
- response.ok?.should == true
12
-
13
- end
14
-
15
- it "should not be ok if error code is not 0" do
16
-
17
- response = Sevendigital::ApiResponse.new
18
- response.error_code = 5
19
- response.content = '<xml></xml>'
20
- response.ok?.should == false
21
-
22
- end
23
-
24
- it "should not be ok if response content is nil" do
25
-
26
- response = Sevendigital::ApiResponse.new
27
- response.error_code = 0
28
- response.ok?.should == false
29
-
30
- end
31
-
32
- it "should be serializable" do
33
- original_response = Sevendigital::ApiResponse.new
34
- original_response.content = "<response status='ok'><testElement id='123'>value</testElement></response>"
35
- original_response.error_code = 99
36
- original_response.headers = {"header" => "value"}
37
-
38
-
39
- tmp = Marshal.dump(original_response)
40
- restored_response = Marshal.load(tmp)
41
-
42
- restored_response.error_code.should == original_response.error_code
43
- restored_response.content.to_s.should == original_response.content.to_s
44
- restored_response.item_xml("response").to_s == "value"
45
- restored_response.headers.should == original_response.headers
46
-
47
- end
48
-
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+ require 'time'
3
+
4
+ describe "ApiResponse" do
5
+
6
+ it "should be ok if error code is 0 and content is not empty" do
7
+
8
+ response = Sevendigital::ApiResponse.new
9
+ response.error_code = 0
10
+ response.content = '<xml></xml>'
11
+ response.ok?.should == true
12
+
13
+ end
14
+
15
+ it "should not be ok if error code is not 0" do
16
+
17
+ response = Sevendigital::ApiResponse.new
18
+ response.error_code = 5
19
+ response.content = '<xml></xml>'
20
+ response.ok?.should == false
21
+
22
+ end
23
+
24
+ it "should not be ok if response content is nil" do
25
+
26
+ response = Sevendigital::ApiResponse.new
27
+ response.error_code = 0
28
+ response.ok?.should == false
29
+
30
+ end
31
+
32
+ it "should be serializable" do
33
+ original_response = Sevendigital::ApiResponse.new
34
+ original_response.content = "<response status='ok'><testElement id='123'>value</testElement></response>"
35
+ original_response.error_code = 99
36
+ original_response.headers = {"header" => "value"}
37
+
38
+
39
+ tmp = Marshal.dump(original_response)
40
+ restored_response = Marshal.load(tmp)
41
+
42
+ restored_response.error_code.should == original_response.error_code
43
+ restored_response.content.to_s.should == original_response.content.to_s
44
+ restored_response.item_xml("response").to_s == "value"
45
+ restored_response.headers.should == original_response.headers
46
+
47
+ end
48
+
49
49
  end
@@ -1,163 +1,163 @@
1
- require "date"
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "Artist" do
5
-
6
- before do
7
- @client = stub(Sevendigital::Client)
8
- @artist_manager = mock(Sevendigital::ArtistManager)
9
- @client.stub!(:artist).and_return @artist_manager
10
-
11
- @artist = Sevendigital::Artist.new(@client)
12
- @artist.id = 1234
13
- end
14
-
15
- it "get_details should get artist's basic details from manager" do
16
- expected_options = {:page => 2}
17
- fresh_artist = fake_artist_with_details
18
-
19
- @artist_manager.should_receive(:get_details) { |artist_id, options|
20
- artist_id.should == @artist.id
21
- (options.keys & expected_options.keys).should == expected_options.keys
22
- fresh_artist
23
- }
24
- @artist.get_details(expected_options).should == fresh_artist
25
-
26
- @artist.sort_name.should == fresh_artist.sort_name
27
- @artist.image.should == fresh_artist.image
28
- @artist.url.should == fresh_artist.url
29
-
30
- end
31
-
32
- it "get_releases should get releases from manager" do
33
- expected_options = {:page => 2}
34
-
35
- @artist_manager.should_receive(:get_releases) { |artist_id, options|
36
- artist_id.should == @artist.id
37
- (options.keys & expected_options.keys).should == expected_options.keys
38
- fake_release_list
39
- }
40
- @artist.get_releases(expected_options)
41
-
42
- end
43
-
44
- it "get_top_tracks should get tracks from manager" do
45
- expected_options = {:page => 2}
46
-
47
- @artist_manager.should_receive(:get_top_tracks) { |artist_id, options|
48
- artist_id.should == @artist.id
49
- (options.keys & expected_options.keys).should == expected_options.keys
50
- fake_track_list
51
- }
52
- @artist.get_top_tracks(expected_options)
53
-
54
- end
55
-
56
- it "get_similar should get similar artists from manager" do
57
- expected_options = {:page => 2}
58
-
59
- @artist_manager.should_receive(:get_similar) { |artist_id, options|
60
- artist_id.should == @artist.id
61
- (options.keys & expected_options.keys).should == expected_options.keys
62
- fake_artist_list
63
- }
64
- @artist.get_similar(expected_options)
65
-
66
- end
67
-
68
- it "get_tags should get tags from manager" do
69
- expected_options = {:page => 2}
70
-
71
- @artist_manager.should_receive(:get_tags) { |artist_id, options|
72
- artist_id.should == @artist.id
73
- (options.keys & expected_options.keys).should == expected_options.keys
74
- []
75
- }
76
- @artist.get_tags(expected_options)
77
-
78
- end
79
-
80
-
81
- it "should be a various artist if name contains various" do
82
-
83
- @artist.name = "various"
84
- @artist.various?.should == true
85
-
86
- end
87
-
88
- it "should be a various artist if appears as contains various" do
89
-
90
- @artist.name = "mr"
91
- @artist.appears_as = "mr various"
92
- @artist.various?.should == true
93
-
94
- end
95
-
96
- it "should be a various artist if resembles various artist" do
97
-
98
- @artist.name = "v.a."
99
- @artist.various?.should == true
100
- @artist.name = "vario"
101
- @artist.various?.should == true
102
- @artist.name = "vaious"
103
- @artist.various?.should == true
104
- @artist.name = "varios"
105
- @artist.various?.should == true
106
- @artist.name = "aaaa"
107
- @artist.various?.should == false
108
- @artist.name = "vaious"
109
- @artist.various?.should == true
110
- @artist.name = "varoius"
111
- @artist.various?.should == true
112
- @artist.name = "variuos"
113
- @artist.various?.should == true
114
-
115
- end
116
-
117
- it "should not be a various artist if it doesn't resemble various artist" do
118
-
119
- @artist.name = "mr small"
120
- @artist.appears_as = "mr big"
121
- @artist.various?.should == false
122
-
123
- end
124
-
125
- it "image should return link to image with specified image size" do
126
- release = fake_release_with_details
127
- release.image(333).should == "http://cdn.7static.com/static/img/artistimages/00/000/000/0000000001_333.jpg"
128
- end
129
-
130
- it "image should return link to image with returned image size" do
131
- release = fake_release_with_details
132
- release.image.should == "http://cdn.7static.com/static/img/artistimages/00/000/000/0000000001_300.jpg"
133
- end
134
-
135
- def fake_track_list
136
- tracks = Array.new
137
- tracks << Sevendigital::Track.new(@client)
138
- tracks << Sevendigital::Track.new(@client)
139
- tracks
140
- end
141
-
142
- def fake_release_list
143
- releases = Array.new
144
- releases << Sevendigital::Release.new(@client)
145
- releases << Sevendigital::Release.new(@client)
146
- releases
147
- end
148
-
149
- def fake_artist_list
150
- artists = Array.new
151
- artists << Sevendigital::Artist.new(@client)
152
- artists << Sevendigital::Artist.new(@client)
153
- artists
154
- end
155
-
156
- def fake_artist_with_details
157
- artist = Sevendigital::Artist.new(@client)
158
- artist.sort_name = "The, The"
159
- artist.image = "http://cdn.7static.com/static/img/artistimages/00/000/000/0000000001_300.jpg"
160
- artist.url = "url"
161
- artist
162
- end
1
+ require "date"
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "Artist" do
5
+
6
+ before do
7
+ @client = stub(Sevendigital::Client)
8
+ @artist_manager = mock(Sevendigital::ArtistManager)
9
+ @client.stub!(:artist).and_return @artist_manager
10
+
11
+ @artist = Sevendigital::Artist.new(@client)
12
+ @artist.id = 1234
13
+ end
14
+
15
+ it "get_details should get artist's basic details from manager" do
16
+ expected_options = {:page => 2}
17
+ fresh_artist = fake_artist_with_details
18
+
19
+ @artist_manager.should_receive(:get_details) { |artist_id, options|
20
+ artist_id.should == @artist.id
21
+ (options.keys & expected_options.keys).should == expected_options.keys
22
+ fresh_artist
23
+ }
24
+ @artist.get_details(expected_options).should == fresh_artist
25
+
26
+ @artist.sort_name.should == fresh_artist.sort_name
27
+ @artist.image.should == fresh_artist.image
28
+ @artist.url.should == fresh_artist.url
29
+
30
+ end
31
+
32
+ it "get_releases should get releases from manager" do
33
+ expected_options = {:page => 2}
34
+
35
+ @artist_manager.should_receive(:get_releases) { |artist_id, options|
36
+ artist_id.should == @artist.id
37
+ (options.keys & expected_options.keys).should == expected_options.keys
38
+ fake_release_list
39
+ }
40
+ @artist.get_releases(expected_options)
41
+
42
+ end
43
+
44
+ it "get_top_tracks should get tracks from manager" do
45
+ expected_options = {:page => 2}
46
+
47
+ @artist_manager.should_receive(:get_top_tracks) { |artist_id, options|
48
+ artist_id.should == @artist.id
49
+ (options.keys & expected_options.keys).should == expected_options.keys
50
+ fake_track_list
51
+ }
52
+ @artist.get_top_tracks(expected_options)
53
+
54
+ end
55
+
56
+ it "get_similar should get similar artists from manager" do
57
+ expected_options = {:page => 2}
58
+
59
+ @artist_manager.should_receive(:get_similar) { |artist_id, options|
60
+ artist_id.should == @artist.id
61
+ (options.keys & expected_options.keys).should == expected_options.keys
62
+ fake_artist_list
63
+ }
64
+ @artist.get_similar(expected_options)
65
+
66
+ end
67
+
68
+ it "get_tags should get tags from manager" do
69
+ expected_options = {:page => 2}
70
+
71
+ @artist_manager.should_receive(:get_tags) { |artist_id, options|
72
+ artist_id.should == @artist.id
73
+ (options.keys & expected_options.keys).should == expected_options.keys
74
+ []
75
+ }
76
+ @artist.get_tags(expected_options)
77
+
78
+ end
79
+
80
+
81
+ it "should be a various artist if name contains various" do
82
+
83
+ @artist.name = "various"
84
+ @artist.various?.should == true
85
+
86
+ end
87
+
88
+ it "should be a various artist if appears as contains various" do
89
+
90
+ @artist.name = "mr"
91
+ @artist.appears_as = "mr various"
92
+ @artist.various?.should == true
93
+
94
+ end
95
+
96
+ it "should be a various artist if resembles various artist" do
97
+
98
+ @artist.name = "v.a."
99
+ @artist.various?.should == true
100
+ @artist.name = "vario"
101
+ @artist.various?.should == true
102
+ @artist.name = "vaious"
103
+ @artist.various?.should == true
104
+ @artist.name = "varios"
105
+ @artist.various?.should == true
106
+ @artist.name = "aaaa"
107
+ @artist.various?.should == false
108
+ @artist.name = "vaious"
109
+ @artist.various?.should == true
110
+ @artist.name = "varoius"
111
+ @artist.various?.should == true
112
+ @artist.name = "variuos"
113
+ @artist.various?.should == true
114
+
115
+ end
116
+
117
+ it "should not be a various artist if it doesn't resemble various artist" do
118
+
119
+ @artist.name = "mr small"
120
+ @artist.appears_as = "mr big"
121
+ @artist.various?.should == false
122
+
123
+ end
124
+
125
+ it "image should return link to image with specified image size" do
126
+ artist = fake_artist_with_details
127
+ artist.image(333).should == "http://cdn.7static.com/static/img/artistimages/00/000/000/0000000001_333.jpg"
128
+ end
129
+
130
+ it "image should return link to image with returned image size" do
131
+ artist = fake_artist_with_details
132
+ artist.image.should == "http://cdn.7static.com/static/img/artistimages/00/000/000/0000000001_300.jpg"
133
+ end
134
+
135
+ def fake_track_list
136
+ tracks = Array.new
137
+ tracks << Sevendigital::Track.new(@client)
138
+ tracks << Sevendigital::Track.new(@client)
139
+ tracks
140
+ end
141
+
142
+ def fake_release_list
143
+ releases = Array.new
144
+ releases << Sevendigital::Release.new(@client)
145
+ releases << Sevendigital::Release.new(@client)
146
+ releases
147
+ end
148
+
149
+ def fake_artist_list
150
+ artists = Array.new
151
+ artists << Sevendigital::Artist.new(@client)
152
+ artists << Sevendigital::Artist.new(@client)
153
+ artists
154
+ end
155
+
156
+ def fake_artist_with_details
157
+ artist = Sevendigital::Artist.new(@client)
158
+ artist.sort_name = "The, The"
159
+ artist.image = "http://cdn.7static.com/static/img/artistimages/00/000/000/0000000001_300.jpg"
160
+ artist.url = "url"
161
+ artist
162
+ end
163
163
  end
@@ -1,63 +1,63 @@
1
- require File.expand_path('../../spec_helper', __FILE__)
2
-
3
- describe "Basket" do
4
-
5
- before do
6
- @client = stub(Sevendigital::Client)
7
- @basket_manager = mock(Sevendigital::BasketManager)
8
- @client.stub!(:basket).and_return @basket_manager
9
-
10
- @basket = Sevendigital::Basket.new(@client)
11
- @basket.id = "00000000-0000-0000-0000-000000000001"
12
- end
13
-
14
- it "add_item should should call add_item on basket manager and update the basket items" do
15
- expected_options = {:page => 2}
16
- a_track_id = 123
17
- a_release_id = 456
18
-
19
- a_basket_id = @basket.id
20
- an_updated_basket = fake_basket_with_items(@basket.id)
21
-
22
- @basket_manager.should_receive(:add_item) { |basket_id, release_id, track_id, options|
23
- basket_id.should == @basket.id
24
- release_id.should == a_release_id
25
- track_id.should == a_track_id
26
- (options.keys & expected_options.keys).should == expected_options.keys
27
- an_updated_basket
28
- }
29
- @basket.add_item(a_release_id, a_track_id, expected_options)
30
-
31
- @basket.id.should == a_basket_id
32
- @basket.basket_items.should == an_updated_basket.basket_items
33
-
34
- end
35
-
36
- it "remove_item should should call remove_item on basket manager and update the basket items" do
37
- expected_options = {:page => 2}
38
- an_item_id = 123
39
-
40
- a_basket_id = @basket.id
41
- an_updated_basket = fake_basket_with_items(@basket.id)
42
-
43
- @basket_manager.should_receive(:remove_item) { |basket_id, item_id, options|
44
- basket_id.should == @basket.id
45
- item_id.should == an_item_id
46
- (options.keys & expected_options.keys).should == expected_options.keys
47
- an_updated_basket
48
- }
49
- @basket.remove_item(an_item_id, expected_options)
50
-
51
- @basket.id.should == a_basket_id
52
- @basket.basket_items.should == an_updated_basket.basket_items
53
-
54
- end
55
-
56
-
57
- def fake_basket_with_items(id)
58
- basket = Sevendigital::Basket.new(@client)
59
- basket.id = id
60
- basket.basket_items = [Sevendigital::BasketItem.new(@client), Sevendigital::BasketItem.new(@client)]
61
- basket
62
- end
1
+ require File.expand_path('../../spec_helper', __FILE__)
2
+
3
+ describe "Basket" do
4
+
5
+ before do
6
+ @client = stub(Sevendigital::Client)
7
+ @basket_manager = mock(Sevendigital::BasketManager)
8
+ @client.stub!(:basket).and_return @basket_manager
9
+
10
+ @basket = Sevendigital::Basket.new(@client)
11
+ @basket.id = "00000000-0000-0000-0000-000000000001"
12
+ end
13
+
14
+ it "add_item should should call add_item on basket manager and update the basket items" do
15
+ expected_options = {:page => 2}
16
+ a_track_id = 123
17
+ a_release_id = 456
18
+
19
+ a_basket_id = @basket.id
20
+ an_updated_basket = fake_basket_with_items(@basket.id)
21
+
22
+ @basket_manager.should_receive(:add_item) { |basket_id, release_id, track_id, options|
23
+ basket_id.should == @basket.id
24
+ release_id.should == a_release_id
25
+ track_id.should == a_track_id
26
+ (options.keys & expected_options.keys).should == expected_options.keys
27
+ an_updated_basket
28
+ }
29
+ @basket.add_item(a_release_id, a_track_id, expected_options)
30
+
31
+ @basket.id.should == a_basket_id
32
+ @basket.basket_items.should == an_updated_basket.basket_items
33
+
34
+ end
35
+
36
+ it "remove_item should should call remove_item on basket manager and update the basket items" do
37
+ expected_options = {:page => 2}
38
+ an_item_id = 123
39
+
40
+ a_basket_id = @basket.id
41
+ an_updated_basket = fake_basket_with_items(@basket.id)
42
+
43
+ @basket_manager.should_receive(:remove_item) { |basket_id, item_id, options|
44
+ basket_id.should == @basket.id
45
+ item_id.should == an_item_id
46
+ (options.keys & expected_options.keys).should == expected_options.keys
47
+ an_updated_basket
48
+ }
49
+ @basket.remove_item(an_item_id, expected_options)
50
+
51
+ @basket.id.should == a_basket_id
52
+ @basket.basket_items.should == an_updated_basket.basket_items
53
+
54
+ end
55
+
56
+
57
+ def fake_basket_with_items(id)
58
+ basket = Sevendigital::Basket.new(@client)
59
+ basket.id = id
60
+ basket.basket_items = [Sevendigital::BasketItem.new(@client), Sevendigital::BasketItem.new(@client)]
61
+ basket
62
+ end
63
63
  end