discogs-wrapper 1.1.4 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (93) hide show
  1. data/LICENSE +9 -0
  2. data/README.markdown +123 -43
  3. data/lib/discogs-wrapper.rb +1 -0
  4. data/lib/discogs.rb +1 -0
  5. data/lib/wrapper/authentication.rb +56 -0
  6. data/lib/wrapper/wrapper.rb +732 -43
  7. data/spec/samples/valid_artist.json +1 -0
  8. data/spec/samples/valid_artist_releases.json +1 -0
  9. data/spec/samples/valid_fields.json +48 -0
  10. data/spec/samples/valid_folder.json +6 -0
  11. data/spec/samples/valid_identity.json +6 -0
  12. data/spec/samples/valid_label.json +1 -0
  13. data/spec/samples/valid_label_releases.json +1 -0
  14. data/spec/samples/valid_listing.json +1 -0
  15. data/spec/samples/valid_master_release.json +1 -0
  16. data/spec/samples/valid_master_release_versions.json +1 -0
  17. data/spec/samples/valid_order.json +57 -0
  18. data/spec/samples/valid_order_messages.json +102 -0
  19. data/spec/samples/valid_orders.json +68 -0
  20. data/spec/samples/valid_price_suggestions.json +34 -0
  21. data/spec/samples/valid_release.json +1 -0
  22. data/spec/samples/valid_search_results.json +1 -0
  23. data/spec/samples/valid_user.json +1 -0
  24. data/spec/samples/valid_user_collection.json +1 -0
  25. data/spec/samples/valid_user_folder.json +6 -0
  26. data/spec/samples/valid_user_folders.json +16 -0
  27. data/spec/samples/valid_user_inventory.json +41 -0
  28. data/spec/samples/valid_user_profile.json +25 -0
  29. data/spec/samples/valid_user_wantlist.json +1 -0
  30. data/spec/samples/valid_wantlist_release.json +41 -0
  31. data/spec/spec_helper.rb +4 -18
  32. data/spec/wrapper_methods/add_release_to_user_wantlist_spec.rb +42 -0
  33. data/spec/wrapper_methods/edit_release_in_user_wantlist_spec.rb +38 -0
  34. data/spec/wrapper_methods/edit_user_spec.rb +36 -0
  35. data/spec/wrapper_methods/get_artist_releases_spec.rb +49 -0
  36. data/spec/wrapper_methods/get_artist_spec.rb +15 -75
  37. data/spec/wrapper_methods/get_identity_spec.rb +35 -0
  38. data/spec/wrapper_methods/get_label_releases_spec.rb +49 -0
  39. data/spec/wrapper_methods/get_label_spec.rb +15 -28
  40. data/spec/wrapper_methods/get_listing_spec.rb +40 -0
  41. data/spec/wrapper_methods/get_master_release_spec.rb +16 -42
  42. data/spec/wrapper_methods/get_master_release_versions_spec.rb +49 -0
  43. data/spec/wrapper_methods/get_order_messages_spec.rb +36 -0
  44. data/spec/wrapper_methods/get_order_spec.rb +36 -0
  45. data/spec/wrapper_methods/get_price_suggestions_spec.rb +36 -0
  46. data/spec/wrapper_methods/get_release_spec.rb +26 -52
  47. data/spec/wrapper_methods/get_user_collection_spec.rb +41 -0
  48. data/spec/wrapper_methods/get_user_folder_spec.rb +46 -0
  49. data/spec/wrapper_methods/get_user_folders_spec.rb +42 -0
  50. data/spec/wrapper_methods/get_user_inventory_spec.rb +45 -0
  51. data/spec/wrapper_methods/get_user_spec.rb +45 -0
  52. data/spec/wrapper_methods/get_user_wantlist_spec.rb +49 -0
  53. data/spec/wrapper_methods/search_spec.rb +22 -293
  54. data/spec/wrapper_spec.rb +124 -45
  55. metadata +162 -67
  56. data/Rakefile +0 -26
  57. data/discogs.gemspec +0 -22
  58. data/lib/wrapper/resource.rb +0 -80
  59. data/lib/wrapper/resource_mappings.rb +0 -80
  60. data/lib/wrapper/resources/artist.rb +0 -40
  61. data/lib/wrapper/resources/artist_release.rb +0 -28
  62. data/lib/wrapper/resources/format.rb +0 -11
  63. data/lib/wrapper/resources/generic_list.rb +0 -29
  64. data/lib/wrapper/resources/image.rb +0 -11
  65. data/lib/wrapper/resources/label.rb +0 -16
  66. data/lib/wrapper/resources/label_release.rb +0 -17
  67. data/lib/wrapper/resources/master_release.rb +0 -19
  68. data/lib/wrapper/resources/master_release_version.rb +0 -17
  69. data/lib/wrapper/resources/release.rb +0 -25
  70. data/lib/wrapper/resources/release_artist.rb +0 -21
  71. data/lib/wrapper/resources/release_label.rb +0 -10
  72. data/lib/wrapper/resources/search.rb +0 -61
  73. data/lib/wrapper/resources/search_result.rb +0 -17
  74. data/lib/wrapper/resources/track.rb +0 -19
  75. data/lib/wrapper/resources/user.rb +0 -11
  76. data/lib/wrapper/resources/video.rb +0 -11
  77. data/spec/resource_spec.rb +0 -27
  78. data/spec/resources/artist_release_spec.rb +0 -59
  79. data/spec/resources/artist_spec.rb +0 -15
  80. data/spec/resources/format_spec.rb +0 -41
  81. data/spec/resources/generic_list_spec.rb +0 -66
  82. data/spec/resources/image_spec.rb +0 -43
  83. data/spec/resources/label_release_spec.rb +0 -55
  84. data/spec/resources/label_spec.rb +0 -15
  85. data/spec/resources/master_release_spec.rb +0 -15
  86. data/spec/resources/master_release_version_spec.rb +0 -55
  87. data/spec/resources/release_artist_spec.rb +0 -43
  88. data/spec/resources/release_label_spec.rb +0 -31
  89. data/spec/resources/release_spec.rb +0 -15
  90. data/spec/resources/search_result_spec.rb +0 -47
  91. data/spec/resources/search_spec.rb +0 -15
  92. data/spec/resources/track_spec.rb +0 -56
  93. data/spec/resources/video_spec.rb +0 -43
@@ -0,0 +1,41 @@
1
+ require 'spec_helper'
2
+
3
+ describe Discogs::Wrapper do
4
+
5
+ before do
6
+ @wrapper = Discogs::Wrapper.new("some_user_agent")
7
+ @user_name = "mintfloss"
8
+ end
9
+
10
+ describe ".get_user_collection" do
11
+
12
+ before do
13
+ @http_request = mock(Net::HTTP)
14
+ @http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("user_collection"))
15
+ @http_response_as_file = mock(StringIO, :read => read_sample("user_collection"))
16
+ Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
17
+ @http_request.should_receive(:start).and_return(@http_response)
18
+ Net::HTTP.should_receive(:new).and_return(@http_request)
19
+
20
+ @user_collection = @wrapper.get_user_collection(@user_name)
21
+ end
22
+
23
+ describe "when calling simple collection attributes" do
24
+
25
+ it "should have 5 releases per page" do
26
+ @user_collection.releases.length.should == 5
27
+ end
28
+
29
+ it "should have 309 releases total" do
30
+ @user_collection.pagination.items.should == 309
31
+ end
32
+
33
+ it "should not have a bogus attribute" do
34
+ @user_collection.bogus_attr.should be_nil
35
+ end
36
+
37
+ end
38
+
39
+ end
40
+
41
+ end
@@ -0,0 +1,46 @@
1
+ require 'spec_helper'
2
+
3
+ describe Discogs::Wrapper do
4
+
5
+ before do
6
+ @wrapper = Discogs::Wrapper.new("some_user_agent")
7
+ @user_name = "mintfloss"
8
+ @folder_id = 0
9
+ end
10
+
11
+ describe ".get_user_folder" do
12
+
13
+ before do
14
+ @http_request = mock(Net::HTTP)
15
+ @http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("user_folder"))
16
+ @http_response_as_file = mock(StringIO, :read => read_sample("user_folder"))
17
+ Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
18
+ @http_request.should_receive(:start).and_return(@http_response)
19
+ Net::HTTP.should_receive(:new).and_return(@http_request)
20
+
21
+ @user_folder = @wrapper.get_user_folder(@user_name, @folder_id)
22
+ end
23
+
24
+ describe "when calling simple folder attributes" do
25
+
26
+ it "should have a name" do
27
+ @user_folder.name.should == "Uncategorized"
28
+ end
29
+
30
+ it "should have a count" do
31
+ @user_folder[:count].should == 20
32
+ end
33
+
34
+ it "should not have a bogus attribute" do
35
+ @user_folder.bogus_attr.should be_nil
36
+ end
37
+
38
+ it "should raise error if attempting to list non-0 folder" do
39
+ lambda { @wrapper.get_user_folder(@user_name, 1) }.should raise_error(Discogs::AuthenticationError)
40
+ end
41
+
42
+ end
43
+
44
+ end
45
+
46
+ end
@@ -0,0 +1,42 @@
1
+ require 'spec_helper'
2
+
3
+ describe Discogs::Wrapper do
4
+
5
+ before do
6
+ @wrapper = Discogs::Wrapper.new("some_user_agent")
7
+ @user_name = "mintfloss"
8
+ end
9
+
10
+ describe ".get_user_folders" do
11
+
12
+ before do
13
+ @http_request = mock(Net::HTTP)
14
+ @http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("user_folders"))
15
+ @http_response_as_file = mock(StringIO, :read => read_sample("user_folders"))
16
+ Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
17
+ @http_request.should_receive(:start).and_return(@http_response)
18
+ Net::HTTP.should_receive(:new).and_return(@http_request)
19
+
20
+ @user_folders = @wrapper.get_user_folders(@user_name)
21
+ end
22
+
23
+ describe "when calling simple folders attributes" do
24
+
25
+ it "should have 2 folders" do
26
+ @user_folders.folders.length.should == 2
27
+ end
28
+
29
+ it "should have a name for each folder" do
30
+ @user_folders.folders[0].name.should == "All"
31
+ @user_folders.folders[1].name.should == "Uncategorized"
32
+ end
33
+
34
+ it "should not have a bogus attribute" do
35
+ @user_folders.bogus_attribute.should be_nil
36
+ end
37
+
38
+ end
39
+
40
+ end
41
+
42
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe Discogs::Wrapper do
4
+
5
+ before do
6
+ @wrapper = Discogs::Wrapper.new("some_user_agent")
7
+ @user_name = "abuntine"
8
+ end
9
+
10
+ describe ".get_user_inventory" do
11
+
12
+ before do
13
+ @http_request = mock(Net::HTTP)
14
+ @http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("user_inventory"))
15
+ @http_response_as_file = mock(StringIO, :read => read_sample("user_inventory"))
16
+ Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
17
+ @http_request.should_receive(:start).and_return(@http_response)
18
+ Net::HTTP.should_receive(:new).and_return(@http_request)
19
+
20
+ @user_inventory = @wrapper.get_user_inventory(@user_name)
21
+ end
22
+
23
+ describe "when calling simple inventory attributes" do
24
+
25
+ it "should have 1 listing in total" do
26
+ @user_inventory.listings.length.should == 1
27
+ end
28
+
29
+ it "should have a For Sale listing" do
30
+ @user_inventory.listings[0].status.should == "For Sale"
31
+ end
32
+
33
+ it "should have a price for the first listing" do
34
+ @user_inventory.listings[0].price.value.should == 23.0
35
+ end
36
+
37
+ it "should not have a bogus attribute" do
38
+ @user_inventory.bogus_attr.should be_nil
39
+ end
40
+
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,45 @@
1
+ require 'spec_helper'
2
+
3
+ describe Discogs::Wrapper do
4
+
5
+ before do
6
+ @wrapper = Discogs::Wrapper.new("some_user_agent")
7
+ @user_name = "abuntine"
8
+ end
9
+
10
+ describe ".get_user" do
11
+
12
+ before do
13
+ @http_request = mock(Net::HTTP)
14
+ @http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("user"))
15
+ @http_response_as_file = mock(StringIO, :read => read_sample("user"))
16
+ Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
17
+ @http_request.should_receive(:start).and_return(@http_response)
18
+ Net::HTTP.should_receive(:new).and_return(@http_request)
19
+
20
+ @user = @wrapper.get_user(@user_name)
21
+ end
22
+
23
+ describe "when calling simple user attributes" do
24
+
25
+ it "should have a rank" do
26
+ @user.rank.should == 1.0
27
+ end
28
+
29
+ it "should have a username" do
30
+ @user.username.should == "abuntine"
31
+ end
32
+
33
+ it "should have a uri" do
34
+ @user.uri.should == "http://www.discogs.com/user/abuntine"
35
+ end
36
+
37
+ it "should not have a bogus attribute" do
38
+ @user.bogus_attribute.should be_nil
39
+ end
40
+
41
+ end
42
+
43
+ end
44
+
45
+ end
@@ -0,0 +1,49 @@
1
+ require 'spec_helper'
2
+
3
+ describe Discogs::Wrapper do
4
+
5
+ before do
6
+ @wrapper = Discogs::Wrapper.new("some_user_agent")
7
+ @user_name = "mintfloss"
8
+ end
9
+
10
+ describe ".get_user_wantlist" do
11
+
12
+ before do
13
+ @http_request = mock(Net::HTTP)
14
+ @http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("user_wantlist"))
15
+ @http_response_as_file = mock(StringIO, :read => read_sample("user_wantlist"))
16
+ Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
17
+ @http_request.should_receive(:start).and_return(@http_response)
18
+ Net::HTTP.should_receive(:new).and_return(@http_request)
19
+
20
+ @user_wantlist = @wrapper.get_user_wantlist(@user_name)
21
+ end
22
+
23
+ describe "when calling simple wantlist attributes" do
24
+
25
+ it "should have 5 wants per page" do
26
+ @user_wantlist.wants.length.should == 5
27
+ end
28
+
29
+ it "should have 77 wants total" do
30
+ @user_wantlist.pagination.items.should == 77
31
+ end
32
+
33
+ it "should have a want with a zero rating" do
34
+ @user_wantlist.wants.first.rating.should == 0
35
+ end
36
+
37
+ it "should have a want with some basic information" do
38
+ @user_wantlist.wants.first.basic_information.title.should == "18 Jahre Sein / Mach Keine Wellen"
39
+ end
40
+
41
+ it "should not have a bogus attribute" do
42
+ @user_wantlist.bogus_attr.should be_nil
43
+ end
44
+
45
+ end
46
+
47
+ end
48
+
49
+ end
@@ -4,323 +4,52 @@ describe Discogs::Wrapper do
4
4
 
5
5
  before do
6
6
  @wrapper = Discogs::Wrapper.new("some_user_agent")
7
- @search_term = "slaughter"
8
- end
9
-
10
- def mock_search(page)
11
- @http_request = mock(Net::HTTP)
12
- @http_response = mock(Net::HTTPResponse, :code => "200", :body => valid_search_xml(page))
13
- @http_response_as_file = mock(StringIO, :read => valid_search_xml(page))
14
- Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
15
- @http_request.should_receive(:start).and_return(@http_response)
16
- Net::HTTP.should_receive(:new).and_return(@http_request)
7
+ @search_term = "Winter Falls Over the Land"
8
+ @search_type = "release"
17
9
  end
18
10
 
19
11
  describe "when asking for search result information" do
20
12
 
21
13
  before do
22
- mock_search(1)
23
-
24
- @search = @wrapper.search(@search_term)
25
- end
26
-
27
- describe "when dealing with page information" do
28
-
29
- it "should have a current_page method" do
30
- @search.current_page.should == 1
31
- end
32
-
33
- it "should be able to report if this is the last page" do
34
- @search.last_page?.should be_false
35
- end
36
-
14
+ @http_request = mock(Net::HTTP)
15
+ @http_response = mock(Net::HTTPResponse, :code => "200", :body => read_sample("search_results"))
16
+ @http_response_as_file = mock(StringIO, :read => read_sample("search_results"))
17
+ Zlib::GzipReader.should_receive(:new).and_return(@http_response_as_file)
18
+ @http_request.should_receive(:start).and_return(@http_response)
19
+ Net::HTTP.should_receive(:new).and_return(@http_request)
20
+
21
+ @search = @wrapper.search(@search_term, :type => @search_type)
37
22
  end
38
23
 
39
24
  describe "when handling exact results" do
40
25
 
41
- it "should have the exact results stored as an array" do
42
- @search.exactresults.should be_instance_of(Array)
43
- end
44
-
45
- it "should be stored as result objects" do
46
- @search.exactresults.each do |result|
47
- result.should be_instance_of(Discogs::Search::Result)
48
- end
49
- end
50
-
51
- it "should have a incrementing num for each exact result" do
52
- @search.exactresults.each_with_index do |result, index|
53
- result.num.should == (index + 1).to_s
54
- end
55
- end
56
-
57
- it "should have a type for the first result" do
58
- @search.exactresults[0].type.should == "artist"
59
- end
60
-
61
- it "should have an anv for the fifth result" do
62
- @search.exactresults[5].anv.should == "Slaughter"
63
- end
64
-
65
- it "should be able to filter all non-artists from exact results" do
66
- @search.exact(:artist).should be_instance_of(Array)
67
- @search.exact(:artist).length.should == 6
68
- end
69
-
70
- it "should be able to filter all non-releases from exact results" do
71
- @search.exact(:release).should be_instance_of(Array)
72
- @search.exact(:release).length.should == 1
73
- end
74
-
75
- it "should be able to filter all non-labels from exact results" do
76
- @search.exact(:label).should be_instance_of(Array)
77
- @search.exact(:label).length.should == 1
78
- end
79
-
80
- it "should return an empty array on a junk filter" do
81
- @search.exact(:cheesecake).should be_instance_of(Array)
82
- @search.exact(:cheesecake).should be_empty
83
- end
84
-
85
- it "should simply return all exact results without a filter" do
86
- @search.exact.should be_instance_of(Array)
87
- @search.exact.length.should == 8
88
- end
89
-
90
- it "should have a shortcut for accessing the first exact artist" do
91
- @search.closest(:artist).should be_instance_of(Discogs::Search::Result)
92
- @search.closest(:artist).should == @search.exact(:artist)[0]
93
- end
94
-
95
- it "should have a shortcut for accessing the first exact release" do
96
- @search.closest(:release).should be_instance_of(Discogs::Search::Result)
97
- @search.closest(:release).should == @search.exact(:release)[0]
98
- end
99
-
100
- it "should have a shortcut for accessing the first exact label" do
101
- @search.closest(:label).should be_instance_of(Discogs::Search::Result)
102
- @search.closest(:label).should == @search.exact(:label)[0]
103
- end
104
-
105
- it "should return nil on junk filter for closest match" do
106
- @search.closest(:alcoholic).should be_nil
107
- end
108
-
109
- end
110
-
111
- describe "when handling search results" do
112
-
113
- it "should have a start attribute" do
114
- @search.start.should == "1"
115
- end
116
-
117
- it "should have an end attribute" do
118
- @search.end.should == "20"
119
- end
120
-
121
- it "should have number of results attribute" do
122
- @search.total_results.should == 1846
123
- end
124
-
125
- it "should have number of pages attribute" do
126
- @search.total_pages.should == 93
127
- end
128
-
129
- it "should have the search results stored as an array" do
130
- @search.searchresults.should be_instance_of(Array)
131
- end
132
-
133
- it "should be stored as result objects" do
134
- @search.searchresults.each do |result|
135
- result.should be_instance_of(Discogs::Search::Result)
136
- end
137
- end
138
-
139
- end
140
-
141
- describe "when handling search results" do
142
-
143
- it "should have a start attribute" do
144
- @search.start.should == "1"
145
- end
146
-
147
- it "should have an end attribute" do
148
- @search.end.should == "20"
149
- end
150
-
151
- it "should have number of results attribute" do
152
- @search.total_results.should == 1846
153
- end
154
-
155
- it "should have number of pages attribute" do
156
- @search.total_pages.should == 93
157
- end
158
-
159
- it "should have the search results stored as an array" do
160
- @search.searchresults.should be_instance_of(Array)
161
- end
162
-
163
- it "should be stored as result objects" do
164
- @search.searchresults.each do |result|
165
- result.should be_instance_of(Discogs::Search::Result)
166
- end
167
- end
168
-
169
- end
170
-
171
- describe "when handling search results" do
172
-
173
- it "should have a start attribute" do
174
- @search.start.should == "1"
175
- end
176
-
177
- it "should have an end attribute" do
178
- @search.end.should == "20"
179
- end
180
-
181
- it "should have number of results attribute" do
182
- @search.total_results.should == 1846
183
- end
184
-
185
- it "should have number of pages attribute" do
186
- @search.total_pages.should == 93
187
- end
188
-
189
- it "should have the search results stored as an array" do
190
- @search.searchresults.should be_instance_of(Array)
191
- end
192
-
193
- it "should be stored as result objects" do
194
- @search.searchresults.each do |result|
195
- result.should be_instance_of(Discogs::Search::Result)
196
- end
197
- end
198
-
199
- it "should have a incrementing num for each search result" do
200
- @search.searchresults.each_with_index do |result, index|
201
- result.num.should == (index + 1).to_s
202
- end
203
- end
204
-
205
- it "should have a type for the third result" do
206
- @search.searchresults[2].type.should == "label"
207
- end
208
-
209
- it "should have a title for the fourth result" do
210
- @search.searchresults[3].title.should == "Satanic Slaughter"
211
- end
212
-
213
- it "should have a summary for the sixth result" do
214
- @search.searchresults[5].summary.should == "Gary Slaughter"
215
- end
216
-
217
- it "should be able to filter all non-artists from extended results" do
218
- @search.results(:artist).should be_instance_of(Array)
219
- @search.results(:artist).length.should == 12
220
- end
221
-
222
- it "should be able to filter all non-releases from extended results" do
223
- @search.results(:release).should be_instance_of(Array)
224
- @search.results(:release).length.should == 6
225
- end
226
-
227
- it "should be able to filter all non-labels from extended results" do
228
- @search.results(:label).should be_instance_of(Array)
229
- @search.results(:label).length.should == 2
230
- end
231
-
232
- it "should return an empty array on a junk filter" do
233
- @search.results(:cheesecake).should be_instance_of(Array)
234
- @search.results(:cheesecake).should be_empty
235
- end
236
-
237
- it "should simply return all extended results without a filter" do
26
+ it "should have the results stored as an array" do
238
27
  @search.results.should be_instance_of(Array)
239
- @search.results.length.should == 20
240
- end
241
-
242
- end
243
-
244
- end
245
-
246
- describe "when getting the next page" do
247
-
248
- before do
249
- mock_search(2)
250
-
251
- @search = @wrapper.search(@search_term, :page => 2)
252
- end
253
-
254
- describe "when dealing with page information" do
255
-
256
- it "should have a current_page method" do
257
- @search.current_page.should == 2
258
- end
259
-
260
- it "should be able to report if this is the last page" do
261
- @search.last_page?.should be_false
262
- end
263
-
264
- end
265
-
266
- describe "when handling exact results" do
267
-
268
- it "should not have any exact results" do
269
- @search.exactresults.should be_nil
270
- end
271
-
272
- it "should return empty array for exact filtering" do
273
- @search.exact.should == []
274
28
  end
275
29
 
276
- it "should still allow filtering and return an empty array" do
277
- @search.exact(:artist).should == []
30
+ it "should have a type for the first result" do
31
+ @search.results[0].type.should == "release"
278
32
  end
279
33
 
280
- it "should return nil for closest matches when no exact results are available" do
281
- @search.closest(:artist).should be_nil
282
- @search.closest(:release).should be_nil
283
- @search.closest(:label).should be_nil
34
+ it "should have a style array for the first result" do
35
+ @search.results[0].style.should be_instance_of(Array)
36
+ @search.results[0].style[0].should == "Black Metal"
284
37
  end
285
38
 
286
- it "should return nil on junk filter for closest match" do
287
- @search.closest(:alcoholic).should be_nil
39
+ it "should have a type for the fourth result" do
40
+ @search.results[3].type.should == "release"
288
41
  end
289
42
 
290
43
  end
291
44
 
292
45
  describe "when handling search results" do
293
46
 
294
- it "should have a start attribute" do
295
- @search.start.should == "21"
296
- end
297
-
298
- it "should have an end attribute" do
299
- @search.end.should == "40"
47
+ it "should have number of results per page attribute" do
48
+ @search.pagination.per_page.should == 50
300
49
  end
301
50
 
302
- it "should have number of results attribute" do
303
- @search.total_results.should == 1846
304
- end
305
-
306
- it "should have number of pages attribute (still)" do
307
- @search.total_pages.should == 93
308
- end
309
-
310
- it "should have the search results stored as an array" do
311
- @search.searchresults.should be_instance_of(Array)
312
- end
313
-
314
- it "should be stored as result objects" do
315
- @search.searchresults.each do |result|
316
- result.should be_instance_of(Discogs::Search::Result)
317
- end
318
- end
319
-
320
- it "should have a incrementing num for each search result" do
321
- @search.searchresults.each_with_index do |result, index|
322
- result.num.should == (index + 21).to_s
323
- end
51
+ it "should have number of pages attribute" do
52
+ @search.pagination.pages.should == 1
324
53
  end
325
54
 
326
55
  end