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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5979b3509dd914841f1fc553f33e2b2e3ae2e2ef
4
- data.tar.gz: d36201990c6be855dea556acfd81a1b22393440f
3
+ metadata.gz: 35812975d269869fb5fb249d158726a592ef548b
4
+ data.tar.gz: bb8169aaec4ec7c056c7acc8ec490ecd2babd242
5
5
  SHA512:
6
- metadata.gz: 2ecf3137719704252be5de8ef79cba9575eaca75a4b29c4a627dd6f208d2176a195d9152cbddc3e341ad9cf56345cc1c3570a8a256115f343591fb875fba724e
7
- data.tar.gz: 9d9e8c5c91afe5ce9aaa2f306efd98aa8cc4637b9b679e465a3b8c045e60da9bd5a53fa86905529639a20ca12ba54c955e82a015736ac2d3809c24659c849e1f
6
+ metadata.gz: f5cc4b3fd919ef34495ca4abc3fcfcc4c71b7da1caf36df2604ccec85e21150437c8edc4b93c8464bd84dceceb1e8f1afed2ae5eb998aab2fd40690d0ecd2d75
7
+ data.tar.gz: 99cb031e9cd75f5fa20f76b86477e09918d51fe394c4c5278756215e0d6cd8f76383ecac2ace084c5e9c8a9e9712817560ef42fd9a40eda6e615ed419924c7fb
data/CHANGELOG.md CHANGED
@@ -1,3 +1,6 @@
1
+ 1.3.0 / 2014-11-22
2
+ [FEATURE] Added sorting option to searcher
3
+
1
4
  1.2.4 / 2014-06-12
2
5
  [FEATURE] Remove deep clone to allow inquisitio on jRuby
3
6
 
@@ -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
 
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Inquisitio
2
- VERSION = "1.2.4"
2
+ VERSION = "1.3.0"
3
3
  end
@@ -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'], 'type' => ['Inquisitio_Elephant']}},
349
+ {'data' => {'id' => ['2'], 'type' => ['Inquisitio_Elephant']}},
348
350
  {'data' => {'id' => ['20'], 'type' => ['Inquisitio_Giraffe']}},
349
- {'data' => {'id' => ['1'], 'type' => ['Inquisitio_Elephant']}}
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.2.4
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-06-12 00:00:00.000000000 Z
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.1.9
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