7digital 0.1.2 → 0.1.5

Sign up to get free protection for your applications and to get access to all the features.
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