gds-api-adapters 10.4.0 → 10.5.0
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/gds_api/rummager.rb +5 -0
- data/lib/gds_api/version.rb +1 -1
- data/test/rummager_test.rb +59 -0
- metadata +4 -4
data/lib/gds_api/rummager.rb
CHANGED
@@ -9,6 +9,11 @@ module GdsApi
|
|
9
9
|
get_json!(search_url(:search, query, extra_params))
|
10
10
|
end
|
11
11
|
|
12
|
+
def unified_search(args)
|
13
|
+
request_url = "#{base_url}/unified_search.json?#{Rack::Utils.build_nested_query(args)}"
|
14
|
+
get_json!(request_url)
|
15
|
+
end
|
16
|
+
|
12
17
|
def advanced_search(args)
|
13
18
|
raise ArgumentError.new("Args cannot be blank") if args.nil? || args.empty?
|
14
19
|
request_path = "#{base_url}/advanced_search?#{Rack::Utils.build_nested_query(args)}"
|
data/lib/gds_api/version.rb
CHANGED
data/test/rummager_test.rb
CHANGED
@@ -5,6 +5,7 @@ describe GdsApi::Rummager do
|
|
5
5
|
before(:each) do
|
6
6
|
stub_request(:get, /example.com\/search/).to_return(body: "[]")
|
7
7
|
stub_request(:get, /example.com\/advanced_search/).to_return(body: "[]")
|
8
|
+
stub_request(:get, /example.com\/unified_search/).to_return(body: "[]")
|
8
9
|
end
|
9
10
|
|
10
11
|
it "should raise an exception if the service at the search URI returns a 500" do
|
@@ -140,4 +141,62 @@ describe GdsApi::Rummager do
|
|
140
141
|
assert_requested :get, /order%5Bpublic_timestamp%5D=desc/
|
141
142
|
end
|
142
143
|
|
144
|
+
# tests for unified search
|
145
|
+
|
146
|
+
it "#unified_search should raise an exception if the service at the search URI returns a 500" do
|
147
|
+
stub_request(:get, /example.com\/unified_search.json/).to_return(status: [500, "Internal Server Error"])
|
148
|
+
assert_raises(GdsApi::HTTPErrorResponse) do
|
149
|
+
GdsApi::Rummager.new("http://example.com").unified_search(q: "query")
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
it "#unified_search should raise an exception if the service at the search URI returns a 404" do
|
154
|
+
stub_request(:get, /example.com\/unified_search/).to_return(status: [404, "Not Found"])
|
155
|
+
assert_raises(GdsApi::HTTPNotFound) do
|
156
|
+
GdsApi::Rummager.new("http://example.com").unified_search(q: "query")
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
it "#unified_search should raise an exception if the service at the unified search URI returns a 400" do
|
161
|
+
stub_request(:get, /example.com\/unified_search/).to_return(
|
162
|
+
status: [400, "Bad Request"],
|
163
|
+
body: %q("error":"Filtering by \"coffee\" is not allowed"),
|
164
|
+
)
|
165
|
+
assert_raises(GdsApi::HTTPErrorResponse) do
|
166
|
+
GdsApi::Rummager.new("http://example.com").unified_search(q: "query", filter_coffee: "tea")
|
167
|
+
end
|
168
|
+
end
|
169
|
+
|
170
|
+
it "#unified_search should raise an exception if the service at the search URI times out" do
|
171
|
+
stub_request(:get, /example.com\/unified_search/).to_timeout
|
172
|
+
assert_raises(GdsApi::TimedOutException) do
|
173
|
+
GdsApi::Rummager.new("http://example.com").unified_search(q: "query")
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
it "#unified_search should return the search deserialized from json" do
|
178
|
+
search_results = [{"title" => "document-title"}]
|
179
|
+
stub_request(:get, /example.com\/unified_search/).to_return(body: search_results.to_json)
|
180
|
+
results = GdsApi::Rummager.new("http://example.com").unified_search(q: "query")
|
181
|
+
assert_equal search_results, results.to_hash
|
182
|
+
end
|
183
|
+
|
184
|
+
it "#unified_search should request the search results in JSON format" do
|
185
|
+
GdsApi::Rummager.new("http://example.com").unified_search(q: "query")
|
186
|
+
|
187
|
+
assert_requested :get, /.*/, headers: {"Accept" => "application/json"}
|
188
|
+
end
|
189
|
+
|
190
|
+
it "#unified_search should issue a request for all the params supplied" do
|
191
|
+
GdsApi::Rummager.new("http://example.com").unified_search(
|
192
|
+
q: "query & stuff",
|
193
|
+
filter_topics: ["1", "2"],
|
194
|
+
order: "-public_timestamp",
|
195
|
+
)
|
196
|
+
|
197
|
+
assert_requested :get, /q=query%20%26%20stuff/
|
198
|
+
assert_requested :get, /filter_topics%5B0%5D=1&filter_topics%5B1%5D=2/
|
199
|
+
assert_requested :get, /order=-public_timestamp/
|
200
|
+
end
|
201
|
+
|
143
202
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gds-api-adapters
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 10.
|
4
|
+
version: 10.5.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2014-
|
12
|
+
date: 2014-04-01 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: plek
|
@@ -372,7 +372,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
372
372
|
version: '0'
|
373
373
|
segments:
|
374
374
|
- 0
|
375
|
-
hash:
|
375
|
+
hash: -3888185947824795971
|
376
376
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
377
377
|
none: false
|
378
378
|
requirements:
|
@@ -381,7 +381,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
381
381
|
version: '0'
|
382
382
|
segments:
|
383
383
|
- 0
|
384
|
-
hash:
|
384
|
+
hash: -3888185947824795971
|
385
385
|
requirements: []
|
386
386
|
rubyforge_project:
|
387
387
|
rubygems_version: 1.8.23
|