mongo 2.0.0.beta → 2.0.0.rc
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +14 -1
- data/lib/mongo.rb +2 -1
- data/lib/mongo/auth.rb +2 -2
- data/lib/mongo/bulk_write.rb +52 -0
- data/lib/mongo/bulk_write/bulk_writable.rb +191 -0
- data/lib/mongo/bulk_write/deletable.rb +60 -0
- data/lib/mongo/bulk_write/insertable.rb +52 -0
- data/lib/mongo/bulk_write/ordered_bulk_write.rb +48 -0
- data/lib/mongo/bulk_write/replacable.rb +57 -0
- data/lib/mongo/bulk_write/unordered_bulk_write.rb +46 -0
- data/lib/mongo/bulk_write/updatable.rb +68 -0
- data/lib/mongo/client.rb +15 -2
- data/lib/mongo/cluster/topology/replica_set.rb +1 -1
- data/lib/mongo/cluster/topology/sharded.rb +1 -1
- data/lib/mongo/cluster/topology/standalone.rb +1 -1
- data/lib/mongo/cluster/topology/unknown.rb +1 -1
- data/lib/mongo/collection.rb +1 -1
- data/lib/mongo/collection/view/aggregation.rb +1 -1
- data/lib/mongo/collection/view/readable.rb +1 -1
- data/lib/mongo/collection/view/writable.rb +5 -5
- data/lib/mongo/cursor.rb +0 -2
- data/lib/mongo/error.rb +4 -3
- data/lib/mongo/error/{bulk_write_failure.rb → bulk_write_error.rb} +2 -2
- data/lib/mongo/error/invalid_bulk_operation.rb +2 -2
- data/lib/mongo/error/invalid_bulk_operation_type.rb +36 -0
- data/lib/mongo/error/{empty_batch.rb → multi_index_drop.rb} +5 -10
- data/lib/mongo/grid/file/metadata.rb +1 -8
- data/lib/mongo/grid/fs.rb +5 -5
- data/lib/mongo/index/view.rb +90 -34
- data/lib/mongo/operation.rb +0 -1
- data/lib/mongo/operation/aggregate.rb +2 -2
- data/lib/mongo/operation/aggregate/result.rb +4 -0
- data/lib/mongo/operation/bulk_delete/result.rb +2 -127
- data/lib/mongo/operation/bulk_insert/result.rb +2 -132
- data/lib/mongo/operation/bulk_update/result.rb +2 -142
- data/lib/mongo/operation/command.rb +1 -1
- data/lib/mongo/operation/executable.rb +3 -3
- data/lib/mongo/operation/list_collections/result.rb +0 -2
- data/lib/mongo/operation/map_reduce.rb +1 -1
- data/lib/mongo/operation/read/collections_info.rb +1 -1
- data/lib/mongo/operation/read/get_more.rb +1 -1
- data/lib/mongo/operation/read/indexes.rb +1 -1
- data/lib/mongo/operation/read/list_collections.rb +1 -1
- data/lib/mongo/operation/read/list_indexes.rb +1 -1
- data/lib/mongo/operation/read/query.rb +1 -1
- data/lib/mongo/operation/specifiable.rb +18 -1
- data/lib/mongo/operation/write.rb +2 -0
- data/lib/mongo/operation/write/bulk_delete.rb +5 -19
- data/lib/mongo/operation/write/bulk_insert.rb +9 -40
- data/lib/mongo/operation/write/bulk_mergable.rb +67 -0
- data/lib/mongo/operation/write/bulk_update.rb +5 -19
- data/lib/mongo/operation/write/command.rb +1 -1
- data/lib/mongo/operation/write/command/{ensure_index.rb → create_index.rb} +4 -9
- data/lib/mongo/operation/write/command/delete.rb +4 -4
- data/lib/mongo/operation/write/command/drop_index.rb +1 -1
- data/lib/mongo/operation/write/command/insert.rb +4 -4
- data/lib/mongo/operation/write/command/update.rb +4 -4
- data/lib/mongo/operation/write/create_index.rb +12 -7
- data/lib/mongo/operation/write/create_user.rb +1 -1
- data/lib/mongo/operation/write/delete.rb +1 -1
- data/lib/mongo/operation/write/drop_index.rb +1 -1
- data/lib/mongo/operation/write/insert.rb +1 -1
- data/lib/mongo/operation/write/legacy_bulk_mergable.rb +83 -0
- data/lib/mongo/operation/write/remove_user.rb +1 -1
- data/lib/mongo/operation/write/update.rb +1 -1
- data/lib/mongo/{bulk.rb → options.rb} +2 -2
- data/lib/mongo/options/mapper.rb +78 -0
- data/lib/mongo/server.rb +2 -2
- data/lib/mongo/server/connection_pool/queue.rb +1 -1
- data/lib/mongo/server/description.rb +1 -1
- data/lib/mongo/server/description/inspector.rb +1 -1
- data/lib/mongo/server_selector.rb +1 -1
- data/lib/mongo/socket/unix.rb +2 -4
- data/lib/mongo/version.rb +1 -1
- data/lib/mongo/write_concern/acknowledged.rb +15 -1
- data/lib/mongo/write_concern/normalizable.rb +0 -22
- data/lib/mongo/write_concern/unacknowledged.rb +12 -0
- data/spec/mongo/bulk/bulk_write_spec.rb +178 -91
- data/spec/mongo/collection/view/aggregation_spec.rb +14 -1
- data/spec/mongo/collection/view/explainable_spec.rb +1 -1
- data/spec/mongo/collection/view/map_reduce_spec.rb +2 -2
- data/spec/mongo/collection/view/readable_spec.rb +2 -2
- data/spec/mongo/collection/view/writable_spec.rb +7 -7
- data/spec/mongo/collection/view_spec.rb +14 -5
- data/spec/mongo/collection_spec.rb +5 -5
- data/spec/mongo/cursor_spec.rb +3 -3
- data/spec/mongo/database_spec.rb +4 -8
- data/spec/mongo/grid/fs_spec.rb +8 -8
- data/spec/mongo/index/view_spec.rb +139 -35
- data/spec/mongo/operation/aggregate_spec.rb +14 -22
- data/spec/mongo/operation/command_spec.rb +8 -16
- data/spec/mongo/operation/map_reduce_spec.rb +1 -1
- data/spec/mongo/operation/read/indexes_spec.rb +2 -2
- data/spec/mongo/operation/write/bulk_delete_spec.rb +1 -239
- data/spec/mongo/operation/write/bulk_insert_spec.rb +3 -234
- data/spec/mongo/operation/write/bulk_update_spec.rb +1 -289
- data/spec/mongo/operation/write/command/delete_spec.rb +0 -13
- data/spec/mongo/operation/write/command/insert_spec.rb +0 -14
- data/spec/mongo/operation/write/command/update_spec.rb +0 -14
- data/spec/mongo/operation/write/{ensure_index_spec.rb → create_index_spec.rb} +8 -26
- data/spec/mongo/operation/write/delete_spec.rb +1 -1
- data/spec/mongo/operation/write/drop_index_spec.rb +1 -1
- data/spec/mongo/operation/write/insert_spec.rb +3 -3
- data/spec/mongo/operation/write/update_spec.rb +1 -1
- data/spec/mongo/server_selection_spec.rb +2 -2
- data/spec/support/authorization.rb +4 -2
- data/spec/support/server_selection.rb +25 -8
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest.yml +4 -10
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Nearest_non_matching.yml +6 -12
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Primary.yml +4 -6
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred.yml +4 -10
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/PrimaryPreferred_non_matching.yml +6 -12
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary.yml +4 -10
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred.yml +4 -10
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/SecondaryPreferred_non_matching.yml +6 -12
- data/spec/support/server_selection/selection/ReplicaSetNoPrimary/read/Secondary_non_matching.yml +6 -12
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest.yml +9 -17
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Nearest_non_matching.yml +9 -17
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Primary.yml +6 -10
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred.yml +11 -21
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/PrimaryPreferred_non_matching.yml +11 -18
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred.yml +31 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/SecondaryPreferred_non_matching.yml +29 -0
- data/spec/support/server_selection/selection/ReplicaSetWithPrimary/read/Secondary_non_matching.yml +26 -0
- data/spec/support/server_selection/selection/Sharded/read/SecondaryPreferred.yml +4 -10
- data/spec/support/server_selection/selection/Single/read/SecondaryPreferred.yml +2 -6
- data/spec/support/server_selection/selection/Unknown/read/SecondaryPreferred.yml +0 -2
- data/spec/support/shared/bulk_write.rb +109 -72
- metadata +29 -10
- metadata.gz.sig +0 -0
- data/lib/mongo/bulk/bulk_write.rb +0 -307
- data/lib/mongo/operation/batchable.rb +0 -103
@@ -61,7 +61,7 @@ describe Mongo::Collection::View::Aggregation do
|
|
61
61
|
end
|
62
62
|
|
63
63
|
after do
|
64
|
-
authorized_collection.find.
|
64
|
+
authorized_collection.find.delete_many
|
65
65
|
end
|
66
66
|
|
67
67
|
context 'when a block is provided' do
|
@@ -108,6 +108,19 @@ describe Mongo::Collection::View::Aggregation do
|
|
108
108
|
expect(aggregation.each).to be_a(Enumerator)
|
109
109
|
end
|
110
110
|
end
|
111
|
+
|
112
|
+
context 'when an invalid pipeline operator is provided' do
|
113
|
+
|
114
|
+
let(:pipeline) do
|
115
|
+
[{ '$invalid' => 'operator' }]
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'raises an OperationFailure' do
|
119
|
+
expect {
|
120
|
+
aggregation.to_a
|
121
|
+
}.to raise_error(Mongo::Error::OperationFailure)
|
122
|
+
end
|
123
|
+
end
|
111
124
|
end
|
112
125
|
|
113
126
|
describe '#initialize' do
|
@@ -48,7 +48,7 @@ describe Mongo::Collection::View::MapReduce do
|
|
48
48
|
end
|
49
49
|
|
50
50
|
after do
|
51
|
-
authorized_collection.find.
|
51
|
+
authorized_collection.find.delete_many
|
52
52
|
end
|
53
53
|
|
54
54
|
let(:map_reduce) do
|
@@ -82,7 +82,7 @@ describe Mongo::Collection::View::MapReduce do
|
|
82
82
|
context 'when out is a collection' do
|
83
83
|
|
84
84
|
after do
|
85
|
-
authorized_client['output_collection'].find.
|
85
|
+
authorized_client['output_collection'].find.delete_many
|
86
86
|
end
|
87
87
|
|
88
88
|
context 'when the option is to replace' do
|
@@ -15,7 +15,7 @@ describe Mongo::Collection::View::Readable do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
after do
|
18
|
-
authorized_collection.find.
|
18
|
+
authorized_collection.find.delete_many
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '#allow_partial_results' do
|
@@ -200,7 +200,7 @@ describe Mongo::Collection::View::Readable do
|
|
200
200
|
end
|
201
201
|
|
202
202
|
after do
|
203
|
-
authorized_collection.find.
|
203
|
+
authorized_collection.find.delete_many
|
204
204
|
end
|
205
205
|
|
206
206
|
context 'when a selector is provided' do
|
@@ -15,7 +15,7 @@ describe Mongo::Collection::View::Writable do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
after do
|
18
|
-
authorized_collection.find.
|
18
|
+
authorized_collection.find.delete_many
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '#find_one_and_delete' do
|
@@ -263,7 +263,7 @@ describe Mongo::Collection::View::Writable do
|
|
263
263
|
end
|
264
264
|
end
|
265
265
|
|
266
|
-
describe '#
|
266
|
+
describe '#delete_many' do
|
267
267
|
|
268
268
|
context 'when a selector was provided' do
|
269
269
|
|
@@ -276,7 +276,7 @@ describe Mongo::Collection::View::Writable do
|
|
276
276
|
end
|
277
277
|
|
278
278
|
let(:response) do
|
279
|
-
view.
|
279
|
+
view.delete_many
|
280
280
|
end
|
281
281
|
|
282
282
|
it 'deletes the matching documents in the collection' do
|
@@ -291,7 +291,7 @@ describe Mongo::Collection::View::Writable do
|
|
291
291
|
end
|
292
292
|
|
293
293
|
let(:response) do
|
294
|
-
view.
|
294
|
+
view.delete_many
|
295
295
|
end
|
296
296
|
|
297
297
|
it 'deletes all the documents in the collection' do
|
@@ -300,7 +300,7 @@ describe Mongo::Collection::View::Writable do
|
|
300
300
|
end
|
301
301
|
end
|
302
302
|
|
303
|
-
describe '#
|
303
|
+
describe '#delete_one' do
|
304
304
|
|
305
305
|
context 'when a selector was provided' do
|
306
306
|
|
@@ -317,7 +317,7 @@ describe Mongo::Collection::View::Writable do
|
|
317
317
|
end
|
318
318
|
|
319
319
|
let(:response) do
|
320
|
-
view.
|
320
|
+
view.delete_one
|
321
321
|
end
|
322
322
|
|
323
323
|
it 'deletes the first matching document in the collection' do
|
@@ -332,7 +332,7 @@ describe Mongo::Collection::View::Writable do
|
|
332
332
|
end
|
333
333
|
|
334
334
|
let(:response) do
|
335
|
-
view.
|
335
|
+
view.delete_one
|
336
336
|
end
|
337
337
|
|
338
338
|
it 'deletes the first document in the collection' do
|
@@ -15,7 +15,7 @@ describe Mongo::Collection::View do
|
|
15
15
|
end
|
16
16
|
|
17
17
|
after do
|
18
|
-
authorized_collection.find.
|
18
|
+
authorized_collection.find.delete_many
|
19
19
|
end
|
20
20
|
|
21
21
|
describe '#==' do
|
@@ -116,7 +116,7 @@ describe Mongo::Collection::View do
|
|
116
116
|
end
|
117
117
|
|
118
118
|
after do
|
119
|
-
authorized_collection.find.
|
119
|
+
authorized_collection.find.delete_many
|
120
120
|
end
|
121
121
|
|
122
122
|
context 'when sending the initial query' do
|
@@ -401,9 +401,18 @@ describe Mongo::Collection::View do
|
|
401
401
|
end
|
402
402
|
end
|
403
403
|
|
404
|
-
|
405
|
-
|
406
|
-
|
404
|
+
context 'when a block is not provided' do
|
405
|
+
|
406
|
+
let(:enumerator) do
|
407
|
+
view.each
|
408
|
+
end
|
409
|
+
|
410
|
+
it 'returns an enumerator' do
|
411
|
+
enumerator.each do |doc|
|
412
|
+
expect(doc).to have_key('field')
|
413
|
+
end
|
414
|
+
end
|
415
|
+
end
|
407
416
|
end
|
408
417
|
|
409
418
|
describe '#hash' do
|
@@ -262,7 +262,7 @@ describe Mongo::Collection do
|
|
262
262
|
end
|
263
263
|
|
264
264
|
after do
|
265
|
-
authorized_collection.find.
|
265
|
+
authorized_collection.find.delete_many
|
266
266
|
end
|
267
267
|
|
268
268
|
let(:view) do
|
@@ -280,7 +280,7 @@ describe Mongo::Collection do
|
|
280
280
|
describe '#insert_many' do
|
281
281
|
|
282
282
|
after do
|
283
|
-
authorized_collection.find.
|
283
|
+
authorized_collection.find.delete_many
|
284
284
|
end
|
285
285
|
|
286
286
|
let(:result) do
|
@@ -299,7 +299,7 @@ describe Mongo::Collection do
|
|
299
299
|
describe '#insert_one' do
|
300
300
|
|
301
301
|
after do
|
302
|
-
authorized_collection.find.
|
302
|
+
authorized_collection.find.delete_many
|
303
303
|
end
|
304
304
|
|
305
305
|
let(:result) do
|
@@ -339,11 +339,11 @@ describe Mongo::Collection do
|
|
339
339
|
end
|
340
340
|
|
341
341
|
before do
|
342
|
-
authorized_collection.indexes.
|
342
|
+
authorized_collection.indexes.create_one(index_spec, unique: true)
|
343
343
|
end
|
344
344
|
|
345
345
|
after do
|
346
|
-
authorized_collection.indexes.
|
346
|
+
authorized_collection.indexes.drop_one('name_1')
|
347
347
|
end
|
348
348
|
|
349
349
|
it 'returns a list of indexes' do
|
data/spec/mongo/cursor_spec.rb
CHANGED
@@ -33,7 +33,7 @@ describe Mongo::Cursor do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
after do
|
36
|
-
authorized_collection.find.
|
36
|
+
authorized_collection.find.delete_many
|
37
37
|
end
|
38
38
|
|
39
39
|
it 'returns the correct amount' do
|
@@ -58,7 +58,7 @@ describe Mongo::Cursor do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
after do
|
61
|
-
authorized_collection.find.
|
61
|
+
authorized_collection.find.delete_many
|
62
62
|
end
|
63
63
|
|
64
64
|
it 'returns the correct amount' do
|
@@ -84,7 +84,7 @@ describe Mongo::Cursor do
|
|
84
84
|
end
|
85
85
|
|
86
86
|
after do
|
87
|
-
authorized_collection.find.
|
87
|
+
authorized_collection.find.delete_many
|
88
88
|
end
|
89
89
|
|
90
90
|
context 'when a limit is provided' do
|
data/spec/mongo/database_spec.rb
CHANGED
@@ -126,11 +126,9 @@ describe Mongo::Database do
|
|
126
126
|
described_class.new(authorized_client, 'invalid_database')
|
127
127
|
end
|
128
128
|
|
129
|
-
it 'returns an empty list', if:
|
129
|
+
it 'returns an empty list', if: write_command_enabled? do
|
130
130
|
expect(database.collections).to be_empty
|
131
131
|
end
|
132
|
-
|
133
|
-
pending 'raises an exception' # 2.6
|
134
132
|
end
|
135
133
|
|
136
134
|
context 'when the user is not authorized', unless: sharded? do
|
@@ -139,13 +137,11 @@ describe Mongo::Database do
|
|
139
137
|
described_class.new(unauthorized_client, TEST_DB)
|
140
138
|
end
|
141
139
|
|
142
|
-
it 'raises an exception'
|
140
|
+
it 'raises an exception' do
|
143
141
|
expect {
|
144
142
|
database.collections
|
145
143
|
}.to raise_error(Mongo::Error::OperationFailure)
|
146
144
|
end
|
147
|
-
|
148
|
-
pending 'raises an exception' # 2.6 not authorized
|
149
145
|
end
|
150
146
|
end
|
151
147
|
|
@@ -267,8 +263,8 @@ describe Mongo::Database do
|
|
267
263
|
end
|
268
264
|
|
269
265
|
after do
|
270
|
-
fs.files_collection.find.
|
271
|
-
fs.chunks_collection.find.
|
266
|
+
fs.files_collection.find.delete_many
|
267
|
+
fs.chunks_collection.find.delete_many
|
272
268
|
end
|
273
269
|
|
274
270
|
let(:from_db) do
|
data/spec/mongo/grid/fs_spec.rb
CHANGED
@@ -40,8 +40,8 @@ describe Mongo::Grid::FS do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
after do
|
43
|
-
fs.files_collection.find.
|
44
|
-
fs.chunks_collection.find.
|
43
|
+
fs.files_collection.find.delete_many
|
44
|
+
fs.chunks_collection.find.delete_many
|
45
45
|
end
|
46
46
|
|
47
47
|
let(:from_db) do
|
@@ -70,8 +70,8 @@ describe Mongo::Grid::FS do
|
|
70
70
|
end
|
71
71
|
|
72
72
|
after do
|
73
|
-
fs.files_collection.find.
|
74
|
-
fs.chunks_collection.find.
|
73
|
+
fs.files_collection.find.delete_many
|
74
|
+
fs.chunks_collection.find.delete_many
|
75
75
|
end
|
76
76
|
|
77
77
|
let(:from_db) do
|
@@ -90,8 +90,8 @@ describe Mongo::Grid::FS do
|
|
90
90
|
context 'when inserting the file more than once' do
|
91
91
|
|
92
92
|
after do
|
93
|
-
fs.files_collection.find.
|
94
|
-
fs.chunks_collection.find.
|
93
|
+
fs.files_collection.find.delete_many
|
94
|
+
fs.chunks_collection.find.delete_many
|
95
95
|
end
|
96
96
|
|
97
97
|
it 'raises an error' do
|
@@ -103,7 +103,7 @@ describe Mongo::Grid::FS do
|
|
103
103
|
end
|
104
104
|
end
|
105
105
|
|
106
|
-
describe '#
|
106
|
+
describe '#delete_one' do
|
107
107
|
|
108
108
|
let(:fs) do
|
109
109
|
described_class.new(authorized_client.database)
|
@@ -115,7 +115,7 @@ describe Mongo::Grid::FS do
|
|
115
115
|
|
116
116
|
before do
|
117
117
|
fs.insert_one(file)
|
118
|
-
fs.
|
118
|
+
fs.delete_one(file)
|
119
119
|
end
|
120
120
|
|
121
121
|
let(:from_db) do
|
@@ -6,41 +6,33 @@ describe Mongo::Index::View do
|
|
6
6
|
described_class.new(authorized_collection)
|
7
7
|
end
|
8
8
|
|
9
|
-
describe '#
|
9
|
+
describe '#drop_one' do
|
10
10
|
|
11
11
|
let(:spec) do
|
12
12
|
{ another: -1 }
|
13
13
|
end
|
14
14
|
|
15
15
|
before do
|
16
|
-
view.
|
16
|
+
view.create_one(spec, unique: true)
|
17
17
|
end
|
18
18
|
|
19
|
-
context 'when
|
19
|
+
context 'when the index exists' do
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
view.drop(spec)
|
25
|
-
end
|
21
|
+
let(:result) do
|
22
|
+
view.drop_one('another_-1')
|
23
|
+
end
|
26
24
|
|
27
|
-
|
28
|
-
|
29
|
-
end
|
25
|
+
it 'drops the index' do
|
26
|
+
expect(result).to be_successful
|
30
27
|
end
|
31
28
|
end
|
32
29
|
|
33
|
-
context 'when
|
34
|
-
|
35
|
-
context 'when the index exists' do
|
36
|
-
|
37
|
-
let(:result) do
|
38
|
-
view.drop('another_-1')
|
39
|
-
end
|
30
|
+
context 'when passing a * as the name' do
|
40
31
|
|
41
|
-
|
42
|
-
|
43
|
-
|
32
|
+
it 'raises an exception' do
|
33
|
+
expect {
|
34
|
+
view.drop_one('*')
|
35
|
+
}.to raise_error(Mongo::Error::MultiIndexDrop)
|
44
36
|
end
|
45
37
|
end
|
46
38
|
end
|
@@ -52,7 +44,7 @@ describe Mongo::Index::View do
|
|
52
44
|
end
|
53
45
|
|
54
46
|
before do
|
55
|
-
view.
|
47
|
+
view.create_one(spec, unique: true)
|
56
48
|
end
|
57
49
|
|
58
50
|
context 'when indexes exists' do
|
@@ -67,7 +59,76 @@ describe Mongo::Index::View do
|
|
67
59
|
end
|
68
60
|
end
|
69
61
|
|
70
|
-
describe '#
|
62
|
+
describe '#create_many' do
|
63
|
+
|
64
|
+
context 'when the indexes are created' do
|
65
|
+
|
66
|
+
context 'when passing multi-args' do
|
67
|
+
|
68
|
+
let(:result) do
|
69
|
+
view.create_many(
|
70
|
+
{ key: { random: 1 }, unique: true },
|
71
|
+
{ key: { testing: -1 }, unique: true }
|
72
|
+
)
|
73
|
+
end
|
74
|
+
|
75
|
+
after do
|
76
|
+
view.drop_one('random_1')
|
77
|
+
view.drop_one('testing_-1')
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'returns ok' do
|
81
|
+
expect(result).to be_successful
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context 'when passing an array' do
|
86
|
+
|
87
|
+
let(:result) do
|
88
|
+
view.create_many([
|
89
|
+
{ key: { random: 1 }, unique: true },
|
90
|
+
{ key: { testing: -1 }, unique: true }
|
91
|
+
])
|
92
|
+
end
|
93
|
+
|
94
|
+
after do
|
95
|
+
view.drop_one('random_1')
|
96
|
+
view.drop_one('testing_-1')
|
97
|
+
end
|
98
|
+
|
99
|
+
it 'returns ok' do
|
100
|
+
expect(result).to be_successful
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context 'when index creation fails' do
|
105
|
+
|
106
|
+
let(:spec) do
|
107
|
+
{ name: 1 }
|
108
|
+
end
|
109
|
+
|
110
|
+
before do
|
111
|
+
view.create_one(spec, unique: true)
|
112
|
+
end
|
113
|
+
|
114
|
+
after do
|
115
|
+
view.drop_one('name_1')
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'raises an exception', if: write_command_enabled? do
|
119
|
+
expect {
|
120
|
+
view.create_many([{ key: { name: 1 }, unique: false }])
|
121
|
+
}.to raise_error(Mongo::Error::OperationFailure)
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'does not raise an exception', unless: write_command_enabled? do
|
125
|
+
expect(view.create_many([{ key: { name: 1 }, unique: false }])).to be_successful
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe '#create_one' do
|
71
132
|
|
72
133
|
context 'when the index is created' do
|
73
134
|
|
@@ -76,11 +137,11 @@ describe Mongo::Index::View do
|
|
76
137
|
end
|
77
138
|
|
78
139
|
let(:result) do
|
79
|
-
view.
|
140
|
+
view.create_one(spec, unique: true)
|
80
141
|
end
|
81
142
|
|
82
143
|
after do
|
83
|
-
view.
|
144
|
+
view.drop_one('random_1')
|
84
145
|
end
|
85
146
|
|
86
147
|
it 'returns ok' do
|
@@ -95,21 +156,21 @@ describe Mongo::Index::View do
|
|
95
156
|
end
|
96
157
|
|
97
158
|
before do
|
98
|
-
view.
|
159
|
+
view.create_one(spec, unique: true)
|
99
160
|
end
|
100
161
|
|
101
162
|
after do
|
102
|
-
view.
|
163
|
+
view.drop_one('name_1')
|
103
164
|
end
|
104
165
|
|
105
166
|
it 'raises an exception', if: write_command_enabled? do
|
106
167
|
expect {
|
107
|
-
view.
|
168
|
+
view.create_one(spec, unique: false)
|
108
169
|
}.to raise_error(Mongo::Error::OperationFailure)
|
109
170
|
end
|
110
171
|
|
111
172
|
it 'does not raise an exception', unless: write_command_enabled? do
|
112
|
-
expect(view.
|
173
|
+
expect(view.create_one(spec, unique: false)).to be_successful
|
113
174
|
end
|
114
175
|
end
|
115
176
|
|
@@ -120,11 +181,11 @@ describe Mongo::Index::View do
|
|
120
181
|
end
|
121
182
|
|
122
183
|
let!(:result) do
|
123
|
-
view.
|
184
|
+
view.create_one(spec, unique: true, name: 'random_name')
|
124
185
|
end
|
125
186
|
|
126
187
|
after do
|
127
|
-
view.
|
188
|
+
view.drop_one('random_name')
|
128
189
|
end
|
129
190
|
|
130
191
|
it 'returns ok' do
|
@@ -144,11 +205,11 @@ describe Mongo::Index::View do
|
|
144
205
|
end
|
145
206
|
|
146
207
|
let!(:result) do
|
147
|
-
view.
|
208
|
+
view.create_one(spec, unique: true, name: 'random_name')
|
148
209
|
end
|
149
210
|
|
150
211
|
after do
|
151
|
-
view.
|
212
|
+
view.drop_one('random_name')
|
152
213
|
end
|
153
214
|
|
154
215
|
context 'when providing a name' do
|
@@ -190,11 +251,11 @@ describe Mongo::Index::View do
|
|
190
251
|
end
|
191
252
|
|
192
253
|
before do
|
193
|
-
view.
|
254
|
+
view.create_one(spec, unique: true)
|
194
255
|
end
|
195
256
|
|
196
257
|
after do
|
197
|
-
view.
|
258
|
+
view.drop_one('name_1')
|
198
259
|
end
|
199
260
|
|
200
261
|
let(:indexes) do
|
@@ -223,4 +284,47 @@ describe Mongo::Index::View do
|
|
223
284
|
end
|
224
285
|
end
|
225
286
|
end
|
287
|
+
|
288
|
+
describe '#normalize_models' do
|
289
|
+
|
290
|
+
context 'when providing options' do
|
291
|
+
|
292
|
+
let(:options) do
|
293
|
+
{
|
294
|
+
:key => { :name => 1 },
|
295
|
+
:bucket_size => 5,
|
296
|
+
:default_language => 'deutsch',
|
297
|
+
:expire_after => 10,
|
298
|
+
:language_override => 'language',
|
299
|
+
:sphere_version => 1,
|
300
|
+
:storage_engine => 'wiredtiger',
|
301
|
+
:text_version => 2,
|
302
|
+
:version => 1
|
303
|
+
}
|
304
|
+
end
|
305
|
+
|
306
|
+
let(:models) do
|
307
|
+
view.send(:normalize_models, [ options ])
|
308
|
+
end
|
309
|
+
|
310
|
+
let(:expected) do
|
311
|
+
{
|
312
|
+
:key => { :name => 1 },
|
313
|
+
:name => 'name_1',
|
314
|
+
:bucketSize => 5,
|
315
|
+
:default_language => 'deutsch',
|
316
|
+
:expireAfterSeconds => 10,
|
317
|
+
:language_override => 'language',
|
318
|
+
:'2dsphereIndexVersion' => 1,
|
319
|
+
:storageEngine => 'wiredtiger',
|
320
|
+
:textIndexVersion => 2,
|
321
|
+
:v => 1
|
322
|
+
}
|
323
|
+
end
|
324
|
+
|
325
|
+
it 'maps the ruby options to the server options' do
|
326
|
+
expect(models).to eq([ expected ])
|
327
|
+
end
|
328
|
+
end
|
329
|
+
end
|
226
330
|
end
|