inquisitio 1.1.0 → 1.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5beb1d995aa120b59b2a6f45c0f2c3827e40f5eb
4
- data.tar.gz: 4b0f184f436c0042c3096b74dc4a6dfa82b0c109
3
+ metadata.gz: 2441b583d2147a1ae532629e234864e41e647559
4
+ data.tar.gz: 27392ff3783c2a60312f24d4a20e9da16d87bede
5
5
  SHA512:
6
- metadata.gz: 92252a7a9af735589d88d89181ad5377383c1350350d85182f6cb02d7011175a84965e5ff32550a4f293e1f44150eeb50b50295b4bf668d087a2b65e3cfa5c1b
7
- data.tar.gz: 5f975e567a4c08fb553090446eee45e44cf2d086334ed05fab01afee966c3136fe8fb11eb4d9e1144bf21291b1d2d716a9f3e3e9a6316a880b354e6dd376b2d4
6
+ metadata.gz: aa1af91095a8da0800a5f66c5deef6c328d17c31bdd2c3005b47081dc1a612e9fc3088da6d8d2b8250f6815b2c14484779aa8f5793cfe81e3c060c90c312b2ce
7
+ data.tar.gz: 369761c5a03509d7ee631207243d29dbdb79eb743b15e90c1101f9b69238db2c1dc895fe437515070f25662e4a4035b98110317a341f4c25bfdd8158d2bfcd60
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ 1.1.1 / 2014-01-25
2
+
3
+ [BUGFIX] Sort records into result order before returning
4
+
1
5
  1.1.0 / 2014-01-24
2
6
 
3
7
  [BUGFIX] Use 'type' and 'id' fields instead of deprecated med_ fields
data/bin/facet_query CHANGED
@@ -14,18 +14,18 @@ require "inquisitio"
14
14
  endpoint = ARGV[0]
15
15
  query = ARGV[1]
16
16
  filter_name = ARGV[2]
17
- filter_value = ARGV[3]
18
- return_fields = [ ARGV[4] ]
17
+ filter_value = ARGV[3]
18
+ return_fields = [ARGV[4]]
19
19
 
20
20
  Inquisitio.config do |config|
21
21
  config.search_endpoint = endpoint
22
22
  end
23
23
 
24
24
  puts Inquisitio.search(query,
25
- { filter_name.to_sym => filter_value.to_sym,
26
- :arguments => { :facet => 'genre',
27
- 'facet-genre-constraints' => 'Animation',
28
- 'facet-genre-top-n' => '5'
29
- },
30
- :return_fields => return_fields
31
- } )
25
+ {filter_name.to_sym => filter_value.to_sym,
26
+ :arguments => {:facet => 'genre',
27
+ 'facet-genre-constraints' => 'Animation',
28
+ 'facet-genre-top-n' => '5'
29
+ },
30
+ :return_fields => return_fields
31
+ })
@@ -9,6 +9,7 @@ module Inquisitio
9
9
  end
10
10
 
11
11
  attr_reader :params
12
+
12
13
  def initialize(params = nil)
13
14
  @params = params || {
14
15
  criteria: [],
@@ -28,23 +29,38 @@ module Inquisitio
28
29
  end
29
30
 
30
31
  def ids
31
- @ids ||= map{|r|r['data']['id'].first}.flatten.map(&:to_i)
32
+ @ids ||= map { |r| r['data']['id'].first }.flatten.map(&:to_i)
32
33
  end
33
34
 
34
35
  def records
35
- @records ||= begin
36
- klasses = {}
37
- results.map do |result|
38
- klass = result['data']['type'].first
39
- klasses[klass] ||= []
40
- klasses[klass] << result['data']['id'].first
41
- end
36
+ return @records unless @records.nil?
37
+
38
+ @records = []
39
+ klasses = {}
40
+ results.each do |result|
41
+ klass = result['data']['type'].first
42
+ id = result['data']['id'].first
43
+ klasses[klass] ||= []
44
+ klasses[klass] << id
45
+ end
42
46
 
43
- klasses.map {|klass, ids|
44
- klass = klass.gsub("_", "::")
45
- klass.constantize.where(id: ids)
46
- }.flatten
47
+ objs = klasses.map { |klass_name, ids|
48
+ klass_name = klass_name.gsub("_", "::")
49
+ klass = klass_name.constantize
50
+ klass.where(id: ids)
51
+ }.flatten
52
+
53
+ results.each do |result|
54
+ klass_name = result['data']['type'].first
55
+ klass_name = klass_name.gsub("_", "::")
56
+ id = result['data']['id'].first
57
+ record = objs.select { |r|
58
+ r.class.name == klass_name && r.id == id.to_i
59
+ }.first
60
+ @records << record
47
61
  end
62
+
63
+ return @records
48
64
  end
49
65
 
50
66
  def where(value)
@@ -52,7 +68,7 @@ module Inquisitio
52
68
  if value.is_a?(Array)
53
69
  s.params[:criteria] += value
54
70
  elsif value.is_a?(Hash)
55
- value.each do |k,v|
71
+ value.each do |k, v|
56
72
  s.params[:filters][k] ||= []
57
73
  if v.is_a?(Array)
58
74
  s.params[:filters][k] = v
@@ -110,9 +126,9 @@ module Inquisitio
110
126
  raise InquisitioError.new("Search failed with status code: #{response.status} Message #{response.body}") unless response.status == 200
111
127
  body = JSON.parse(response.body)
112
128
  @results = Results.new(body["hits"]["hit"],
113
- params[:page],
114
- params[:per],
115
- body["hits"]["found"])
129
+ params[:page],
130
+ params[:per],
131
+ body["hits"]["found"])
116
132
  rescue => e
117
133
  @failed_attempts += 1
118
134
  Inquisitio.config.logger.error("Exception Performing search: #{search_url} #{e}")
@@ -127,7 +143,7 @@ module Inquisitio
127
143
 
128
144
  def search_url
129
145
  @search_url ||= begin
130
- return_fields = params[:returns].empty?? [:type, :id] : params[:returns]
146
+ return_fields = params[:returns].empty? ? [:type, :id] : params[:returns]
131
147
 
132
148
  SearchUrlBuilder.build(
133
149
  query: params[:criteria],
@@ -1,3 +1,3 @@
1
1
  module Inquisitio
2
- VERSION = "1.1.0"
2
+ VERSION = "1.1.1"
3
3
  end
@@ -1,6 +1,21 @@
1
1
  require File.expand_path('../test_helper', __FILE__)
2
2
 
3
3
  module Inquisitio
4
+
5
+ class Elephant
6
+ attr_accessor :id, :name
7
+ def initialize(_id, _name)
8
+ @id, @name = _id, _name
9
+ end
10
+ end
11
+
12
+ class Giraffe
13
+ attr_accessor :id, :name
14
+ def initialize(_id, _name)
15
+ @id, @name = _id, _name
16
+ end
17
+ end
18
+
4
19
  class SearcherTest < Minitest::Test
5
20
  def setup
6
21
  super
@@ -288,20 +303,24 @@ module Inquisitio
288
303
  assert_equal [1,2,20], searcher.ids
289
304
  end
290
305
 
291
- def test_should_return_records
292
- Object.const_set :Cat, Object.new
293
- Module.const_set :Dog, Object.new
294
-
295
- res1 = "Foobar"
296
- res2 = 123
297
- res3 = true
306
+ def test_should_return_records_in_results_order
307
+ expected_1 = Elephant.new(2, 'Sootica')
308
+ expected_2 = Giraffe.new(20, 'Wolf')
309
+ expected_3 = Elephant.new(1, 'Gobbolino')
298
310
 
299
- Cat.expects(:where).with(id: ['1','2']).returns([res1, res2])
300
- Module::Dog.expects(:where).with(id: ['20']).returns([res3])
311
+ Elephant.expects(:where).with(id: ['2','1']).returns([expected_3, expected_1])
312
+ Giraffe.expects(:where).with(id: ['20']).returns([expected_2])
301
313
 
302
314
  searcher = Searcher.new
303
- searcher.instance_variable_set("@results", [])
304
- assert_equal [res1, res2, res3], Searcher.records
315
+ result = [
316
+ {'data' => {'id' => ['2'], 'type' => ['Inquisitio_Elephant']}},
317
+ {'data' => {'id' => ['20'], 'type' => ['Inquisitio_Giraffe']}},
318
+ {'data' => {'id' => ['1'], 'type' => ['Inquisitio_Elephant']}}
319
+ ]
320
+ searcher.instance_variable_set("@results", result)
321
+ expected_records = [expected_1, expected_2, expected_3]
322
+ actual_records = searcher.records
323
+ assert_equal expected_records, actual_records
305
324
  end
306
325
  end
307
326
  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.1.0
4
+ version: 1.1.1
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-01-24 00:00:00.000000000 Z
13
+ date: 2014-01-25 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: excon
@@ -175,7 +175,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
175
  version: '0'
176
176
  requirements: []
177
177
  rubyforge_project:
178
- rubygems_version: 2.2.0
178
+ rubygems_version: 2.1.9
179
179
  signing_key:
180
180
  specification_version: 4
181
181
  summary: This wraps AWS CloudSearch in a Ruby Gem