chewy 0.10.1 → 5.0.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.
- checksums.yaml +5 -5
- data/.rubocop.yml +25 -25
- data/.travis.yml +21 -29
- data/Appraisals +27 -9
- data/CHANGELOG.md +36 -0
- data/Gemfile +3 -1
- data/README.md +73 -23
- data/chewy.gemspec +6 -8
- data/gemfiles/rails.4.0.activerecord.gemfile +1 -0
- data/gemfiles/rails.4.1.activerecord.gemfile +1 -0
- data/gemfiles/rails.4.2.activerecord.gemfile +1 -0
- data/gemfiles/{rails.4.2.mongoid.5.1.gemfile → rails.4.2.mongoid.5.2.gemfile} +2 -1
- data/gemfiles/rails.5.0.activerecord.gemfile +2 -1
- data/gemfiles/{rails.5.0.mongoid.6.0.gemfile → rails.5.0.mongoid.6.1.gemfile} +3 -2
- data/gemfiles/rails.5.1.activerecord.gemfile +2 -1
- data/gemfiles/{rails.5.1.mongoid.6.1.gemfile → rails.5.1.mongoid.6.3.gemfile} +3 -2
- data/gemfiles/rails.5.2.activerecord.gemfile +16 -0
- data/gemfiles/sequel.4.45.gemfile +2 -2
- data/lib/chewy.rb +1 -0
- data/lib/chewy/config.rb +8 -19
- data/lib/chewy/fields/base.rb +15 -3
- data/lib/chewy/fields/root.rb +13 -9
- data/lib/chewy/index.rb +1 -1
- data/lib/chewy/index/actions.rb +14 -12
- data/lib/chewy/index/settings.rb +2 -0
- data/lib/chewy/index/specification.rb +12 -10
- data/lib/chewy/minitest/helpers.rb +6 -6
- data/lib/chewy/minitest/search_index_receiver.rb +17 -17
- data/lib/chewy/query.rb +135 -96
- data/lib/chewy/query/filters.rb +20 -3
- data/lib/chewy/query/loading.rb +0 -1
- data/lib/chewy/railtie.rb +2 -4
- data/lib/chewy/rake_helper.rb +5 -5
- data/lib/chewy/rspec/update_index.rb +3 -5
- data/lib/chewy/search.rb +2 -2
- data/lib/chewy/search/parameters/concerns/query_storage.rb +4 -3
- data/lib/chewy/stash.rb +30 -21
- data/lib/chewy/strategy/atomic.rb +1 -1
- data/lib/chewy/type.rb +2 -2
- data/lib/chewy/type/adapter/base.rb +9 -9
- data/lib/chewy/type/adapter/mongoid.rb +1 -3
- data/lib/chewy/type/adapter/sequel.rb +4 -6
- data/lib/chewy/type/crutch.rb +1 -1
- data/lib/chewy/type/import.rb +3 -2
- data/lib/chewy/type/import/bulk_builder.rb +1 -1
- data/lib/chewy/type/import/journal_builder.rb +3 -3
- data/lib/chewy/type/import/routine.rb +2 -2
- data/lib/chewy/type/mapping.rb +40 -34
- data/lib/chewy/type/observe.rb +13 -9
- data/lib/chewy/type/syncer.rb +2 -2
- data/lib/chewy/type/witchcraft.rb +2 -2
- data/lib/chewy/type/wrapper.rb +2 -2
- data/lib/chewy/version.rb +1 -1
- data/lib/sequel/plugins/chewy_observe.rb +4 -19
- data/spec/chewy/config_spec.rb +16 -0
- data/spec/chewy/fields/base_spec.rb +61 -65
- data/spec/chewy/fields/root_spec.rb +13 -13
- data/spec/chewy/index/actions_spec.rb +37 -5
- data/spec/chewy/index/specification_spec.rb +25 -16
- data/spec/chewy/index_spec.rb +61 -8
- data/spec/chewy/journal_spec.rb +11 -11
- data/spec/chewy/query/filters_spec.rb +1 -1
- data/spec/chewy/query/nodes/not_spec.rb +1 -0
- data/spec/chewy/query_spec.rb +3 -2
- data/spec/chewy/rake_helper_spec.rb +46 -33
- data/spec/chewy/search_spec.rb +20 -10
- data/spec/chewy/stash_spec.rb +1 -1
- data/spec/chewy/strategy/shoryuken_spec.rb +2 -0
- data/spec/chewy/type/import/journal_builder_spec.rb +8 -8
- data/spec/chewy/type/import_spec.rb +6 -0
- data/spec/chewy/type/mapping_spec.rb +48 -17
- data/spec/spec_helper.rb +8 -0
- metadata +26 -25
@@ -6,7 +6,7 @@ describe Chewy::Index::Specification do
|
|
6
6
|
let(:index1) do
|
7
7
|
stub_index(:places) do
|
8
8
|
define_type(:city) do
|
9
|
-
field :
|
9
|
+
field :founded_on, type: 'date'
|
10
10
|
end
|
11
11
|
end
|
12
12
|
end
|
@@ -15,7 +15,7 @@ describe Chewy::Index::Specification do
|
|
15
15
|
stub_index(:places) do
|
16
16
|
settings analyzer: {}
|
17
17
|
define_type(:city) do
|
18
|
-
field :
|
18
|
+
field :founded_on, type: 'date'
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -23,7 +23,7 @@ describe Chewy::Index::Specification do
|
|
23
23
|
let(:index3) do
|
24
24
|
stub_index(:places) do
|
25
25
|
define_type(:city) do
|
26
|
-
field :
|
26
|
+
field :founded_on, type: 'date'
|
27
27
|
field :population, type: 'integer'
|
28
28
|
end
|
29
29
|
end
|
@@ -33,7 +33,7 @@ describe Chewy::Index::Specification do
|
|
33
33
|
stub_index(:places) do
|
34
34
|
define_type(:city) do
|
35
35
|
field :population, type: 'integer'
|
36
|
-
field :
|
36
|
+
field :founded_on, type: 'date'
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -55,11 +55,14 @@ describe Chewy::Index::Specification do
|
|
55
55
|
describe '#lock!' do
|
56
56
|
specify do
|
57
57
|
expect { specification1.lock! }.to change { Chewy::Stash::Specification.all.hits }.from([]).to([{
|
58
|
-
'_index' => '
|
58
|
+
'_index' => 'chewy_specifications',
|
59
59
|
'_type' => 'specification',
|
60
60
|
'_id' => 'places',
|
61
61
|
'_score' => 1.0,
|
62
|
-
'_source' => {'
|
62
|
+
'_source' => {'specification' => Base64.encode64({
|
63
|
+
'settings' => {'index' => {'number_of_shards' => 1, 'number_of_replicas' => 0}},
|
64
|
+
'mappings' => {'city' => {'properties' => {'founded_on' => {'type' => 'date'}}}}
|
65
|
+
}.to_json)}
|
63
66
|
}])
|
64
67
|
end
|
65
68
|
|
@@ -68,17 +71,23 @@ describe Chewy::Index::Specification do
|
|
68
71
|
|
69
72
|
specify do
|
70
73
|
expect { specification5.lock! }.to change { Chewy::Stash::Specification.all.hits }.to([{
|
71
|
-
'_index' => '
|
74
|
+
'_index' => 'chewy_specifications',
|
72
75
|
'_type' => 'specification',
|
73
76
|
'_id' => 'places',
|
74
77
|
'_score' => 1.0,
|
75
|
-
'_source' => {'
|
78
|
+
'_source' => {'specification' => Base64.encode64({
|
79
|
+
'settings' => {'index' => {'number_of_shards' => 1, 'number_of_replicas' => 0}},
|
80
|
+
'mappings' => {'city' => {'properties' => {'founded_on' => {'type' => 'date'}}}}
|
81
|
+
}.to_json)}
|
76
82
|
}, {
|
77
|
-
'_index' => '
|
83
|
+
'_index' => 'chewy_specifications',
|
78
84
|
'_type' => 'specification',
|
79
85
|
'_id' => 'namespace/cities',
|
80
86
|
'_score' => 1.0,
|
81
|
-
'_source' => {'
|
87
|
+
'_source' => {'specification' => Base64.encode64({
|
88
|
+
'settings' => {'index' => {'number_of_shards' => 1, 'number_of_replicas' => 0}},
|
89
|
+
'mappings' => {'city' => {'properties' => {'population' => {'type' => 'integer'}}}}
|
90
|
+
}.to_json)}
|
82
91
|
}])
|
83
92
|
end
|
84
93
|
end
|
@@ -88,7 +97,7 @@ describe Chewy::Index::Specification do
|
|
88
97
|
specify do
|
89
98
|
expect { specification1.lock! }.to change { specification1.locked }.from({}).to(
|
90
99
|
'settings' => {'index' => {'number_of_shards' => 1, 'number_of_replicas' => 0}},
|
91
|
-
'mappings' => {'city' => {'properties' => {'
|
100
|
+
'mappings' => {'city' => {'properties' => {'founded_on' => {'type' => 'date'}}}}
|
92
101
|
)
|
93
102
|
end
|
94
103
|
|
@@ -105,20 +114,20 @@ describe Chewy::Index::Specification do
|
|
105
114
|
specify do
|
106
115
|
expect { specification2.lock! }.to change { specification2.locked }.from(
|
107
116
|
'settings' => {'index' => {'number_of_shards' => 1, 'number_of_replicas' => 0}},
|
108
|
-
'mappings' => {'city' => {'properties' => {'
|
117
|
+
'mappings' => {'city' => {'properties' => {'founded_on' => {'type' => 'date'}}}}
|
109
118
|
).to(
|
110
119
|
'settings' => {'analyzer' => {}, 'index' => {'number_of_shards' => 1, 'number_of_replicas' => 0}},
|
111
|
-
'mappings' => {'city' => {'properties' => {'
|
120
|
+
'mappings' => {'city' => {'properties' => {'founded_on' => {'type' => 'date'}}}}
|
112
121
|
)
|
113
122
|
end
|
114
123
|
|
115
124
|
specify do
|
116
125
|
expect { specification3.lock! }.to change { specification3.locked }.from(
|
117
126
|
'settings' => {'index' => {'number_of_shards' => 1, 'number_of_replicas' => 0}},
|
118
|
-
'mappings' => {'city' => {'properties' => {'
|
127
|
+
'mappings' => {'city' => {'properties' => {'founded_on' => {'type' => 'date'}}}}
|
119
128
|
).to(
|
120
129
|
'settings' => {'index' => {'number_of_shards' => 1, 'number_of_replicas' => 0}},
|
121
|
-
'mappings' => {'city' => {'properties' => {'
|
130
|
+
'mappings' => {'city' => {'properties' => {'founded_on' => {'type' => 'date'}, 'population' => {'type' => 'integer'}}}}
|
122
131
|
)
|
123
132
|
end
|
124
133
|
end
|
@@ -127,7 +136,7 @@ describe Chewy::Index::Specification do
|
|
127
136
|
describe '#current' do
|
128
137
|
specify do
|
129
138
|
expect(specification2.current).to eq(
|
130
|
-
'mappings' => {'city' => {'properties' => {'
|
139
|
+
'mappings' => {'city' => {'properties' => {'founded_on' => {'type' => 'date'}}}},
|
131
140
|
'settings' => {'analyzer' => {}, 'index' => {'number_of_shards' => 1, 'number_of_replicas' => 0}}
|
132
141
|
)
|
133
142
|
end
|
data/spec/chewy/index_spec.rb
CHANGED
@@ -191,16 +191,44 @@ describe Chewy::Index do
|
|
191
191
|
stub_index(:places) do
|
192
192
|
def self.by_rating; end
|
193
193
|
|
194
|
-
def self.
|
194
|
+
def self.colors(*colors)
|
195
|
+
filter(terms: {colors: colors.flatten(1).map(&:to_s)})
|
196
|
+
end
|
195
197
|
|
196
198
|
define_type :city do
|
197
199
|
def self.by_id; end
|
200
|
+
field :colors
|
198
201
|
end
|
199
202
|
end
|
200
203
|
end
|
201
204
|
|
202
205
|
specify { expect(described_class.scopes).to eq([]) }
|
203
|
-
specify { expect(PlacesIndex.scopes).to match_array(%i[by_rating
|
206
|
+
specify { expect(PlacesIndex.scopes).to match_array(%i[by_rating colors]) }
|
207
|
+
|
208
|
+
context do
|
209
|
+
before do
|
210
|
+
Chewy.massacre
|
211
|
+
PlacesIndex::City.import!(
|
212
|
+
double(colors: ['red']),
|
213
|
+
double(colors: %w[red green]),
|
214
|
+
double(colors: %w[green yellow])
|
215
|
+
)
|
216
|
+
end
|
217
|
+
|
218
|
+
specify do
|
219
|
+
# This `blank?`` call is for the messed scopes bug reproduction. See #573
|
220
|
+
PlacesIndex::City.blank?
|
221
|
+
expect(PlacesIndex.colors(:green).map(&:colors))
|
222
|
+
.to contain_exactly(%w[red green], %w[green yellow])
|
223
|
+
end
|
224
|
+
|
225
|
+
specify do
|
226
|
+
# This `blank?` call is for the messed scopes bug reproduction. See #573
|
227
|
+
PlacesIndex::City.blank?
|
228
|
+
expect(PlacesIndex::City.colors(:green).map(&:colors))
|
229
|
+
.to contain_exactly(%w[red green], %w[green yellow])
|
230
|
+
end
|
231
|
+
end
|
204
232
|
end
|
205
233
|
|
206
234
|
describe '.settings_hash' do
|
@@ -216,17 +244,17 @@ describe Chewy::Index do
|
|
216
244
|
specify do
|
217
245
|
expect(stub_index(:documents) do
|
218
246
|
define_type :document do
|
219
|
-
field :
|
247
|
+
field :date, type: 'date'
|
220
248
|
end
|
221
|
-
end.mappings_hash).to eq(mappings: {document: {properties: {
|
249
|
+
end.mappings_hash).to eq(mappings: {document: {properties: {date: {type: 'date'}}}})
|
222
250
|
end
|
223
251
|
specify do
|
224
252
|
expect(stub_index(:documents) do
|
225
253
|
define_type :document do
|
226
|
-
field :name
|
254
|
+
field :name
|
227
255
|
end
|
228
256
|
define_type :document2 do
|
229
|
-
field :name
|
257
|
+
field :name
|
230
258
|
end
|
231
259
|
end.mappings_hash[:mappings].keys).to match_array(%i[document document2])
|
232
260
|
end
|
@@ -240,7 +268,7 @@ describe Chewy::Index do
|
|
240
268
|
specify do
|
241
269
|
expect(stub_index(:documents) do
|
242
270
|
define_type :document do
|
243
|
-
field :name
|
271
|
+
field :name
|
244
272
|
end
|
245
273
|
end.specification_hash.keys).to eq([:mappings])
|
246
274
|
end
|
@@ -248,7 +276,7 @@ describe Chewy::Index do
|
|
248
276
|
expect(stub_index(:documents) do
|
249
277
|
settings number_of_shards: 1
|
250
278
|
define_type :document do
|
251
|
-
field :name
|
279
|
+
field :name
|
252
280
|
end
|
253
281
|
end.specification_hash.keys).to match_array(%i[mappings settings])
|
254
282
|
end
|
@@ -281,4 +309,29 @@ describe Chewy::Index do
|
|
281
309
|
specify { expect(DummiesIndex.index_name).to eq('borogoves_dummies') }
|
282
310
|
end
|
283
311
|
end
|
312
|
+
|
313
|
+
context 'index call inside index', :orm do
|
314
|
+
before do
|
315
|
+
stub_index(:cities) do
|
316
|
+
define_type :city do
|
317
|
+
field :country_name, value: (lambda do |city|
|
318
|
+
CountriesIndex::Country.filter(term: {_id: city.country_id}).first.name
|
319
|
+
end)
|
320
|
+
end
|
321
|
+
end
|
322
|
+
|
323
|
+
stub_index(:countries) do
|
324
|
+
define_type :country do
|
325
|
+
field :name
|
326
|
+
end
|
327
|
+
end
|
328
|
+
|
329
|
+
CountriesIndex::Country.import!(double(id: 1, name: 'Country'))
|
330
|
+
end
|
331
|
+
|
332
|
+
specify do
|
333
|
+
expect { CitiesIndex::City.import!(double(country_id: 1)) }
|
334
|
+
.to update_index(CitiesIndex::City).and_reindex(country_name: 'Country')
|
335
|
+
end
|
336
|
+
end
|
284
337
|
end
|
data/spec/chewy/journal_spec.rb
CHANGED
@@ -51,7 +51,7 @@ describe Chewy::Journal do
|
|
51
51
|
|
52
52
|
places_index.import
|
53
53
|
|
54
|
-
expect(Chewy::Stash.exists?).to eq true
|
54
|
+
expect(Chewy::Stash::Journal.exists?).to eq true
|
55
55
|
|
56
56
|
Timecop.freeze(update_time)
|
57
57
|
cities.first.update_attributes!(name: 'Supername')
|
@@ -65,63 +65,63 @@ describe Chewy::Journal do
|
|
65
65
|
'index_name' => "#{namespace}places",
|
66
66
|
'type_name' => 'city',
|
67
67
|
'action' => 'index',
|
68
|
-
'references' => ['1'],
|
68
|
+
'references' => ['1'].map(&Base64.method(:encode64)),
|
69
69
|
'created_at' => time.utc.as_json
|
70
70
|
},
|
71
71
|
{
|
72
72
|
'index_name' => "#{namespace}places",
|
73
73
|
'type_name' => 'city',
|
74
74
|
'action' => 'index',
|
75
|
-
'references' => ['2'],
|
75
|
+
'references' => ['2'].map(&Base64.method(:encode64)),
|
76
76
|
'created_at' => time.utc.as_json
|
77
77
|
},
|
78
78
|
{
|
79
79
|
'index_name' => "#{namespace}places",
|
80
80
|
'type_name' => 'country',
|
81
81
|
'action' => 'index',
|
82
|
-
'references' => ['1'],
|
82
|
+
'references' => ['1'].map(&Base64.method(:encode64)),
|
83
83
|
'created_at' => time.utc.as_json
|
84
84
|
},
|
85
85
|
{
|
86
86
|
'index_name' => "#{namespace}places",
|
87
87
|
'type_name' => 'country',
|
88
88
|
'action' => 'index',
|
89
|
-
'references' => ['2'],
|
89
|
+
'references' => ['2'].map(&Base64.method(:encode64)),
|
90
90
|
'created_at' => time.utc.as_json
|
91
91
|
},
|
92
92
|
{
|
93
93
|
'index_name' => "#{namespace}places",
|
94
94
|
'type_name' => 'country',
|
95
95
|
'action' => 'index',
|
96
|
-
'references' => ['3'],
|
96
|
+
'references' => ['3'].map(&Base64.method(:encode64)),
|
97
97
|
'created_at' => time.utc.as_json
|
98
98
|
},
|
99
99
|
{
|
100
100
|
'index_name' => "#{namespace}places",
|
101
101
|
'type_name' => 'city',
|
102
102
|
'action' => 'index',
|
103
|
-
'references' => %w[1 2],
|
103
|
+
'references' => %w[1 2].map(&Base64.method(:encode64)),
|
104
104
|
'created_at' => import_time.utc.as_json
|
105
105
|
},
|
106
106
|
{
|
107
107
|
'index_name' => "#{namespace}places",
|
108
108
|
'type_name' => 'country',
|
109
109
|
'action' => 'index',
|
110
|
-
'references' => %w[1 2 3],
|
110
|
+
'references' => %w[1 2 3].map(&Base64.method(:encode64)),
|
111
111
|
'created_at' => import_time.utc.as_json
|
112
112
|
},
|
113
113
|
{
|
114
114
|
'index_name' => "#{namespace}places",
|
115
115
|
'type_name' => 'city',
|
116
116
|
'action' => 'index',
|
117
|
-
'references' => ['1'],
|
117
|
+
'references' => ['1'].map(&Base64.method(:encode64)),
|
118
118
|
'created_at' => update_time.utc.as_json
|
119
119
|
},
|
120
120
|
{
|
121
121
|
'index_name' => "#{namespace}places",
|
122
122
|
'type_name' => 'country',
|
123
123
|
'action' => 'delete',
|
124
|
-
'references' => ['2'],
|
124
|
+
'references' => ['2'].map(&Base64.method(:encode64)),
|
125
125
|
'created_at' => destroy_time.utc.as_json
|
126
126
|
}
|
127
127
|
]
|
@@ -231,7 +231,7 @@ describe Chewy::Journal do
|
|
231
231
|
let!(:journal_entries) do
|
232
232
|
record = Chewy::Stash::Journal.entries(time).first
|
233
233
|
Array.new(count_of_checks) do |i|
|
234
|
-
Chewy::Stash::Journal.new(
|
234
|
+
Chewy::Stash::Journal::Journal.new(
|
235
235
|
record.attributes.merge(
|
236
236
|
'created_at' => time.to_i + i,
|
237
237
|
'references' => [i.to_s]
|
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Chewy::Query::Filters do
|
4
|
-
def Bool(options) # rubocop:disable
|
4
|
+
def Bool(options) # rubocop:disable Naming/MethodName
|
5
5
|
Chewy::Query::Nodes::Bool.new.tap do |bool|
|
6
6
|
bool.must(*options[:must]) if options[:must].present?
|
7
7
|
bool.must_not(*options[:must_not]) if options[:must_not].present?
|
@@ -9,5 +9,6 @@ describe Chewy::Query::Nodes::Not do
|
|
9
9
|
# rubocop:disable Style/InverseMethods
|
10
10
|
specify { expect(render { !(email == 'email') }).to eq(not: {term: {'email' => 'email'}}) }
|
11
11
|
specify { expect(render { ~!(email == 'email') }).to eq(not: {filter: {term: {'email' => 'email'}}, _cache: true}) }
|
12
|
+
# rubocop:enable Style/InverseMethods
|
12
13
|
end
|
13
14
|
end
|
data/spec/chewy/query_spec.rb
CHANGED
@@ -36,6 +36,7 @@ describe Chewy::Query do
|
|
36
36
|
specify { expect(subject.offset(6).count).to eq(3) }
|
37
37
|
specify { expect(subject.query(match: {name: 'name3'}).highlight(fields: {name: {}}).first.name).to eq('Name3') }
|
38
38
|
specify { expect(subject.query(match: {name: 'name3'}).highlight(fields: {name: {}}).first.name_highlight).to eq('<em>Name3</em>') }
|
39
|
+
specify { expect(subject.query({}).highlight(fields: {name: {}}).first.name_highlight).to eq(nil) }
|
39
40
|
specify { expect(subject.query(match: {name: 'name3'}).highlight(fields: {name: {}}).first._data['_source']['name']).to eq('Name3') }
|
40
41
|
specify { expect(subject.types(:product).count).to eq(3) }
|
41
42
|
specify { expect(subject.types(:product, :country).count).to eq(6) }
|
@@ -216,7 +217,7 @@ describe Chewy::Query do
|
|
216
217
|
define_type :product do
|
217
218
|
root do
|
218
219
|
field :name, 'surname'
|
219
|
-
field :title
|
220
|
+
field :title do
|
220
221
|
field :subfield1
|
221
222
|
end
|
222
223
|
field 'price', type: 'float' do
|
@@ -237,7 +238,7 @@ describe Chewy::Query do
|
|
237
238
|
define_type :product do
|
238
239
|
root do
|
239
240
|
field :name, 'surname'
|
240
|
-
field :title
|
241
|
+
field :title do
|
241
242
|
field :subfield1
|
242
243
|
end
|
243
244
|
field 'price', type: 'float' do
|
@@ -23,8 +23,21 @@ describe Chewy::RakeHelper, :orm do
|
|
23
23
|
let!(:countries) { Array.new(2) { |i| Country.create!(name: "Name#{i + 1}") } }
|
24
24
|
let(:journal) do
|
25
25
|
Chewy::Stash::Journal.import([
|
26
|
-
{
|
27
|
-
|
26
|
+
{
|
27
|
+
index_name: 'places',
|
28
|
+
type_name: 'city',
|
29
|
+
action: 'index',
|
30
|
+
references: cities.first(2).map(&:id).map(&:to_s)
|
31
|
+
.map(&:to_json).map(&Base64.method(:encode64)),
|
32
|
+
created_at: 2.minutes.since
|
33
|
+
},
|
34
|
+
{
|
35
|
+
index_name: 'places',
|
36
|
+
type_name: 'country',
|
37
|
+
action: 'index',
|
38
|
+
references: [Base64.encode64(countries.first.id.to_s.to_json)],
|
39
|
+
created_at: 4.minutes.since
|
40
|
+
}
|
28
41
|
])
|
29
42
|
end
|
30
43
|
|
@@ -37,14 +50,14 @@ describe Chewy::RakeHelper, :orm do
|
|
37
50
|
.to update_index(PlacesIndex::City)
|
38
51
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
39
52
|
\\AResetting PlacesIndex
|
40
|
-
Imported PlacesIndex::City
|
41
|
-
Imported PlacesIndex::Country
|
53
|
+
Imported PlacesIndex::City in \\d+s, stats: index 3
|
54
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 2
|
42
55
|
Applying journal to \\[PlacesIndex::City, PlacesIndex::Country\\], 3 entries, stage 1
|
43
|
-
Imported PlacesIndex::City
|
44
|
-
Imported PlacesIndex::Country
|
45
|
-
Imported Chewy::Stash::Specification
|
56
|
+
Imported PlacesIndex::City in \\d+s, stats: index 2
|
57
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 1
|
58
|
+
Imported Chewy::Stash::Specification::Specification in \\d+s, stats: index 1
|
46
59
|
Resetting UsersIndex
|
47
|
-
Imported Chewy::Stash::Specification
|
60
|
+
Imported Chewy::Stash::Specification::Specification in \\d+s, stats: index 1
|
48
61
|
Total: \\d+s\\Z
|
49
62
|
OUTPUT
|
50
63
|
end
|
@@ -55,12 +68,12 @@ Total: \\d+s\\Z
|
|
55
68
|
.to update_index(PlacesIndex::City)
|
56
69
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
57
70
|
\\AResetting PlacesIndex
|
58
|
-
Imported PlacesIndex::City
|
59
|
-
Imported PlacesIndex::Country
|
71
|
+
Imported PlacesIndex::City in \\d+s, stats: index 3
|
72
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 2
|
60
73
|
Applying journal to \\[PlacesIndex::City, PlacesIndex::Country\\], 3 entries, stage 1
|
61
|
-
Imported PlacesIndex::City
|
62
|
-
Imported PlacesIndex::Country
|
63
|
-
Imported Chewy::Stash::Specification
|
74
|
+
Imported PlacesIndex::City in \\d+s, stats: index 2
|
75
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 1
|
76
|
+
Imported Chewy::Stash::Specification::Specification in \\d+s, stats: index 1
|
64
77
|
Total: \\d+s\\Z
|
65
78
|
OUTPUT
|
66
79
|
end
|
@@ -71,7 +84,7 @@ Total: \\d+s\\Z
|
|
71
84
|
.not_to update_index(PlacesIndex::City)
|
72
85
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
73
86
|
\\AResetting UsersIndex
|
74
|
-
Imported Chewy::Stash::Specification
|
87
|
+
Imported Chewy::Stash::Specification::Specification in \\d+s, stats: index 1
|
75
88
|
Total: \\d+s\\Z
|
76
89
|
OUTPUT
|
77
90
|
end
|
@@ -84,11 +97,11 @@ Total: \\d+s\\Z
|
|
84
97
|
.to update_index(PlacesIndex::City)
|
85
98
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
86
99
|
\\AResetting PlacesIndex
|
87
|
-
Imported PlacesIndex::City
|
88
|
-
Imported PlacesIndex::Country
|
89
|
-
Imported Chewy::Stash::Specification
|
100
|
+
Imported PlacesIndex::City in \\d+s, stats: index 3
|
101
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 2
|
102
|
+
Imported Chewy::Stash::Specification::Specification in \\d+s, stats: index 1
|
90
103
|
Resetting UsersIndex
|
91
|
-
Imported Chewy::Stash::Specification
|
104
|
+
Imported Chewy::Stash::Specification::Specification in \\d+s, stats: index 1
|
92
105
|
Total: \\d+s\\Z
|
93
106
|
OUTPUT
|
94
107
|
end
|
@@ -103,7 +116,7 @@ Total: \\d+s\\Z
|
|
103
116
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
104
117
|
\\ASkipping PlacesIndex, the specification didn't change
|
105
118
|
Resetting UsersIndex
|
106
|
-
Imported Chewy::Stash::Specification
|
119
|
+
Imported Chewy::Stash::Specification::Specification in \\d+s, stats: index 1
|
107
120
|
Total: \\d+s\\Z
|
108
121
|
OUTPUT
|
109
122
|
end
|
@@ -114,7 +127,7 @@ Total: \\d+s\\Z
|
|
114
127
|
.not_to update_index(PlacesIndex::City)
|
115
128
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
116
129
|
\\AResetting UsersIndex
|
117
|
-
Imported Chewy::Stash::Specification
|
130
|
+
Imported Chewy::Stash::Specification::Specification in \\d+s, stats: index 1
|
118
131
|
Total: \\d+s\\Z
|
119
132
|
OUTPUT
|
120
133
|
end
|
@@ -154,8 +167,8 @@ Total: \\d+s\\Z
|
|
154
167
|
.to update_index(PlacesIndex::City)
|
155
168
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
156
169
|
\\AUpdating PlacesIndex
|
157
|
-
Imported PlacesIndex::City
|
158
|
-
Imported PlacesIndex::Country
|
170
|
+
Imported PlacesIndex::City in \\d+s, stats: index 3
|
171
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 2
|
159
172
|
Total: \\d+s\\Z
|
160
173
|
OUTPUT
|
161
174
|
end
|
@@ -166,7 +179,7 @@ Total: \\d+s\\Z
|
|
166
179
|
.not_to update_index(PlacesIndex::City)
|
167
180
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
168
181
|
\\AUpdating PlacesIndex
|
169
|
-
Imported PlacesIndex::Country
|
182
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 2
|
170
183
|
Total: \\d+s\\Z
|
171
184
|
OUTPUT
|
172
185
|
end
|
@@ -177,7 +190,7 @@ Total: \\d+s\\Z
|
|
177
190
|
.to update_index(PlacesIndex::City)
|
178
191
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
179
192
|
\\AUpdating PlacesIndex
|
180
|
-
Imported PlacesIndex::City
|
193
|
+
Imported PlacesIndex::City in \\d+s, stats: index 3
|
181
194
|
Total: \\d+s\\Z
|
182
195
|
OUTPUT
|
183
196
|
end
|
@@ -191,12 +204,12 @@ Total: \\d+s\\Z
|
|
191
204
|
.to update_index(PlacesIndex::City)
|
192
205
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
193
206
|
\\ASynchronizing PlacesIndex::City
|
194
|
-
Imported PlacesIndex::City
|
207
|
+
Imported PlacesIndex::City in \\d+s, stats: index 3
|
195
208
|
Missing documents: \\[[^\\]]+\\]
|
196
209
|
Took \\d+s
|
197
210
|
Synchronizing PlacesIndex::Country
|
198
211
|
PlacesIndex::Country doesn't support outdated synchronization
|
199
|
-
Imported PlacesIndex::Country
|
212
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 2
|
200
213
|
Missing documents: \\[[^\\]]+\\]
|
201
214
|
Took \\d+s
|
202
215
|
Total: \\d+s\\Z
|
@@ -218,7 +231,7 @@ Total: \\d+s\\Z
|
|
218
231
|
.to update_index(PlacesIndex::City)
|
219
232
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
220
233
|
\\ASynchronizing PlacesIndex::City
|
221
|
-
Imported PlacesIndex::City
|
234
|
+
Imported PlacesIndex::City in \\d+s, stats: index 2
|
222
235
|
Missing documents: \\["#{cities.last.id}"\\]
|
223
236
|
Outdated documents: \\["#{cities.first.id}"\\]
|
224
237
|
Took \\d+s
|
@@ -236,7 +249,7 @@ Total: \\d+s\\Z
|
|
236
249
|
.to update_index(PlacesIndex::City)
|
237
250
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
238
251
|
\\ASynchronizing PlacesIndex::City
|
239
|
-
Imported PlacesIndex::City
|
252
|
+
Imported PlacesIndex::City in \\d+s, stats: index 2
|
240
253
|
Missing documents: \\["#{cities.last.id}"\\]
|
241
254
|
Outdated documents: \\["#{cities.first.id}"\\]
|
242
255
|
Took \\d+s
|
@@ -281,8 +294,8 @@ Total: \\d+s\\Z
|
|
281
294
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
282
295
|
\\AApplying journal entries created after [+-:\\d\\s]+
|
283
296
|
Applying journal to \\[PlacesIndex::City, PlacesIndex::Country\\], 3 entries, stage 1
|
284
|
-
Imported PlacesIndex::City
|
285
|
-
Imported PlacesIndex::Country
|
297
|
+
Imported PlacesIndex::City in \\d+s, stats: index 2
|
298
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 1
|
286
299
|
Total: \\d+s\\Z
|
287
300
|
OUTPUT
|
288
301
|
end
|
@@ -294,7 +307,7 @@ Total: \\d+s\\Z
|
|
294
307
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
295
308
|
\\AApplying journal entries created after [+-:\\d\\s]+
|
296
309
|
Applying journal to \\[PlacesIndex::Country\\], 1 entries, stage 1
|
297
|
-
Imported PlacesIndex::Country
|
310
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 1
|
298
311
|
Total: \\d+s\\Z
|
299
312
|
OUTPUT
|
300
313
|
end
|
@@ -306,7 +319,7 @@ Total: \\d+s\\Z
|
|
306
319
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
307
320
|
\\AApplying journal entries created after [+-:\\d\\s]+
|
308
321
|
Applying journal to \\[PlacesIndex::City\\], 2 entries, stage 1
|
309
|
-
Imported PlacesIndex::City
|
322
|
+
Imported PlacesIndex::City in \\d+s, stats: index 2
|
310
323
|
Total: \\d+s\\Z
|
311
324
|
OUTPUT
|
312
325
|
end
|
@@ -318,7 +331,7 @@ Total: \\d+s\\Z
|
|
318
331
|
expect(output.string).to match(Regexp.new(<<-OUTPUT, Regexp::MULTILINE))
|
319
332
|
\\AApplying journal entries created after [+-:\\d\\s]+
|
320
333
|
Applying journal to \\[PlacesIndex::Country\\], 1 entries, stage 1
|
321
|
-
Imported PlacesIndex::Country
|
334
|
+
Imported PlacesIndex::Country in \\d+s, stats: index 1
|
322
335
|
Total: \\d+s\\Z
|
323
336
|
OUTPUT
|
324
337
|
end
|