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,134 +1,134 @@
1
- require "date"
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "Release" do
5
-
6
- before do
7
- @configuration = stub(OpenStruct)
8
- @configuration.stub!(:lazy_load).and_return(true)
9
-
10
- @client = stub(Sevendigital::Client)
11
- @client.stub!(:configuration).and_return(@configuration)
12
- @release_manager = mock(Sevendigital::ReleaseManager)
13
- @client.stub!(:release).and_return @release_manager
14
-
15
- @release = Sevendigital::Release.new(@client)
16
- @release.id = 1234
17
- end
18
-
19
- it "should get its basic details from manager" do
20
- expected_options = {:page => 2}
21
- fresh_release = fake_release_with_details
22
-
23
- @release_manager.should_receive(:get_details) { |release_id, options|
24
- release_id.should == @release.id
25
- (options.keys & expected_options.keys).should == expected_options.keys
26
- fresh_release
27
- }
28
- @release.get_details(expected_options)
29
-
30
- @release.version.should == fresh_release.version
31
- @release.type.should == fresh_release.type
32
- @release.artist.should == fresh_release.artist
33
- @release.image.should == fresh_release.image
34
- @release.url.should == fresh_release.url
35
- @release.release_date.should == fresh_release.release_date
36
- @release.added_date.should == fresh_release.added_date
37
- @release.barcode.should == fresh_release.barcode
38
- @release.year.should == fresh_release.year
39
- @release.explicit_content.should == fresh_release.explicit_content
40
- @release.formats.should == fresh_release.formats
41
- @release.label.should == fresh_release.label
42
- @release.price.should == fresh_release.price
43
-
44
- end
45
-
46
- it "should lazy load price even if already populated but price value is not available" do
47
- @release.price = Sevendigital::Price.new
48
- @release.should_receive(:demand_price)
49
- @release.price
50
-
51
- end
52
-
53
- it "get_tracks should get tracks from manager" do
54
- expected_options = {:page => 2}
55
-
56
- @release_manager.should_receive(:get_tracks) { |release_id, options|
57
- release_id.should == @release.id
58
- (options.keys & expected_options.keys).should == expected_options.keys
59
- fake_track_list
60
- }
61
- @release.get_tracks(expected_options)
62
-
63
- end
64
-
65
-
66
- it "get_recommendations should get recommendations from manager" do
67
- expected_options = {:page => 2}
68
-
69
- @release_manager.should_receive(:get_recommendations) { |release_id, options|
70
- release_id.should == @release.id
71
- (options.keys & expected_options.keys).should == expected_options.keys
72
- fake_releases_list
73
- }
74
- @release.get_recommendations(expected_options)
75
-
76
- end
77
-
78
- it "get_tags should get tags from manager" do
79
- expected_options = {:page => 2}
80
-
81
- @release_manager.should_receive(:get_tags) { |release_id, options|
82
- release_id.should == @release.id
83
- (options.keys & expected_options.keys).should == expected_options.keys
84
- []
85
- }
86
- @release.get_tags(expected_options)
87
-
88
- end
89
-
90
- it "image should return link to image with specified image size" do
91
- release = fake_release_with_details
92
- release.image(333).should == "http://cdn.7static.com/static/img/sleeveart/00/008/097/0000809794_333.jpg"
93
- end
94
-
95
- it "image should return link to image with returned image size" do
96
- release = fake_release_with_details
97
- release.image(333).should == "http://cdn.7static.com/static/img/sleeveart/00/008/097/0000809794_100.jpg"
98
- end
99
-
100
-
101
- def fake_releases_list
102
- releases = Array.new
103
- releases << Sevendigital::Release.new(@client)
104
- releases << Sevendigital::Release.new(@client)
105
- releases
106
- end
107
-
108
- def fake_track_list
109
- tracks = Array.new
110
- tracks << Sevendigital::Track.new(@client)
111
- tracks << Sevendigital::Track.new(@client)
112
- tracks
113
- end
114
-
115
- def fake_release_with_details
116
- release = Sevendigital::Release.new(@client)
117
- release.version = "(release version)"
118
- release.type = :album
119
- release.artist = Sevendigital::Artist.new(@client)
120
- release.image = "http://cdn.7static.com/static/img/sleeveart/00/008/097/0000809794_100.jpg"
121
- release.url = "url"
122
- release.release_date = DateTime.new(2010, 1, 1)
123
- release.added_date = DateTime.new(2000, 1, 1)
124
- release.barcode = "AAA"
125
- release.year = 1999
126
- release.explicit_content = true
127
- release.formats = []
128
- release.label = Sevendigital::Label.new
129
- price = Sevendigital::Price.new
130
- price.value = 5
131
- release.price = price
132
- release
133
- end
1
+ require "date"
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "Release" do
5
+
6
+ before do
7
+ @configuration = stub(OpenStruct)
8
+ @configuration.stub!(:lazy_load).and_return(true)
9
+
10
+ @client = stub(Sevendigital::Client)
11
+ @client.stub!(:configuration).and_return(@configuration)
12
+ @release_manager = mock(Sevendigital::ReleaseManager)
13
+ @client.stub!(:release).and_return @release_manager
14
+
15
+ @release = Sevendigital::Release.new(@client)
16
+ @release.id = 1234
17
+ end
18
+
19
+ it "should get its basic details from manager" do
20
+ expected_options = {:page => 2}
21
+ fresh_release = fake_release_with_details
22
+
23
+ @release_manager.should_receive(:get_details) { |release_id, options|
24
+ release_id.should == @release.id
25
+ (options.keys & expected_options.keys).should == expected_options.keys
26
+ fresh_release
27
+ }
28
+ @release.get_details(expected_options)
29
+
30
+ @release.version.should == fresh_release.version
31
+ @release.type.should == fresh_release.type
32
+ @release.artist.should == fresh_release.artist
33
+ @release.image.should == fresh_release.image
34
+ @release.url.should == fresh_release.url
35
+ @release.release_date.should == fresh_release.release_date
36
+ @release.added_date.should == fresh_release.added_date
37
+ @release.barcode.should == fresh_release.barcode
38
+ @release.year.should == fresh_release.year
39
+ @release.explicit_content.should == fresh_release.explicit_content
40
+ @release.formats.should == fresh_release.formats
41
+ @release.label.should == fresh_release.label
42
+ @release.price.should == fresh_release.price
43
+
44
+ end
45
+
46
+ it "should lazy load price even if already populated but price value is not available" do
47
+ @release.price = Sevendigital::Price.new
48
+ @release.should_receive(:demand_price)
49
+ @release.price
50
+
51
+ end
52
+
53
+ it "get_tracks should get tracks from manager" do
54
+ expected_options = {:page => 2}
55
+
56
+ @release_manager.should_receive(:get_tracks) { |release_id, options|
57
+ release_id.should == @release.id
58
+ (options.keys & expected_options.keys).should == expected_options.keys
59
+ fake_track_list
60
+ }
61
+ @release.get_tracks(expected_options)
62
+
63
+ end
64
+
65
+
66
+ it "get_recommendations should get recommendations from manager" do
67
+ expected_options = {:page => 2}
68
+
69
+ @release_manager.should_receive(:get_recommendations) { |release_id, options|
70
+ release_id.should == @release.id
71
+ (options.keys & expected_options.keys).should == expected_options.keys
72
+ fake_releases_list
73
+ }
74
+ @release.get_recommendations(expected_options)
75
+
76
+ end
77
+
78
+ it "get_tags should get tags from manager" do
79
+ expected_options = {:page => 2}
80
+
81
+ @release_manager.should_receive(:get_tags) { |release_id, options|
82
+ release_id.should == @release.id
83
+ (options.keys & expected_options.keys).should == expected_options.keys
84
+ []
85
+ }
86
+ @release.get_tags(expected_options)
87
+
88
+ end
89
+
90
+ it "image should return link to image with specified image size" do
91
+ release = fake_release_with_details
92
+ release.image(333).should == "http://cdn.7static.com/static/img/sleeveart/00/008/097/0000809794_333.jpg"
93
+ end
94
+
95
+ it "image should return link to image with returned image size" do
96
+ release = fake_release_with_details
97
+ release.image.should == "http://cdn.7static.com/static/img/sleeveart/00/008/097/0000809794_100.jpg"
98
+ end
99
+
100
+
101
+ def fake_releases_list
102
+ releases = Array.new
103
+ releases << Sevendigital::Release.new(@client)
104
+ releases << Sevendigital::Release.new(@client)
105
+ releases
106
+ end
107
+
108
+ def fake_track_list
109
+ tracks = Array.new
110
+ tracks << Sevendigital::Track.new(@client)
111
+ tracks << Sevendigital::Track.new(@client)
112
+ tracks
113
+ end
114
+
115
+ def fake_release_with_details
116
+ release = Sevendigital::Release.new(@client)
117
+ release.version = "(release version)"
118
+ release.type = :album
119
+ release.artist = Sevendigital::Artist.new(@client)
120
+ release.image = "http://cdn.7static.com/static/img/sleeveart/00/008/097/0000809794_100.jpg"
121
+ release.url = "url"
122
+ release.release_date = DateTime.new(2010, 1, 1)
123
+ release.added_date = DateTime.new(2000, 1, 1)
124
+ release.barcode = "AAA"
125
+ release.year = 1999
126
+ release.explicit_content = true
127
+ release.formats = []
128
+ release.label = Sevendigital::Label.new
129
+ price = Sevendigital::Price.new
130
+ price.value = 5
131
+ release.price = price
132
+ release
133
+ end
134
134
  end
@@ -1,74 +1,74 @@
1
- require "date"
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "SevendigitalObject" do
5
-
6
- before do
7
-
8
- @configuration = test_configuration
9
- @configuration.lazy_load = true
10
-
11
- stub_api_client(@configuration)
12
-
13
- @client.stub!(:verbose?).and_return(true)
14
- @test_object = Sevendigital::SevendigitalObject.new(@client)
15
- end
16
-
17
- it "sevendigital extended property should define accessor that calls demand method" do
18
- class TestClass < Sevendigital::SevendigitalObject
19
- sevendigital_extended_property :test_property
20
- end
21
-
22
- test_object = TestClass.new(@client)
23
- test_object.should_receive(:demand_test_property)
24
- test_object.test_property
25
-
26
- end
27
-
28
- it "sevendigital extended property should define accessor that doesn't swallow SevenDigital errors" do
29
- class TestClass < Sevendigital::SevendigitalObject
30
- sevendigital_extended_property :test_property
31
- end
32
- @configuration.stub!(:ignorant_lazy_load).and_return(false)
33
- test_object = TestClass.new(@client)
34
- test_object.should_receive(:demand_test_property).and_raise(Sevendigital::SevendigitalError)
35
- running {test_object.test_property}.should raise_error(Sevendigital::SevendigitalError)
36
- end
37
-
38
- it "sevendigital extended property should define accessor that swallows SevenDigital errors if client is ignorant" do
39
- class TestClass < Sevendigital::SevendigitalObject
40
- sevendigital_extended_property :test_property
41
- end
42
- @configuration.stub!(:ignorant_lazy_load).and_return(true)
43
- test_object = TestClass.new(@client)
44
- test_object.should_receive(:demand_test_property).and_raise(Sevendigital::SevendigitalError)
45
- test_object.test_property
46
- end
47
-
48
- it "sevendigital extended property should define demand method that calls get method if property not set" do
49
- class TestClass < Sevendigital::SevendigitalObject
50
- sevendigital_extended_property :test_property
51
- end
52
-
53
- test_object = TestClass.new(@client)
54
- test_object.should_receive(:get_test_property).and_return("a value")
55
- test_object.instance_variable_get("@test_property").should == nil
56
- test_object.demand_test_property
57
- test_object.instance_variable_get("@test_property").should == "a value"
58
-
59
- end
60
-
61
- it "sevendigital extended property should define demand method that does nothing if property is set" do
62
- class TestClass < Sevendigital::SevendigitalObject
63
- sevendigital_extended_property :test_property
64
- end
65
-
66
- test_object = TestClass.new(@client)
67
- test_object.instance_variable_set("@test_property", "a value")
68
- test_object.should_not_receive(:get_test_property)
69
- test_object.demand_test_property
70
-
71
- end
72
-
73
-
1
+ require "date"
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "SevendigitalObject" do
5
+
6
+ before do
7
+
8
+ @configuration = test_configuration
9
+ @configuration.lazy_load = true
10
+
11
+ stub_api_client(@configuration)
12
+
13
+ @client.stub!(:verbose?).and_return(true)
14
+ @test_object = Sevendigital::SevendigitalObject.new(@client)
15
+ end
16
+
17
+ it "sevendigital extended property should define accessor that calls demand method" do
18
+ class TestClass < Sevendigital::SevendigitalObject
19
+ sevendigital_extended_property :test_property
20
+ end
21
+
22
+ test_object = TestClass.new(@client)
23
+ test_object.should_receive(:demand_test_property)
24
+ test_object.test_property
25
+
26
+ end
27
+
28
+ it "sevendigital extended property should define accessor that doesn't swallow SevenDigital errors" do
29
+ class TestClass < Sevendigital::SevendigitalObject
30
+ sevendigital_extended_property :test_property
31
+ end
32
+ @configuration.stub!(:ignorant_lazy_load).and_return(false)
33
+ test_object = TestClass.new(@client)
34
+ test_object.should_receive(:demand_test_property).and_raise(Sevendigital::SevendigitalError)
35
+ running {test_object.test_property}.should raise_error(Sevendigital::SevendigitalError)
36
+ end
37
+
38
+ it "sevendigital extended property should define accessor that swallows SevenDigital errors if client is ignorant" do
39
+ class TestClass < Sevendigital::SevendigitalObject
40
+ sevendigital_extended_property :test_property
41
+ end
42
+ @configuration.stub!(:ignorant_lazy_load).and_return(true)
43
+ test_object = TestClass.new(@client)
44
+ test_object.should_receive(:demand_test_property).and_raise(Sevendigital::SevendigitalError)
45
+ test_object.test_property
46
+ end
47
+
48
+ it "sevendigital extended property should define demand method that calls get method if property not set" do
49
+ class TestClass < Sevendigital::SevendigitalObject
50
+ sevendigital_extended_property :test_property
51
+ end
52
+
53
+ test_object = TestClass.new(@client)
54
+ test_object.should_receive(:get_test_property).and_return("a value")
55
+ test_object.instance_variable_get("@test_property").should == nil
56
+ test_object.demand_test_property
57
+ test_object.instance_variable_get("@test_property").should == "a value"
58
+
59
+ end
60
+
61
+ it "sevendigital extended property should define demand method that does nothing if property is set" do
62
+ class TestClass < Sevendigital::SevendigitalObject
63
+ sevendigital_extended_property :test_property
64
+ end
65
+
66
+ test_object = TestClass.new(@client)
67
+ test_object.instance_variable_set("@test_property", "a value")
68
+ test_object.should_not_receive(:get_test_property)
69
+ test_object.demand_test_property
70
+
71
+ end
72
+
73
+
74
74
  end
@@ -1,145 +1,147 @@
1
- require "date"
2
- require File.expand_path('../../spec_helper', __FILE__)
3
-
4
- describe "Track" do
5
-
6
- before do
7
- @client = stub(Sevendigital::Client)
8
- @track_manager = mock(Sevendigital::TrackManager)
9
- @client.stub!(:track).and_return @track_manager
10
- @client.stub!(:configuration).and_return OpenStruct.new
11
-
12
- @track = Sevendigital::Track.new(@client)
13
- @track.id = 1234
14
- @track.release = Sevendigital::Release.new(@client)
15
- @track.release.id = 5678
16
- end
17
-
18
- it "get_details should get track's basic details from track manager " do
19
- expected_options = {:page => 2}
20
- fresh_track = fake_track_with_details
21
-
22
- @track_manager.should_receive(:get_details_from_release) { |track_id, release_id, options|
23
- track_id.should == @track.id
24
- release_id.should == @track.release.id
25
- (options.keys & expected_options.keys).should == expected_options.keys
26
- fresh_track
27
- }
28
- @track.get_details(expected_options)
29
-
30
- @track.track_number.should == fresh_track.track_number
31
- @track.duration.should == fresh_track.duration
32
- @track.explicit_content.should == fresh_track.explicit_content
33
- @track.isrc.should == fresh_track.isrc
34
- @track.release.id.should == fresh_track.release.id
35
- @track.url.should == fresh_track.url
36
-
37
- end
38
-
39
- it "preview_url should get preview URL from manager" do
40
- expected_options = {:country => "mx"}
41
- fake_preview_url = "http://preview.com/trackid/123456"
42
-
43
- @track_manager.should_receive(:build_preview_url) { |track_id, options|
44
- track_id.should == @track.id
45
- (options.keys & expected_options.keys).should == expected_options.keys
46
- fake_preview_url
47
- }
48
-
49
- @track.preview_url(expected_options).should == fake_preview_url
50
-
51
- end
52
-
53
- it "should have a short title without any version in brackets" do
54
-
55
- @track.title = "Girl With One Eye (Bayou Percussion Version)"
56
- @track.short_title.should == "Girl With One Eye"
57
-
58
- @track.title = "The Thing I Like Best About Him Is His Girlfriend (Gr's Man-Made Island Edition)"
59
- @track.short_title.should == "The Thing I Like Best About Him Is His Girlfriend"
60
-
61
- @track.title = "Your Head to Your Toes (Live at the BBC)"
62
- @track.short_title.should == "Your Head to Your Toes"
63
-
64
- @track.title = "Welcome To The World of The Plastic Beach (Feat. Snoop Dogg and Hypnotic Brass Ensemble)"
65
- @track.short_title.should == "Welcome To The World of The Plastic Beach"
66
-
67
- @track.title = "(lp version)"
68
- @track.short_title.should == "(lp version)"
69
-
70
- @track.title = "What's the Story (Morning Glory)"
71
- @track.short_title.should == "What's the Story (Morning Glory)"
72
-
73
- @track.title = "track 1 (something else)"
74
- @track.short_title.should == "track 1 (something else)"
75
-
76
- @track.title = "track 1 (dj remix)"
77
- @track.short_title.should == "track 1"
78
-
79
- @track.title = "track 1 ( dj mix )"
80
- @track.short_title.should == "track 1"
81
- end
82
-
83
- describe "alternate_version?" do
84
-
85
- before do
86
- @artist1 = Sevendigital::Artist.new(@client)
87
- @artist2 = Sevendigital::Artist.new(@client)
88
- @track1 = Sevendigital::Track.new(@client)
89
- @track1.artist = @artist1
90
- @track2 = Sevendigital::Track.new(@client)
91
- @track2.artist = @artist2
92
-
93
- @artist1.name = "artist 1"
94
- @track1.title = "track 1"
95
-
96
- end
97
-
98
- it "should be considered alternate version if artist names and titles match" do
99
- @artist2.name = "Artist 1"
100
- @track2.title = "Track 1"
101
-
102
- @track1.alternate_version_of?(@track2).should == true
103
- end
104
-
105
- it "should be considered alternate version if artist names and short titles match" do
106
- @track1.title = "track 1 (uk version)"
107
-
108
- @artist2.name = "Artist 1"
109
- @track2.title = "TRACK 1 (us remix)"
110
-
111
- @track1.alternate_version_of?(@track2).should == true
112
- end
113
-
114
- it "should not be considered alternate version if artist names don't match" do
115
- @artist2.name = "artist 2"
116
- @track2.title = "track 1"
117
-
118
- @track1.alternate_version_of?(@track2).should == false
119
- end
120
-
121
- it "should not be considered alternate version if short titles don't match" do
122
- @artist2.name = "artist 1"
123
- @track2.title = "track 2"
124
-
125
- @track1.alternate_version_of?(@track2).should == false
126
- end
127
-
128
-
129
- end
130
-
131
- def fake_track_with_details
132
- track = Sevendigital::Track.new(@client)
133
- track.title = "Song 1"
134
- track.version = "Version 2"
135
- track.artist = Sevendigital::Artist.new(@client)
136
- track.track_number = 7
137
- track.duration = 77
138
- track.explicit_content = true
139
- track.isrc = "7D"
140
- track.release = Sevendigital::Release.new(@client)
141
- track.release.id = 5678
142
- track.url = "http://aaa.bbb.ccc/"
143
- track
144
- end
1
+ require "date"
2
+ require File.expand_path('../../spec_helper', __FILE__)
3
+
4
+ describe "Track" do
5
+
6
+ before do
7
+ @client = stub(Sevendigital::Client)
8
+ @track_manager = mock(Sevendigital::TrackManager)
9
+ @client.stub!(:track).and_return @track_manager
10
+ @client.stub!(:configuration).and_return OpenStruct.new
11
+
12
+ @track = Sevendigital::Track.new(@client)
13
+ @track.id = 1234
14
+ @track.release = Sevendigital::Release.new(@client)
15
+ @track.release.id = 5678
16
+ end
17
+
18
+ it "get_details should get track's basic details from track manager " do
19
+ expected_options = {:page => 2}
20
+ fresh_track = fake_track_with_details
21
+
22
+ @track_manager.should_receive(:get_details_from_release) { |track_id, release_id, options|
23
+ track_id.should == @track.id
24
+ release_id.should == @track.release.id
25
+ (options.keys & expected_options.keys).should == expected_options.keys
26
+ fresh_track
27
+ }
28
+ @track.get_details(expected_options)
29
+
30
+ @track.track_number.should == fresh_track.track_number
31
+ @track.duration.should == fresh_track.duration
32
+ @track.explicit_content.should == fresh_track.explicit_content
33
+ @track.isrc.should == fresh_track.isrc
34
+ @track.release.id.should == fresh_track.release.id
35
+ @track.url.should == fresh_track.url
36
+ @track.type.should == fresh_track.type
37
+
38
+ end
39
+
40
+ it "preview_url should get preview URL from manager" do
41
+ expected_options = {:country => "mx"}
42
+ fake_preview_url = "http://preview.com/trackid/123456"
43
+
44
+ @track_manager.should_receive(:build_preview_url) { |track_id, options|
45
+ track_id.should == @track.id
46
+ (options.keys & expected_options.keys).should == expected_options.keys
47
+ fake_preview_url
48
+ }
49
+
50
+ @track.preview_url(expected_options).should == fake_preview_url
51
+
52
+ end
53
+
54
+ it "should have a short title without any version in brackets" do
55
+
56
+ @track.title = "Girl With One Eye (Bayou Percussion Version)"
57
+ @track.short_title.should == "Girl With One Eye"
58
+
59
+ @track.title = "The Thing I Like Best About Him Is His Girlfriend (Gr's Man-Made Island Edition)"
60
+ @track.short_title.should == "The Thing I Like Best About Him Is His Girlfriend"
61
+
62
+ @track.title = "Your Head to Your Toes (Live at the BBC)"
63
+ @track.short_title.should == "Your Head to Your Toes"
64
+
65
+ @track.title = "Welcome To The World of The Plastic Beach (Feat. Snoop Dogg and Hypnotic Brass Ensemble)"
66
+ @track.short_title.should == "Welcome To The World of The Plastic Beach"
67
+
68
+ @track.title = "(lp version)"
69
+ @track.short_title.should == "(lp version)"
70
+
71
+ @track.title = "What's the Story (Morning Glory)"
72
+ @track.short_title.should == "What's the Story (Morning Glory)"
73
+
74
+ @track.title = "track 1 (something else)"
75
+ @track.short_title.should == "track 1 (something else)"
76
+
77
+ @track.title = "track 1 (dj remix)"
78
+ @track.short_title.should == "track 1"
79
+
80
+ @track.title = "track 1 ( dj mix )"
81
+ @track.short_title.should == "track 1"
82
+ end
83
+
84
+ describe "alternate_version?" do
85
+
86
+ before do
87
+ @artist1 = Sevendigital::Artist.new(@client)
88
+ @artist2 = Sevendigital::Artist.new(@client)
89
+ @track1 = Sevendigital::Track.new(@client)
90
+ @track1.artist = @artist1
91
+ @track2 = Sevendigital::Track.new(@client)
92
+ @track2.artist = @artist2
93
+
94
+ @artist1.name = "artist 1"
95
+ @track1.title = "track 1"
96
+
97
+ end
98
+
99
+ it "should be considered alternate version if artist names and titles match" do
100
+ @artist2.name = "Artist 1"
101
+ @track2.title = "Track 1"
102
+
103
+ @track1.alternate_version_of?(@track2).should == true
104
+ end
105
+
106
+ it "should be considered alternate version if artist names and short titles match" do
107
+ @track1.title = "track 1 (uk version)"
108
+
109
+ @artist2.name = "Artist 1"
110
+ @track2.title = "TRACK 1 (us remix)"
111
+
112
+ @track1.alternate_version_of?(@track2).should == true
113
+ end
114
+
115
+ it "should not be considered alternate version if artist names don't match" do
116
+ @artist2.name = "artist 2"
117
+ @track2.title = "track 1"
118
+
119
+ @track1.alternate_version_of?(@track2).should == false
120
+ end
121
+
122
+ it "should not be considered alternate version if short titles don't match" do
123
+ @artist2.name = "artist 1"
124
+ @track2.title = "track 2"
125
+
126
+ @track1.alternate_version_of?(@track2).should == false
127
+ end
128
+
129
+
130
+ end
131
+
132
+ def fake_track_with_details
133
+ track = Sevendigital::Track.new(@client)
134
+ track.title = "Song 1"
135
+ track.version = "Version 2"
136
+ track.artist = Sevendigital::Artist.new(@client)
137
+ track.track_number = 7
138
+ track.duration = 77
139
+ track.explicit_content = true
140
+ track.isrc = "7D"
141
+ track.release = Sevendigital::Release.new(@client)
142
+ track.release.id = 5678
143
+ track.url = "http://aaa.bbb.ccc/"
144
+ track.type = :audio
145
+ track
146
+ end
145
147
  end