discogs-wrapper 1.1.4 → 2.0.0

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 (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