inquisitio 0.1.0 → 0.1.1

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,15 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 0153850b7330c032d7d3bdde601026aa999e4572
4
- data.tar.gz: 7911234db6c6b7bf878a3b81b124cf07838a042c
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ ZjQ3YThiYjYzNzQ5YTc0OGRjZjcxMTc5NjcwMDJmYjlmYzgwMjQ0Yw==
5
+ data.tar.gz: !binary |-
6
+ NTE2NmJiOTgxODVlMWZiN2U2MjYwOWFjNGJiMmNkMWQwNTJiMjNlZA==
5
7
  SHA512:
6
- metadata.gz: 41b9e466ee1921dee60271bcacad62a9ca0f9456c21e94569d1700daeede197bedeeaf236662f1ed9c614e72a9e0ae038253352ffb87d178fadcee9349259a57
7
- data.tar.gz: 984fc2e46cd3c754ab4846b1e8af8bd2190dcb5cad0c560bed257d786476585615ce376bb6029592379ffa8c478882e306716d5255d9f56df07f531ef809c9cb
8
+ metadata.gz: !binary |-
9
+ NDI3MWRhNzhkMTk2ZGUxNWE4MWRkYTQxNWE4YjIzNmE5OGU3MjYyMjJhZmQw
10
+ ZjI2NzBhYzU2NDNmMDY1NjhjN2FmZWViYTVjNWMxZGE3ZGVhNmQ1NWJhMWI5
11
+ OGFiN2E5NDBlMGIzNTkyMGVmOTc1N2U2ZDBmODQ2ZWUyMzFiZjc=
12
+ data.tar.gz: !binary |-
13
+ NjhhZmJmOTVkY2ZjY2JjY2M3MDFlODVhN2ZiZDU0ZGNkMzdlMmNhMjYxYTQz
14
+ ZWEyMzU5NmY1MDMzMDNhMWM2OWU1N2M0ZmI0ZTI0NGU0NjY4YmY5Y2I2MmRh
15
+ Njk1NzBiZGU2ODZiNjIwYWJjNmU1MWJkMzIwMzQ2NTUyYmU5NTY=
data/CHANGELOG.md CHANGED
@@ -1,3 +1,7 @@
1
+ 0.1.1 / 2013-10-29
2
+
3
+ [FEATURE] Add pagination methods to match Kaminari
4
+
1
5
  0.1.0 / 2013-10-28
2
6
 
3
7
  [BUGFIX] Parse ids properly.
@@ -0,0 +1,27 @@
1
+ module Inquisitio
2
+ class Results < Array
3
+ def initialize(items, current_page, results_per_page, total_count)
4
+ super(items)
5
+ @current_page = current_page
6
+ @results_per_page = results_per_page
7
+ @total_count = total_count
8
+ end
9
+
10
+ attr_reader :total_count, :results_per_page, :current_page
11
+ alias_method :total_entries, :total_count
12
+ alias_method :limit_value, :results_per_page
13
+
14
+ def total_pages
15
+ (total_count / results_per_page.to_f).ceil
16
+ end
17
+ alias_method :num_pages, :total_pages
18
+
19
+ def last_page?
20
+ current_page == total_pages
21
+ end
22
+
23
+ def to_a
24
+ self
25
+ end
26
+ end
27
+ end
@@ -104,7 +104,11 @@ module Inquisitio
104
104
  if @results.nil?
105
105
  response = Excon.get(search_url)
106
106
  raise InquisitioError.new("Search failed with status code: #{response.status} Message #{response.body}") unless response.status == 200
107
- @results = JSON.parse(response.body)["hits"]["hit"]
107
+ body = JSON.parse(response.body)
108
+ @results = Results.new(body["hits"]["hit"],
109
+ params[:page],
110
+ params[:per],
111
+ body["hits"]["found"])
108
112
  end
109
113
  @results
110
114
  end
@@ -1,3 +1,3 @@
1
1
  module Inquisitio
2
- VERSION = "0.1.0"
2
+ VERSION = "0.1.1"
3
3
  end
data/lib/inquisitio.rb CHANGED
@@ -7,6 +7,7 @@ require "inquisitio/configuration"
7
7
  require "inquisitio/document"
8
8
  require "inquisitio/search_url_builder"
9
9
  require "inquisitio/searcher"
10
+ require "inquisitio/results"
10
11
  require "inquisitio/indexer"
11
12
 
12
13
  module Inquisitio
@@ -0,0 +1,102 @@
1
+ require File.expand_path('../test_helper', __FILE__)
2
+
3
+ module Inquisitio
4
+ class ResultsTest < Minitest::Test
5
+ def setup
6
+ super
7
+ @search_endpoint = 'http://my.search-endpoint.com'
8
+ Inquisitio.config.search_endpoint = @search_endpoint
9
+ @result_1 = {'data' => {'med_id' => ['1'], 'title' => ["Foobar"], 'med_type' => ["Cat"]}}
10
+ @result_2 = {'data' => {'med_id' => ['2'], 'title' => ["Foobar"], 'med_type' => ["Cat"]}}
11
+ @result_3 = {'data' => {'med_id' => ['20'], 'title' => ["Foobar2"], 'med_type' => ["Module_Dog"]}}
12
+ @expected_results = [@result_1, @result_2, @result_3]
13
+ @start = 5
14
+ @found = 8
15
+
16
+ @body = <<-EOS
17
+ {"rank":"-text_relevance","match-expr":"(label 'star wars')","hits":{"found":#{@found},"start":#{@start},"hit":#{@expected_results.to_json}},"info":{"rid":"9d3b24b0e3399866dd8d376a7b1e0f6e930d55830b33a474bfac11146e9ca1b3b8adf0141a93ecee","time-ms":3,"cpu-time-ms":0}}
18
+ EOS
19
+
20
+ Excon.defaults[:mock] = true
21
+ Excon.stub({}, {body: @body, status: 200})
22
+ end
23
+
24
+ def teardown
25
+ super
26
+ Excon.stubs.clear
27
+ end
28
+
29
+ def test_should_return_total_count
30
+ searcher = Searcher.where("star_wars")
31
+ searcher.search
32
+ assert_equal @found, searcher.total_entries
33
+ end
34
+
35
+ def test_total_entries_should_proxy
36
+ searcher = Searcher.where("star_wars")
37
+ searcher.search
38
+ assert_equal @found, searcher.total_count
39
+ end
40
+
41
+ def test_should_return_results_per_page
42
+ per = 9
43
+ searcher = Searcher.per(per)
44
+ searcher.search
45
+ assert_equal per, searcher.results_per_page
46
+ end
47
+
48
+ def test_should_return_limit_value
49
+ per = 9
50
+ searcher = Searcher.per(per)
51
+ searcher.search
52
+ assert_equal per, searcher.limit_value
53
+ end
54
+
55
+ def test_should_return_current_page
56
+ page = 7
57
+ searcher = Searcher.page(7)
58
+ searcher.search
59
+ assert_equal page, searcher.current_page
60
+ end
61
+
62
+ def test_should_return_total_pages_with_less
63
+ per = 10
64
+ searcher = Searcher.per(per)
65
+ searcher.search
66
+ assert_equal 1, searcher.total_pages
67
+ end
68
+
69
+ def test_should_return_total_pages_with_equal
70
+ per = 8
71
+ searcher = Searcher.per(per)
72
+ searcher.search
73
+ assert_equal 1, searcher.total_pages
74
+ end
75
+
76
+ def test_should_return_total_pages_with_more
77
+ per = 3
78
+ searcher = Searcher.per(per)
79
+ searcher.search
80
+ assert_equal 3, searcher.total_pages
81
+ end
82
+
83
+ def test_nums_pages_should_proxy
84
+ per = 3
85
+ searcher = Searcher.per(per)
86
+ searcher.search
87
+ assert_equal 3, searcher.num_pages
88
+ end
89
+
90
+ def test_last_page_before
91
+ results = Inquisitio::Results.new([], 1, nil, nil)
92
+ results.expects(total_pages: 2)
93
+ refute results.last_page?
94
+ end
95
+
96
+ def test_last_page_equal
97
+ results = Inquisitio::Results.new([], 2, nil, nil)
98
+ results.expects(total_pages: 2)
99
+ assert results.last_page?
100
+ end
101
+ end
102
+ end
@@ -10,9 +10,11 @@ module Inquisitio
10
10
  @result_2 = {'data' => {'med_id' => ['2'], 'title' => ["Foobar"], 'med_type' => ["Cat"]}}
11
11
  @result_3 = {'data' => {'med_id' => ['20'], 'title' => ["Foobar2"], 'med_type' => ["Module_Dog"]}}
12
12
  @expected_results = [@result_1, @result_2, @result_3]
13
+ @start = 5
14
+ @found = 8
13
15
 
14
16
  @body = <<-EOS
15
- {"rank":"-text_relevance","match-expr":"(label 'star wars')","hits":{"found":2,"start":0,"hit":#{@expected_results.to_json}},"info":{"rid":"9d3b24b0e3399866dd8d376a7b1e0f6e930d55830b33a474bfac11146e9ca1b3b8adf0141a93ecee","time-ms":3,"cpu-time-ms":0}}
17
+ {"rank":"-text_relevance","match-expr":"(label 'star wars')","hits":{"found":#{@found},"start":#{@start},"hit":#{@expected_results.to_json}},"info":{"rid":"9d3b24b0e3399866dd8d376a7b1e0f6e930d55830b33a474bfac11146e9ca1b3b8adf0141a93ecee","time-ms":3,"cpu-time-ms":0}}
16
18
  EOS
17
19
 
18
20
  Excon.defaults[:mock] = true
@@ -235,12 +237,18 @@ module Inquisitio
235
237
  searcher.select { }
236
238
  end
237
239
 
238
- def test_search_should_results
240
+ def test_search_should_set_results
239
241
  searcher = Searcher.where("star_wars")
240
242
  searcher.search
241
243
  assert_equal @expected_results, searcher.instance_variable_get("@results")
242
244
  end
243
245
 
246
+ def test_search_should_create_a_results_object
247
+ searcher = Searcher.where("star_wars")
248
+ searcher.search
249
+ assert Results, searcher.instance_variable_get("@results").class
250
+ end
251
+
244
252
  def test_search_only_runs_once
245
253
  searcher = Searcher.where("star_wars")
246
254
  Excon.expects(:get).returns(mock(status: 200, body: @body)).once
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: 0.1.0
4
+ version: 0.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: 2013-10-28 00:00:00.000000000 Z
13
+ date: 2013-10-29 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: excon
@@ -30,14 +30,14 @@ dependencies:
30
30
  name: ruby_deep_clone
31
31
  requirement: !ruby/object:Gem::Requirement
32
32
  requirements:
33
- - - '>='
33
+ - - ! '>='
34
34
  - !ruby/object:Gem::Version
35
35
  version: '0'
36
36
  type: :runtime
37
37
  prerelease: false
38
38
  version_requirements: !ruby/object:Gem::Requirement
39
39
  requirements:
40
- - - '>='
40
+ - - ! '>='
41
41
  - !ruby/object:Gem::Version
42
42
  version: '0'
43
43
  - !ruby/object:Gem::Dependency
@@ -58,42 +58,42 @@ dependencies:
58
58
  name: rake
59
59
  requirement: !ruby/object:Gem::Requirement
60
60
  requirements:
61
- - - '>='
61
+ - - ! '>='
62
62
  - !ruby/object:Gem::Version
63
63
  version: '0'
64
64
  type: :development
65
65
  prerelease: false
66
66
  version_requirements: !ruby/object:Gem::Requirement
67
67
  requirements:
68
- - - '>='
68
+ - - ! '>='
69
69
  - !ruby/object:Gem::Version
70
70
  version: '0'
71
71
  - !ruby/object:Gem::Dependency
72
72
  name: mocha
73
73
  requirement: !ruby/object:Gem::Requirement
74
74
  requirements:
75
- - - '>='
75
+ - - ! '>='
76
76
  - !ruby/object:Gem::Version
77
77
  version: '0'
78
78
  type: :development
79
79
  prerelease: false
80
80
  version_requirements: !ruby/object:Gem::Requirement
81
81
  requirements:
82
- - - '>='
82
+ - - ! '>='
83
83
  - !ruby/object:Gem::Version
84
84
  version: '0'
85
85
  - !ruby/object:Gem::Dependency
86
86
  name: yard
87
87
  requirement: !ruby/object:Gem::Requirement
88
88
  requirements:
89
- - - '>='
89
+ - - ! '>='
90
90
  - !ruby/object:Gem::Version
91
91
  version: '0'
92
92
  type: :development
93
93
  prerelease: false
94
94
  version_requirements: !ruby/object:Gem::Requirement
95
95
  requirements:
96
- - - '>='
96
+ - - ! '>='
97
97
  - !ruby/object:Gem::Version
98
98
  version: '0'
99
99
  - !ruby/object:Gem::Dependency
@@ -143,6 +143,7 @@ files:
143
143
  - lib/inquisitio/indexer.rb
144
144
  - lib/inquisitio/inquisitio_error.rb
145
145
  - lib/inquisitio/logger.rb
146
+ - lib/inquisitio/results.rb
146
147
  - lib/inquisitio/search_url_builder.rb
147
148
  - lib/inquisitio/searcher.rb
148
149
  - lib/inquisitio/version.rb
@@ -150,6 +151,7 @@ files:
150
151
  - test/document_test.rb
151
152
  - test/indexer_test.rb
152
153
  - test/logger_test.rb
154
+ - test/results_test.rb
153
155
  - test/search_url_builder_test.rb
154
156
  - test/searcher_test.rb
155
157
  - test/test_helper.rb
@@ -163,12 +165,12 @@ require_paths:
163
165
  - lib
164
166
  required_ruby_version: !ruby/object:Gem::Requirement
165
167
  requirements:
166
- - - '>='
168
+ - - ! '>='
167
169
  - !ruby/object:Gem::Version
168
170
  version: '0'
169
171
  required_rubygems_version: !ruby/object:Gem::Requirement
170
172
  requirements:
171
- - - '>='
173
+ - - ! '>='
172
174
  - !ruby/object:Gem::Version
173
175
  version: '0'
174
176
  requirements: []
@@ -182,6 +184,7 @@ test_files:
182
184
  - test/document_test.rb
183
185
  - test/indexer_test.rb
184
186
  - test/logger_test.rb
187
+ - test/results_test.rb
185
188
  - test/search_url_builder_test.rb
186
189
  - test/searcher_test.rb
187
190
  - test/test_helper.rb