elasticsearch-persistence 7.2.1 → 8.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
@@ -18,9 +18,7 @@
18
18
  require 'spec_helper'
19
19
 
20
20
  describe Elasticsearch::Persistence::Repository do
21
-
22
21
  describe '#create' do
23
-
24
22
  before(:all) do
25
23
  class RepositoryWithoutDSL
26
24
  include Elasticsearch::Persistence::Repository
@@ -37,21 +35,9 @@ describe Elasticsearch::Persistence::Repository do
37
35
  expect(RepositoryWithoutDSL.create).to be_a(RepositoryWithoutDSL)
38
36
  end
39
37
 
40
- context 'when options are provided' do
41
-
42
- let(:repository) do
43
- RepositoryWithoutDSL.create(document_type: 'note')
44
- end
45
-
46
- it 'sets the options on the instance' do
47
- expect(repository.document_type).to eq('note')
48
- end
49
- end
50
-
51
38
  context 'when a block is passed' do
52
-
53
39
  let(:repository) do
54
- RepositoryWithoutDSL.create(document_type: 'note') do
40
+ RepositoryWithoutDSL.create do
55
41
  mapping dynamic: 'strict' do
56
42
  indexes :foo
57
43
  end
@@ -59,13 +45,12 @@ describe Elasticsearch::Persistence::Repository do
59
45
  end
60
46
 
61
47
  it 'executes the block on the instance' do
62
- expect(repository.mapping.to_hash).to eq(note: { dynamic: 'strict', properties: { foo: { type: 'text' } } })
48
+ expect(repository.mapping.to_hash).to eq({ dynamic: 'strict', properties: { foo: { type: 'text' } } })
63
49
  end
64
50
 
65
51
  context 'when options are provided in the args and set in the block' do
66
-
67
52
  let(:repository) do
68
- RepositoryWithoutDSL.create(mapping: double('mapping', to_hash: {}), document_type: 'note') do
53
+ RepositoryWithoutDSL.create(mapping: double('mapping', to_hash: {})) do
69
54
  mapping dynamic: 'strict' do
70
55
  indexes :foo
71
56
  end
@@ -80,7 +65,6 @@ describe Elasticsearch::Persistence::Repository do
80
65
  end
81
66
 
82
67
  describe '#initialize' do
83
-
84
68
  before(:all) do
85
69
  class RepositoryWithoutDSL
86
70
  include Elasticsearch::Persistence::Repository
@@ -98,7 +82,6 @@ describe Elasticsearch::Persistence::Repository do
98
82
  end
99
83
 
100
84
  context 'when options are not provided' do
101
-
102
85
  let(:repository) do
103
86
  RepositoryWithoutDSL.new
104
87
  end
@@ -118,23 +101,18 @@ describe Elasticsearch::Persistence::Repository do
118
101
  end
119
102
 
120
103
  context 'when options are provided' do
121
-
122
104
  let(:client) do
123
105
  Elasticsearch::Client.new
124
106
  end
125
107
 
126
108
  let(:repository) do
127
- RepositoryWithoutDSL.new(client: client, document_type: 'user', index_name: 'users', klass: Array)
109
+ RepositoryWithoutDSL.new(client: client, index_name: 'users', klass: Array)
128
110
  end
129
111
 
130
112
  it 'sets the client' do
131
113
  expect(repository.client).to be(client)
132
114
  end
133
115
 
134
- it 'sets document type' do
135
- expect(repository.document_type).to eq('user')
136
- end
137
-
138
116
  it 'sets index name' do
139
117
  expect(repository.index_name).to eq('users')
140
118
  end
@@ -146,13 +124,11 @@ describe Elasticsearch::Persistence::Repository do
146
124
  end
147
125
 
148
126
  context 'when the DSL module is included' do
149
-
150
127
  before(:all) do
151
128
  class RepositoryWithDSL
152
129
  include Elasticsearch::Persistence::Repository
153
130
  include Elasticsearch::Persistence::Repository::DSL
154
131
 
155
- document_type 'note'
156
132
  index_name 'notes_repo'
157
133
  klass Hash
158
134
  client DEFAULT_CLIENT
@@ -179,7 +155,6 @@ describe Elasticsearch::Persistence::Repository do
179
155
  end
180
156
 
181
157
  context '#client' do
182
-
183
158
  it 'allows the value to be set only once on the class' do
184
159
  RepositoryWithDSL.client(double('client', class: 'other_client'))
185
160
  expect(RepositoryWithDSL.client).to be(DEFAULT_CLIENT)
@@ -199,7 +174,6 @@ describe Elasticsearch::Persistence::Repository do
199
174
  end
200
175
 
201
176
  context '#klass' do
202
-
203
177
  it 'allows the value to be set only once on the class' do
204
178
  RepositoryWithDSL.klass(Array)
205
179
  expect(RepositoryWithDSL.klass).to eq(Hash)
@@ -229,28 +203,7 @@ describe Elasticsearch::Persistence::Repository do
229
203
  end
230
204
  end
231
205
 
232
- context '#document_type' do
233
-
234
- it 'allows the value to be set only once on the class' do
235
- RepositoryWithDSL.document_type('other_note')
236
- expect(RepositoryWithDSL.document_type).to eq('note')
237
- end
238
-
239
- it 'sets the value at the class level' do
240
- expect(RepositoryWithDSL.document_type).to eq('note')
241
- end
242
-
243
- it 'sets the value as the default at the instance level' do
244
- expect(RepositoryWithDSL.new.document_type).to eq('note')
245
- end
246
-
247
- it 'allows the value to be overridden with options on the instance' do
248
- expect(RepositoryWithDSL.new(document_type: 'other_note').document_type).to eq('other_note')
249
- end
250
- end
251
-
252
206
  context '#index_name' do
253
-
254
207
  it 'allows the value to be set only once on the class' do
255
208
  RepositoryWithDSL.index_name('other_name')
256
209
  expect(RepositoryWithDSL.index_name).to eq('notes_repo')
@@ -270,16 +223,14 @@ describe Elasticsearch::Persistence::Repository do
270
223
  end
271
224
 
272
225
  describe '#create_index!' do
273
-
274
226
  context 'when the method is called on an instance' do
275
-
276
227
  let(:repository) do
277
228
  RepositoryWithDSL.new
278
229
  end
279
230
 
280
231
  before do
281
232
  begin; repository.delete_index!; rescue; end
282
- repository.create_index!(include_type_name: true)
233
+ repository.create_index!
283
234
  end
284
235
 
285
236
  it 'creates the index' do
@@ -288,7 +239,6 @@ describe Elasticsearch::Persistence::Repository do
288
239
  end
289
240
 
290
241
  context 'when the method is called on the class' do
291
-
292
242
  it 'raises a NotImplementedError' do
293
243
  expect {
294
244
  RepositoryWithDSL.create_index!
@@ -298,9 +248,7 @@ describe Elasticsearch::Persistence::Repository do
298
248
  end
299
249
 
300
250
  describe '#delete_index!' do
301
-
302
251
  context 'when the method is called on an instance' do
303
-
304
252
  let(:repository) do
305
253
  RepositoryWithDSL.new
306
254
  end
@@ -316,7 +264,6 @@ describe Elasticsearch::Persistence::Repository do
316
264
  end
317
265
 
318
266
  context 'when the method is called on the class' do
319
-
320
267
  it 'raises a NotImplementedError' do
321
268
  expect {
322
269
  RepositoryWithDSL.delete_index!
@@ -326,15 +273,13 @@ describe Elasticsearch::Persistence::Repository do
326
273
  end
327
274
 
328
275
  describe '#refresh_index!' do
329
-
330
276
  context 'when the method is called on an instance' do
331
-
332
277
  let(:repository) do
333
278
  RepositoryWithDSL.new
334
279
  end
335
280
 
336
281
  before do
337
- repository.create_index!(include_type_name: true)
282
+ repository.create_index!
338
283
  end
339
284
 
340
285
  it 'refreshes the index' do
@@ -343,7 +288,6 @@ describe Elasticsearch::Persistence::Repository do
343
288
  end
344
289
 
345
290
  context 'when the method is called on the class' do
346
-
347
291
  it 'raises a NotImplementedError' do
348
292
  expect {
349
293
  RepositoryWithDSL.refresh_index!
@@ -353,15 +297,13 @@ describe Elasticsearch::Persistence::Repository do
353
297
  end
354
298
 
355
299
  describe '#index_exists?' do
356
-
357
300
  context 'when the method is called on an instance' do
358
-
359
301
  let(:repository) do
360
302
  RepositoryWithDSL.new
361
303
  end
362
304
 
363
305
  before do
364
- repository.create_index!(include_type_name: true)
306
+ repository.create_index!
365
307
  end
366
308
 
367
309
  it 'determines if the index exists' do
@@ -377,7 +319,6 @@ describe Elasticsearch::Persistence::Repository do
377
319
  end
378
320
 
379
321
  context 'when the method is called on the class' do
380
-
381
322
  it 'raises a NotImplementedError' do
382
323
  expect {
383
324
  RepositoryWithDSL.index_exists?
@@ -387,13 +328,15 @@ describe Elasticsearch::Persistence::Repository do
387
328
  end
388
329
 
389
330
  describe '#mapping' do
390
-
391
331
  let(:expected_mapping) do
392
- { note: { dynamic: 'strict',
393
- properties: { foo: { type: 'object',
394
- properties: { bar: { type: 'text' } } },
395
- baz: { type: 'text' } }
396
- }
332
+ {
333
+ dynamic: 'strict',
334
+ properties: {
335
+ foo: {
336
+ type: 'object',
337
+ properties: { bar: { type: 'text' } } },
338
+ baz: { type: 'text' }
339
+ }
397
340
  }
398
341
  end
399
342
 
@@ -410,24 +353,25 @@ describe Elasticsearch::Persistence::Repository do
410
353
  end
411
354
 
412
355
  context 'when the instance has a different document type' do
413
-
414
356
  let(:expected_mapping) do
415
- { other_note: { dynamic: 'strict',
416
- properties: { foo: { type: 'object',
417
- properties: { bar: { type: 'text' } } },
418
- baz: { type: 'text' } }
419
- }
357
+ {
358
+ other_note:
359
+ {
360
+ dynamic: 'strict',
361
+ properties: {
362
+ foo: {
363
+ type: 'object',
364
+ properties: { bar: { type: 'text' } }
365
+ },
366
+ baz: { type: 'text' }
367
+ }
368
+ }
420
369
  }
421
370
  end
422
-
423
- it 'updates the mapping to use the document type' do
424
- expect(RepositoryWithDSL.new(document_type: 'other_note').mapping.to_hash).to eq(expected_mapping)
425
- end
426
371
  end
427
372
  end
428
373
 
429
374
  describe '#settings' do
430
-
431
375
  it 'sets the value at the class level' do
432
376
  expect(RepositoryWithDSL.settings.to_hash).to eq(number_of_shards: 1, number_of_replicas: 0)
433
377
  end
@@ -443,7 +387,6 @@ describe Elasticsearch::Persistence::Repository do
443
387
  end
444
388
 
445
389
  context 'when the DSL module is not included' do
446
-
447
390
  before(:all) do
448
391
  class RepositoryWithoutDSL
449
392
  include Elasticsearch::Persistence::Repository
@@ -490,21 +433,8 @@ describe Elasticsearch::Persistence::Repository do
490
433
  end
491
434
  end
492
435
 
493
- context '#document_type' do
494
-
495
- it 'does not define the method at the class level' do
496
- expect {
497
- RepositoryWithoutDSL.document_type
498
- }.to raise_exception(NoMethodError)
499
- end
500
-
501
- it 'allows the value to be overridden with options on the instance' do
502
- expect(RepositoryWithoutDSL.new(document_type: 'notes').document_type).to eq('notes')
503
- end
504
- end
505
436
 
506
437
  context '#index_name' do
507
-
508
438
  it 'does not define the method at the class level' do
509
439
  expect {
510
440
  RepositoryWithoutDSL.index_name
@@ -521,7 +451,6 @@ describe Elasticsearch::Persistence::Repository do
521
451
  end
522
452
 
523
453
  describe '#create_index!' do
524
-
525
454
  let(:repository) do
526
455
  RepositoryWithoutDSL.new(client: DEFAULT_CLIENT)
527
456
  end
@@ -540,37 +469,9 @@ describe Elasticsearch::Persistence::Repository do
540
469
  repository.create_index!
541
470
  expect(repository.index_exists?).to eq(true)
542
471
  end
543
-
544
- context 'when the repository has a document type defined' do
545
-
546
- let(:repository) do
547
- RepositoryWithoutDSL.new(client: DEFAULT_CLIENT, document_type: 'mytype')
548
- end
549
-
550
- context 'when the server is version >= 7.0', if: server_version > '7.0' do
551
-
552
- context 'when the include_type_name option is specified' do
553
-
554
- it 'creates an index' do
555
- repository.create_index!(include_type_name: true)
556
- expect(repository.index_exists?).to eq(true)
557
- end
558
- end
559
-
560
- context 'when the include_type_name option is not specified' do
561
-
562
- it 'raises an error' do
563
- expect {
564
- repository.create_index!
565
- }.to raise_exception(Elasticsearch::Transport::Transport::Errors::BadRequest)
566
- end
567
- end
568
- end
569
- end
570
472
  end
571
473
 
572
474
  describe '#delete_index!' do
573
-
574
475
  let(:repository) do
575
476
  RepositoryWithoutDSL.new(client: DEFAULT_CLIENT)
576
477
  end
@@ -582,14 +483,13 @@ describe Elasticsearch::Persistence::Repository do
582
483
  end
583
484
 
584
485
  it 'deletes an index' do
585
- repository.create_index!(include_type_name: true)
486
+ repository.create_index!
586
487
  repository.delete_index!
587
488
  expect(repository.index_exists?).to eq(false)
588
489
  end
589
490
  end
590
491
 
591
492
  describe '#refresh_index!' do
592
-
593
493
  let(:repository) do
594
494
  RepositoryWithoutDSL.new(client: DEFAULT_CLIENT)
595
495
  end
@@ -605,7 +505,7 @@ describe Elasticsearch::Persistence::Repository do
605
505
  end
606
506
 
607
507
  it 'refreshes an index' do
608
- repository.create_index!(include_type_name: true)
508
+ repository.create_index!
609
509
  expect(repository.refresh_index!['_shards']).to be_a(Hash)
610
510
  end
611
511
  end
@@ -627,7 +527,7 @@ describe Elasticsearch::Persistence::Repository do
627
527
  end
628
528
 
629
529
  it 'returns whether the index exists' do
630
- repository.create_index!(include_type_name: true)
530
+ repository.create_index!
631
531
  expect(repository.index_exists?).to be(true)
632
532
  end
633
533
  end
@@ -651,16 +551,20 @@ describe Elasticsearch::Persistence::Repository do
651
551
  context 'when a block is passed to the create method' do
652
552
 
653
553
  let(:expected_mapping) do
654
- { note: { dynamic: 'strict',
655
- properties: { foo: { type: 'object',
656
- properties: { bar: { type: 'text' } } },
657
- baz: { type: 'text' } }
554
+ {
555
+ dynamic: 'strict',
556
+ properties: {
557
+ foo: {
558
+ type: 'object',
559
+ properties: { bar: { type: 'text' } }
560
+ },
561
+ baz: { type: 'text' }
658
562
  }
659
563
  }
660
564
  end
661
565
 
662
566
  let(:repository) do
663
- RepositoryWithoutDSL.create(document_type: 'note') do
567
+ RepositoryWithoutDSL.create do
664
568
  mapping dynamic: 'strict' do
665
569
  indexes :foo do
666
570
  indexes :bar
@@ -695,7 +599,6 @@ describe Elasticsearch::Persistence::Repository do
695
599
  end
696
600
 
697
601
  describe '#settings' do
698
-
699
602
  it 'does not define the method at the class level' do
700
603
  expect {
701
604
  RepositoryWithoutDSL.settings
@@ -711,9 +614,8 @@ describe Elasticsearch::Persistence::Repository do
711
614
  end
712
615
 
713
616
  context 'when a block is passed to the #create method' do
714
-
715
617
  let(:repository) do
716
- RepositoryWithoutDSL.create(document_type: 'note') do
618
+ RepositoryWithoutDSL.create do
717
619
  settings number_of_shards: 1, number_of_replicas: 0
718
620
  end
719
621
  end
@@ -723,18 +625,21 @@ describe Elasticsearch::Persistence::Repository do
723
625
  end
724
626
 
725
627
  context 'when a mapping is set in the block as well' do
726
-
727
628
  let(:expected_mapping) do
728
- { note: { dynamic: 'strict',
729
- properties: { foo: { type: 'object',
730
- properties: { bar: { type: 'text' } } },
731
- baz: { type: 'text' } }
732
- }
629
+ {
630
+ dynamic: 'strict',
631
+ properties: {
632
+ foo: {
633
+ type: 'object',
634
+ properties: { bar: { type: 'text' } }
635
+ },
636
+ baz: { type: 'text' }
637
+ }
733
638
  }
734
639
  end
735
640
 
736
641
  let(:repository) do
737
- RepositoryWithoutDSL.create(document_type: 'note') do
642
+ RepositoryWithoutDSL.create do
738
643
  settings number_of_shards: 1, number_of_replicas: 0 do
739
644
  mapping dynamic: 'strict' do
740
645
  indexes :foo do
data/spec/spec_helper.rb CHANGED
@@ -36,7 +36,8 @@ end
36
36
  #
37
37
  # @since 6.0.0
38
38
  DEFAULT_CLIENT = Elasticsearch::Client.new(host: ELASTICSEARCH_URL,
39
- tracer: (ENV['QUIET'] ? nil : ::Logger.new(STDERR)))
39
+ tracer: (ENV['QUIET'] ? nil : ::Logger.new(STDERR)),
40
+ transport_options: { :ssl => { verify: false } })
40
41
 
41
42
  class MyTestRepository
42
43
  include Elasticsearch::Persistence::Repository
@@ -47,7 +48,7 @@ end
47
48
  # The default repository to be used by tests.
48
49
  #
49
50
  # @since 6.0.0
50
- DEFAULT_REPOSITORY = MyTestRepository.new(index_name: 'my_test_repository', document_type: 'test')
51
+ DEFAULT_REPOSITORY = MyTestRepository.new(index_name: 'my_test_repository')
51
52
 
52
53
  # Get the Elasticsearch server version.
53
54
  #