chewy 8.0.0 → 8.1.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.
Files changed (144) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +42 -0
  3. data/README.md +30 -16
  4. data/lib/chewy/errors.rb +3 -0
  5. data/lib/chewy/fields/root.rb +3 -3
  6. data/lib/chewy/index/crutch.rb +12 -2
  7. data/lib/chewy/index/import/bulk_builder.rb +4 -3
  8. data/lib/chewy/index/import/routine.rb +2 -1
  9. data/lib/chewy/index/import.rb +4 -4
  10. data/lib/chewy/index/witchcraft.rb +24 -8
  11. data/lib/chewy/multi_search.rb +1 -1
  12. data/lib/chewy/search/parameters/runtime_mappings.rb +14 -0
  13. data/lib/chewy/search/request.rb +18 -2
  14. data/lib/chewy/search/scrolling.rb +14 -6
  15. data/lib/chewy/stash.rb +10 -6
  16. data/lib/chewy/version.rb +1 -1
  17. metadata +5 -131
  18. data/.github/CODEOWNERS +0 -1
  19. data/.github/ISSUE_TEMPLATE/bug_report.md +0 -39
  20. data/.github/ISSUE_TEMPLATE/feature_request.md +0 -20
  21. data/.github/PULL_REQUEST_TEMPLATE.md +0 -16
  22. data/.github/dependabot.yml +0 -42
  23. data/.github/workflows/ruby.yml +0 -61
  24. data/.gitignore +0 -22
  25. data/.rspec +0 -2
  26. data/.rubocop.yml +0 -64
  27. data/.rubocop_todo.yml +0 -225
  28. data/.yardopts +0 -5
  29. data/CODE_OF_CONDUCT.md +0 -14
  30. data/CONTRIBUTING.md +0 -63
  31. data/Gemfile +0 -22
  32. data/Guardfile +0 -25
  33. data/Rakefile +0 -17
  34. data/chewy.gemspec +0 -24
  35. data/docker-compose.yml +0 -14
  36. data/docs/README.md +0 -16
  37. data/docs/configuration.md +0 -440
  38. data/docs/import.md +0 -122
  39. data/docs/indexing.md +0 -329
  40. data/docs/querying.md +0 -72
  41. data/docs/rake_tasks.md +0 -108
  42. data/docs/testing.md +0 -41
  43. data/docs/troubleshooting.md +0 -101
  44. data/filters +0 -78
  45. data/gemfiles/base.gemfile +0 -12
  46. data/gemfiles/rails.7.2.activerecord.gemfile +0 -14
  47. data/gemfiles/rails.8.0.activerecord.gemfile +0 -14
  48. data/migration_guide.md +0 -56
  49. data/spec/chewy/config_spec.rb +0 -110
  50. data/spec/chewy/elastic_client_spec.rb +0 -26
  51. data/spec/chewy/fields/base_spec.rb +0 -700
  52. data/spec/chewy/fields/root_spec.rb +0 -142
  53. data/spec/chewy/fields/time_fields_spec.rb +0 -28
  54. data/spec/chewy/index/actions_spec.rb +0 -851
  55. data/spec/chewy/index/adapter/active_record_spec.rb +0 -663
  56. data/spec/chewy/index/adapter/object_spec.rb +0 -243
  57. data/spec/chewy/index/aliases_spec.rb +0 -49
  58. data/spec/chewy/index/import/bulk_builder_spec.rb +0 -494
  59. data/spec/chewy/index/import/bulk_request_spec.rb +0 -95
  60. data/spec/chewy/index/import/journal_builder_spec.rb +0 -87
  61. data/spec/chewy/index/import/routine_spec.rb +0 -110
  62. data/spec/chewy/index/import_spec.rb +0 -615
  63. data/spec/chewy/index/mapping_spec.rb +0 -135
  64. data/spec/chewy/index/observe/active_record_methods_spec.rb +0 -68
  65. data/spec/chewy/index/observe/callback_spec.rb +0 -139
  66. data/spec/chewy/index/observe_spec.rb +0 -143
  67. data/spec/chewy/index/settings_spec.rb +0 -136
  68. data/spec/chewy/index/specification_spec.rb +0 -156
  69. data/spec/chewy/index/syncer_spec.rb +0 -118
  70. data/spec/chewy/index/witchcraft_spec.rb +0 -245
  71. data/spec/chewy/index/wrapper_spec.rb +0 -100
  72. data/spec/chewy/index_spec.rb +0 -269
  73. data/spec/chewy/journal_spec.rb +0 -223
  74. data/spec/chewy/minitest/helpers_spec.rb +0 -194
  75. data/spec/chewy/minitest/search_index_receiver_spec.rb +0 -120
  76. data/spec/chewy/multi_search_spec.rb +0 -84
  77. data/spec/chewy/rake_helper_spec.rb +0 -656
  78. data/spec/chewy/repository_spec.rb +0 -50
  79. data/spec/chewy/rspec/build_query_spec.rb +0 -34
  80. data/spec/chewy/rspec/helpers_spec.rb +0 -61
  81. data/spec/chewy/rspec/update_index_spec.rb +0 -313
  82. data/spec/chewy/runtime/version_spec.rb +0 -48
  83. data/spec/chewy/runtime_spec.rb +0 -9
  84. data/spec/chewy/search/loader_spec.rb +0 -83
  85. data/spec/chewy/search/pagination/kaminari_examples.rb +0 -69
  86. data/spec/chewy/search/pagination/kaminari_spec.rb +0 -21
  87. data/spec/chewy/search/parameters/aggs_spec.rb +0 -5
  88. data/spec/chewy/search/parameters/bool_storage_examples.rb +0 -53
  89. data/spec/chewy/search/parameters/collapse_spec.rb +0 -5
  90. data/spec/chewy/search/parameters/docvalue_fields_spec.rb +0 -5
  91. data/spec/chewy/search/parameters/explain_spec.rb +0 -5
  92. data/spec/chewy/search/parameters/filter_spec.rb +0 -5
  93. data/spec/chewy/search/parameters/hash_storage_examples.rb +0 -59
  94. data/spec/chewy/search/parameters/highlight_spec.rb +0 -5
  95. data/spec/chewy/search/parameters/ignore_unavailable_spec.rb +0 -67
  96. data/spec/chewy/search/parameters/indices_spec.rb +0 -99
  97. data/spec/chewy/search/parameters/integer_storage_examples.rb +0 -32
  98. data/spec/chewy/search/parameters/knn_spec.rb +0 -5
  99. data/spec/chewy/search/parameters/limit_spec.rb +0 -5
  100. data/spec/chewy/search/parameters/load_spec.rb +0 -60
  101. data/spec/chewy/search/parameters/min_score_spec.rb +0 -32
  102. data/spec/chewy/search/parameters/none_spec.rb +0 -5
  103. data/spec/chewy/search/parameters/offset_spec.rb +0 -5
  104. data/spec/chewy/search/parameters/order_spec.rb +0 -72
  105. data/spec/chewy/search/parameters/post_filter_spec.rb +0 -5
  106. data/spec/chewy/search/parameters/preference_spec.rb +0 -5
  107. data/spec/chewy/search/parameters/profile_spec.rb +0 -5
  108. data/spec/chewy/search/parameters/query_spec.rb +0 -5
  109. data/spec/chewy/search/parameters/query_storage_examples.rb +0 -434
  110. data/spec/chewy/search/parameters/request_cache_spec.rb +0 -67
  111. data/spec/chewy/search/parameters/rescore_spec.rb +0 -62
  112. data/spec/chewy/search/parameters/script_fields_spec.rb +0 -5
  113. data/spec/chewy/search/parameters/search_after_spec.rb +0 -35
  114. data/spec/chewy/search/parameters/search_type_spec.rb +0 -5
  115. data/spec/chewy/search/parameters/source_spec.rb +0 -162
  116. data/spec/chewy/search/parameters/storage_spec.rb +0 -60
  117. data/spec/chewy/search/parameters/stored_fields_spec.rb +0 -126
  118. data/spec/chewy/search/parameters/string_array_storage_examples.rb +0 -63
  119. data/spec/chewy/search/parameters/string_storage_examples.rb +0 -32
  120. data/spec/chewy/search/parameters/suggest_spec.rb +0 -5
  121. data/spec/chewy/search/parameters/terminate_after_spec.rb +0 -5
  122. data/spec/chewy/search/parameters/timeout_spec.rb +0 -5
  123. data/spec/chewy/search/parameters/track_scores_spec.rb +0 -5
  124. data/spec/chewy/search/parameters/track_total_hits_spec.rb +0 -5
  125. data/spec/chewy/search/parameters/version_spec.rb +0 -5
  126. data/spec/chewy/search/parameters_spec.rb +0 -161
  127. data/spec/chewy/search/query_proxy_spec.rb +0 -95
  128. data/spec/chewy/search/request_spec.rb +0 -886
  129. data/spec/chewy/search/response_spec.rb +0 -180
  130. data/spec/chewy/search/scrolling_spec.rb +0 -171
  131. data/spec/chewy/search_spec.rb +0 -127
  132. data/spec/chewy/stash_spec.rb +0 -85
  133. data/spec/chewy/strategy/active_job_spec.rb +0 -73
  134. data/spec/chewy/strategy/atomic_no_refresh_spec.rb +0 -60
  135. data/spec/chewy/strategy/atomic_spec.rb +0 -61
  136. data/spec/chewy/strategy/delayed_sidekiq_spec.rb +0 -225
  137. data/spec/chewy/strategy/lazy_sidekiq_spec.rb +0 -214
  138. data/spec/chewy/strategy/sidekiq_spec.rb +0 -52
  139. data/spec/chewy/strategy_spec.rb +0 -125
  140. data/spec/chewy_spec.rb +0 -100
  141. data/spec/spec_helper.rb +0 -69
  142. data/spec/support/active_record.rb +0 -124
  143. data/spec/support/class_helpers.rb +0 -16
  144. data/spec/support/fail_helpers.rb +0 -13
@@ -1,53 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples :bool_storage do |param_name|
4
- subject { described_class.new(true) }
5
-
6
- describe '#initialize' do
7
- specify { expect(subject.value).to eq(true) }
8
- specify { expect(described_class.new.value).to eq(false) }
9
- specify { expect(described_class.new(42).value).to eq(true) }
10
- specify { expect(described_class.new(nil).value).to eq(false) }
11
- end
12
-
13
- describe '#replace!' do
14
- specify { expect { subject.replace!(false) }.to change { subject.value }.from(true).to(false) }
15
- specify { expect { subject.replace!(nil) }.to change { subject.value }.from(true).to(false) }
16
- end
17
-
18
- describe '#update!' do
19
- specify { expect { subject.update!(nil) }.not_to change { subject.value }.from(true) }
20
- specify { expect { subject.update!(false) }.not_to change { subject.value }.from(true) }
21
- specify { expect { subject.update!(true) }.not_to change { subject.value }.from(true) }
22
-
23
- context do
24
- subject { described_class.new }
25
-
26
- specify { expect { subject.update!(nil) }.not_to change { subject.value }.from(false) }
27
- specify { expect { subject.update!(false) }.not_to change { subject.value }.from(false) }
28
- specify { expect { subject.update!(true) }.to change { subject.value }.from(false).to(true) }
29
- end
30
- end
31
-
32
- describe '#merge!' do
33
- specify { expect { subject.merge!(described_class.new) }.not_to change { subject.value }.from(true) }
34
- specify { expect { subject.merge!(described_class.new(true)) }.not_to change { subject.value }.from(true) }
35
-
36
- context do
37
- subject { described_class.new }
38
-
39
- specify { expect { subject.merge!(described_class.new) }.not_to change { subject.value }.from(false) }
40
- specify { expect { subject.merge!(described_class.new(true)) }.to change { subject.value }.from(false).to(true) }
41
- end
42
- end
43
-
44
- describe '#render' do
45
- specify { expect(described_class.new.render).to be_nil }
46
-
47
- if param_name.is_a?(Symbol)
48
- specify { expect(subject.render).to eq(param_name => true) }
49
- else
50
- specify { expect(subject.render).to eq(param_name) }
51
- end
52
- end
53
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/hash_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Collapse do
4
- it_behaves_like :hash_storage, :collapse
5
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/string_array_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::DocvalueFields do
4
- it_behaves_like :string_array_storage, :docvalue_fields
5
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/bool_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Explain do
4
- it_behaves_like :bool_storage, :explain
5
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/query_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Filter do
4
- it_behaves_like :query_storage, :filter
5
- end
@@ -1,59 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples :hash_storage do |param_name|
4
- subject { described_class.new(field: {foo: 'bar'}) }
5
-
6
- describe '#initialize' do
7
- specify { expect(described_class.new.value).to eq({}) }
8
- specify { expect(described_class.new(nil).value).to eq({}) }
9
- specify { expect(subject.value).to eq('field' => {foo: 'bar'}) }
10
- end
11
-
12
- describe '#replace!' do
13
- specify do
14
- expect { subject.replace!(nil) }
15
- .to change { subject.value }
16
- .from('field' => {foo: 'bar'}).to({})
17
- end
18
-
19
- specify do
20
- expect { subject.replace!(other: {moo: 'baz'}) }
21
- .to change { subject.value }
22
- .from('field' => {foo: 'bar'})
23
- .to('other' => {moo: 'baz'})
24
- end
25
- end
26
-
27
- describe '#update!' do
28
- specify do
29
- expect { subject.update!(nil) }
30
- .not_to change { subject.value }
31
- end
32
-
33
- specify do
34
- expect { subject.update!(other: {moo: 'baz'}) }
35
- .to change { subject.value }
36
- .from('field' => {foo: 'bar'})
37
- .to('field' => {foo: 'bar'}, 'other' => {moo: 'baz'})
38
- end
39
- end
40
-
41
- describe '#merge!' do
42
- specify do
43
- expect { subject.merge!(described_class.new) }
44
- .not_to change { subject.value }
45
- end
46
-
47
- specify do
48
- expect { subject.merge!(described_class.new(other: {moo: 'baz'})) }
49
- .to change { subject.value }
50
- .from('field' => {foo: 'bar'})
51
- .to('field' => {foo: 'bar'}, 'other' => {moo: 'baz'})
52
- end
53
- end
54
-
55
- describe '#render' do
56
- specify { expect(described_class.new.render).to be_nil }
57
- specify { expect(described_class.new(field: {foo: 'bar'}).render).to eq(param_name => {'field' => {foo: 'bar'}}) }
58
- end
59
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/hash_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Highlight do
4
- it_behaves_like :hash_storage, :highlight
5
- end
@@ -1,67 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Chewy::Search::Parameters::IgnoreUnavailable do
4
- subject { described_class.new(true) }
5
-
6
- describe '#initialize' do
7
- specify { expect(subject.value).to eq(true) }
8
- specify { expect(described_class.new.value).to eq(nil) }
9
- specify { expect(described_class.new(42).value).to eq(true) }
10
- specify { expect(described_class.new(false).value).to eq(false) }
11
- end
12
-
13
- describe '#replace!' do
14
- specify { expect { subject.replace!(false) }.to change { subject.value }.from(true).to(false) }
15
- specify { expect { subject.replace!(nil) }.to change { subject.value }.from(true).to(nil) }
16
- end
17
-
18
- describe '#update!' do
19
- specify { expect { subject.update!(nil) }.not_to change { subject.value }.from(true) }
20
- specify { expect { subject.update!(false) }.to change { subject.value }.from(true).to(false) }
21
- specify { expect { subject.update!(true) }.not_to change { subject.value }.from(true) }
22
-
23
- context do
24
- subject { described_class.new(false) }
25
-
26
- specify { expect { subject.update!(nil) }.not_to change { subject.value }.from(false) }
27
- specify { expect { subject.update!(false) }.not_to change { subject.value }.from(false) }
28
- specify { expect { subject.update!(true) }.to change { subject.value }.from(false).to(true) }
29
- end
30
-
31
- context do
32
- subject { described_class.new }
33
-
34
- specify { expect { subject.update!(nil) }.not_to change { subject.value }.from(nil) }
35
- specify { expect { subject.update!(false) }.to change { subject.value }.from(nil).to(false) }
36
- specify { expect { subject.update!(true) }.to change { subject.value }.from(nil).to(true) }
37
- end
38
- end
39
-
40
- describe '#merge!' do
41
- specify { expect { subject.merge!(described_class.new) }.not_to change { subject.value }.from(true) }
42
- specify { expect { subject.merge!(described_class.new(false)) }.to change { subject.value }.from(true).to(false) }
43
- specify { expect { subject.merge!(described_class.new(true)) }.not_to change { subject.value }.from(true) }
44
-
45
- context do
46
- subject { described_class.new(false) }
47
-
48
- specify { expect { subject.merge!(described_class.new) }.not_to change { subject.value }.from(false) }
49
- specify { expect { subject.merge!(described_class.new(false)) }.not_to change { subject.value }.from(false) }
50
- specify { expect { subject.merge!(described_class.new(true)) }.to change { subject.value }.from(false).to(true) }
51
- end
52
-
53
- context do
54
- subject { described_class.new }
55
-
56
- specify { expect { subject.merge!(described_class.new) }.not_to change { subject.value }.from(nil) }
57
- specify { expect { subject.merge!(described_class.new(false)) }.to change { subject.value }.from(nil).to(false) }
58
- specify { expect { subject.merge!(described_class.new(true)) }.to change { subject.value }.from(nil).to(true) }
59
- end
60
- end
61
-
62
- describe '#render' do
63
- specify { expect(described_class.new.render).to be_nil }
64
- specify { expect(described_class.new(false).render).to eq(ignore_unavailable: false) }
65
- specify { expect(subject.render).to eq(ignore_unavailable: true) }
66
- end
67
- end
@@ -1,99 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Chewy::Search::Parameters::Indices do
4
- before do
5
- stub_index(:first)
6
- stub_index(:second)
7
- stub_index(:third)
8
- end
9
-
10
- subject { described_class.new(indices: [FirstIndex, SecondIndex]) }
11
-
12
- describe '#initialize' do
13
- specify { expect(described_class.new.value).to eq(indices: []) }
14
- specify { expect(described_class.new(nil).value).to eq(indices: []) }
15
- specify { expect(described_class.new(foo: :whatever).value).to eq(indices: []) }
16
- specify { expect(subject.value).to eq(indices: [FirstIndex, SecondIndex]) }
17
- end
18
-
19
- describe '#replace!' do
20
- specify do
21
- expect { subject.replace!(nil) }
22
- .to change { subject.value }
23
- .from(indices: [FirstIndex, SecondIndex])
24
- .to(indices: [])
25
- end
26
-
27
- specify do
28
- expect { subject.replace!(indices: SecondIndex) }
29
- .to change { subject.value }
30
- .from(indices: [FirstIndex, SecondIndex])
31
- .to(indices: [SecondIndex])
32
- end
33
- end
34
-
35
- describe '#update!' do
36
- specify do
37
- expect { subject.update!(nil) }
38
- .not_to change { subject.value }
39
- end
40
-
41
- specify do
42
- expect { subject.update!(indices: ThirdIndex) }
43
- .to change { subject.value }
44
- .from(indices: [FirstIndex, SecondIndex])
45
- .to(indices: [FirstIndex, SecondIndex, ThirdIndex])
46
- end
47
- end
48
-
49
- describe '#merge!' do
50
- specify do
51
- expect { subject.merge!(described_class.new) }
52
- .not_to change { subject.value }
53
- end
54
-
55
- specify do
56
- expect { subject.merge!(described_class.new(indices: SecondIndex)) }
57
- .not_to change { subject.value }
58
- end
59
- end
60
-
61
- describe '#render' do
62
- specify { expect(described_class.new.render).to eq({}) }
63
- specify do
64
- expect(described_class.new(
65
- indices: FirstIndex
66
- ).render).to eq(index: %w[first])
67
- end
68
- specify do
69
- expect(described_class.new(
70
- indices: :whatever
71
- ).render).to eq(index: %w[whatever])
72
- end
73
- specify do
74
- expect(described_class.new(
75
- indices: [FirstIndex, :whatever]
76
- ).render).to eq(index: %w[first whatever])
77
- end
78
- end
79
-
80
- describe '#==' do
81
- specify { expect(described_class.new).to eq(described_class.new) }
82
- specify do
83
- expect(described_class.new(indices: :first))
84
- .to eq(described_class.new(indices: FirstIndex))
85
- end
86
- specify do
87
- expect(described_class.new(indices: FirstIndex))
88
- .to eq(described_class.new(indices: FirstIndex))
89
- end
90
- end
91
-
92
- describe '#indices' do
93
- specify do
94
- expect(described_class.new(
95
- indices: [FirstIndex, :whatever]
96
- ).indices).to contain_exactly(FirstIndex)
97
- end
98
- end
99
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples :integer_storage do |param_name|
4
- subject { described_class.new(10) }
5
-
6
- describe '#initialize' do
7
- specify { expect(described_class.new.value).to be_nil }
8
- specify { expect(described_class.new('42').value).to eq(42) }
9
- specify { expect(described_class.new(33.3).value).to eq(33) }
10
- specify { expect(described_class.new(nil).value).to be_nil }
11
- end
12
-
13
- describe '#replace!' do
14
- specify { expect { subject.replace!(42) }.to change { subject.value }.from(10).to(42) }
15
- specify { expect { subject.replace!(nil) }.to change { subject.value }.from(10).to(nil) }
16
- end
17
-
18
- describe '#update!' do
19
- specify { expect { subject.update!('42') }.to change { subject.value }.from(10).to(42) }
20
- specify { expect { subject.update!(nil) }.not_to change { subject.value }.from(10) }
21
- end
22
-
23
- describe '#merge!' do
24
- specify { expect { subject.merge!(described_class.new('33')) }.to change { subject.value }.from(10).to(33) }
25
- specify { expect { subject.merge!(described_class.new) }.not_to change { subject.value }.from(10) }
26
- end
27
-
28
- describe '#render' do
29
- specify { expect(described_class.new.render).to be_nil }
30
- specify { expect(described_class.new('42').render).to eq(param_name => 42) }
31
- end
32
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/hash_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Knn do
4
- it_behaves_like :hash_storage, :knn
5
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/integer_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Limit do
4
- it_behaves_like :integer_storage, :size
5
- end
@@ -1,60 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Chewy::Search::Parameters::Load do
4
- subject { described_class.new(only: :foo) }
5
-
6
- describe '#initialize' do
7
- specify { expect(described_class.new.value).to eq({}) }
8
- specify { expect(described_class.new(nil).value).to eq({}) }
9
- specify { expect(described_class.new(scope: {'type' => :foo}).value).to eq(scope: {type: :foo}) }
10
- specify { expect(subject.value).to eq(only: :foo) }
11
- end
12
-
13
- describe '#replace!' do
14
- specify do
15
- expect { subject.replace!(nil) }
16
- .to change { subject.value }
17
- .from(only: :foo).to({})
18
- end
19
-
20
- specify do
21
- expect { subject.replace!('except' => :bar) }
22
- .to change { subject.value }
23
- .from(only: :foo)
24
- .to(except: :bar)
25
- end
26
- end
27
-
28
- describe '#update!' do
29
- specify do
30
- expect { subject.update!(nil) }
31
- .not_to change { subject.value }
32
- end
33
-
34
- specify do
35
- expect { subject.update!('except' => :bar) }
36
- .to change { subject.value }
37
- .from(only: :foo)
38
- .to(only: :foo, except: :bar)
39
- end
40
- end
41
-
42
- describe '#merge!' do
43
- specify do
44
- expect { subject.merge!(described_class.new) }
45
- .not_to change { subject.value }
46
- end
47
-
48
- specify do
49
- expect { subject.merge!(described_class.new('except' => :bar)) }
50
- .to change { subject.value }
51
- .from(only: :foo)
52
- .to(only: :foo, except: :bar)
53
- end
54
- end
55
-
56
- describe '#render' do
57
- specify { expect(described_class.new.render).to be_nil }
58
- specify { expect(described_class.new(only: :foo).render).to be_nil }
59
- end
60
- end
@@ -1,32 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Chewy::Search::Parameters::MinScore do
4
- subject { described_class.new(0.5) }
5
-
6
- describe '#initialize' do
7
- specify { expect(described_class.new.value).to be_nil }
8
- specify { expect(described_class.new('1.4').value).to eq(1.4) }
9
- specify { expect(described_class.new(2).value).to eq(2.0) }
10
- specify { expect(described_class.new(nil).value).to be_nil }
11
- end
12
-
13
- describe '#replace!' do
14
- specify { expect { subject.replace!(1.4) }.to change { subject.value }.from(0.5).to(1.4) }
15
- specify { expect { subject.replace!(nil) }.to change { subject.value }.from(0.5).to(nil) }
16
- end
17
-
18
- describe '#update!' do
19
- specify { expect { subject.update!('1.4') }.to change { subject.value }.from(0.5).to(1.4) }
20
- specify { expect { subject.update!(nil) }.not_to change { subject.value }.from(0.5) }
21
- end
22
-
23
- describe '#merge!' do
24
- specify { expect { subject.merge!(described_class.new('2')) }.to change { subject.value }.from(0.5).to(2.0) }
25
- specify { expect { subject.merge!(described_class.new) }.not_to change { subject.value }.from(0.5) }
26
- end
27
-
28
- describe '#render' do
29
- specify { expect(described_class.new.render).to be_nil }
30
- specify { expect(described_class.new('1.4').render).to eq(min_score: 1.4) }
31
- end
32
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/bool_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::None do
4
- it_behaves_like :bool_storage, query: {match_none: {}}
5
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/integer_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Offset do
4
- it_behaves_like :integer_storage, :from
5
- end
@@ -1,72 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Chewy::Search::Parameters::Order do
4
- subject { described_class.new(%i[foo bar]) }
5
-
6
- describe '#initialize' do
7
- specify { expect(described_class.new.value).to eq([]) }
8
- specify { expect(described_class.new(nil).value).to eq([]) }
9
- specify { expect(described_class.new('').value).to eq([]) }
10
- specify { expect(described_class.new(42).value).to eq(['42']) }
11
- specify { expect(described_class.new([42, 43]).value).to eq(%w[42 43]) }
12
- specify { expect(described_class.new([42, 42]).value).to eq(%w[42 42]) }
13
- specify { expect(described_class.new([42, [43, 44]]).value).to eq(%w[42 43 44]) }
14
- specify { expect(described_class.new(a: 1).value).to eq([{'a' => 1}]) }
15
- specify { expect(described_class.new(['a', {a: 1}, {a: 2}]).value).to eq(['a', {'a' => 1}, {'a' => 2}]) }
16
- specify { expect(described_class.new(['', 43, {a: 1}]).value).to eq(['43', {'a' => 1}]) }
17
- end
18
-
19
- describe '#replace!' do
20
- specify do
21
- expect { subject.replace!(foo: {}) }
22
- .to change { subject.value }
23
- .from(%w[foo bar]).to([{'foo' => {}}])
24
- end
25
-
26
- specify do
27
- expect { subject.replace!(nil) }
28
- .to change { subject.value }
29
- .from(%w[foo bar]).to([])
30
- end
31
- end
32
-
33
- describe '#update!' do
34
- specify do
35
- expect { subject.update!(foo: {}) }
36
- .to change { subject.value }
37
- .from(%w[foo bar]).to(['foo', 'bar', {'foo' => {}}])
38
- end
39
-
40
- specify { expect { subject.update!(nil) }.not_to change { subject.value } }
41
- end
42
-
43
- describe '#merge!' do
44
- specify do
45
- expect { subject.merge!(described_class.new(foo: {})) }
46
- .to change { subject.value }
47
- .from(%w[foo bar]).to(['foo', 'bar', {'foo' => {}}])
48
- end
49
-
50
- specify { expect { subject.merge!(described_class.new) }.not_to change { subject.value } }
51
- end
52
-
53
- describe '#render' do
54
- specify { expect(described_class.new.render).to be_nil }
55
- specify { expect(described_class.new(:foo).render).to eq(sort: ['foo']) }
56
- specify { expect(described_class.new([:foo, {bar: 42}, :baz]).render).to eq(sort: ['foo', {'bar' => 42}, 'baz']) }
57
- specify { expect(described_class.new([:foo, {bar: 42}, {bar: 43}, :baz]).render).to eq(sort: ['foo', {'bar' => 42}, {'bar' => 43}, 'baz']) }
58
- end
59
-
60
- describe '#==' do
61
- specify { expect(described_class.new).to eq(described_class.new) }
62
- specify { expect(described_class.new(:foo)).to eq(described_class.new(:foo)) }
63
- specify { expect(described_class.new(:foo)).not_to eq(described_class.new(:bar)) }
64
- specify { expect(described_class.new(%i[foo bar])).to eq(described_class.new(%i[foo bar])) }
65
- specify { expect(described_class.new(%i[foo bar])).not_to eq(described_class.new(%i[bar foo])) }
66
- specify { expect(described_class.new(%i[foo foo])).not_to eq(described_class.new(%i[foo])) }
67
- specify { expect(described_class.new(foo: {a: 42})).to eq(described_class.new(foo: {a: 42})) }
68
- specify { expect(described_class.new(foo: {a: 42})).not_to eq(described_class.new(foo: {b: 42})) }
69
- specify { expect(described_class.new(['foo', {'foo' => 42}])).not_to eq(described_class.new([{'foo' => 42}, 'foo'])) }
70
- specify { expect(described_class.new([{'foo' => 42}, {'foo' => 43}])).not_to eq(described_class.new([{'foo' => 43}, {'foo' => 42}])) }
71
- end
72
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/query_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::PostFilter do
4
- it_behaves_like :query_storage, :post_filter
5
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/string_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Preference do
4
- it_behaves_like :string_storage, :preference
5
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/bool_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Profile do
4
- it_behaves_like :bool_storage, :profile
5
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/query_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::Query do
4
- it_behaves_like :query_storage, :query
5
- end