mongo 2.4.0.rc0 → 2.4.0.rc1
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 +1 -2
- data/lib/mongo/bulk_write/validatable.rb +3 -1
- data/lib/mongo/client.rb +30 -3
- data/lib/mongo/cluster/app_metadata.rb +7 -2
- data/lib/mongo/collection.rb +3 -1
- data/lib/mongo/collection/view.rb +3 -1
- data/lib/mongo/collection/view/aggregation.rb +3 -1
- data/lib/mongo/collection/view/builder/find_command.rb +20 -5
- data/lib/mongo/collection/view/map_reduce.rb +3 -1
- data/lib/mongo/collection/view/writable.rb +12 -2
- data/lib/mongo/cursor/builder/get_more_command.rb +3 -2
- data/lib/mongo/error/closed_stream.rb +1 -1
- data/lib/mongo/error/invalid_server_preference.rb +1 -1
- data/lib/mongo/index/view.rb +3 -1
- data/lib/mongo/operation/write/bulk/mergable.rb +1 -1
- data/lib/mongo/operation/write/create_index.rb +1 -1
- data/lib/mongo/operation/write/delete.rb +1 -1
- data/lib/mongo/operation/write/update.rb +1 -1
- data/lib/mongo/protocol/delete.rb +4 -1
- data/lib/mongo/protocol/get_more.rb +4 -1
- data/lib/mongo/protocol/insert.rb +7 -3
- data/lib/mongo/protocol/kill_cursors.rb +4 -1
- data/lib/mongo/protocol/message.rb +5 -1
- data/lib/mongo/protocol/query.rb +11 -4
- data/lib/mongo/protocol/update.rb +4 -1
- data/lib/mongo/server/connectable.rb +8 -2
- data/lib/mongo/server/connection_pool.rb +3 -1
- data/lib/mongo/server/monitor.rb +1 -0
- data/lib/mongo/socket.rb +16 -8
- data/lib/mongo/socket/ssl.rb +24 -9
- data/lib/mongo/uri.rb +6 -6
- data/lib/mongo/version.rb +1 -1
- data/mongo.gemspec +1 -1
- data/spec/mongo/bulk_write_spec.rb +117 -0
- data/spec/mongo/collection/view/aggregation_spec.rb +26 -0
- data/spec/mongo/collection/view/builder/find_command_spec.rb +244 -2
- data/spec/mongo/collection/view/map_reduce_spec.rb +13 -0
- data/spec/mongo/collection/view/readable_spec.rb +26 -0
- data/spec/mongo/collection/view/writable_spec.rb +104 -0
- data/spec/mongo/collection/view_spec.rb +13 -0
- data/spec/mongo/collection_spec.rb +226 -7
- data/spec/mongo/crud_spec.rb +5 -5
- data/spec/mongo/index/view_spec.rb +53 -0
- data/spec/mongo/server/connection_spec.rb +45 -26
- data/spec/mongo/socket/ssl_spec.rb +358 -22
- data/spec/spec_helper.rb +4 -0
- data/spec/support/authorization.rb +3 -3
- data/spec/support/certificates/client_cert.pem +21 -0
- data/spec/support/certificates/client_key.pem +28 -0
- data/spec/support/certificates/client_key_encrypted.pem +30 -0
- data/spec/support/crud.rb +67 -22
- data/spec/support/crud/read.rb +18 -36
- data/spec/support/crud/write.rb +0 -44
- data/spec/support/crud_tests/read/aggregate-collation.yml +17 -0
- data/spec/support/crud_tests/read/aggregate-out.yml +28 -0
- data/spec/support/crud_tests/read/aggregate.yml +1 -35
- data/spec/support/crud_tests/read/count-collation.yml +15 -0
- data/spec/support/crud_tests/read/count.yml +3 -15
- data/spec/support/crud_tests/read/distinct-collation.yml +17 -0
- data/spec/support/crud_tests/read/distinct.yml +1 -14
- data/spec/support/crud_tests/read/find-collation.yml +15 -0
- data/spec/support/crud_tests/read/find.yml +1 -12
- data/spec/support/crud_tests/write/deleteMany-collation.yml +22 -0
- data/spec/support/crud_tests/write/deleteMany.yml +1 -23
- data/spec/support/crud_tests/write/deleteOne-collation.yml +22 -0
- data/spec/support/crud_tests/write/deleteOne.yml +1 -21
- data/spec/support/crud_tests/write/findOneAndDelete-collation.yml +23 -0
- data/spec/support/crud_tests/write/findOneAndDelete.yml +2 -28
- data/spec/support/crud_tests/write/findOneAndReplace-collation.yml +24 -0
- data/spec/support/crud_tests/write/findOneAndReplace-upsert.yml +47 -0
- data/spec/support/crud_tests/write/findOneAndReplace.yml +13 -53
- data/spec/support/crud_tests/write/findOneAndUpdate-collation.yml +27 -0
- data/spec/support/crud_tests/write/findOneAndUpdate.yml +8 -51
- data/spec/support/crud_tests/write/insertMany.yml +1 -2
- data/spec/support/crud_tests/write/insertOne.yml +1 -2
- data/spec/support/crud_tests/write/replaceOne-collation.yml +23 -0
- data/spec/support/crud_tests/write/replaceOne-upsert.yml +48 -0
- data/spec/support/crud_tests/write/replaceOne.yml +11 -45
- data/spec/support/crud_tests/write/updateMany-collation.yml +27 -0
- data/spec/support/crud_tests/write/updateMany.yml +10 -42
- data/spec/support/crud_tests/write/updateOne-collation.yml +24 -0
- data/spec/support/crud_tests/write/updateOne.yml +7 -33
- data/spec/support/sdam/rs/new_primary_new_setversion.yml +1 -1
- data/spec/support/sdam/rs/null_election_id.yml +1 -0
- data/spec/support/sdam/rs/primary_disconnect_electionid.yml +2 -3
- data/spec/support/sdam/rs/primary_disconnect_setversion.yml +1 -2
- data/spec/support/sdam/single/direct_connection_rsarbiter.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rsprimary.yml +1 -1
- data/spec/support/sdam/single/direct_connection_rssecondary.yml +1 -1
- metadata +40 -4
- metadata.gz.sig +0 -0
@@ -187,6 +187,19 @@ describe Mongo::Collection::View do
|
|
187
187
|
result
|
188
188
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
189
189
|
end
|
190
|
+
|
191
|
+
context 'when a String key is used' do
|
192
|
+
|
193
|
+
let(:options) do
|
194
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'raises an exception' do
|
198
|
+
expect {
|
199
|
+
result
|
200
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
201
|
+
end
|
202
|
+
end
|
190
203
|
end
|
191
204
|
end
|
192
205
|
|
@@ -451,7 +451,7 @@ describe Mongo::Collection do
|
|
451
451
|
|
452
452
|
shared_examples 'a collection command with a collation option' do
|
453
453
|
|
454
|
-
let
|
454
|
+
let(:response) do
|
455
455
|
collection.create
|
456
456
|
end
|
457
457
|
|
@@ -474,10 +474,12 @@ describe Mongo::Collection do
|
|
474
474
|
end
|
475
475
|
|
476
476
|
it 'sets the collection with a collation' do
|
477
|
+
response
|
477
478
|
expect(collection_info['options']['collation']['locale']).to eq('fr')
|
478
479
|
end
|
479
480
|
|
480
481
|
it 'creates the collection in the database' do
|
482
|
+
response
|
481
483
|
expect(database.collection_names).to include('specs')
|
482
484
|
end
|
483
485
|
end
|
@@ -489,6 +491,19 @@ describe Mongo::Collection do
|
|
489
491
|
response
|
490
492
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
491
493
|
end
|
494
|
+
|
495
|
+
context 'when a String key is used' do
|
496
|
+
|
497
|
+
let(:options) do
|
498
|
+
{ 'collation' => { locale: 'fr' } }
|
499
|
+
end
|
500
|
+
|
501
|
+
it 'raises an exception' do
|
502
|
+
expect {
|
503
|
+
response
|
504
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
505
|
+
end
|
506
|
+
end
|
492
507
|
end
|
493
508
|
end
|
494
509
|
|
@@ -498,9 +513,7 @@ describe Mongo::Collection do
|
|
498
513
|
described_class.new(database, :specs, options)
|
499
514
|
end
|
500
515
|
|
501
|
-
|
502
|
-
it_behaves_like 'a collection command with a collation option'
|
503
|
-
end
|
516
|
+
it_behaves_like 'a collection command with a collation option'
|
504
517
|
end
|
505
518
|
|
506
519
|
context 'when instantiating a collection through the database' do
|
@@ -509,9 +522,7 @@ describe Mongo::Collection do
|
|
509
522
|
authorized_client[:specs, options]
|
510
523
|
end
|
511
524
|
|
512
|
-
|
513
|
-
it_behaves_like 'a collection command with a collation option'
|
514
|
-
end
|
525
|
+
it_behaves_like 'a collection command with a collation option'
|
515
526
|
end
|
516
527
|
end
|
517
528
|
end
|
@@ -1182,6 +1193,19 @@ describe Mongo::Collection do
|
|
1182
1193
|
result
|
1183
1194
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1184
1195
|
end
|
1196
|
+
|
1197
|
+
context 'when a String key is used' do
|
1198
|
+
|
1199
|
+
let(:options) do
|
1200
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
1201
|
+
end
|
1202
|
+
|
1203
|
+
it 'raises an exception' do
|
1204
|
+
expect {
|
1205
|
+
result
|
1206
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1207
|
+
end
|
1208
|
+
end
|
1185
1209
|
end
|
1186
1210
|
end
|
1187
1211
|
end
|
@@ -1239,6 +1263,19 @@ describe Mongo::Collection do
|
|
1239
1263
|
result
|
1240
1264
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1241
1265
|
end
|
1266
|
+
|
1267
|
+
context 'when a String key is used' do
|
1268
|
+
|
1269
|
+
let(:options) do
|
1270
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
1271
|
+
end
|
1272
|
+
|
1273
|
+
it 'raises an exception' do
|
1274
|
+
expect {
|
1275
|
+
result
|
1276
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1277
|
+
end
|
1278
|
+
end
|
1242
1279
|
end
|
1243
1280
|
end
|
1244
1281
|
end
|
@@ -1301,6 +1338,19 @@ describe Mongo::Collection do
|
|
1301
1338
|
result
|
1302
1339
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1303
1340
|
end
|
1341
|
+
|
1342
|
+
context 'when a String key is used' do
|
1343
|
+
|
1344
|
+
let(:options) do
|
1345
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
1346
|
+
end
|
1347
|
+
|
1348
|
+
it 'raises an exception' do
|
1349
|
+
expect {
|
1350
|
+
result
|
1351
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1352
|
+
end
|
1353
|
+
end
|
1304
1354
|
end
|
1305
1355
|
end
|
1306
1356
|
|
@@ -1414,6 +1464,19 @@ describe Mongo::Collection do
|
|
1414
1464
|
result
|
1415
1465
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1416
1466
|
end
|
1467
|
+
|
1468
|
+
context 'when a String key is used' do
|
1469
|
+
|
1470
|
+
let(:options) do
|
1471
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
1472
|
+
end
|
1473
|
+
|
1474
|
+
it 'raises an exception' do
|
1475
|
+
expect {
|
1476
|
+
result
|
1477
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1478
|
+
end
|
1479
|
+
end
|
1417
1480
|
end
|
1418
1481
|
end
|
1419
1482
|
|
@@ -1424,6 +1487,19 @@ describe Mongo::Collection do
|
|
1424
1487
|
result
|
1425
1488
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1426
1489
|
end
|
1490
|
+
|
1491
|
+
context 'when a String key is used' do
|
1492
|
+
|
1493
|
+
let(:options) do
|
1494
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
1495
|
+
end
|
1496
|
+
|
1497
|
+
it 'raises an exception' do
|
1498
|
+
expect {
|
1499
|
+
result
|
1500
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1501
|
+
end
|
1502
|
+
end
|
1427
1503
|
end
|
1428
1504
|
end
|
1429
1505
|
|
@@ -1526,6 +1602,19 @@ describe Mongo::Collection do
|
|
1526
1602
|
result
|
1527
1603
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1528
1604
|
end
|
1605
|
+
|
1606
|
+
context 'when a String key is used' do
|
1607
|
+
|
1608
|
+
let(:options) do
|
1609
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
1610
|
+
end
|
1611
|
+
|
1612
|
+
it 'raises an exception' do
|
1613
|
+
expect {
|
1614
|
+
result
|
1615
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1616
|
+
end
|
1617
|
+
end
|
1529
1618
|
end
|
1530
1619
|
end
|
1531
1620
|
|
@@ -1536,6 +1625,19 @@ describe Mongo::Collection do
|
|
1536
1625
|
result
|
1537
1626
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1538
1627
|
end
|
1628
|
+
|
1629
|
+
context 'when a String key is used' do
|
1630
|
+
|
1631
|
+
let(:options) do
|
1632
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
1633
|
+
end
|
1634
|
+
|
1635
|
+
it 'raises an exception' do
|
1636
|
+
expect {
|
1637
|
+
result
|
1638
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1639
|
+
end
|
1640
|
+
end
|
1539
1641
|
end
|
1540
1642
|
end
|
1541
1643
|
|
@@ -1882,6 +1984,19 @@ describe Mongo::Collection do
|
|
1882
1984
|
result
|
1883
1985
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1884
1986
|
end
|
1987
|
+
|
1988
|
+
context 'when a String key is used' do
|
1989
|
+
|
1990
|
+
let(:options) do
|
1991
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
1992
|
+
end
|
1993
|
+
|
1994
|
+
it 'raises an exception' do
|
1995
|
+
expect {
|
1996
|
+
result
|
1997
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1998
|
+
end
|
1999
|
+
end
|
1885
2000
|
end
|
1886
2001
|
end
|
1887
2002
|
|
@@ -1892,6 +2007,19 @@ describe Mongo::Collection do
|
|
1892
2007
|
result
|
1893
2008
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
1894
2009
|
end
|
2010
|
+
|
2011
|
+
context 'when a String key is used' do
|
2012
|
+
|
2013
|
+
let(:options) do
|
2014
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
2015
|
+
end
|
2016
|
+
|
2017
|
+
it 'raises an exception' do
|
2018
|
+
expect {
|
2019
|
+
result
|
2020
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2021
|
+
end
|
2022
|
+
end
|
1895
2023
|
end
|
1896
2024
|
end
|
1897
2025
|
|
@@ -2116,6 +2244,19 @@ describe Mongo::Collection do
|
|
2116
2244
|
result
|
2117
2245
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2118
2246
|
end
|
2247
|
+
|
2248
|
+
context 'when a String key is used' do
|
2249
|
+
|
2250
|
+
let(:options) do
|
2251
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
2252
|
+
end
|
2253
|
+
|
2254
|
+
it 'raises an exception' do
|
2255
|
+
expect {
|
2256
|
+
result
|
2257
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2258
|
+
end
|
2259
|
+
end
|
2119
2260
|
end
|
2120
2261
|
end
|
2121
2262
|
|
@@ -2126,6 +2267,19 @@ describe Mongo::Collection do
|
|
2126
2267
|
result
|
2127
2268
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2128
2269
|
end
|
2270
|
+
|
2271
|
+
context 'when a String key is used' do
|
2272
|
+
|
2273
|
+
let(:options) do
|
2274
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
2275
|
+
end
|
2276
|
+
|
2277
|
+
it 'raises an exception' do
|
2278
|
+
expect {
|
2279
|
+
result
|
2280
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2281
|
+
end
|
2282
|
+
end
|
2129
2283
|
end
|
2130
2284
|
end
|
2131
2285
|
|
@@ -2349,6 +2503,19 @@ describe Mongo::Collection do
|
|
2349
2503
|
result
|
2350
2504
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2351
2505
|
end
|
2506
|
+
|
2507
|
+
context 'when a String key is used' do
|
2508
|
+
|
2509
|
+
let(:options) do
|
2510
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
2511
|
+
end
|
2512
|
+
|
2513
|
+
it 'raises an exception' do
|
2514
|
+
expect {
|
2515
|
+
result
|
2516
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2517
|
+
end
|
2518
|
+
end
|
2352
2519
|
end
|
2353
2520
|
end
|
2354
2521
|
|
@@ -2359,6 +2526,19 @@ describe Mongo::Collection do
|
|
2359
2526
|
result
|
2360
2527
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2361
2528
|
end
|
2529
|
+
|
2530
|
+
context 'when a String key is used' do
|
2531
|
+
|
2532
|
+
let(:options) do
|
2533
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
2534
|
+
end
|
2535
|
+
|
2536
|
+
it 'raises an exception' do
|
2537
|
+
expect {
|
2538
|
+
result
|
2539
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2540
|
+
end
|
2541
|
+
end
|
2362
2542
|
end
|
2363
2543
|
end
|
2364
2544
|
|
@@ -2535,6 +2715,19 @@ describe Mongo::Collection do
|
|
2535
2715
|
result
|
2536
2716
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2537
2717
|
end
|
2718
|
+
|
2719
|
+
context 'when a String key is used' do
|
2720
|
+
|
2721
|
+
let(:options) do
|
2722
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
2723
|
+
end
|
2724
|
+
|
2725
|
+
it 'raises an exception' do
|
2726
|
+
expect {
|
2727
|
+
result
|
2728
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2729
|
+
end
|
2730
|
+
end
|
2538
2731
|
end
|
2539
2732
|
end
|
2540
2733
|
|
@@ -2831,6 +3024,19 @@ describe Mongo::Collection do
|
|
2831
3024
|
result
|
2832
3025
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
2833
3026
|
end
|
3027
|
+
|
3028
|
+
context 'when a String key is used' do
|
3029
|
+
|
3030
|
+
let(:options) do
|
3031
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
3032
|
+
end
|
3033
|
+
|
3034
|
+
it 'raises an exception' do
|
3035
|
+
expect {
|
3036
|
+
result
|
3037
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
3038
|
+
end
|
3039
|
+
end
|
2834
3040
|
end
|
2835
3041
|
end
|
2836
3042
|
|
@@ -3101,6 +3307,19 @@ describe Mongo::Collection do
|
|
3101
3307
|
result
|
3102
3308
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
3103
3309
|
end
|
3310
|
+
|
3311
|
+
context 'when a String key is used' do
|
3312
|
+
|
3313
|
+
let(:options) do
|
3314
|
+
{ 'collation' => { locale: 'en_US', strength: 2 } }
|
3315
|
+
end
|
3316
|
+
|
3317
|
+
it 'raises an exception' do
|
3318
|
+
expect {
|
3319
|
+
result
|
3320
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
3321
|
+
end
|
3322
|
+
end
|
3104
3323
|
end
|
3105
3324
|
end
|
3106
3325
|
|
data/spec/mongo/crud_spec.rb
CHANGED
@@ -24,13 +24,13 @@ describe 'CRUD' do
|
|
24
24
|
test.run(authorized_collection)
|
25
25
|
end
|
26
26
|
|
27
|
-
it
|
28
|
-
skip 'Test cannot be run on this server version' unless
|
29
|
-
expect(results).to
|
27
|
+
it 'returns the correct result' do
|
28
|
+
skip 'Test cannot be run on this server version' unless spec.server_version_satisfied?(authorized_client)
|
29
|
+
expect(results).to match_operation_result(test)
|
30
30
|
end
|
31
31
|
|
32
|
-
it 'has the correct data in the collection' do
|
33
|
-
skip 'Test cannot be run on this server version' unless
|
32
|
+
it 'has the correct data in the collection', if: test.outcome_collection_data do
|
33
|
+
skip 'Test cannot be run on this server version' unless spec.server_version_satisfied?(authorized_client)
|
34
34
|
results
|
35
35
|
expect(authorized_collection.find.to_a).to match_collection_data(test)
|
36
36
|
end
|
@@ -224,6 +224,23 @@ describe Mongo::Index::View do
|
|
224
224
|
result
|
225
225
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
226
226
|
end
|
227
|
+
|
228
|
+
context 'when a String key is used' do
|
229
|
+
|
230
|
+
let(:result) do
|
231
|
+
view.create_many(
|
232
|
+
{ key: { random: 1 },
|
233
|
+
unique: true,
|
234
|
+
'collation' => { locale: 'en_US', strength: 2 } }
|
235
|
+
)
|
236
|
+
end
|
237
|
+
|
238
|
+
it 'raises an exception' do
|
239
|
+
expect {
|
240
|
+
result
|
241
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
242
|
+
end
|
243
|
+
end
|
227
244
|
end
|
228
245
|
end
|
229
246
|
|
@@ -337,6 +354,23 @@ describe Mongo::Index::View do
|
|
337
354
|
result
|
338
355
|
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
339
356
|
end
|
357
|
+
|
358
|
+
context 'when a String key is used' do
|
359
|
+
|
360
|
+
let(:result) do
|
361
|
+
view.create_many([
|
362
|
+
{ key: { random: 1 },
|
363
|
+
unique: true,
|
364
|
+
'collation' => { locale: 'en_US', strength: 2 }},
|
365
|
+
])
|
366
|
+
end
|
367
|
+
|
368
|
+
it 'raises an exception' do
|
369
|
+
expect {
|
370
|
+
result
|
371
|
+
}.to raise_exception(Mongo::Error::UnsupportedCollation)
|
372
|
+
end
|
373
|
+
end
|
340
374
|
end
|
341
375
|
end
|
342
376
|
|
@@ -477,6 +511,25 @@ describe Mongo::Index::View do
|
|
477
511
|
end
|
478
512
|
end
|
479
513
|
end
|
514
|
+
|
515
|
+
context 'when the index is created on an subdocument field' do
|
516
|
+
|
517
|
+
let(:spec) do
|
518
|
+
{ 'sub_document.random' => 1 }
|
519
|
+
end
|
520
|
+
|
521
|
+
let(:result) do
|
522
|
+
view.create_one(spec, unique: true)
|
523
|
+
end
|
524
|
+
|
525
|
+
after do
|
526
|
+
begin; view.drop_one('sub_document.random_1'); rescue; end
|
527
|
+
end
|
528
|
+
|
529
|
+
it 'returns ok' do
|
530
|
+
expect(result).to be_successful
|
531
|
+
end
|
532
|
+
end
|
480
533
|
end
|
481
534
|
|
482
535
|
context 'when index creation fails' do
|