mongo 2.2.2 → 2.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -17,5 +17,5 @@ module Mongo
17
17
  # The current version of the driver.
18
18
  #
19
19
  # @since 2.0.0
20
- VERSION = '2.2.2'.freeze
20
+ VERSION = '2.2.3'.freeze
21
21
  end
@@ -8,7 +8,7 @@ describe Mongo::BulkWrite do
8
8
 
9
9
  after do
10
10
  authorized_collection.delete_many
11
- collection_with_validator.drop()
11
+ collection_with_validator.drop
12
12
  end
13
13
 
14
14
  let(:collection_with_validator) do
@@ -18,6 +18,10 @@ describe Mongo::BulkWrite do
18
18
  end
19
19
  end
20
20
 
21
+ let(:collection_invalid_write_concern) do
22
+ authorized_collection.client.with(write: { w: (WRITE_CONCERN[:w] + 1) })[authorized_collection.name]
23
+ end
24
+
21
25
  describe '#execute' do
22
26
 
23
27
  shared_examples_for 'an executable bulk write' do
@@ -81,6 +85,32 @@ describe Mongo::BulkWrite do
81
85
  expect(result.inserted_count).to eq(1)
82
86
  expect(authorized_collection.find(_id: 0).count).to eq(1)
83
87
  end
88
+
89
+ it 'only inserts that document' do
90
+ result
91
+ expect(authorized_collection.find.first['_id']).to eq(0)
92
+ end
93
+
94
+ context 'when there is a write concern error' do
95
+
96
+ context 'when the server version is < 2.6' do
97
+
98
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
99
+ expect {
100
+ bulk_write_invalid_write_concern.execute
101
+ }.to raise_error(Mongo::Error::BulkWriteError)
102
+ end
103
+ end
104
+
105
+ context 'when the server version has write commands enabled' do
106
+
107
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
108
+ expect {
109
+ bulk_write_invalid_write_concern.execute
110
+ }.to raise_error(Mongo::Error::OperationFailure)
111
+ end
112
+ end
113
+ end
84
114
  end
85
115
 
86
116
  context 'when provided multiple insert ones' do
@@ -101,6 +131,40 @@ describe Mongo::BulkWrite do
101
131
  expect(result.inserted_count).to eq(3)
102
132
  expect(authorized_collection.find(_id: { '$in'=> [ 0, 1, 2 ]}).count).to eq(3)
103
133
  end
134
+
135
+ context 'when there is a write failure' do
136
+
137
+ let(:requests) do
138
+ [{ insert_one: { _id: 1 }}, { insert_one: { _id: 1 }}]
139
+ end
140
+
141
+ it 'raises a BulkWriteError' do
142
+ expect {
143
+ bulk_write.execute
144
+ }.to raise_error(Mongo::Error::BulkWriteError)
145
+ end
146
+ end
147
+
148
+ context 'when there is a write concern error' do
149
+
150
+ context 'when the server version is < 2.6' do
151
+
152
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
153
+ expect {
154
+ bulk_write_invalid_write_concern.execute
155
+ }.to raise_error(Mongo::Error::BulkWriteError)
156
+ end
157
+ end
158
+
159
+ context 'when the server version has write commands enabled' do
160
+
161
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
162
+ expect {
163
+ bulk_write_invalid_write_concern.execute
164
+ }.to raise_error(Mongo::Error::OperationFailure)
165
+ end
166
+ end
167
+ end
104
168
  end
105
169
 
106
170
  context 'when provided a single delete one' do
@@ -121,6 +185,47 @@ describe Mongo::BulkWrite do
121
185
  expect(result.deleted_count).to eq(1)
122
186
  expect(authorized_collection.find(_id: 0).count).to eq(0)
123
187
  end
188
+
189
+ context 'when there is a write concern error' do
190
+
191
+ context 'when the server version is < 2.6' do
192
+
193
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
194
+ expect {
195
+ bulk_write_invalid_write_concern.execute
196
+ }.to raise_error(Mongo::Error::BulkWriteError)
197
+ end
198
+ end
199
+
200
+ context 'when the server version has write commands enabled' do
201
+
202
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
203
+ expect {
204
+ bulk_write_invalid_write_concern.execute
205
+ }.to raise_error(Mongo::Error::OperationFailure)
206
+ end
207
+ end
208
+ end
209
+
210
+ context 'when multiple documents match delete selector' do
211
+
212
+ before do
213
+ authorized_collection.insert_many([{ a: 1 }, { a: 1 }])
214
+ end
215
+
216
+ let(:requests) do
217
+ [{ delete_one: { filter: { a: 1 }}}]
218
+ end
219
+
220
+ it 'reports n_removed correctly' do
221
+ expect(bulk_write.execute.deleted_count).to eq(1)
222
+ end
223
+
224
+ it 'deletes only matching documents' do
225
+ bulk_write.execute
226
+ expect(authorized_collection.find(a: 1).count).to eq(1)
227
+ end
228
+ end
124
229
  end
125
230
 
126
231
  context 'when provided multiple delete ones' do
@@ -147,6 +252,27 @@ describe Mongo::BulkWrite do
147
252
  expect(result.deleted_count).to eq(3)
148
253
  expect(authorized_collection.find(_id: { '$in'=> [ 0, 1, 2 ]}).count).to eq(0)
149
254
  end
255
+
256
+ context 'when there is a write concern error' do
257
+
258
+ context 'when the server version is < 2.6' do
259
+
260
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
261
+ expect {
262
+ bulk_write_invalid_write_concern.execute
263
+ }.to raise_error(Mongo::Error::BulkWriteError)
264
+ end
265
+ end
266
+
267
+ context 'when the server version has write commands enabled' do
268
+
269
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
270
+ expect {
271
+ bulk_write_invalid_write_concern.execute
272
+ }.to raise_error(Mongo::Error::OperationFailure)
273
+ end
274
+ end
275
+ end
150
276
  end
151
277
 
152
278
  context 'when provided a single delete many' do
@@ -167,6 +293,27 @@ describe Mongo::BulkWrite do
167
293
  expect(result.deleted_count).to eq(1)
168
294
  expect(authorized_collection.find(_id: 0).count).to eq(0)
169
295
  end
296
+
297
+ context 'when there is a write concern error' do
298
+
299
+ context 'when the server version is < 2.6' do
300
+
301
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
302
+ expect {
303
+ bulk_write_invalid_write_concern.execute
304
+ }.to raise_error(Mongo::Error::BulkWriteError)
305
+ end
306
+ end
307
+
308
+ context 'when the server version has write commands enabled' do
309
+
310
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
311
+ expect {
312
+ bulk_write_invalid_write_concern.execute
313
+ }.to raise_error(Mongo::Error::OperationFailure)
314
+ end
315
+ end
316
+ end
170
317
  end
171
318
 
172
319
  context 'when provided multiple delete many ops' do
@@ -193,6 +340,27 @@ describe Mongo::BulkWrite do
193
340
  expect(result.deleted_count).to eq(3)
194
341
  expect(authorized_collection.find(_id: { '$in'=> [ 0, 1, 2 ]}).count).to eq(0)
195
342
  end
343
+
344
+ context 'when there is a write concern error' do
345
+
346
+ context 'when the server version is < 2.6' do
347
+
348
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
349
+ expect {
350
+ bulk_write_invalid_write_concern.execute
351
+ }.to raise_error(Mongo::Error::BulkWriteError)
352
+ end
353
+ end
354
+
355
+ context 'when the server version has write commands enabled' do
356
+
357
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
358
+ expect {
359
+ bulk_write_invalid_write_concern.execute
360
+ }.to raise_error(Mongo::Error::OperationFailure)
361
+ end
362
+ end
363
+ end
196
364
  end
197
365
 
198
366
  context 'when providing a single replace one' do
@@ -213,45 +381,492 @@ describe Mongo::BulkWrite do
213
381
  expect(result.modified_count).to eq(1)
214
382
  expect(authorized_collection.find(_id: 0).first[:name]).to eq('test')
215
383
  end
384
+
385
+ context 'when there is a write concern error' do
386
+
387
+ context 'when the server version is < 2.6' do
388
+
389
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
390
+ expect {
391
+ bulk_write_invalid_write_concern.execute
392
+ }.to raise_error(Mongo::Error::BulkWriteError)
393
+ end
394
+ end
395
+
396
+ context 'when the server version has write commands enabled' do
397
+
398
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
399
+ expect {
400
+ bulk_write_invalid_write_concern.execute
401
+ }.to raise_error(Mongo::Error::OperationFailure)
402
+ end
403
+ end
404
+ end
216
405
  end
217
406
 
218
407
  context 'when providing a single update one' do
219
408
 
220
- let(:requests) do
221
- [{ update_one: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}}}]
409
+ context 'when upsert is false' do
410
+
411
+ let(:requests) do
412
+ [{ update_one: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}}}]
413
+ end
414
+
415
+ let(:result) do
416
+ bulk_write.execute
417
+ end
418
+
419
+ before do
420
+ authorized_collection.insert_one({ _id: 0 })
421
+ end
422
+
423
+ it 'updates the document' do
424
+ result
425
+ expect(authorized_collection.find(_id: 0).first[:name]).to eq('test')
426
+ end
427
+
428
+ it 'reports the upserted id' do
429
+ expect(result.upserted_ids).to eq([])
430
+ end
431
+
432
+ it 'reports the upserted count' do
433
+ expect(result.upserted_count).to eq(0)
434
+ end
435
+
436
+ it 'reports the modified count' do
437
+ expect(result.modified_count).to eq(1)
438
+ end
439
+
440
+ it 'reports the matched count' do
441
+ expect(result.matched_count).to eq(1)
442
+ end
443
+
444
+ context 'when documents match but are not modified' do
445
+
446
+ before do
447
+ authorized_collection.insert_one({ a: 0 })
448
+ end
449
+
450
+ let(:requests) do
451
+ [{ update_one: { filter: { a: 0 }, update: { "$set" => { a: 0 }}}}]
452
+ end
453
+
454
+ it 'reports the upserted id' do
455
+ expect(result.upserted_ids).to eq([])
456
+ end
457
+
458
+ it 'reports the upserted count' do
459
+ expect(result.upserted_count).to eq(0)
460
+ end
461
+
462
+ it 'reports the modified count', if: write_command_enabled? do
463
+ expect(result.modified_count).to eq(0)
464
+ end
465
+
466
+ it 'reports the matched count' do
467
+ expect(result.matched_count).to eq(1)
468
+ end
469
+ end
470
+
471
+ context 'when the number of updates exceeds the max batch size', if: write_command_enabled? do
472
+
473
+ let(:requests) do
474
+ 1001.times.collect do |i|
475
+ { update_one: { filter: { a: i }, update: { "$set" => { a: i, b: 3 }}, upsert: true }}
476
+ end
477
+ end
478
+
479
+ it 'updates the documents and reports the correct number of upserted ids' do
480
+ expect(result.upserted_ids.size).to eq(1001)
481
+ expect(authorized_collection.find(b: 3).count).to eq(1001)
482
+ end
483
+ end
484
+
485
+ context 'when there is a write concern error' do
486
+
487
+ context 'when the server version is < 2.6' do
488
+
489
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
490
+ expect {
491
+ bulk_write_invalid_write_concern.execute
492
+ }.to raise_error(Mongo::Error::BulkWriteError)
493
+ end
494
+ end
495
+
496
+ context 'when the server version has write commands enabled' do
497
+
498
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
499
+ expect {
500
+ bulk_write_invalid_write_concern.execute
501
+ }.to raise_error(Mongo::Error::OperationFailure)
502
+ end
503
+ end
504
+ end
222
505
  end
223
506
 
224
- let(:result) do
225
- bulk_write.execute
507
+ context 'when upsert is true' do
508
+
509
+ let(:requests) do
510
+ [{ update_one: { filter: { _id: 0 }, update: { "$set" => { name: 'test' } }, upsert: true }}]
511
+ end
512
+
513
+ let(:result) do
514
+ bulk_write.execute
515
+ end
516
+
517
+ it 'updates the document' do
518
+ result
519
+ expect(authorized_collection.find(_id: 0).first[:name]).to eq('test')
520
+ end
521
+
522
+ it 'reports the upserted count' do
523
+ expect(result.upserted_count).to eq(1)
524
+ end
525
+
526
+ it 'reports the matched count' do
527
+ expect(result.modified_count).to eq(0)
528
+ end
529
+
530
+ it 'reports the modified count' do
531
+ expect(result.modified_count).to eq(0)
532
+ end
533
+
534
+ it 'reports the upserted id', if: write_command_enabled? do
535
+ expect(result.upserted_ids).to eq([0])
536
+ end
537
+
538
+ context 'when there is a write concern error' do
539
+
540
+ context 'when the server version is < 2.6' do
541
+
542
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
543
+ expect {
544
+ bulk_write_invalid_write_concern.execute
545
+ }.to raise_error(Mongo::Error::BulkWriteError)
546
+ end
547
+ end
548
+
549
+ context 'when the server version has write commands enabled' do
550
+
551
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
552
+ expect {
553
+ bulk_write_invalid_write_concern.execute
554
+ }.to raise_error(Mongo::Error::OperationFailure)
555
+ end
556
+ end
557
+ end
226
558
  end
559
+ end
227
560
 
228
- before do
229
- authorized_collection.insert_one({ _id: 0 })
561
+ context 'when providing multiple update ones' do
562
+
563
+ context 'when upsert is false' do
564
+
565
+ let(:requests) do
566
+ [{ update_one: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}}},
567
+ { update_one: { filter: { _id: 1 }, update: { "$set" => { name: 'test' }}}}]
568
+ end
569
+
570
+ let(:result) do
571
+ bulk_write.execute
572
+ end
573
+
574
+ before do
575
+ authorized_collection.insert_many([{ _id: 0 }, { _id: 1 }])
576
+ end
577
+
578
+ it 'updates the document' do
579
+ result
580
+ expect(authorized_collection.find(name: 'test').count).to eq(2)
581
+ end
582
+
583
+ it 'reports the upserted id' do
584
+ expect(result.upserted_ids).to eq([])
585
+ end
586
+
587
+ it 'reports the upserted count' do
588
+ expect(result.upserted_count).to eq(0)
589
+ end
590
+
591
+ it 'reports the modified count' do
592
+ expect(result.modified_count).to eq(2)
593
+ end
594
+
595
+ it 'reports the matched count' do
596
+ expect(result.modified_count).to eq(2)
597
+ end
598
+
599
+
600
+ context 'when there is a mix of updates and matched without an update' do
601
+
602
+ let(:requests) do
603
+ [{ update_one: { filter: { a: 0 }, update: { "$set" => { a: 1 }}}},
604
+ { update_one: { filter: { a: 2 }, update: { "$set" => { a: 2 }}}}]
605
+ end
606
+
607
+ let(:result) do
608
+ bulk_write.execute
609
+ end
610
+
611
+ before do
612
+ authorized_collection.insert_many([{ a: 0 }, { a: 2 }])
613
+ end
614
+
615
+ it 'updates the document' do
616
+ result
617
+ expect(authorized_collection.find(a: { '$lt' => 3 }).count).to eq(2)
618
+ end
619
+
620
+ it 'reports the upserted id' do
621
+ expect(result.upserted_ids).to eq([])
622
+ end
623
+
624
+ it 'reports the upserted count' do
625
+ expect(result.upserted_count).to eq(0)
626
+ end
627
+
628
+ it 'reports the modified count', if: write_command_enabled? do
629
+ expect(result.modified_count).to eq(1)
630
+ end
631
+
632
+ it 'reports the modified count', unless: write_command_enabled? do
633
+ expect(result.modified_count).to eq(2)
634
+ end
635
+
636
+ it 'reports the matched count' do
637
+ expect(result.matched_count).to eq(2)
638
+ end
639
+ end
640
+
641
+ context 'when there is a write concern error' do
642
+
643
+ context 'when the server version is < 2.6' do
644
+
645
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
646
+ expect {
647
+ bulk_write_invalid_write_concern.execute
648
+ }.to raise_error(Mongo::Error::BulkWriteError)
649
+ end
650
+ end
651
+
652
+ context 'when the server version has write commands enabled' do
653
+
654
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
655
+ expect {
656
+ bulk_write_invalid_write_concern.execute
657
+ }.to raise_error(Mongo::Error::OperationFailure)
658
+ end
659
+ end
660
+ end
230
661
  end
231
662
 
232
- it 'updates the document' do
233
- expect(result.modified_count).to eq(1)
234
- expect(authorized_collection.find(_id: 0).first[:name]).to eq('test')
663
+ context 'when upsert is true' do
664
+
665
+ let(:requests) do
666
+ [{ update_one: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}, upsert: true }},
667
+ { update_one: { filter: { _id: 1 }, update: { "$set" => { name: 'test1' }}, upsert: true }}]
668
+ end
669
+
670
+ let(:result) do
671
+ bulk_write.execute
672
+ end
673
+
674
+ it 'updates the document' do
675
+ expect(result.modified_count).to eq(0)
676
+ expect(authorized_collection.find(name: { '$in' => ['test', 'test1'] }).count).to eq(2)
677
+ end
678
+
679
+ it 'reports the upserted count' do
680
+ expect(result.upserted_count).to eq(2)
681
+ end
682
+
683
+ it 'reports the modified count' do
684
+ expect(result.modified_count).to eq(0)
685
+ end
686
+
687
+ it 'reports the matched count' do
688
+ expect(result.matched_count).to eq(0)
689
+ end
690
+
691
+ it 'reports the upserted id', if: write_command_enabled? do
692
+ expect(result.upserted_ids).to eq([0, 1])
693
+ end
694
+
695
+ context 'when there is a mix of updates, upsert, and matched without an update' do
696
+
697
+ let(:requests) do
698
+ [{ update_one: { filter: { a: 0 }, update: { "$set" => { a: 1 }}}},
699
+ { update_one: { filter: { a: 2 }, update: { "$set" => { a: 2 }}}},
700
+ { update_one: { filter: { _id: 3 }, update: { "$set" => { a: 4 }}, upsert: true }}]
701
+ end
702
+
703
+ let(:result) do
704
+ bulk_write.execute
705
+ end
706
+
707
+ before do
708
+ authorized_collection.insert_many([{ a: 0 }, { a: 2 }])
709
+ end
710
+
711
+ it 'updates the documents' do
712
+ result
713
+ expect(authorized_collection.find(a: { '$lt' => 3 }).count).to eq(2)
714
+ expect(authorized_collection.find(a: 4).count).to eq(1)
715
+ end
716
+
717
+ it 'reports the upserted id', if: write_command_enabled? do
718
+ expect(result.upserted_ids).to eq([3])
719
+ end
720
+
721
+ it 'reports the upserted count' do
722
+ expect(result.upserted_count).to eq(1)
723
+ end
724
+
725
+ it 'reports the modified count', if: write_command_enabled? do
726
+ expect(result.modified_count).to eq(1)
727
+ end
728
+
729
+ it 'reports the modified count', unless: write_command_enabled? do
730
+ expect(result.modified_count).to eq(2)
731
+ end
732
+
733
+ it 'reports the matched count' do
734
+ expect(result.matched_count).to eq(2)
735
+ end
736
+ end
737
+
738
+ context 'when there is a write concern error' do
739
+
740
+ context 'when the server version is < 2.6' do
741
+
742
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
743
+ expect {
744
+ bulk_write_invalid_write_concern.execute
745
+ }.to raise_error(Mongo::Error::BulkWriteError)
746
+ end
747
+ end
748
+
749
+ context 'when the server version has write commands enabled' do
750
+
751
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
752
+ expect {
753
+ bulk_write_invalid_write_concern.execute
754
+ }.to raise_error(Mongo::Error::OperationFailure)
755
+ end
756
+ end
757
+ end
235
758
  end
236
759
  end
237
760
 
238
761
  context 'when providing a single update many' do
239
762
 
240
- let(:requests) do
241
- [{ update_many: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}}}]
242
- end
763
+ context 'when upsert is false' do
243
764
 
244
- let(:result) do
245
- bulk_write.execute
246
- end
765
+ let(:requests) do
766
+ [{ update_many: { filter: { a: 0 }, update: { "$set" => { name: 'test' }}}}]
767
+ end
247
768
 
248
- before do
249
- authorized_collection.insert_one({ _id: 0 })
769
+ let(:result) do
770
+ bulk_write.execute
771
+ end
772
+
773
+ before do
774
+ authorized_collection.insert_many([{ a: 0 }, { a: 0 }])
775
+ end
776
+
777
+ it 'updates the documents' do
778
+ expect(authorized_collection.find(a: 0).count).to eq(2)
779
+ end
780
+
781
+ it 'reports the upserted ids' do
782
+ expect(result.upserted_ids).to eq([])
783
+ end
784
+
785
+ it 'reports the upserted count' do
786
+ expect(result.upserted_count).to eq(0)
787
+ end
788
+
789
+ it 'reports the modified count' do
790
+ expect(result.modified_count).to eq(2)
791
+ end
792
+
793
+ it 'reports the matched count' do
794
+ expect(result.modified_count).to eq(2)
795
+ end
796
+
797
+ context 'when there is a write concern error' do
798
+
799
+ context 'when the server version is < 2.6' do
800
+
801
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
802
+ expect {
803
+ bulk_write_invalid_write_concern.execute
804
+ }.to raise_error(Mongo::Error::BulkWriteError)
805
+ end
806
+ end
807
+
808
+ context 'when the server version has write commands enabled' do
809
+
810
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
811
+ expect {
812
+ bulk_write_invalid_write_concern.execute
813
+ }.to raise_error(Mongo::Error::OperationFailure)
814
+ end
815
+ end
816
+ end
250
817
  end
251
818
 
252
- it 'updates the documents' do
253
- expect(result.modified_count).to eq(1)
254
- expect(authorized_collection.find(_id: 0).first[:name]).to eq('test')
819
+ context 'when upsert is true' do
820
+
821
+ let(:requests) do
822
+ [{ update_many: { filter: { _id: 0 }, update: { "$set" => { name: 'test' }}, upsert: true }}]
823
+ end
824
+
825
+ let(:result) do
826
+ bulk_write.execute
827
+ end
828
+
829
+ it 'updates the document' do
830
+ result
831
+ expect(authorized_collection.find(name: 'test').count).to eq(1)
832
+ end
833
+
834
+ it 'reports the upserted count' do
835
+ expect(result.upserted_count).to eq(1)
836
+ end
837
+
838
+ it 'reports the matched count' do
839
+ expect(result.matched_count).to eq(0)
840
+ end
841
+
842
+ it 'reports the modified count' do
843
+ expect(result.modified_count).to eq(0)
844
+ end
845
+
846
+ it 'reports the upserted id', if: write_command_enabled? do
847
+ expect(result.upserted_ids).to eq([0])
848
+ end
849
+
850
+ context 'when there is a write concern error' do
851
+
852
+ context 'when the server version is < 2.6' do
853
+
854
+ it 'raises a BulkWriteError', if: !write_command_enabled? && standalone? do
855
+ expect {
856
+ bulk_write_invalid_write_concern.execute
857
+ }.to raise_error(Mongo::Error::BulkWriteError)
858
+ end
859
+ end
860
+
861
+ context 'when the server version has write commands enabled' do
862
+
863
+ it 'raises an OperationFailure', if: write_command_enabled? && standalone? do
864
+ expect {
865
+ bulk_write_invalid_write_concern.execute
866
+ }.to raise_error(Mongo::Error::OperationFailure)
867
+ end
868
+ end
869
+ end
255
870
  end
256
871
  end
257
872
  end
@@ -302,6 +917,10 @@ describe Mongo::BulkWrite do
302
917
  it 'inserts the documents' do
303
918
  expect(result.inserted_count).to eq(1001)
304
919
  end
920
+
921
+ it 'combines the inserted ids' do
922
+ expect(result.inserted_ids.size).to eq(1001)
923
+ end
305
924
  end
306
925
  end
307
926
 
@@ -329,6 +948,10 @@ describe Mongo::BulkWrite do
329
948
  described_class.new(authorized_collection, requests, ordered: false)
330
949
  end
331
950
 
951
+ let(:bulk_write_invalid_write_concern) do
952
+ described_class.new(collection_invalid_write_concern, requests, ordered: false)
953
+ end
954
+
332
955
  it_behaves_like 'an executable bulk write'
333
956
  end
334
957
 
@@ -338,6 +961,10 @@ describe Mongo::BulkWrite do
338
961
  described_class.new(authorized_collection, requests, ordered: true)
339
962
  end
340
963
 
964
+ let(:bulk_write_invalid_write_concern) do
965
+ described_class.new(collection_invalid_write_concern, requests, ordered: true)
966
+ end
967
+
341
968
  it_behaves_like 'an executable bulk write'
342
969
  end
343
970
  end