inquisitio 1.2.4 → 1.3.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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/lib/inquisitio/search_url_builder.rb +2 -0
- data/lib/inquisitio/searcher.rb +9 -1
- data/lib/inquisitio/version.rb +1 -1
- data/test/test_searcher.rb +31 -10
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 35812975d269869fb5fb249d158726a592ef548b
|
4
|
+
data.tar.gz: bb8169aaec4ec7c056c7acc8ec490ecd2babd242
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5cc4b3fd919ef34495ca4abc3fcfcc4c71b7da1caf36df2604ccec85e21150437c8edc4b93c8464bd84dceceb1e8f1afed2ae5eb998aab2fd40690d0ecd2d75
|
7
|
+
data.tar.gz: 99cb031e9cd75f5fa20f76b86477e09918d51fe394c4c5278756215e0d6cd8f76383ecac2ace084c5e9c8a9e9712817560ef42fd9a40eda6e615ed419924c7fb
|
data/CHANGELOG.md
CHANGED
@@ -12,6 +12,7 @@ module Inquisitio
|
|
12
12
|
@return_fields = options[:return_fields]
|
13
13
|
@size = options[:size] || Inquisitio.config.default_search_size
|
14
14
|
@start = options[:start] || 0
|
15
|
+
@sort = options[:sort] || {}
|
15
16
|
end
|
16
17
|
|
17
18
|
def build
|
@@ -22,6 +23,7 @@ module Inquisitio
|
|
22
23
|
components << arguments
|
23
24
|
components << "&size=#{@size}" unless @arguments[:size]
|
24
25
|
components << "&start=#{@start}" unless @arguments[:start] || @start == 0 || @start == '0'
|
26
|
+
components << '&sort=' + @sort.map {|k,v| "#{k}%20#{v}"}.join(',') unless @sort.empty?
|
25
27
|
components.join("")
|
26
28
|
end
|
27
29
|
|
data/lib/inquisitio/searcher.rb
CHANGED
@@ -16,7 +16,8 @@ module Inquisitio
|
|
16
16
|
per: 10,
|
17
17
|
page: 1,
|
18
18
|
returns: [],
|
19
|
-
with: {}
|
19
|
+
with: {},
|
20
|
+
sort: {}
|
20
21
|
}
|
21
22
|
@failed_attempts = 0
|
22
23
|
|
@@ -109,6 +110,12 @@ module Inquisitio
|
|
109
110
|
end
|
110
111
|
end
|
111
112
|
|
113
|
+
def sort(value)
|
114
|
+
clone do |s|
|
115
|
+
s.params[:sort].merge!(value)
|
116
|
+
end
|
117
|
+
end
|
118
|
+
|
112
119
|
# Proxy everything to the results so that this this class
|
113
120
|
# transparently acts as an Array.
|
114
121
|
def method_missing(name, *args, &block)
|
@@ -157,6 +164,7 @@ module Inquisitio
|
|
157
164
|
arguments: params[:with],
|
158
165
|
size: params[:per],
|
159
166
|
start: params[:per] * (params[:page] - 1),
|
167
|
+
sort: params[:sort],
|
160
168
|
return_fields: return_fields
|
161
169
|
)
|
162
170
|
end
|
data/lib/inquisitio/version.rb
CHANGED
data/test/test_searcher.rb
CHANGED
@@ -4,6 +4,7 @@ module Inquisitio
|
|
4
4
|
|
5
5
|
class Elephant
|
6
6
|
attr_accessor :id, :name
|
7
|
+
|
7
8
|
def initialize(_id, _name)
|
8
9
|
@id, @name = _id, _name
|
9
10
|
end
|
@@ -11,6 +12,7 @@ module Inquisitio
|
|
11
12
|
|
12
13
|
class Giraffe
|
13
14
|
attr_accessor :id, :name
|
15
|
+
|
14
16
|
def initialize(_id, _name)
|
15
17
|
@id, @name = _id, _name
|
16
18
|
end
|
@@ -227,12 +229,12 @@ module Inquisitio
|
|
227
229
|
|
228
230
|
def test_with_saves_variable
|
229
231
|
searcher = Searcher.with(foo: 'bar')
|
230
|
-
assert_equal({foo:'bar'}, searcher.params[:with])
|
232
|
+
assert_equal({foo: 'bar'}, searcher.params[:with])
|
231
233
|
end
|
232
234
|
|
233
235
|
def test_with_appends_to_variable
|
234
236
|
searcher = Searcher.with(foo: 'bar').with(cat: 'dog')
|
235
|
-
assert_equal({foo:'bar', cat:'dog'}, searcher.params[:with])
|
237
|
+
assert_equal({foo: 'bar', cat: 'dog'}, searcher.params[:with])
|
236
238
|
end
|
237
239
|
|
238
240
|
def test_with_gets_correct_url
|
@@ -258,7 +260,7 @@ module Inquisitio
|
|
258
260
|
end
|
259
261
|
|
260
262
|
def test_search_raises_exception_when_excon_exception_thrown
|
261
|
-
Excon.stub({}, lambda { |_| raise Excon::Errors::Timeout})
|
263
|
+
Excon.stub({}, lambda { |_| raise Excon::Errors::Timeout })
|
262
264
|
|
263
265
|
searcher = Searcher.where('Star Wars')
|
264
266
|
searcher.instance_variable_set(:@failed_attempts, 3)
|
@@ -280,21 +282,21 @@ module Inquisitio
|
|
280
282
|
def test_that_iterating_calls_results
|
281
283
|
searcher = Searcher.where("star_wars")
|
282
284
|
searcher.expects(results: [])
|
283
|
-
searcher.each {
|
285
|
+
searcher.each {}
|
284
286
|
end
|
285
287
|
|
286
288
|
def test_that_iterating_calls_each
|
287
289
|
searcher = Searcher.where("star_wars")
|
288
290
|
searcher.search
|
289
291
|
searcher.send(:results).expects(:each)
|
290
|
-
searcher.each {
|
292
|
+
searcher.each {}
|
291
293
|
end
|
292
294
|
|
293
295
|
def test_that_select_calls_each
|
294
296
|
searcher = Searcher.where("star_wars")
|
295
297
|
searcher.search
|
296
298
|
searcher.send(:results).expects(:select)
|
297
|
-
searcher.select {
|
299
|
+
searcher.select {}
|
298
300
|
end
|
299
301
|
|
300
302
|
def test_search_should_set_results
|
@@ -331,7 +333,7 @@ module Inquisitio
|
|
331
333
|
|
332
334
|
def test_should_return_ids
|
333
335
|
searcher = Searcher.where('Star Wars')
|
334
|
-
assert_equal [1,2,20], searcher.ids
|
336
|
+
assert_equal [1, 2, 20], searcher.ids
|
335
337
|
end
|
336
338
|
|
337
339
|
def test_should_return_records_in_results_order
|
@@ -339,19 +341,38 @@ module Inquisitio
|
|
339
341
|
expected_2 = Giraffe.new(20, 'Wolf')
|
340
342
|
expected_3 = Elephant.new(1, 'Gobbolino')
|
341
343
|
|
342
|
-
Elephant.expects(:where).with(id: ['2','1']).returns([expected_3, expected_1])
|
344
|
+
Elephant.expects(:where).with(id: ['2', '1']).returns([expected_3, expected_1])
|
343
345
|
Giraffe.expects(:where).with(id: ['20']).returns([expected_2])
|
344
346
|
|
345
347
|
searcher = Searcher.new
|
346
348
|
result = [
|
347
|
-
{'data' => {'id' => ['2'],
|
349
|
+
{'data' => {'id' => ['2'], 'type' => ['Inquisitio_Elephant']}},
|
348
350
|
{'data' => {'id' => ['20'], 'type' => ['Inquisitio_Giraffe']}},
|
349
|
-
{'data' => {'id' => ['1'],
|
351
|
+
{'data' => {'id' => ['1'], 'type' => ['Inquisitio_Elephant']}}
|
350
352
|
]
|
351
353
|
searcher.instance_variable_set("@results", result)
|
352
354
|
expected_records = [expected_1, expected_2, expected_3]
|
353
355
|
actual_records = searcher.records
|
354
356
|
assert_equal expected_records, actual_records
|
355
357
|
end
|
358
|
+
|
359
|
+
def test_should_sort_field_ascending
|
360
|
+
searcher = Searcher.where('Star Wars').sort(year: :asc)
|
361
|
+
search_url = searcher.send(:search_url)
|
362
|
+
assert search_url.include?('sort=year%20asc'), "search url should include sort parameter:\n#{search_url}"
|
363
|
+
end
|
364
|
+
|
365
|
+
def test_should_sort_field_descending
|
366
|
+
searcher = Searcher.where('Star Wars').sort(year: :desc)
|
367
|
+
search_url = searcher.send(:search_url)
|
368
|
+
assert search_url.include?('sort=year%20desc'), "search url should include sort parameter:\n#{search_url}"
|
369
|
+
end
|
370
|
+
|
371
|
+
def test_should_sort_multiple_fields
|
372
|
+
searcher = Searcher.where('Star Wars').sort(year: :desc, foo: :asc)
|
373
|
+
search_url = searcher.send(:search_url)
|
374
|
+
assert search_url.include?('sort=year%20desc,foo%20asc'), "search url should include sort parameter:\n#{search_url}"
|
375
|
+
end
|
376
|
+
|
356
377
|
end
|
357
378
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: inquisitio
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jeremy Walker
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2014-
|
13
|
+
date: 2014-11-22 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: excon
|
@@ -162,7 +162,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
162
|
version: '0'
|
163
163
|
requirements: []
|
164
164
|
rubyforge_project:
|
165
|
-
rubygems_version: 2.
|
165
|
+
rubygems_version: 2.2.2
|
166
166
|
signing_key:
|
167
167
|
specification_version: 4
|
168
168
|
summary: This wraps AWS CloudSearch in a Ruby Gem
|