mongo 2.0.0.beta → 2.0.0.rc
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
- 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
|