search_flip 1.1.0 → 2.0.0.beta

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.
@@ -1,5 +1,5 @@
1
1
 
2
- require File.expand_path("../../test_helper", __FILE__)
2
+ require File.expand_path("../test_helper", __dir__)
3
3
 
4
4
  class SearchFlip::HTTPClientTest < SearchFlip::TestCase
5
5
  [:get, :put, :delete, :post, :head].each do |method|
@@ -1,12 +1,34 @@
1
1
 
2
- require File.expand_path("../../test_helper", __FILE__)
2
+ require File.expand_path("../test_helper", __dir__)
3
3
 
4
4
  class SearchFlip::IndexTest < SearchFlip::TestCase
5
- should_delegate_methods :profile, :where, :where_not, :filter, :range, :match_all, :exists, :exists_not, :post_where,
6
- :post_where_not, :post_filter, :post_range, :post_exists, :post_exists_not, :aggregate, :scroll, :source, :includes,
7
- :eager_load, :preload, :sort, :resort, :order, :reorder, :offset, :limit, :paginate, :page, :per, :search,
8
- :find_in_batches, :highlight, :suggest, :custom, :find_each, :failsafe, :total_entries, :total_count, :terminate_after,
9
- :timeout, :should, :should_not, :must, :must_not, to: :criteria, subject: ProductIndex
5
+ should_delegate_methods :profile, :where, :where_not, :filter, :range, :match_all, :exists,
6
+ :exists_not, :post_where, :post_where_not, :post_filter, :post_must, :post_must_not,
7
+ :post_should, :post_range, :post_exists, :post_exists_not, :aggregate, :scroll, :source,
8
+ :includes, :eager_load, :preload, :sort, :resort, :order, :reorder, :offset, :limit,
9
+ :paginate, :page, :per, :search, :find_in_batches, :highlight, :suggest, :custom, :find_each,
10
+ :failsafe, :total_entries, :total_count, :terminate_after, :timeout, :should, :should_not,
11
+ :must, :must_not, to: :criteria, subject: ProductIndex
12
+
13
+ def test_serialize_exception
14
+ klass = Class.new do
15
+ include SearchFlip::Index
16
+ end
17
+
18
+ assert_raises SearchFlip::MethodNotImplemented do
19
+ klass.serialize(Hashie::Mash)
20
+ end
21
+ end
22
+
23
+ def test_type_name_exception
24
+ klass = Class.new do
25
+ include SearchFlip::Index
26
+ end
27
+
28
+ assert_raises SearchFlip::MethodNotImplemented do
29
+ klass.serialize(Hashie::Mash)
30
+ end
31
+ end
10
32
 
11
33
  def test_create_index
12
34
  assert TestIndex.create_index
@@ -75,10 +97,6 @@ class SearchFlip::IndexTest < SearchFlip::TestCase
75
97
  end
76
98
  end
77
99
 
78
- def test_base_url
79
- assert_equal "http://127.0.0.1:9200", ProductIndex.base_url
80
- end
81
-
82
100
  def test_index_url
83
101
  assert_equal "http://127.0.0.1:9200/products", ProductIndex.index_url
84
102
 
@@ -151,7 +169,9 @@ class SearchFlip::IndexTest < SearchFlip::TestCase
151
169
  ProductIndex.import products
152
170
  end
153
171
 
154
- assert_equal [3, 3], products.map { |product| ProductIndex.get(product.id)["_version"] }
172
+ actual = products.map { |product| ProductIndex.get(product.id)["_version"] }
173
+
174
+ assert_equal [3, 3], actual
155
175
  end
156
176
 
157
177
  def test_index_array
@@ -267,32 +287,38 @@ class SearchFlip::IndexTest < SearchFlip::TestCase
267
287
 
268
288
  products = create_list(:product, 2)
269
289
 
270
- if SearchFlip.version.to_i >= 5
290
+ if ProductIndex.connection.version.to_i >= 5
271
291
  assert_difference "ProductIndex.total_entries", 2 do
272
292
  ProductIndex.create products, {}, routing: "r1"
273
293
  end
274
294
 
275
- assert_equal "r1", ProductIndex.get(products.first.id, routing: "r1")["_routing"]
295
+ actual = ProductIndex.get(products.first.id, routing: "r1")["_routing"]
296
+
297
+ assert_equal "r1", actual
276
298
  else
277
299
  assert_difference "ProductIndex.total_entries", 2 do
278
300
  ProductIndex.create products, {}, version: 2, version_type: "external"
279
301
  end
280
302
 
281
- assert_equal [2, 2], products.map { |product| ProductIndex.get(product.id)["_version"] }
303
+ actual = products.map { |product| ProductIndex.get(product.id)["_version"] }
304
+
305
+ assert_equal [2, 2], actual
282
306
  end
283
307
  end
284
308
 
285
309
  def test_create_with_class_options
286
310
  products = create_list(:product, 2)
287
311
 
288
- if SearchFlip.version.to_i >= 5
312
+ if ProductIndex.connection.version.to_i >= 5
289
313
  ProductIndex.stubs(:index_options).returns(routing: "r1")
290
314
 
291
315
  assert_difference "ProductIndex.total_entries", 2 do
292
316
  ProductIndex.create products
293
317
  end
294
318
 
295
- assert_equal ["r1", "r1"], products.map { |product| ProductIndex.get(product.id, routing: "r1")["_routing"] }
319
+ actual = products.map { |product| ProductIndex.get(product.id, routing: "r1")["_routing"] }
320
+
321
+ assert_equal ["r1", "r1"], actual
296
322
  else
297
323
  ProductIndex.stubs(:index_options).returns(version: 2, version_type: "external")
298
324
 
@@ -300,7 +326,9 @@ class SearchFlip::IndexTest < SearchFlip::TestCase
300
326
  ProductIndex.create products
301
327
  end
302
328
 
303
- assert_equal [2, 2], products.map { |product| ProductIndex.get(product.id)["_version"] }
329
+ actual = products.map { |product| ProductIndex.get(product.id)["_version"] }
330
+
331
+ assert_equal [2, 2], actual
304
332
  end
305
333
  end
306
334
 
@@ -346,5 +374,9 @@ class SearchFlip::IndexTest < SearchFlip::TestCase
346
374
  end
347
375
  end
348
376
  end
377
+
378
+ def test_connection
379
+ assert_equal ProductIndex.connection.base_url, "http://127.0.0.1:9200"
380
+ end
349
381
  end
350
382
 
@@ -1,5 +1,5 @@
1
1
 
2
- require File.expand_path("../../test_helper", __FILE__)
2
+ require File.expand_path("../test_helper", __dir__)
3
3
 
4
4
  class SearchFlip::ModelTest < SearchFlip::TestCase
5
5
  class TestProduct < Product
@@ -1,5 +1,5 @@
1
1
 
2
- require File.expand_path("../../test_helper", __FILE__)
2
+ require File.expand_path("../test_helper", __dir__)
3
3
 
4
4
  class SearchFlip::ResponseTest < SearchFlip::TestCase
5
5
  def test_total_entries
@@ -124,10 +124,11 @@ class SearchFlip::ResponseTest < SearchFlip::TestCase
124
124
  ProductIndex.import [product1, product2, product3]
125
125
 
126
126
  query = ProductIndex.aggregate(:category) do |aggregation|
127
- aggregation.aggregate(price_sum: { sum: { field: "price" }})
127
+ aggregation.aggregate(price_sum: { sum: { field: "price" } })
128
128
  end
129
129
 
130
- assert_equal Hash["category1" => 2, "category2" => 1], query.aggregations(:category).each_with_object({}) { |(key, agg), hash| hash[key] = agg.doc_count }
130
+ assert_equal Hash["category1" => 2, "category2" => 1],
131
+ query.aggregations(:category).each_with_object({}) { |(key, agg), hash| hash[key] = agg.doc_count }
131
132
 
132
133
  assert_equal 40, query.aggregations(:category)["category1"].price_sum.value
133
134
  assert_equal 20, query.aggregations(:category)["category2"].price_sum.value
@@ -1,5 +1,5 @@
1
1
 
2
- require File.expand_path("../../test_helper", __FILE__)
2
+ require File.expand_path("../test_helper", __dir__)
3
3
  require "search_flip/to_json"
4
4
 
5
5
  class SearchFlip::ToJsonTest < SearchFlip::TestCase
data/test/test_helper.rb CHANGED
@@ -11,7 +11,7 @@ require "yaml"
11
11
 
12
12
  WebMock.allow_net_connect!
13
13
 
14
- ActiveRecord::Base.establish_connection YAML.load_file(File.expand_path("../database.yml", __FILE__))
14
+ ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: ":memory:")
15
15
 
16
16
  SearchFlip::Config[:auto_refresh] = true
17
17
 
@@ -23,7 +23,7 @@ ActiveRecord::Base.connection.create_table :products do |t|
23
23
  t.float :price
24
24
  t.string :category
25
25
  t.integer :version, default: 1
26
- t.integer :rank, :default => 0
26
+ t.integer :rank, default: 0
27
27
  t.integer :user_id
28
28
  t.timestamps null: false
29
29
  end
@@ -99,7 +99,7 @@ class ProductIndex
99
99
  include SearchFlip::Index
100
100
 
101
101
  def self.mapping
102
- if SearchFlip.version.to_i >= 5
102
+ if ProductIndex.connection.version.to_i >= 5
103
103
  {
104
104
  products: {
105
105
  properties: {
@@ -180,7 +180,7 @@ class SearchFlip::TestCase < MiniTest::Test
180
180
 
181
181
  assert target.respond_to?(as), "#{to} doesn't respond to #{as}"
182
182
 
183
- params = subject.method(method).arity.abs.times.map { |i| "param-#{i}" }
183
+ params = Array.new(subject.method(method).arity.abs) { |i| "param-#{i}" }
184
184
 
185
185
  mock_target = mock
186
186
  mock_target.expects(as).with(*params)
@@ -198,7 +198,7 @@ class SearchFlip::TestCase < MiniTest::Test
198
198
  end
199
199
 
200
200
  def assert_difference(expressions, difference = 1, &block)
201
- callables = Array(expressions).map { |e| lambda { eval(e, block.binding) } }
201
+ callables = Array(expressions).map { |e| -> { eval(e, block.binding) } }
202
202
 
203
203
  before = callables.map(&:call)
204
204
 
metadata CHANGED
@@ -1,31 +1,31 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: search_flip
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.0
4
+ version: 2.0.0.beta
5
5
  platform: ruby
6
6
  authors:
7
7
  - Benjamin Vetter
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-06-19 00:00:00.000000000 Z
11
+ date: 2019-02-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: bundler
14
+ name: activerecord
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: '0'
19
+ version: '3.0'
20
20
  type: :development
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: '0'
26
+ version: '3.0'
27
27
  - !ruby/object:Gem::Dependency
28
- name: rake
28
+ name: bundler
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
@@ -39,7 +39,7 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
- name: minitest
42
+ name: factory_bot
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
@@ -53,7 +53,7 @@ dependencies:
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
- name: mocha
56
+ name: minitest
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - ">="
@@ -67,7 +67,7 @@ dependencies:
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
- name: factory_bot
70
+ name: mocha
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
@@ -81,7 +81,7 @@ dependencies:
81
81
  - !ruby/object:Gem::Version
82
82
  version: '0'
83
83
  - !ruby/object:Gem::Dependency
84
- name: sqlite3
84
+ name: rake
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
@@ -95,21 +95,21 @@ dependencies:
95
95
  - !ruby/object:Gem::Version
96
96
  version: '0'
97
97
  - !ruby/object:Gem::Dependency
98
- name: activerecord
98
+ name: sqlite3
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - "~>"
102
102
  - !ruby/object:Gem::Version
103
- version: '3.0'
103
+ version: 1.3.6
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - "~>"
109
109
  - !ruby/object:Gem::Version
110
- version: '3.0'
110
+ version: 1.3.6
111
111
  - !ruby/object:Gem::Dependency
112
- name: webmock
112
+ name: timecop
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
115
  - - ">="
@@ -123,7 +123,7 @@ dependencies:
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
- name: timecop
126
+ name: webmock
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
129
  - - ">="
@@ -137,7 +137,7 @@ dependencies:
137
137
  - !ruby/object:Gem::Version
138
138
  version: '0'
139
139
  - !ruby/object:Gem::Dependency
140
- name: http
140
+ name: hashie
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
143
  - - ">="
@@ -151,7 +151,7 @@ dependencies:
151
151
  - !ruby/object:Gem::Version
152
152
  version: '0'
153
153
  - !ruby/object:Gem::Dependency
154
- name: hashie
154
+ name: http
155
155
  requirement: !ruby/object:Gem::Requirement
156
156
  requirements:
157
157
  - - ">="
@@ -186,18 +186,22 @@ extensions: []
186
186
  extra_rdoc_files: []
187
187
  files:
188
188
  - ".gitignore"
189
+ - ".rubocop.yml"
189
190
  - ".travis.yml"
190
191
  - CHANGELOG.md
191
192
  - Gemfile
192
193
  - LICENSE.txt
193
194
  - README.md
194
195
  - Rakefile
196
+ - docker-compose.yml
195
197
  - lib/search_flip.rb
196
198
  - lib/search_flip/aggregatable.rb
197
199
  - lib/search_flip/aggregation.rb
198
200
  - lib/search_flip/bulk.rb
199
201
  - lib/search_flip/config.rb
202
+ - lib/search_flip/connection.rb
200
203
  - lib/search_flip/criteria.rb
204
+ - lib/search_flip/exceptions.rb
201
205
  - lib/search_flip/filterable.rb
202
206
  - lib/search_flip/http_client.rb
203
207
  - lib/search_flip/index.rb
@@ -209,16 +213,15 @@ files:
209
213
  - lib/search_flip/to_json.rb
210
214
  - lib/search_flip/version.rb
211
215
  - search_flip.gemspec
212
- - test/database.yml
213
216
  - test/search_flip/aggregation_test.rb
214
217
  - test/search_flip/bulk_test.rb
218
+ - test/search_flip/connection_test.rb
215
219
  - test/search_flip/criteria_test.rb
216
220
  - test/search_flip/http_client_test.rb
217
221
  - test/search_flip/index_test.rb
218
222
  - test/search_flip/model_test.rb
219
223
  - test/search_flip/response_test.rb
220
224
  - test/search_flip/to_json_test.rb
221
- - test/search_flip_test.rb
222
225
  - test/test_helper.rb
223
226
  homepage: https://github.com/mrkamel/search_flip
224
227
  licenses:
@@ -235,24 +238,23 @@ required_ruby_version: !ruby/object:Gem::Requirement
235
238
  version: '0'
236
239
  required_rubygems_version: !ruby/object:Gem::Requirement
237
240
  requirements:
238
- - - ">="
241
+ - - ">"
239
242
  - !ruby/object:Gem::Version
240
- version: '0'
243
+ version: 1.3.1
241
244
  requirements: []
242
245
  rubyforge_project:
243
- rubygems_version: 2.5.2.1
246
+ rubygems_version: 2.7.3
244
247
  signing_key:
245
248
  specification_version: 4
246
249
  summary: Powerful ElasticSearch client library to easily build complex queries
247
250
  test_files:
248
- - test/database.yml
249
251
  - test/search_flip/aggregation_test.rb
250
252
  - test/search_flip/bulk_test.rb
253
+ - test/search_flip/connection_test.rb
251
254
  - test/search_flip/criteria_test.rb
252
255
  - test/search_flip/http_client_test.rb
253
256
  - test/search_flip/index_test.rb
254
257
  - test/search_flip/model_test.rb
255
258
  - test/search_flip/response_test.rb
256
259
  - test/search_flip/to_json_test.rb
257
- - test/search_flip_test.rb
258
260
  - test/test_helper.rb
data/test/database.yml DELETED
@@ -1,4 +0,0 @@
1
-
2
- adapter: sqlite3
3
- database: ":memory:"
4
-
@@ -1,26 +0,0 @@
1
-
2
- require File.expand_path("../test_helper", __FILE__)
3
-
4
- class SearchFlipTest < SearchFlip::TestCase
5
- def test_msearch
6
- ProductIndex.import create(:product)
7
- CommentIndex.import create(:comment)
8
-
9
- responses = SearchFlip.msearch([ProductIndex.match_all, CommentIndex.match_all])
10
-
11
- assert_equal 2, responses.size
12
- assert_equal 1, responses[0].total_entries
13
- assert_equal 1, responses[1].total_entries
14
- end
15
-
16
- def test_aliases
17
- assert SearchFlip.aliases(actions: [
18
- add: { index: "products", alias: "alias1" }
19
- ])
20
-
21
- assert SearchFlip.aliases(actions: [
22
- remove: { index: "products", alias: "alias1" }
23
- ])
24
- end
25
- end
26
-