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,434 +0,0 @@
1
- require 'spec_helper'
2
-
3
- shared_examples :query_storage do |param_name|
4
- subject { described_class.new(must: {foo: 'bar'}, should: {moo: 'baz'}) }
5
-
6
- describe '#initialize' do
7
- specify do
8
- expect(described_class.new.value.to_h)
9
- .to eq(must: [], should: [], must_not: [], minimum_should_match: nil)
10
- end
11
- specify do
12
- expect(described_class.new(nil).value.to_h)
13
- .to eq(must: [], should: [], must_not: [], minimum_should_match: nil)
14
- end
15
- specify do
16
- expect(described_class.new(foobar: {}).value.to_h)
17
- .to eq(must: [{foobar: {}}], should: [], must_not: [], minimum_should_match: nil)
18
- end
19
- specify do
20
- expect(described_class.new(must: {}, should: {}, must_not: {}).value.to_h)
21
- .to eq(must: [], should: [], must_not: [], minimum_should_match: nil)
22
- end
23
- specify do
24
- expect(described_class.new(must: {foo: 'bar'}, should: {foo: 'bar'}, foobar: {}).value.to_h)
25
- .to eq(must: [{foo: 'bar'}], should: [{foo: 'bar'}], must_not: [], minimum_should_match: nil)
26
- end
27
- specify do
28
- expect(subject.value.to_h)
29
- .to eq(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
30
- end
31
- specify do
32
- expect(described_class.new(proc { match foo: 'bar' }).value.to_h)
33
- .to eq(must: [match: {foo: 'bar'}], should: [], must_not: [], minimum_should_match: nil)
34
- end
35
- specify do
36
- expect(described_class.new(must: proc { match foo: 'bar' }).value.to_h)
37
- .to eq(must: [match: {foo: 'bar'}], should: [], must_not: [], minimum_should_match: nil)
38
- end
39
- specify do
40
- expect(described_class.new(minimum_should_match: 3).value.to_h)
41
- .to eq(must: [], should: [], must_not: [], minimum_should_match: 3)
42
- end
43
- specify do
44
- expect(described_class.new(must: {foo: 'bar'}, minimum_should_match: 3).value.to_h)
45
- .to eq(must: [{foo: 'bar'}], should: [], must_not: [], minimum_should_match: 3)
46
- end
47
- specify do
48
- expect(described_class.new(must: [proc { match foo: 'bar' }, {moo: 'baz'}]).value.to_h)
49
- .to eq(must: [{match: {foo: 'bar'}}, {moo: 'baz'}], should: [], must_not: [], minimum_should_match: nil)
50
- end
51
- end
52
-
53
- describe '#must' do
54
- specify do
55
- expect { subject.must(moo: 'baz') }
56
- .to change { subject.value.to_h }
57
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
58
- .to(must: [{foo: 'bar'}, {moo: 'baz'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
59
- end
60
-
61
- specify do
62
- expect { subject.must(nil) }
63
- .not_to change { subject.value.to_h }
64
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
65
- end
66
- end
67
-
68
- describe '#should' do
69
- specify do
70
- expect { subject.should(foo: 'bar') }
71
- .to change { subject.value.to_h }
72
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
73
- .to(must: [{foo: 'bar'}], should: [{moo: 'baz'}, {foo: 'bar'}], must_not: [], minimum_should_match: nil)
74
- end
75
-
76
- specify do
77
- expect { subject.should(nil) }
78
- .not_to change { subject.value.to_h }
79
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
80
- end
81
- end
82
-
83
- describe '#must_not' do
84
- specify do
85
- expect { subject.must_not(moo: 'baz') }
86
- .to change { subject.value.to_h }
87
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
88
- .to(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [{moo: 'baz'}], minimum_should_match: nil)
89
- end
90
-
91
- specify do
92
- expect { subject.must_not(nil) }
93
- .not_to change { subject.value.to_h }
94
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
95
- end
96
- end
97
-
98
- describe '#and' do
99
- specify do
100
- expect { subject.and(moo: 'baz') }
101
- .to change { subject.value.to_h }
102
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
103
- .to(must: [{bool: {must: {foo: 'bar'}, should: {moo: 'baz'}}},
104
- {moo: 'baz'}], should: [], must_not: [], minimum_should_match: nil)
105
- end
106
-
107
- specify do
108
- expect { subject.and([{moo: 'baz'}, {doo: 'scooby'}]) }
109
- .to change { subject.value.to_h }
110
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
111
- .to(must: [{bool: {must: {foo: 'bar'}, should: {moo: 'baz'}}},
112
- bool: {must: [{moo: 'baz'}, {doo: 'scooby'}]}], should: [], must_not: [], minimum_should_match: nil)
113
- end
114
-
115
- specify do
116
- expect { subject.and(nil) }
117
- .not_to change { subject.value.to_h }
118
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
119
- end
120
-
121
- specify do
122
- expect { subject.and(should: {foo: 'bar'}) }
123
- .to change { subject.value.to_h }
124
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
125
- .to(must: [{bool: {must: {foo: 'bar'}, should: {moo: 'baz'}}},
126
- {bool: {should: {foo: 'bar'}}}], should: [], must_not: [], minimum_should_match: nil)
127
- end
128
-
129
- context do
130
- subject { described_class.new(must: {foo: 'bar'}) }
131
-
132
- specify do
133
- expect { subject.and(moo: 'baz') }
134
- .to change { subject.value.to_h }
135
- .from(must: [{foo: 'bar'}], should: [], must_not: [], minimum_should_match: nil)
136
- .to(must: [{foo: 'bar'}, {moo: 'baz'}], should: [], must_not: [], minimum_should_match: nil)
137
- end
138
- end
139
- end
140
-
141
- describe '#or' do
142
- specify do
143
- expect { subject.or(moo: 'baz') }
144
- .to change { subject.value.to_h }
145
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
146
- .to(must: [], should: [{bool: {must: {foo: 'bar'}, should: {moo: 'baz'}}},
147
- {moo: 'baz'}], must_not: [], minimum_should_match: nil)
148
- end
149
-
150
- specify do
151
- expect { subject.or([{moo: 'baz'}, {doo: 'scooby'}]) }
152
- .to change { subject.value.to_h }
153
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
154
- .to(must: [], should: [{bool: {must: {foo: 'bar'}, should: {moo: 'baz'}}},
155
- bool: {must: [{moo: 'baz'}, {doo: 'scooby'}]}], must_not: [], minimum_should_match: nil)
156
- end
157
-
158
- specify do
159
- expect { subject.or(nil) }
160
- .not_to change { subject.value.to_h }
161
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
162
- end
163
-
164
- specify do
165
- expect { subject.or(should: {foo: 'bar'}) }
166
- .to change { subject.value.to_h }
167
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
168
- .to(must: [], should: [{bool: {must: {foo: 'bar'}, should: {moo: 'baz'}}},
169
- {bool: {should: {foo: 'bar'}}}], must_not: [], minimum_should_match: nil)
170
- end
171
-
172
- context do
173
- subject { described_class.new(must: {foo: 'bar'}) }
174
-
175
- specify do
176
- expect { subject.or(moo: 'baz') }
177
- .to change { subject.value.to_h }
178
- .from(must: [{foo: 'bar'}], should: [], must_not: [], minimum_should_match: nil)
179
- .to(must: [], should: [{foo: 'bar'}, {moo: 'baz'}], must_not: [], minimum_should_match: nil)
180
- end
181
- end
182
- end
183
-
184
- describe '#not' do
185
- specify do
186
- expect { subject.not(moo: 'baz') }
187
- .to change { subject.value.to_h }
188
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
189
- .to(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [{moo: 'baz'}], minimum_should_match: nil)
190
- end
191
-
192
- specify do
193
- expect { subject.not([{moo: 'baz'}, {doo: 'scooby'}]) }
194
- .to change { subject.value.to_h }
195
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
196
- .to(
197
- must: [{foo: 'bar'}],
198
- should: [{moo: 'baz'}],
199
- must_not: [{bool: {must: [{moo: 'baz'}, {doo: 'scooby'}]}}],
200
- minimum_should_match: nil
201
- )
202
- end
203
-
204
- specify do
205
- expect { subject.not(nil) }
206
- .not_to change { subject.value.to_h }
207
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
208
- end
209
-
210
- specify do
211
- expect { subject.not(should: {foo: 'bar'}) }
212
- .to change { subject.value.to_h }
213
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
214
- .to(
215
- must: [{foo: 'bar'}], should: [{moo: 'baz'}],
216
- must_not: [{bool: {should: {foo: 'bar'}}}],
217
- minimum_should_match: nil
218
- )
219
- end
220
-
221
- context do
222
- subject { described_class.new(must: {foo: 'bar'}) }
223
-
224
- specify do
225
- expect { subject.not(moo: 'baz') }
226
- .to change { subject.value.to_h }
227
- .from(must: [{foo: 'bar'}], should: [], must_not: [], minimum_should_match: nil)
228
- .to(must: [{foo: 'bar'}], should: [], must_not: [{moo: 'baz'}], minimum_should_match: nil)
229
- end
230
- end
231
- end
232
-
233
- describe '#replace!' do
234
- specify do
235
- expect { subject.replace!(must: proc { match foo: 'bar' }) }
236
- .to change { subject.value.to_h }
237
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
238
- .to(must: [match: {foo: 'bar'}], should: [], must_not: [], minimum_should_match: nil)
239
- end
240
-
241
- specify do
242
- expect { subject.replace!(should: {foo: 'bar'}) }
243
- .to change { subject.value.to_h }
244
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
245
- .to(must: [], should: [{foo: 'bar'}], must_not: [], minimum_should_match: nil)
246
- end
247
-
248
- specify do
249
- expect { subject.replace!(foobar: {foo: 'bar'}) }
250
- .to change { subject.value.to_h }
251
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
252
- .to(must: [{foobar: {foo: 'bar'}}], should: [], must_not: [], minimum_should_match: nil)
253
- end
254
-
255
- specify do
256
- expect { subject.replace!(nil) }
257
- .to change { subject.value.to_h }
258
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
259
- .to(must: [], should: [], must_not: [], minimum_should_match: nil)
260
- end
261
- end
262
-
263
- describe '#update!' do
264
- specify do
265
- expect { subject.update!(must: proc { match foo: 'bar' }) }
266
- .to change { subject.value.to_h }
267
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
268
- .to(must: [{foo: 'bar'},
269
- {match: {foo: 'bar'}}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
270
- end
271
-
272
- specify do
273
- expect { subject.update!(must_not: {moo: 'baz'}) }
274
- .to change { subject.value.to_h }
275
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
276
- .to(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [{moo: 'baz'}], minimum_should_match: nil)
277
- end
278
-
279
- specify do
280
- expect { subject.update!(foobar: {foo: 'bar'}) }
281
- .to change { subject.value.to_h }
282
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
283
- .to(must: [{foo: 'bar'},
284
- {foobar: {foo: 'bar'}}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
285
- end
286
-
287
- specify do
288
- expect { subject.update!(nil) }
289
- .not_to change { subject.value.to_h }
290
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
291
- end
292
-
293
- context 'minimum_should_match' do
294
- specify do
295
- expect { subject.update!(minimum_should_match: 2) }
296
- .to change { subject.value.to_h }
297
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
298
- .to(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: 2)
299
- end
300
-
301
- context do
302
- before { subject.update!(minimum_should_match: 2) }
303
-
304
- specify do
305
- expect { subject.update!(minimum_should_match: 3) }
306
- .to change { subject.value.to_h }
307
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: 2)
308
- .to(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: 3)
309
- end
310
-
311
- specify do
312
- expect { subject.update!(minimum_should_match: nil) }
313
- .to change { subject.value.to_h }
314
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: 2)
315
- .to(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
316
- end
317
- end
318
- end
319
- end
320
-
321
- describe '#merge!' do
322
- specify do
323
- expect { subject.merge!(described_class.new(moo: 'baz')) }
324
- .to change { subject.value.to_h }
325
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
326
- .to(must: [{bool: {must: {foo: 'bar'}, should: {moo: 'baz'}}},
327
- {moo: 'baz'}], should: [], must_not: [], minimum_should_match: nil)
328
- end
329
-
330
- specify do
331
- expect { subject.merge!(described_class.new) }
332
- .not_to change { subject.value.to_h }
333
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
334
- end
335
-
336
- specify do
337
- expect { subject.merge!(described_class.new(should: {foo: 'bar'})) }
338
- .to change { subject.value.to_h }
339
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
340
- .to(must: [{bool: {must: {foo: 'bar'}, should: {moo: 'baz'}}},
341
- {bool: {should: {foo: 'bar'}}}], should: [], must_not: [], minimum_should_match: nil)
342
- end
343
-
344
- context do
345
- subject { described_class.new(must: {foo: 'bar'}) }
346
-
347
- specify do
348
- expect { subject.merge!(described_class.new(moo: 'baz')) }
349
- .to change { subject.value.to_h }
350
- .from(must: [{foo: 'bar'}], should: [], must_not: [], minimum_should_match: nil)
351
- .to(must: [{foo: 'bar'}, {moo: 'baz'}], should: [], must_not: [], minimum_should_match: nil)
352
- end
353
- end
354
-
355
- context 'minimum_should_match' do
356
- specify do
357
- expect { subject.merge!(described_class.new(minimum_should_match: 2)) }
358
- .not_to change { subject.value.to_h }
359
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: nil)
360
- end
361
-
362
- context do
363
- before { subject.update!(minimum_should_match: 2) }
364
-
365
- specify do
366
- expect { subject.merge!(described_class.new(must: {doo: 'scooby'}, minimum_should_match: 3)) }
367
- .to change { subject.value.to_h }
368
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: 2)
369
- .to(must: [
370
- {bool: {must: {foo: 'bar'}, should: {moo: 'baz'}, minimum_should_match: 2}},
371
- {doo: 'scooby'}
372
- ], should: [], must_not: [], minimum_should_match: nil)
373
- end
374
-
375
- specify do
376
- expect { subject.merge!(described_class.new(should: {doo: 'scooby'}, minimum_should_match: 3)) }
377
- .to change { subject.value.to_h }
378
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: 2)
379
- .to(must: [
380
- {bool: {must: {foo: 'bar'}, should: {moo: 'baz'}, minimum_should_match: 2}},
381
- {bool: {should: {doo: 'scooby'}, minimum_should_match: 3}}
382
- ], should: [], must_not: [], minimum_should_match: nil)
383
- end
384
-
385
- specify do
386
- expect { subject.merge!(described_class.new(minimum_should_match: nil)) }
387
- .not_to change { subject.value.to_h }
388
- .from(must: [{foo: 'bar'}], should: [{moo: 'baz'}], must_not: [], minimum_should_match: 2)
389
- end
390
- end
391
- end
392
- end
393
-
394
- describe '#render' do
395
- specify { expect(described_class.new.render).to be_nil }
396
-
397
- specify do
398
- expect(described_class.new(must: [{foo: 'bar'}]).render)
399
- .to eq(param_name => {foo: 'bar'})
400
- end
401
-
402
- specify do
403
- expect(described_class.new(must: {foo: 'bar'}, minimum_should_match: 2).render)
404
- .to eq(param_name => {foo: 'bar'})
405
- end
406
-
407
- specify do
408
- expect(described_class.new(should: {foo: 'bar'}, minimum_should_match: 2).render)
409
- .to eq(param_name => {bool: {should: {foo: 'bar'}, minimum_should_match: 2}})
410
- end
411
-
412
- specify do
413
- expect(described_class.new(must_not: {foo: 'bar'}, minimum_should_match: 2).render)
414
- .to eq(param_name => {bool: {must_not: {foo: 'bar'}}})
415
- end
416
-
417
- if param_name == :filter
418
- specify do
419
- expect(described_class.new(must: [{foo: 'bar'}, {moo: 'baz'}]).render)
420
- .to eq(param_name => [{foo: 'bar'}, {moo: 'baz'}])
421
- end
422
- else
423
- specify do
424
- expect(described_class.new(must: [{foo: 'bar'}, {moo: 'baz'}]).render)
425
- .to eq(param_name => {bool: {must: [{foo: 'bar'}, {moo: 'baz'}]}})
426
- end
427
- end
428
-
429
- specify do
430
- expect(subject.render)
431
- .to eq(param_name => {bool: {must: {foo: 'bar'}, should: {moo: 'baz'}}})
432
- end
433
- end
434
- end
@@ -1,67 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Chewy::Search::Parameters::RequestCache 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(request_cache: false) }
65
- specify { expect(subject.render).to eq(request_cache: true) }
66
- end
67
- end
@@ -1,62 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Chewy::Search::Parameters::Rescore do
4
- subject { described_class.new([{foo: 42}, {bar: 43}]) }
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(foo: 42).value).to eq([{foo: 42}]) }
10
- specify { expect(described_class.new([{foo: 42}, nil]).value).to eq([{foo: 42}]) }
11
- specify { expect(subject.value).to eq([{foo: 42}, {bar: 43}]) }
12
- end
13
-
14
- describe '#replace!' do
15
- specify do
16
- expect { subject.replace!(nil) }
17
- .to change { subject.value }
18
- .from([{foo: 42}, {bar: 43}]).to([])
19
- end
20
-
21
- specify do
22
- expect { subject.replace!(baz: 44) }
23
- .to change { subject.value }
24
- .from([{foo: 42}, {bar: 43}])
25
- .to([{baz: 44}])
26
- end
27
- end
28
-
29
- describe '#update!' do
30
- specify do
31
- expect { subject.update!(nil) }
32
- .not_to change { subject.value }
33
- end
34
-
35
- specify do
36
- expect { subject.update!(baz: 44) }
37
- .to change { subject.value }
38
- .from([{foo: 42}, {bar: 43}])
39
- .to([{foo: 42}, {bar: 43}, {baz: 44}])
40
- end
41
- end
42
-
43
- describe '#merge!' do
44
- specify do
45
- expect { subject.merge!(described_class.new) }
46
- .not_to change { subject.value }
47
- end
48
-
49
- specify do
50
- expect { subject.merge!(described_class.new(baz: 44)) }
51
- .to change { subject.value }
52
- .from([{foo: 42}, {bar: 43}])
53
- .to([{foo: 42}, {bar: 43}, {baz: 44}])
54
- end
55
- end
56
-
57
- describe '#render' do
58
- specify { expect(described_class.new.render).to be_nil }
59
- specify { expect(described_class.new(foo: 42).render).to eq(rescore: [{foo: 42}]) }
60
- specify { expect(subject.render).to eq(rescore: [{foo: 42}, {bar: 43}]) }
61
- end
62
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/hash_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::ScriptFields do
4
- it_behaves_like :hash_storage, :script_fields
5
- end
@@ -1,35 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe Chewy::Search::Parameters::SearchAfter do
4
- subject { described_class.new([:foo, 42]) }
5
-
6
- describe '#initialize' do
7
- specify { expect(described_class.new.value).to be_nil }
8
- specify { expect(described_class.new(:foo).value).to eq([:foo]) }
9
- specify { expect(described_class.new(nil).value).to be_nil }
10
- end
11
-
12
- describe '#replace!' do
13
- specify { expect { subject.replace!(:baz) }.to change { subject.value }.from([:foo, 42]).to([:baz]) }
14
- specify { expect { subject.replace!(nil) }.to change { subject.value }.from([:foo, 42]).to(nil) }
15
- end
16
-
17
- describe '#update!' do
18
- specify { expect { subject.update!(:baz) }.to change { subject.value }.from([:foo, 42]).to([:baz]) }
19
- specify { expect { subject.update!(nil) }.not_to change { subject.value }.from([:foo, 42]) }
20
- end
21
-
22
- describe '#merge!' do
23
- specify do
24
- expect { subject.merge!(described_class.new(:baz)) }
25
- .to change { subject.value }.from([:foo, 42]).to([:baz])
26
- end
27
- specify { expect { subject.merge!(described_class.new) }.not_to change { subject.value }.from([:foo, 42]) }
28
- end
29
-
30
- describe '#render' do
31
- specify { expect(described_class.new.render).to be_nil }
32
- specify { expect(described_class.new(:baz).render).to eq(search_after: [:baz]) }
33
- specify { expect(subject.render).to eq(search_after: [:foo, 42]) }
34
- end
35
- end
@@ -1,5 +0,0 @@
1
- require 'chewy/search/parameters/string_storage_examples'
2
-
3
- describe Chewy::Search::Parameters::SearchType do
4
- it_behaves_like :string_storage, :search_type
5
- end