chewy 7.0.0 → 7.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 (41) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +0 -26
  3. data/CHANGELOG.md +11 -0
  4. data/README.md +27 -38
  5. data/lib/chewy/fields/root.rb +1 -2
  6. data/lib/chewy/index.rb +4 -15
  7. data/lib/chewy/index/actions.rb +1 -3
  8. data/lib/chewy/index/aliases.rb +1 -3
  9. data/lib/chewy/railtie.rb +2 -18
  10. data/lib/chewy/search/loader.rb +2 -12
  11. data/lib/chewy/search/parameters/indices.rb +12 -57
  12. data/lib/chewy/search/request.rb +20 -40
  13. data/lib/chewy/search/response.rb +1 -1
  14. data/lib/chewy/search/scrolling.rb +1 -1
  15. data/lib/chewy/stash.rb +2 -5
  16. data/lib/chewy/type/import/bulk_request.rb +1 -2
  17. data/lib/chewy/type/import/journal_builder.rb +1 -2
  18. data/lib/chewy/type/import/routine.rb +2 -2
  19. data/lib/chewy/type/mapping.rb +1 -1
  20. data/lib/chewy/type/syncer.rb +1 -4
  21. data/lib/chewy/version.rb +1 -1
  22. data/lib/tasks/chewy.rake +10 -10
  23. data/migration_guide.md +6 -3
  24. data/spec/chewy/fields/base_spec.rb +4 -4
  25. data/spec/chewy/fields/root_spec.rb +4 -4
  26. data/spec/chewy/index/specification_spec.rb +13 -13
  27. data/spec/chewy/index_spec.rb +1 -3
  28. data/spec/chewy/journal_spec.rb +4 -4
  29. data/spec/chewy/runtime_spec.rb +1 -1
  30. data/spec/chewy/search/loader_spec.rb +0 -16
  31. data/spec/chewy/search/parameters/indices_spec.rb +25 -110
  32. data/spec/chewy/search/request_spec.rb +11 -28
  33. data/spec/chewy/search/scrolling_spec.rb +2 -8
  34. data/spec/chewy/search_spec.rb +2 -2
  35. data/spec/chewy/type/import/bulk_request_spec.rb +0 -6
  36. data/spec/chewy/type/import/journal_builder_spec.rb +0 -4
  37. data/spec/chewy/type/import_spec.rb +2 -2
  38. data/spec/chewy/type/mapping_spec.rb +5 -37
  39. metadata +2 -5
  40. data/lib/chewy/search/parameters/types.rb +0 -20
  41. data/spec/chewy/search/parameters/types_spec.rb +0 -5
@@ -143,8 +143,6 @@ describe Chewy::Index do
143
143
 
144
144
  describe '.types' do
145
145
  specify { expect(DummiesIndex.types).to eq(DummiesIndex.type_hash.values) }
146
- specify { expect(DummiesIndex.types(:dummy)).to be_a Chewy::Search::Request }
147
- specify { expect(DummiesIndex.types(:user)).to be_a Chewy::Search::Request }
148
146
  end
149
147
 
150
148
  describe '.settings' do
@@ -233,7 +231,7 @@ describe Chewy::Index do
233
231
  define_type :document do
234
232
  field :date, type: 'date'
235
233
  end
236
- end.mappings_hash).to eq(mappings: {document: {properties: {date: {type: 'date'}}}})
234
+ end.mappings_hash).to eq(mappings: {properties: {date: {type: 'date'}}})
237
235
  end
238
236
  end
239
237
 
@@ -137,7 +137,7 @@ describe Chewy::Journal do
137
137
  expect(journal_entries.size).to eq 4
138
138
 
139
139
  # simulate lost data
140
- Chewy.client.delete(index: "#{Chewy.settings[:prefix]}_cities", type: 'city', id: 1, refresh: true)
140
+ Chewy.client.delete(index: "#{Chewy.settings[:prefix]}_cities", id: 1, refresh: true)
141
141
  expect(cities_index.count).to eq 1
142
142
 
143
143
  described_class.new.apply(time)
@@ -192,8 +192,8 @@ describe Chewy::Journal do
192
192
  Array.new(2) { |i| Country.create!(id: i + 1) }
193
193
 
194
194
  # simulate lost data
195
- Chewy.client.delete(index: 'cities', type: 'city', id: 1, refresh: true)
196
- Chewy.client.delete(index: 'countries', type: 'country', id: 1, refresh: true)
195
+ Chewy.client.delete(index: 'cities', id: 1, refresh: true)
196
+ Chewy.client.delete(index: 'countries', id: 1, refresh: true)
197
197
  expect(CitiesIndex.all.to_a.length).to eq 1
198
198
  expect(CountriesIndex.all.to_a.length).to eq 1
199
199
 
@@ -203,7 +203,7 @@ describe Chewy::Journal do
203
203
  expect(CountriesIndex.all.to_a.length).to eq 1
204
204
 
205
205
  # Replay on both
206
- Chewy.client.delete(index: 'cities', type: 'city', id: 1, refresh: true)
206
+ Chewy.client.delete(index: 'cities', id: 1, refresh: true)
207
207
  expect(CitiesIndex.all.to_a.length).to eq 1
208
208
  expect(described_class.new(CitiesIndex, CountriesIndex).apply(time)).to eq(4)
209
209
  expect(CitiesIndex.all.to_a.length).to eq 2
@@ -3,7 +3,7 @@ require 'spec_helper'
3
3
  describe Chewy::Runtime do
4
4
  describe '.version' do
5
5
  specify { expect(described_class.version).to be_a(described_class::Version) }
6
- specify { expect(described_class.version).to be >= '6.8' }
6
+ specify { expect(described_class.version).to be >= '7.0' }
7
7
  specify { expect(described_class.version).to be < '8.0' }
8
8
  end
9
9
  end
@@ -37,7 +37,6 @@ describe Chewy::Search::Loader do
37
37
  specify { expect(subject.derive_type('cities', 'city')).to eq(CitiesIndex::City) }
38
38
  specify { expect(subject.derive_type('cities_suffix', 'city')).to eq(CitiesIndex::City) }
39
39
 
40
- specify { expect { subject.derive_type('cities', 'place') }.to raise_error(Chewy::UnderivableType) }
41
40
  specify { expect { subject.derive_type('whatever', 'city') }.to raise_error(Chewy::UnderivableType) }
42
41
  specify { expect { subject.derive_type('citiessuffix', 'city') }.to raise_error(Chewy::UnderivableType) }
43
42
 
@@ -54,21 +53,6 @@ describe Chewy::Search::Loader do
54
53
 
55
54
  specify { expect(subject.load(hits)).to eq([*cities, *countries]) }
56
55
 
57
- context do
58
- let(:options) { {only: 'city'} }
59
- specify { expect(subject.load(hits)).to eq([*cities, nil, nil]) }
60
- end
61
-
62
- context do
63
- let(:options) { {except: 'city'} }
64
- specify { expect(subject.load(hits)).to eq([nil, nil, *countries]) }
65
- end
66
-
67
- context do
68
- let(:options) { {except: %w[city country]} }
69
- specify { expect(subject.load(hits)).to eq([nil, nil, nil, nil]) }
70
- end
71
-
72
56
  context 'scopes', :active_record do
73
57
  context do
74
58
  let(:options) { {scope: -> { where('rating > 2') }} }
@@ -9,30 +9,32 @@ describe Chewy::Search::Parameters::Indices do
9
9
  stub_index(:second) do
10
10
  define_type :three
11
11
  end
12
+
13
+ stub_index(:third)
12
14
  end
13
15
 
14
- subject { described_class.new(indices: FirstIndex, types: SecondIndex::Three) }
16
+ subject { described_class.new(indices: [FirstIndex, SecondIndex]) }
15
17
 
16
18
  describe '#initialize' do
17
- specify { expect(described_class.new.value).to eq(indices: [], types: []) }
18
- specify { expect(described_class.new(nil).value).to eq(indices: [], types: []) }
19
- specify { expect(described_class.new(foo: :whatever).value).to eq(indices: [], types: []) }
20
- specify { expect(subject.value).to eq(indices: [FirstIndex], types: [SecondIndex::Three]) }
19
+ specify { expect(described_class.new.value).to eq(indices: []) }
20
+ specify { expect(described_class.new(nil).value).to eq(indices: []) }
21
+ specify { expect(described_class.new(foo: :whatever).value).to eq(indices: []) }
22
+ specify { expect(subject.value).to eq(indices: [FirstIndex, SecondIndex]) }
21
23
  end
22
24
 
23
25
  describe '#replace!' do
24
26
  specify do
25
27
  expect { subject.replace!(nil) }
26
28
  .to change { subject.value }
27
- .from(indices: [FirstIndex], types: [SecondIndex::Three])
28
- .to(indices: [], types: [])
29
+ .from(indices: [FirstIndex, SecondIndex])
30
+ .to(indices: [])
29
31
  end
30
32
 
31
33
  specify do
32
- expect { subject.replace!(indices: SecondIndex, types: FirstIndex::One) }
34
+ expect { subject.replace!(indices: SecondIndex) }
33
35
  .to change { subject.value }
34
- .from(indices: [FirstIndex], types: [SecondIndex::Three])
35
- .to(indices: [SecondIndex], types: [FirstIndex::One])
36
+ .from(indices: [FirstIndex, SecondIndex])
37
+ .to(indices: [SecondIndex])
36
38
  end
37
39
  end
38
40
 
@@ -43,10 +45,10 @@ describe Chewy::Search::Parameters::Indices do
43
45
  end
44
46
 
45
47
  specify do
46
- expect { subject.update!(indices: SecondIndex, types: [FirstIndex::One, SecondIndex::Three]) }
48
+ expect { subject.update!(indices: ThirdIndex) }
47
49
  .to change { subject.value }
48
- .from(indices: [FirstIndex], types: [SecondIndex::Three])
49
- .to(indices: [FirstIndex, SecondIndex], types: [SecondIndex::Three, FirstIndex::One])
50
+ .from(indices: [FirstIndex, SecondIndex])
51
+ .to(indices: [FirstIndex, SecondIndex, ThirdIndex])
50
52
  end
51
53
  end
52
54
 
@@ -57,10 +59,8 @@ describe Chewy::Search::Parameters::Indices do
57
59
  end
58
60
 
59
61
  specify do
60
- expect { subject.merge!(described_class.new(indices: SecondIndex, types: [FirstIndex::One, SecondIndex::Three])) }
61
- .to change { subject.value }
62
- .from(indices: [FirstIndex], types: [SecondIndex::Three])
63
- .to(indices: [FirstIndex, SecondIndex], types: [SecondIndex::Three, FirstIndex::One])
62
+ expect { subject.merge!(described_class.new(indices: SecondIndex)) }
63
+ .not_to change { subject.value }
64
64
  end
65
65
  end
66
66
 
@@ -69,7 +69,7 @@ describe Chewy::Search::Parameters::Indices do
69
69
  specify do
70
70
  expect(described_class.new(
71
71
  indices: FirstIndex
72
- ).render).to eq(index: %w[first], type: %w[one])
72
+ ).render).to eq(index: %w[first])
73
73
  end
74
74
  specify do
75
75
  expect(described_class.new(
@@ -78,113 +78,28 @@ describe Chewy::Search::Parameters::Indices do
78
78
  end
79
79
  specify do
80
80
  expect(described_class.new(
81
- types: FirstIndex::One
82
- ).render).to eq(index: %w[first], type: %w[one])
83
- end
84
- specify do
85
- expect(described_class.new(
86
- types: :whatever
87
- ).render).to eq({})
88
- end
89
- specify do
90
- expect(described_class.new(
91
- indices: FirstIndex, types: SecondIndex::Three
92
- ).render).to eq(index: %w[first second], type: %w[one three])
93
- end
94
- specify do
95
- expect(described_class.new(
96
- indices: FirstIndex, types: :one
97
- ).render).to eq(index: %w[first], type: %w[one])
98
- end
99
- specify do
100
- expect(described_class.new(
101
- indices: FirstIndex, types: :whatever
102
- ).render).to eq(index: %w[first], type: %w[one])
103
- end
104
- specify do
105
- expect(described_class.new(
106
- indices: FirstIndex, types: %i[one whatever]
107
- ).render).to eq(index: %w[first], type: %w[one])
108
- end
109
- specify do
110
- expect(described_class.new(
111
- indices: :whatever, types: SecondIndex::Three
112
- ).render).to eq(index: %w[second whatever], type: %w[three])
113
- end
114
- specify do
115
- expect(described_class.new(
116
- indices: :whatever, types: [SecondIndex::Three, :whatever]
117
- ).render).to eq(index: %w[second whatever], type: %w[three whatever])
118
- end
119
- specify do
120
- expect(described_class.new(
121
- indices: [FirstIndex, :whatever], types: FirstIndex::One
122
- ).render).to eq(index: %w[first whatever], type: %w[one])
123
- end
124
- specify do
125
- expect(described_class.new(
126
- indices: FirstIndex, types: [FirstIndex::One, :whatever]
127
- ).render).to eq(index: %w[first], type: %w[one])
128
- end
129
- specify do
130
- expect(described_class.new(
131
- indices: FirstIndex, types: [SecondIndex::Three, :whatever]
132
- ).render).to eq(index: %w[first second], type: %w[one three])
133
- end
134
- specify do
135
- expect(described_class.new(
136
- indices: [FirstIndex, :whatever], types: [FirstIndex::One, :whatever]
137
- ).render).to eq(index: %w[first whatever], type: %w[one whatever])
138
- end
139
- specify do
140
- expect(described_class.new(
141
- indices: [FirstIndex, :whatever], types: [SecondIndex::Three, FirstIndex::One]
142
- ).render).to eq(index: %w[first second whatever], type: %w[one three])
81
+ indices: [FirstIndex, :whatever]
82
+ ).render).to eq(index: %w[first whatever])
143
83
  end
144
84
  end
145
85
 
146
86
  describe '#==' do
147
87
  specify { expect(described_class.new).to eq(described_class.new) }
148
88
  specify do
149
- expect(described_class.new(indices: SecondIndex, types: [SecondIndex::Three, :whatever]))
150
- .to eq(described_class.new(indices: SecondIndex, types: :whatever))
151
- end
152
- specify do
153
- expect(described_class.new(indices: :first, types: %w[one]))
89
+ expect(described_class.new(indices: :first))
154
90
  .to eq(described_class.new(indices: FirstIndex))
155
91
  end
156
92
  specify do
157
- expect(described_class.new(indices: FirstIndex, types: SecondIndex::Three))
158
- .not_to eq(described_class.new(indices: FirstIndex))
93
+ expect(described_class.new(indices: FirstIndex))
94
+ .to eq(described_class.new(indices: FirstIndex))
159
95
  end
160
96
  end
161
97
 
162
98
  describe '#indices' do
163
99
  specify do
164
100
  expect(described_class.new(
165
- indices: [FirstIndex, :whatever],
166
- types: [SecondIndex::Three, :whatever]
167
- ).indices).to contain_exactly(FirstIndex, SecondIndex)
168
- end
169
- end
170
-
171
- describe '#types' do
172
- specify do
173
- expect(described_class.new(
174
- indices: [FirstIndex, :whatever],
175
- types: [SecondIndex::Three, :whatever]
176
- ).types).to contain_exactly(
177
- FirstIndex::One, SecondIndex::Three
178
- )
179
- end
180
-
181
- specify do
182
- expect(described_class.new(
183
- indices: [FirstIndex, :whatever],
184
- types: [FirstIndex::One, SecondIndex::Three, :whatever]
185
- ).types).to contain_exactly(
186
- FirstIndex::One, SecondIndex::Three
187
- )
101
+ indices: [FirstIndex, :whatever]
102
+ ).indices).to contain_exactly(FirstIndex)
188
103
  end
189
104
  end
190
105
  end
@@ -46,7 +46,6 @@ describe Chewy::Search::Request do
46
46
  expect(subject.render)
47
47
  .to match(
48
48
  index: %w[products],
49
- type: array_including(%w[product]),
50
49
  body: {}
51
50
  )
52
51
  end
@@ -55,11 +54,11 @@ describe Chewy::Search::Request do
55
54
  describe '#inspect' do
56
55
  specify do
57
56
  expect(described_class.new(ProductsIndex).inspect)
58
- .to eq('<Chewy::Search::Request {:index=>["products"], :type=>["product"], :body=>{}}>')
57
+ .to eq('<Chewy::Search::Request {:index=>["products"], :body=>{}}>')
59
58
  end
60
59
  specify do
61
60
  expect(ProductsIndex.limit(10).inspect)
62
- .to eq('<ProductsIndex::Query {:index=>["products"], :type=>["product"], :body=>{:size=>10}}>')
61
+ .to eq('<ProductsIndex::Query {:index=>["products"], :body=>{:size=>10}}>')
63
62
  end
64
63
  end
65
64
 
@@ -231,14 +230,6 @@ describe Chewy::Search::Request do
231
230
  specify { expect { subject.indices(:cities) }.not_to change { subject.render } }
232
231
  end
233
232
 
234
- describe '#types' do
235
- specify { expect(subject.types(:product).render[:type]).to contain_exactly('product') }
236
- specify { expect(subject.types(%i[product city]).types(nil).render[:type]).to match_array(%w[product]) }
237
- specify { expect(subject.types(:product).types(:product, :city, :something).render[:type]).to match_array(%w[product]) }
238
- specify { expect(subject.types(nil).render[:body]).to be_blank }
239
- specify { expect { subject.types(:product) }.not_to change { subject.render } }
240
- end
241
-
242
233
  describe '#indices_boost' do
243
234
  specify { expect(subject.indices_boost(foo: 1.2).render[:body]).to include(indices_boost: [{'foo' => 1.2}]) }
244
235
  specify { expect(subject.indices_boost(foo: 1.2).indices_boost(moo: 1.3).render[:body]).to include(indices_boost: [{'foo' => 1.2}, {'moo' => 1.3}]) }
@@ -420,14 +411,10 @@ describe Chewy::Search::Request do
420
411
  outer_payload = payload
421
412
  end
422
413
  subject.query(match: {name: 'name3'}).to_a
423
- request = {index: ['products'], type: %w[product], body: {query: {match: {name: 'name3'}}}}
424
- request[:rest_total_hits_as_int] = true if Chewy::Runtime.version >= '7.0.0'
425
414
  expect(outer_payload).to eq(
426
415
  index: ProductsIndex,
427
416
  indexes: [ProductsIndex],
428
- request: request,
429
- type: ProductsIndex::Product,
430
- types: [ProductsIndex::Product]
417
+ request: {index: ['products'], body: {query: {match: {name: 'name3'}}}}
431
418
  )
432
419
  end
433
420
  end
@@ -592,12 +579,12 @@ describe Chewy::Search::Request do
592
579
  specify { expect(subject.limit(5).pluck(:_id, :age)).to eq([['1', 10], ['2', 20], ['3', 30], ['4', 40], ['5', 50]]) }
593
580
  specify { expect(subject.limit(5).source(:name).pluck(:id, :age)).to eq([[1, 10], [2, 20], [3, 30], [4, 40], [5, 50]]) }
594
581
  specify do
595
- expect(subject.limit(5).pluck(:_index, :_type, :name)).to eq([
596
- %w[products product Name1],
597
- %w[products product Name2],
598
- %w[products product Name3],
599
- %w[products product Name4],
600
- %w[products product Name5]
582
+ expect(subject.limit(5).pluck(:_index, :name)).to eq([
583
+ %w[products Name1],
584
+ %w[products Name2],
585
+ %w[products Name3],
586
+ %w[products Name4],
587
+ %w[products Name5]
601
588
  ])
602
589
  end
603
590
 
@@ -644,9 +631,7 @@ describe Chewy::Search::Request do
644
631
  expect(outer_payload).to eq(
645
632
  index: ProductsIndex,
646
633
  indexes: [ProductsIndex],
647
- request: {index: ['products'], type: %w[product], body: {query: {match: {name: 'name3'}}}, refresh: true},
648
- type: ProductsIndex::Product,
649
- types: [ProductsIndex::Product]
634
+ request: {index: ['products'], body: {query: {match: {name: 'name3'}}}, refresh: true}
650
635
  )
651
636
  end
652
637
 
@@ -659,9 +644,7 @@ describe Chewy::Search::Request do
659
644
  expect(outer_payload).to eq(
660
645
  index: ProductsIndex,
661
646
  indexes: [ProductsIndex],
662
- request: {index: ['products'], type: %w[product], body: {query: {match: {name: 'name3'}}}, refresh: false},
663
- type: ProductsIndex::Product,
664
- types: [ProductsIndex::Product]
647
+ request: {index: ['products'], body: {query: {match: {name: 'name3'}}}, refresh: false}
665
648
  )
666
649
  end
667
650
  end
@@ -119,22 +119,16 @@ describe Chewy::Search::Scrolling, :orm do
119
119
  outer_payload << payload
120
120
  end
121
121
  request.scroll_batches(batch_size: 3).to_a
122
- request = {index: %w[cities countries], type: %w[city country], body: {sort: ['rating']}, size: 3, scroll: '1m'}
123
- request[:rest_total_hits_as_int] = true if Chewy::Runtime.version >= '7.0.0'
124
122
  expect(outer_payload).to match_array([
125
123
  hash_including(
126
124
  index: [CitiesIndex, CountriesIndex],
127
125
  indexes: [CitiesIndex, CountriesIndex],
128
- request: request,
129
- type: [CitiesIndex::City, CountriesIndex::Country],
130
- types: [CitiesIndex::City, CountriesIndex::Country]
126
+ request: {index: %w[cities countries], body: {sort: ['rating']}, size: 3, scroll: '1m'}
131
127
  ),
132
128
  hash_including(
133
129
  index: [CitiesIndex, CountriesIndex],
134
130
  indexes: [CitiesIndex, CountriesIndex],
135
- request: {scroll: '1m', scroll_id: an_instance_of(String)},
136
- type: [CitiesIndex::City, CountriesIndex::Country],
137
- types: [CitiesIndex::City, CountriesIndex::Country]
131
+ request: {scroll: '1m', scroll_id: an_instance_of(String)}
138
132
  )
139
133
  ])
140
134
  end
@@ -37,12 +37,12 @@ describe Chewy::Search do
37
37
  end
38
38
 
39
39
  specify do
40
- expect(ProductsIndex.client).to receive(:search).with(hash_including(index: ['products'], type: %w[product]))
40
+ expect(ProductsIndex.client).to receive(:search).with(hash_including(index: ['products']))
41
41
  ProductsIndex.search_string('hello')
42
42
  end
43
43
 
44
44
  specify do
45
- expect(ProductsIndex.client).to receive(:search).with(hash_including(index: ['products'], type: %w[product]))
45
+ expect(ProductsIndex.client).to receive(:search).with(hash_including(index: ['products']))
46
46
  product.search_string('hello')
47
47
  end
48
48
  end
@@ -32,7 +32,6 @@ describe Chewy::Type::Import::BulkRequest do
32
32
  specify do
33
33
  expect(Chewy.client).to receive(:bulk).with(
34
34
  index: 'places',
35
- type: 'city',
36
35
  body: [{index: {id: 42, data: {name: 'Name'}}}]
37
36
  )
38
37
  subject.perform([{index: {id: 42, data: {name: 'Name'}}}])
@@ -44,7 +43,6 @@ describe Chewy::Type::Import::BulkRequest do
44
43
  specify do
45
44
  expect(Chewy.client).to receive(:bulk).with(
46
45
  index: 'places_suffix',
47
- type: 'city',
48
46
  body: [{index: {id: 42, data: {name: 'Name'}}}]
49
47
  )
50
48
  subject.perform([{index: {id: 42, data: {name: 'Name'}}}])
@@ -57,7 +55,6 @@ describe Chewy::Type::Import::BulkRequest do
57
55
  specify do
58
56
  expect(Chewy.client).to receive(:bulk).with(
59
57
  index: 'places',
60
- type: 'city',
61
58
  body: "{\"index\":{\"id\":42}}\n{\"name\":\"#{'Name' * 10}\"}\n{\"index\":{\"id\":43}}\n{\"name\":\"#{'Shame' * 10}\"}\n"
62
59
  )
63
60
  subject.perform([
@@ -69,17 +66,14 @@ describe Chewy::Type::Import::BulkRequest do
69
66
  specify do
70
67
  expect(Chewy.client).to receive(:bulk).with(
71
68
  index: 'places',
72
- type: 'city',
73
69
  body: "{\"index\":{\"id\":42}}\n{\"name\":\"#{'Name' * 30}\"}\n"
74
70
  )
75
71
  expect(Chewy.client).to receive(:bulk).with(
76
72
  index: 'places',
77
- type: 'city',
78
73
  body: "{\"index\":{\"id\":43}}\n{\"name\":\"#{'Shame' * 100}\"}\n"
79
74
  )
80
75
  expect(Chewy.client).to receive(:bulk).with(
81
76
  index: 'places',
82
- type: 'city',
83
77
  body: "{\"index\":{\"id\":44}}\n{\"name\":\"#{'Blame' * 30}\"}\n"
84
78
  )
85
79
  subject.perform([