elastomer-client 0.7.0 → 0.8.1
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 +4 -4
- data/.overcommit.yml +5 -0
- data/.rubocop.yml +83 -0
- data/CHANGELOG.md +8 -0
- data/Gemfile +2 -2
- data/README.md +1 -1
- data/Rakefile +2 -2
- data/elastomer-client.gemspec +4 -2
- data/lib/elastomer/client.rb +42 -37
- data/lib/elastomer/client/bulk.rb +2 -2
- data/lib/elastomer/client/cluster.rb +19 -19
- data/lib/elastomer/client/delete_by_query.rb +7 -7
- data/lib/elastomer/client/docs.rb +81 -24
- data/lib/elastomer/client/errors.rb +2 -2
- data/lib/elastomer/client/index.rb +65 -29
- data/lib/elastomer/client/multi_percolate.rb +127 -0
- data/lib/elastomer/client/multi_search.rb +2 -2
- data/lib/elastomer/client/nodes.rb +4 -4
- data/lib/elastomer/client/percolator.rb +77 -0
- data/lib/elastomer/client/repository.rb +7 -7
- data/lib/elastomer/client/scroller.rb +14 -14
- data/lib/elastomer/client/snapshot.rb +9 -9
- data/lib/elastomer/client/template.rb +3 -3
- data/lib/elastomer/client/warmer.rb +5 -16
- data/lib/elastomer/core_ext/time.rb +1 -1
- data/lib/elastomer/middleware/encode_json.rb +5 -5
- data/lib/elastomer/middleware/opaque_id.rb +3 -3
- data/lib/elastomer/middleware/parse_json.rb +5 -5
- data/lib/elastomer/notifications.rb +4 -4
- data/lib/elastomer/version.rb +1 -1
- data/script/bootstrap +2 -0
- data/script/console +5 -5
- data/test/assertions.rb +26 -24
- data/test/client/bulk_test.rb +111 -111
- data/test/client/cluster_test.rb +58 -58
- data/test/client/delete_by_query_test.rb +53 -53
- data/test/client/docs_test.rb +279 -203
- data/test/client/errors_test.rb +1 -1
- data/test/client/index_test.rb +143 -109
- data/test/client/multi_percolate_test.rb +130 -0
- data/test/client/multi_search_test.rb +30 -28
- data/test/client/nodes_test.rb +30 -29
- data/test/client/percolator_test.rb +52 -0
- data/test/client/repository_test.rb +23 -23
- data/test/client/scroller_test.rb +40 -40
- data/test/client/snapshot_test.rb +15 -15
- data/test/client/stubbed_client_test.rb +15 -15
- data/test/client/template_test.rb +10 -10
- data/test/client/warmer_test.rb +18 -18
- data/test/client_test.rb +53 -53
- data/test/core_ext/time_test.rb +12 -12
- data/test/middleware/encode_json_test.rb +20 -20
- data/test/middleware/opaque_id_test.rb +10 -10
- data/test/middleware/parse_json_test.rb +14 -14
- data/test/notifications_test.rb +32 -32
- data/test/test_helper.rb +24 -24
- metadata +38 -2
data/test/client/errors_test.rb
CHANGED
data/test/client/index_test.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
require File.expand_path(
|
1
|
+
require File.expand_path("../../test_helper", __FILE__)
|
2
2
|
|
3
3
|
describe Elastomer::Client::Index do
|
4
4
|
|
5
5
|
before do
|
6
|
-
@name =
|
6
|
+
@name = "elastomer-index-test"
|
7
7
|
@index = $client.index @name
|
8
8
|
@index.delete if @index.exists?
|
9
9
|
end
|
@@ -12,28 +12,28 @@ describe Elastomer::Client::Index do
|
|
12
12
|
@index.delete if @index.exists?
|
13
13
|
end
|
14
14
|
|
15
|
-
it
|
15
|
+
it "does not require an index name" do
|
16
16
|
index = $client.index
|
17
17
|
assert_nil index.name
|
18
18
|
end
|
19
19
|
|
20
|
-
it
|
21
|
-
assert !@index.exists?,
|
20
|
+
it "determines if an index exists" do
|
21
|
+
assert !@index.exists?, "the index should not yet exist"
|
22
22
|
end
|
23
23
|
|
24
|
-
it
|
25
|
-
assert !@index.exist?,
|
24
|
+
it "determines if an index exists with .exist?" do
|
25
|
+
assert !@index.exist?, "the index should not yet exist"
|
26
26
|
end
|
27
27
|
|
28
|
-
describe
|
29
|
-
it
|
28
|
+
describe "when creating an index" do
|
29
|
+
it "creates an index" do
|
30
30
|
@index.create({})
|
31
|
-
assert @index.exists?,
|
31
|
+
assert @index.exists?, "the index should now exist"
|
32
32
|
end
|
33
33
|
|
34
|
-
it
|
34
|
+
it "creates an index with settings" do
|
35
35
|
@index.create :settings => { :number_of_shards => 3, :number_of_replicas => 0 }
|
36
|
-
settings = @index.get_settings[@name][
|
36
|
+
settings = @index.get_settings[@name]["settings"]
|
37
37
|
|
38
38
|
# COMPATIBILITY
|
39
39
|
# ES 1.0 changed the default return format of index settings to always
|
@@ -42,17 +42,17 @@ describe Elastomer::Client::Index do
|
|
42
42
|
# {"index": {"number_of_replicas":"1"}}
|
43
43
|
|
44
44
|
# To support both versions, we check for either return format.
|
45
|
-
value = settings[
|
46
|
-
settings[
|
47
|
-
assert_equal
|
48
|
-
value = settings[
|
49
|
-
settings[
|
50
|
-
assert_equal
|
45
|
+
value = settings["index.number_of_shards"] ||
|
46
|
+
settings["index"]["number_of_shards"]
|
47
|
+
assert_equal "3", value
|
48
|
+
value = settings["index.number_of_replicas"] ||
|
49
|
+
settings["index"]["number_of_replicas"]
|
50
|
+
assert_equal "0", value
|
51
51
|
end
|
52
52
|
|
53
|
-
it
|
53
|
+
it "creates an index with settings with .settings" do
|
54
54
|
@index.create :settings => { :number_of_shards => 3, :number_of_replicas => 0 }
|
55
|
-
settings = @index.settings[@name][
|
55
|
+
settings = @index.settings[@name]["settings"]
|
56
56
|
|
57
57
|
# COMPATIBILITY
|
58
58
|
# ES 1.0 changed the default return format of index settings to always
|
@@ -61,15 +61,15 @@ describe Elastomer::Client::Index do
|
|
61
61
|
# {"index": {"number_of_replicas":"1"}}
|
62
62
|
|
63
63
|
# To support both versions, we check for either return format.
|
64
|
-
value = settings[
|
65
|
-
settings[
|
66
|
-
assert_equal
|
67
|
-
value = settings[
|
68
|
-
settings[
|
69
|
-
assert_equal
|
64
|
+
value = settings["index.number_of_shards"] ||
|
65
|
+
settings["index"]["number_of_shards"]
|
66
|
+
assert_equal "3", value
|
67
|
+
value = settings["index.number_of_replicas"] ||
|
68
|
+
settings["index"]["number_of_replicas"]
|
69
|
+
assert_equal "0", value
|
70
70
|
end
|
71
71
|
|
72
|
-
it
|
72
|
+
it "adds mappings for document types" do
|
73
73
|
@index.create(
|
74
74
|
:settings => { :number_of_shards => 1, :number_of_replicas => 0 },
|
75
75
|
:mappings => {
|
@@ -77,18 +77,18 @@ describe Elastomer::Client::Index do
|
|
77
77
|
:_source => { :enabled => false },
|
78
78
|
:_all => { :enabled => false },
|
79
79
|
:properties => {
|
80
|
-
:title => { :type =>
|
81
|
-
:author => { :type =>
|
80
|
+
:title => { :type => "string", :analyzer => "standard" },
|
81
|
+
:author => { :type => "string", :index => "not_analyzed" }
|
82
82
|
}
|
83
83
|
}
|
84
84
|
}
|
85
85
|
)
|
86
86
|
|
87
|
-
assert @index.exists?,
|
88
|
-
assert_mapping_exists @index.get_mapping[@name],
|
87
|
+
assert @index.exists?, "the index should now exist"
|
88
|
+
assert_mapping_exists @index.get_mapping[@name], "doco"
|
89
89
|
end
|
90
90
|
|
91
|
-
it
|
91
|
+
it "adds mappings for document types with .mapping" do
|
92
92
|
@index.create(
|
93
93
|
:settings => { :number_of_shards => 1, :number_of_replicas => 0 },
|
94
94
|
:mappings => {
|
@@ -96,23 +96,23 @@ describe Elastomer::Client::Index do
|
|
96
96
|
:_source => { :enabled => false },
|
97
97
|
:_all => { :enabled => false },
|
98
98
|
:properties => {
|
99
|
-
:title => { :type =>
|
100
|
-
:author => { :type =>
|
99
|
+
:title => { :type => "string", :analyzer => "standard" },
|
100
|
+
:author => { :type => "string", :index => "not_analyzed" }
|
101
101
|
}
|
102
102
|
}
|
103
103
|
}
|
104
104
|
)
|
105
105
|
|
106
|
-
assert @index.exists?,
|
107
|
-
assert_mapping_exists @index.mapping[@name],
|
106
|
+
assert @index.exists?, "the index should now exist"
|
107
|
+
assert_mapping_exists @index.mapping[@name], "doco"
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
|
-
it
|
111
|
+
it "updates index settings" do
|
112
112
|
@index.create :settings => { :number_of_shards => 1, :number_of_replicas => 0 }
|
113
113
|
|
114
|
-
@index.update_settings
|
115
|
-
settings = @index.settings[@name][
|
114
|
+
@index.update_settings "index.number_of_replicas" => 1
|
115
|
+
settings = @index.settings[@name]["settings"]
|
116
116
|
|
117
117
|
# COMPATIBILITY
|
118
118
|
# ES 1.0 changed the default return format of index settings to always
|
@@ -121,12 +121,12 @@ describe Elastomer::Client::Index do
|
|
121
121
|
# {"index": {"number_of_replicas":"1"}}
|
122
122
|
|
123
123
|
# To support both versions, we check for either return format.
|
124
|
-
value = settings[
|
125
|
-
settings[
|
126
|
-
assert_equal
|
124
|
+
value = settings["index.number_of_replicas"] ||
|
125
|
+
settings["index"]["number_of_replicas"]
|
126
|
+
assert_equal "1", value
|
127
127
|
end
|
128
128
|
|
129
|
-
it
|
129
|
+
it "updates document mappings" do
|
130
130
|
unless es_version_supports_update_mapping_with__all_disabled?
|
131
131
|
skip "Mapping Update API is broken in this ES version."
|
132
132
|
end
|
@@ -136,28 +136,28 @@ describe Elastomer::Client::Index do
|
|
136
136
|
:doco => {
|
137
137
|
:_source => { :enabled => false },
|
138
138
|
:_all => { :enabled => false },
|
139
|
-
:properties => {:title => { :type =>
|
139
|
+
:properties => {:title => { :type => "string", :analyzer => "standard" }}
|
140
140
|
}
|
141
141
|
}
|
142
142
|
)
|
143
143
|
|
144
|
-
assert_property_exists @index.mapping[@name],
|
144
|
+
assert_property_exists @index.mapping[@name], "doco", "title"
|
145
145
|
|
146
|
-
@index.update_mapping
|
147
|
-
:author => { :type =>
|
146
|
+
@index.update_mapping "doco", { :doco => { :properties => {
|
147
|
+
:author => { :type => "string", :index => "not_analyzed" }
|
148
148
|
}}}
|
149
149
|
|
150
|
-
assert_property_exists @index.mapping[@name],
|
151
|
-
assert_property_exists @index.mapping[@name],
|
150
|
+
assert_property_exists @index.mapping[@name], "doco", "author"
|
151
|
+
assert_property_exists @index.mapping[@name], "doco", "title"
|
152
152
|
|
153
|
-
@index.update_mapping
|
154
|
-
:song => { :type =>
|
153
|
+
@index.update_mapping "mux_mool", { :mux_mool => { :properties => {
|
154
|
+
:song => { :type => "string", :index => "not_analyzed" }
|
155
155
|
}}}
|
156
156
|
|
157
|
-
assert_property_exists @index.mapping[@name],
|
157
|
+
assert_property_exists @index.mapping[@name], "mux_mool", "song"
|
158
158
|
end
|
159
159
|
|
160
|
-
it
|
160
|
+
it "updates document mappings with .put_mapping" do
|
161
161
|
unless es_version_supports_update_mapping_with__all_disabled?
|
162
162
|
skip "Mapping Update API is broken in this ES version."
|
163
163
|
end
|
@@ -167,40 +167,40 @@ describe Elastomer::Client::Index do
|
|
167
167
|
:doco => {
|
168
168
|
:_source => { :enabled => false },
|
169
169
|
:_all => { :enabled => false },
|
170
|
-
:properties => {:title => { :type =>
|
170
|
+
:properties => {:title => { :type => "string", :analyzer => "standard" }}
|
171
171
|
}
|
172
172
|
}
|
173
173
|
)
|
174
174
|
|
175
|
-
assert_property_exists @index.mapping[@name],
|
175
|
+
assert_property_exists @index.mapping[@name], "doco", "title"
|
176
176
|
|
177
|
-
@index.put_mapping
|
178
|
-
:author => { :type =>
|
177
|
+
@index.put_mapping "doco", { :doco => { :properties => {
|
178
|
+
:author => { :type => "string", :index => "not_analyzed" }
|
179
179
|
}}}
|
180
180
|
|
181
|
-
assert_property_exists @index.mapping[@name],
|
182
|
-
assert_property_exists @index.mapping[@name],
|
181
|
+
assert_property_exists @index.mapping[@name], "doco", "author"
|
182
|
+
assert_property_exists @index.mapping[@name], "doco", "title"
|
183
183
|
|
184
|
-
@index.put_mapping
|
185
|
-
:song => { :type =>
|
184
|
+
@index.put_mapping "mux_mool", { :mux_mool => { :properties => {
|
185
|
+
:song => { :type => "string", :index => "not_analyzed" }
|
186
186
|
}}}
|
187
187
|
|
188
|
-
assert_property_exists @index.mapping[@name],
|
188
|
+
assert_property_exists @index.mapping[@name], "mux_mool", "song"
|
189
189
|
end
|
190
190
|
|
191
|
-
it
|
191
|
+
it "deletes document mappings" do
|
192
192
|
@index.create(
|
193
193
|
:mappings => {
|
194
194
|
:doco => {
|
195
195
|
:_source => { :enabled => false },
|
196
196
|
:_all => { :enabled => false },
|
197
|
-
:properties => {:title => { :type =>
|
197
|
+
:properties => {:title => { :type => "string", :analyzer => "standard" }}
|
198
198
|
}
|
199
199
|
}
|
200
200
|
)
|
201
|
-
assert_mapping_exists @index.mapping[@name],
|
201
|
+
assert_mapping_exists @index.mapping[@name], "doco"
|
202
202
|
|
203
|
-
response = @index.delete_mapping
|
203
|
+
response = @index.delete_mapping "doco"
|
204
204
|
assert_acknowledged response
|
205
205
|
|
206
206
|
mapping = @index.get_mapping
|
@@ -210,26 +210,26 @@ describe Elastomer::Client::Index do
|
|
210
210
|
assert_empty mapping, "no mappings are present"
|
211
211
|
end
|
212
212
|
|
213
|
-
it
|
213
|
+
it "lists all aliases to the index" do
|
214
214
|
@index.create(nil)
|
215
215
|
|
216
216
|
if es_version_always_returns_aliases?
|
217
|
-
assert_equal({@name => {
|
217
|
+
assert_equal({@name => {"aliases" => {}}}, @index.get_aliases)
|
218
218
|
else
|
219
219
|
assert_equal({@name => {}}, @index.get_aliases)
|
220
220
|
end
|
221
221
|
|
222
|
-
$client.cluster.update_aliases :add => {:index => @name, :alias =>
|
223
|
-
assert_equal({@name => {
|
222
|
+
$client.cluster.update_aliases :add => {:index => @name, :alias => "foofaloo"}
|
223
|
+
assert_equal({@name => {"aliases" => {"foofaloo" => {}}}}, @index.get_aliases)
|
224
224
|
|
225
225
|
if es_version_1_x?
|
226
|
-
assert_equal({@name => {
|
226
|
+
assert_equal({@name => {"aliases" => {"foofaloo" => {}}}}, @index.get_alias("f*"))
|
227
227
|
assert_equal({}, @index.get_alias("r*"))
|
228
228
|
end
|
229
229
|
end
|
230
230
|
|
231
231
|
if es_version_1_x?
|
232
|
-
it
|
232
|
+
it "adds and deletes aliases to the index" do
|
233
233
|
@index.create(nil)
|
234
234
|
assert_empty @index.get_alias("*")
|
235
235
|
|
@@ -249,9 +249,9 @@ describe Elastomer::Client::Index do
|
|
249
249
|
# COMPATIBILITY ES 1.x removed English stopwords from the default analyzers,
|
250
250
|
# so create a custom one with the English stopwords added.
|
251
251
|
if es_version_1_x?
|
252
|
-
it
|
253
|
-
tokens = @index.analyze
|
254
|
-
tokens = tokens[
|
252
|
+
it "analyzes text and returns tokens" do
|
253
|
+
tokens = @index.analyze "Just a few words to analyze.", :analyzer => "standard", :index => nil
|
254
|
+
tokens = tokens["tokens"].map { |h| h["token"] }
|
255
255
|
assert_equal %w[just a few words to analyze], tokens
|
256
256
|
|
257
257
|
@index.create(
|
@@ -270,18 +270,18 @@ describe Elastomer::Client::Index do
|
|
270
270
|
)
|
271
271
|
wait_for_index(@name)
|
272
272
|
|
273
|
-
tokens = @index.analyze
|
274
|
-
tokens = tokens[
|
273
|
+
tokens = @index.analyze "Just a few words to analyze.", :analyzer => "english_standard"
|
274
|
+
tokens = tokens["tokens"].map { |h| h["token"] }
|
275
275
|
assert_equal %w[just few words analyze], tokens
|
276
276
|
end
|
277
277
|
else
|
278
|
-
it
|
279
|
-
tokens = @index.analyze
|
280
|
-
tokens = tokens[
|
278
|
+
it "analyzes text and returns tokens" do
|
279
|
+
tokens = @index.analyze "Just a few words to analyze.", :index => nil
|
280
|
+
tokens = tokens["tokens"].map { |h| h["token"] }
|
281
281
|
assert_equal %w[just few words analyze], tokens
|
282
282
|
|
283
|
-
tokens = @index.analyze
|
284
|
-
tokens = tokens[
|
283
|
+
tokens = @index.analyze "Just a few words to analyze.", :analyzer => "simple", :index => nil
|
284
|
+
tokens = tokens["tokens"].map { |h| h["token"] }
|
285
285
|
assert_equal %w[just a few words to analyze], tokens
|
286
286
|
end
|
287
287
|
end
|
@@ -293,94 +293,128 @@ describe Elastomer::Client::Index do
|
|
293
293
|
end
|
294
294
|
|
295
295
|
#TODO assert this only hits the desired index
|
296
|
-
it
|
296
|
+
it "deletes" do
|
297
297
|
response = @index.delete
|
298
298
|
assert_acknowledged response
|
299
299
|
end
|
300
300
|
|
301
|
-
it
|
301
|
+
it "opens" do
|
302
302
|
response = @index.open
|
303
303
|
assert_acknowledged response
|
304
304
|
end
|
305
305
|
|
306
|
-
it
|
306
|
+
it "closes" do
|
307
307
|
response = @index.close
|
308
308
|
assert_acknowledged response
|
309
309
|
end
|
310
310
|
|
311
|
-
it
|
311
|
+
it "refreshes" do
|
312
312
|
response = @index.refresh
|
313
313
|
assert_equal 0, response["_shards"]["failed"]
|
314
314
|
end
|
315
315
|
|
316
|
-
it
|
316
|
+
it "flushes" do
|
317
317
|
response = @index.flush
|
318
318
|
assert_equal 0, response["_shards"]["failed"]
|
319
319
|
end
|
320
320
|
|
321
|
-
it
|
321
|
+
it "optimizes" do
|
322
322
|
response = @index.optimize
|
323
323
|
assert_equal 0, response["_shards"]["failed"]
|
324
324
|
end
|
325
325
|
|
326
326
|
# COMPATIBILITY ES 1.2 removed support for the gateway snapshot API.
|
327
327
|
if es_version_supports_gateway_snapshots?
|
328
|
-
it
|
328
|
+
it "snapshots" do
|
329
329
|
response = @index.snapshot
|
330
330
|
assert_equal 0, response["_shards"]["failed"]
|
331
331
|
end
|
332
332
|
end
|
333
333
|
|
334
334
|
if es_version_1_x?
|
335
|
-
it
|
335
|
+
it "recovery" do
|
336
336
|
response = @index.recovery
|
337
337
|
assert_includes response, "elastomer-index-test"
|
338
338
|
end
|
339
339
|
end
|
340
340
|
|
341
|
-
it
|
341
|
+
it "clears caches" do
|
342
342
|
response = @index.clear_cache
|
343
343
|
assert_equal 0, response["_shards"]["failed"]
|
344
344
|
end
|
345
345
|
|
346
|
-
it
|
346
|
+
it "gets stats" do
|
347
347
|
response = @index.stats
|
348
|
-
if response.key?
|
348
|
+
if response.key? "indices"
|
349
349
|
assert_includes response["indices"], "elastomer-index-test"
|
350
350
|
else
|
351
351
|
assert_includes response["_all"]["indices"], "elastomer-index-test"
|
352
352
|
end
|
353
353
|
end
|
354
354
|
|
355
|
-
it
|
355
|
+
it "gets status" do
|
356
356
|
response = @index.status
|
357
357
|
assert_includes response["indices"], "elastomer-index-test"
|
358
358
|
end
|
359
359
|
|
360
|
-
it
|
361
|
-
@index.docs(
|
360
|
+
it "gets segments" do
|
361
|
+
@index.docs("foo").index("foo" => "bar")
|
362
362
|
response = @index.segments
|
363
363
|
assert_includes response["indices"], "elastomer-index-test"
|
364
364
|
end
|
365
365
|
|
366
|
-
it
|
367
|
-
@index.docs(
|
366
|
+
it "deletes by query" do
|
367
|
+
@index.docs("foo").index("foo" => "bar")
|
368
368
|
@index.refresh
|
369
|
-
r = @index.delete_by_query(:q =>
|
369
|
+
r = @index.delete_by_query(:q => "*")
|
370
370
|
assert_equal({
|
371
|
-
|
372
|
-
|
373
|
-
|
374
|
-
|
375
|
-
|
371
|
+
"_all" => {
|
372
|
+
"found" => 1,
|
373
|
+
"deleted" => 1,
|
374
|
+
"missing" => 0,
|
375
|
+
"failed" => 0,
|
376
376
|
},
|
377
377
|
@name => {
|
378
|
-
|
379
|
-
|
380
|
-
|
381
|
-
|
378
|
+
"found" => 1,
|
379
|
+
"deleted" => 1,
|
380
|
+
"missing" => 0,
|
381
|
+
"failed" => 0,
|
382
382
|
}
|
383
|
-
}, r[
|
383
|
+
}, r["_indices"])
|
384
|
+
end
|
385
|
+
|
386
|
+
it "creates a Percolator" do
|
387
|
+
id = "1"
|
388
|
+
percolator = @index.percolator id
|
389
|
+
assert_equal id, percolator.id
|
390
|
+
end
|
391
|
+
|
392
|
+
it "performs multi percolate queries" do
|
393
|
+
@index.docs.index \
|
394
|
+
:_id => 1,
|
395
|
+
:_type => "doc2",
|
396
|
+
:title => "the author of logging",
|
397
|
+
:author => "pea53"
|
398
|
+
|
399
|
+
@index.docs.index \
|
400
|
+
:_id => 2,
|
401
|
+
:_type => "doc2",
|
402
|
+
:title => "the author of rubber-band",
|
403
|
+
:author => "grantr"
|
404
|
+
|
405
|
+
@index.percolator("1").create :query => { :match_all => { } }
|
406
|
+
@index.percolator("2").create :query => { :match => { :author => "pea53" } }
|
407
|
+
|
408
|
+
h = @index.multi_percolate(:type => "doc2") do |m|
|
409
|
+
m.percolate :author => "pea53"
|
410
|
+
m.percolate :author => "grantr"
|
411
|
+
m.count({}, { :author => "grantr" })
|
412
|
+
end
|
413
|
+
|
414
|
+
response1, response2, response3 = h["responses"]
|
415
|
+
assert_equal ["1", "2"], response1["matches"].map { |match| match["_id"] }.sort
|
416
|
+
assert_equal ["1"], response2["matches"].map { |match| match["_id"] }.sort
|
417
|
+
assert_equal 1, response3["total"]
|
384
418
|
end
|
385
419
|
end
|
386
420
|
end
|