mongoid 7.1.0.rc0 → 7.1.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (143) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data.tar.gz.sig +0 -0
  4. data/CHANGELOG.md +6 -6
  5. data/LICENSE +1 -1
  6. data/README.md +5 -5
  7. data/Rakefile +14 -0
  8. data/lib/config/locales/en.yml +5 -5
  9. data/lib/mongoid.rb +3 -2
  10. data/lib/mongoid/association/accessors.rb +37 -2
  11. data/lib/mongoid/association/embedded/embeds_many.rb +2 -1
  12. data/lib/mongoid/association/embedded/embeds_one.rb +2 -1
  13. data/lib/mongoid/association/many.rb +3 -2
  14. data/lib/mongoid/association/proxy.rb +6 -4
  15. data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -1
  16. data/lib/mongoid/association/referenced/belongs_to/eager.rb +38 -2
  17. data/lib/mongoid/association/referenced/eager.rb +29 -9
  18. data/lib/mongoid/association/referenced/has_many/enumerable.rb +2 -22
  19. data/lib/mongoid/association/referenced/has_many/proxy.rb +3 -2
  20. data/lib/mongoid/atomic.rb +13 -3
  21. data/lib/mongoid/attributes.rb +28 -20
  22. data/lib/mongoid/clients/factory.rb +2 -2
  23. data/lib/mongoid/clients/options.rb +8 -8
  24. data/lib/mongoid/clients/sessions.rb +20 -4
  25. data/lib/mongoid/clients/storage_options.rb +5 -5
  26. data/lib/mongoid/config.rb +42 -12
  27. data/lib/mongoid/config/options.rb +5 -2
  28. data/lib/mongoid/contextual.rb +5 -4
  29. data/lib/mongoid/contextual/geo_near.rb +3 -2
  30. data/lib/mongoid/contextual/map_reduce.rb +3 -2
  31. data/lib/mongoid/contextual/mongo.rb +2 -1
  32. data/lib/mongoid/criteria.rb +23 -4
  33. data/lib/mongoid/criteria/modifiable.rb +2 -1
  34. data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
  35. data/lib/mongoid/criteria/queryable/extensions/regexp.rb +6 -6
  36. data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +12 -0
  37. data/lib/mongoid/criteria/queryable/mergeable.rb +75 -8
  38. data/lib/mongoid/criteria/queryable/pipeline.rb +3 -2
  39. data/lib/mongoid/criteria/queryable/selectable.rb +120 -13
  40. data/lib/mongoid/criteria/queryable/storable.rb +104 -99
  41. data/lib/mongoid/errors/eager_load.rb +2 -0
  42. data/lib/mongoid/errors/no_client_config.rb +2 -2
  43. data/lib/mongoid/errors/no_default_client.rb +1 -1
  44. data/lib/mongoid/extensions/hash.rb +4 -2
  45. data/lib/mongoid/extensions/regexp.rb +1 -1
  46. data/lib/mongoid/fields.rb +2 -1
  47. data/lib/mongoid/fields/standard.rb +2 -1
  48. data/lib/mongoid/fields/validators/macro.rb +4 -1
  49. data/lib/mongoid/findable.rb +5 -4
  50. data/lib/mongoid/interceptable.rb +5 -1
  51. data/lib/mongoid/matchable/regexp.rb +2 -2
  52. data/lib/mongoid/persistable/pushable.rb +11 -2
  53. data/lib/mongoid/persistence_context.rb +6 -6
  54. data/lib/mongoid/query_cache.rb +61 -18
  55. data/lib/mongoid/railties/database.rake +7 -0
  56. data/lib/mongoid/serializable.rb +10 -2
  57. data/lib/mongoid/shardable.rb +56 -4
  58. data/lib/mongoid/tasks/database.rake +10 -5
  59. data/lib/mongoid/tasks/database.rb +83 -0
  60. data/lib/mongoid/timestamps/timeless.rb +3 -1
  61. data/lib/mongoid/validatable/uniqueness.rb +1 -1
  62. data/lib/mongoid/version.rb +1 -1
  63. data/lib/rails/generators/mongoid/config/templates/mongoid.yml +32 -23
  64. data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
  65. data/spec/app/models/coding.rb +4 -0
  66. data/spec/app/models/coding/pull_request.rb +12 -0
  67. data/spec/app/models/delegating_patient.rb +16 -0
  68. data/spec/app/models/passport.rb +1 -0
  69. data/spec/app/models/phone.rb +1 -0
  70. data/spec/app/models/publication.rb +5 -0
  71. data/spec/app/models/publication/encyclopedia.rb +12 -0
  72. data/spec/app/models/publication/review.rb +14 -0
  73. data/spec/integration/app_spec.rb +254 -0
  74. data/spec/integration/associations/embedded_spec.rb +54 -0
  75. data/spec/integration/associations/has_many_spec.rb +34 -0
  76. data/spec/integration/associations/has_one_spec.rb +34 -0
  77. data/spec/integration/bson_regexp_raw_spec.rb +20 -0
  78. data/spec/integration/criteria/date_field_spec.rb +41 -0
  79. data/spec/integration/criteria/logical_spec.rb +13 -0
  80. data/spec/integration/document_spec.rb +22 -0
  81. data/spec/integration/shardable_spec.rb +149 -0
  82. data/spec/lite_spec_helper.rb +15 -4
  83. data/spec/mongoid/association/accessors_spec.rb +238 -63
  84. data/spec/mongoid/association/embedded/embeds_many_models.rb +19 -0
  85. data/spec/mongoid/association/embedded/embeds_many_spec.rb +10 -0
  86. data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -2
  87. data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +193 -10
  88. data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +140 -1
  89. data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +146 -68
  90. data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +2 -1
  91. data/spec/mongoid/attributes_spec.rb +19 -7
  92. data/spec/mongoid/changeable_spec.rb +23 -0
  93. data/spec/mongoid/clients/factory_spec.rb +8 -8
  94. data/spec/mongoid/clients/options_spec.rb +11 -11
  95. data/spec/mongoid/clients/sessions_spec.rb +8 -4
  96. data/spec/mongoid/clients/transactions_spec.rb +20 -8
  97. data/spec/mongoid/clients_spec.rb +2 -2
  98. data/spec/mongoid/contextual/atomic_spec.rb +22 -11
  99. data/spec/mongoid/contextual/geo_near_spec.rb +11 -2
  100. data/spec/mongoid/contextual/map_reduce_spec.rb +20 -5
  101. data/spec/mongoid/contextual/mongo_spec.rb +76 -53
  102. data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +1 -1
  103. data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +7 -7
  104. data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +1 -1
  105. data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +19 -7
  106. data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +28 -1
  107. data/spec/mongoid/criteria/queryable/mergeable_spec.rb +45 -12
  108. data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +1051 -392
  109. data/spec/mongoid/criteria/queryable/selectable_spec.rb +52 -0
  110. data/spec/mongoid/criteria/queryable/storable_spec.rb +80 -2
  111. data/spec/mongoid/criteria_spec.rb +36 -2
  112. data/spec/mongoid/document_fields_spec.rb +29 -0
  113. data/spec/mongoid/document_persistence_context_spec.rb +33 -0
  114. data/spec/mongoid/errors/no_client_config_spec.rb +2 -2
  115. data/spec/mongoid/errors/no_client_database_spec.rb +3 -3
  116. data/spec/mongoid/errors/no_client_hosts_spec.rb +3 -3
  117. data/spec/mongoid/fields_spec.rb +24 -1
  118. data/spec/mongoid/indexable_spec.rb +6 -4
  119. data/spec/mongoid/interceptable_spec.rb +62 -0
  120. data/spec/mongoid/interceptable_spec_models.rb +76 -0
  121. data/spec/mongoid/matchable/default_spec.rb +1 -1
  122. data/spec/mongoid/matchable/regexp_spec.rb +2 -2
  123. data/spec/mongoid/matchable_spec.rb +2 -2
  124. data/spec/mongoid/persistable/pushable_spec.rb +55 -1
  125. data/spec/mongoid/query_cache_spec.rb +77 -9
  126. data/spec/mongoid/relations/proxy_spec.rb +1 -1
  127. data/spec/mongoid/scopable_spec.rb +2 -1
  128. data/spec/mongoid/serializable_spec.rb +129 -18
  129. data/spec/mongoid/shardable_models.rb +61 -0
  130. data/spec/mongoid/shardable_spec.rb +69 -16
  131. data/spec/mongoid/tasks/database_rake_spec.rb +13 -13
  132. data/spec/mongoid/tasks/database_spec.rb +1 -1
  133. data/spec/spec_helper.rb +2 -31
  134. data/spec/support/child_process_helper.rb +76 -0
  135. data/spec/support/cluster_config.rb +3 -3
  136. data/spec/support/constraints.rb +26 -10
  137. data/spec/support/expectations.rb +3 -1
  138. data/spec/support/helpers.rb +11 -0
  139. data/spec/support/lite_constraints.rb +22 -0
  140. data/spec/support/session_registry.rb +50 -0
  141. data/spec/support/spec_config.rb +12 -4
  142. metadata +518 -480
  143. metadata.gz.sig +0 -0
@@ -49,8 +49,17 @@ describe Mongoid::Contextual::GeoNear do
49
49
  described_class.new(collection, criteria, [ 52, 13 ])
50
50
  end
51
51
 
52
- it "returns 0.0" do
53
- expect(geo_near.average_distance).to be_nil
52
+ let(:expected_value) do
53
+ if ClusterConfig.instance.fcv_ish == '4.0' && ClusterConfig.instance.topology == :sharded
54
+ # https://jira.mongodb.org/browse/SERVER-50074
55
+ 0.0
56
+ else
57
+ nil
58
+ end
59
+ end
60
+
61
+ it "is nil except for 4.0 sharded when it is 0" do
62
+ expect(geo_near.average_distance).to be expected_value
54
63
  end
55
64
  end
56
65
  end
@@ -78,6 +78,7 @@ describe Mongoid::Contextual::MapReduce do
78
78
  end
79
79
 
80
80
  describe "#counts" do
81
+ max_server_version '4.2'
81
82
 
82
83
  let(:criteria) do
83
84
  Band.all
@@ -106,7 +107,8 @@ describe Mongoid::Contextual::MapReduce do
106
107
  end
107
108
 
108
109
  it "iterates over the results" do
109
- expect(results.entries).to eq([
110
+ ordered_results = results.entries.sort_by { |doc| doc['_id'] }
111
+ expect(ordered_results.entries).to eq([
110
112
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }},
111
113
  { "_id" => "Tool", "value" => { "likes" => 100 }}
112
114
  ])
@@ -127,7 +129,8 @@ describe Mongoid::Contextual::MapReduce do
127
129
  end
128
130
 
129
131
  it "iterates over the results" do
130
- expect(results.entries).to eq(expected_results)
132
+ ordered_results = results.entries.sort_by { |doc| doc['_id'] }
133
+ expect(ordered_results).to eq(expected_results)
131
134
  end
132
135
 
133
136
  it 'outputs to the collection' do
@@ -147,6 +150,7 @@ describe Mongoid::Contextual::MapReduce do
147
150
  end
148
151
 
149
152
  context "when the statstics are requested" do
153
+ max_server_version '4.2'
150
154
 
151
155
  it "raises an error" do
152
156
  expect {
@@ -191,14 +195,16 @@ describe Mongoid::Contextual::MapReduce do
191
195
  Band.where(name: 'DEPECHE MODE').collation(locale: 'en_US', strength: 2)
192
196
  end
193
197
 
194
- context 'when the server supports collations', if: collation_supported? do
198
+ context 'when the server supports collations' do
199
+ min_server_version '3.4'
195
200
 
196
201
  it 'applies the collation' do
197
202
  expect(map_reduce.out(inline: 1).count).to eq(1)
198
203
  end
199
204
  end
200
205
 
201
- context 'when the server does not support collations', unless: collation_supported? do
206
+ context 'when the server does not support collations' do
207
+ max_server_version '3.2'
202
208
 
203
209
  it 'raises an exception' do
204
210
  expect {
@@ -210,6 +216,7 @@ describe Mongoid::Contextual::MapReduce do
210
216
  end
211
217
 
212
218
  describe "#emitted" do
219
+ max_server_version '4.2'
213
220
 
214
221
  let(:emitted) do
215
222
  map_reduce.out(inline: 1).emitted
@@ -261,6 +268,7 @@ describe Mongoid::Contextual::MapReduce do
261
268
  end
262
269
 
263
270
  describe "#input" do
271
+ max_server_version '4.2'
264
272
 
265
273
  let(:input) do
266
274
  map_reduce.out(inline: 1).input
@@ -311,6 +319,7 @@ describe Mongoid::Contextual::MapReduce do
311
319
  end
312
320
 
313
321
  describe "#output" do
322
+ max_server_version '4.2'
314
323
 
315
324
  let(:output) do
316
325
  map_reduce.out(inline: 1).output
@@ -343,12 +352,16 @@ describe Mongoid::Contextual::MapReduce do
343
352
  end
344
353
 
345
354
  context 'when a read preference is defined' do
355
+ require_topology :replica_set
356
+ # On 4.4 it seems the server inserts on the primary, not on the server
357
+ # that executed the map/reduce.
358
+ max_server_version '4.2'
346
359
 
347
360
  let(:criteria) do
348
361
  Band.all.read(mode: :secondary)
349
362
  end
350
363
 
351
- it "uses the read preference", if: testing_replica_set? do
364
+ it "uses the read preference" do
352
365
 
353
366
  expect {
354
367
  replace_map_reduce.raw
@@ -359,6 +372,7 @@ describe Mongoid::Contextual::MapReduce do
359
372
  end
360
373
 
361
374
  describe "#reduced" do
375
+ max_server_version '4.2'
362
376
 
363
377
  let(:reduced) do
364
378
  map_reduce.out(inline: 1).reduced
@@ -389,6 +403,7 @@ describe Mongoid::Contextual::MapReduce do
389
403
  end
390
404
 
391
405
  describe "#time" do
406
+ max_server_version '4.2'
392
407
 
393
408
  let(:time) do
394
409
  map_reduce.out(inline: 1).time
@@ -171,7 +171,8 @@ describe Mongoid::Contextual::Mongo do
171
171
  end
172
172
  end
173
173
 
174
- context 'when a collation is specified', if: collation_supported? do
174
+ context 'when a collation is specified' do
175
+ min_server_version '3.4'
175
176
 
176
177
  let(:context) do
177
178
  described_class.new(criteria)
@@ -232,7 +233,8 @@ describe Mongoid::Contextual::Mongo do
232
233
  expect(deleted).to eq(1)
233
234
  end
234
235
 
235
- context 'when the criteria has a collation', if: collation_supported? do
236
+ context 'when the criteria has a collation' do
237
+ min_server_version '3.4'
236
238
 
237
239
  let(:criteria) do
238
240
  Band.where(name: "DEPECHE MODE").collation(locale: 'en_US', strength: 2)
@@ -336,7 +338,8 @@ describe Mongoid::Contextual::Mongo do
336
338
  expect(destroyed).to eq(1)
337
339
  end
338
340
 
339
- context 'when the criteria has a collation', if: collation_supported? do
341
+ context 'when the criteria has a collation' do
342
+ min_server_version '3.4'
340
343
 
341
344
  let(:criteria) do
342
345
  Band.where(name: "DEPECHE MODE").collation(locale: 'en_US', strength: 2)
@@ -458,7 +461,8 @@ describe Mongoid::Contextual::Mongo do
458
461
  end
459
462
  end
460
463
 
461
- context 'when a collation is specified', if: collation_supported? do
464
+ context 'when a collation is specified' do
465
+ min_server_version '3.4'
462
466
 
463
467
  before do
464
468
  Band.create(name: 'DEPECHE MODE')
@@ -496,7 +500,8 @@ describe Mongoid::Contextual::Mongo do
496
500
  described_class.new(criteria)
497
501
  end
498
502
 
499
- context 'when the criteria has a collation', if: collation_supported? do
503
+ context 'when the criteria has a collation' do
504
+ min_server_version '3.4'
500
505
 
501
506
  let(:criteria) do
502
507
  Band.where(name: "DEPECHE MODE").collation(locale: 'en_US', strength: 2)
@@ -853,7 +858,8 @@ describe Mongoid::Contextual::Mongo do
853
858
  end
854
859
  end
855
860
 
856
- context 'when a collation is specified on the criteria', if: collation_supported? do
861
+ context 'when a collation is specified on the criteria' do
862
+ min_server_version '3.4'
857
863
 
858
864
  let(:criteria) do
859
865
  Band.where(name: "DEPECHE MODE").collation(locale: 'en_US', strength: 2)
@@ -1006,7 +1012,8 @@ describe Mongoid::Contextual::Mongo do
1006
1012
  end
1007
1013
  end
1008
1014
 
1009
- context 'when a collation is specified on the criteria', if: collation_supported? do
1015
+ context 'when a collation is specified on the criteria' do
1016
+ min_server_version '3.4'
1010
1017
 
1011
1018
  let(:criteria) do
1012
1019
  Band.where(name: "DEPECHE MODE").collation(locale: 'en_US', strength: 2)
@@ -1080,7 +1087,8 @@ describe Mongoid::Contextual::Mongo do
1080
1087
  }.to raise_error(Mongoid::Errors::DocumentNotFound)
1081
1088
  end
1082
1089
 
1083
- context 'when a collation is specified on the criteria', if: collation_supported? do
1090
+ context 'when a collation is specified on the criteria' do
1091
+ min_server_version '3.4'
1084
1092
 
1085
1093
  let(:criteria) do
1086
1094
  Band.where(name: "DEPECHE MODE").collation(locale: 'en_US', strength: 2)
@@ -1152,7 +1160,8 @@ describe Mongoid::Contextual::Mongo do
1152
1160
  expect(context.send(method)).to eq(depeche_mode)
1153
1161
  end
1154
1162
 
1155
- context 'when the criteria has a collation', if: collation_supported? do
1163
+ context 'when the criteria has a collation' do
1164
+ min_server_version '3.4'
1156
1165
 
1157
1166
  let(:criteria) do
1158
1167
  Band.where(name: "DEPECHE MODE").collation(locale: 'en_US', strength: 2)
@@ -1556,6 +1565,10 @@ describe Mongoid::Contextual::Mongo do
1556
1565
  }}
1557
1566
  end
1558
1567
 
1568
+ let(:ordered_results) do
1569
+ results['results'].sort_by { |doc| doc['_id'] }
1570
+ end
1571
+
1559
1572
  context "when no selection is provided" do
1560
1573
 
1561
1574
  let(:criteria) do
@@ -1587,36 +1600,40 @@ describe Mongoid::Contextual::Mongo do
1587
1600
  end
1588
1601
 
1589
1602
  it "contains the entire raw results" do
1590
- expect(results["results"]).to eq([
1603
+ expect(ordered_results).to eq([
1591
1604
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }},
1592
1605
  { "_id" => "Tool", "value" => { "likes" => 100 }}
1593
1606
  ])
1594
1607
  end
1595
1608
 
1596
- it "contains the execution time" do
1597
- expect(results.time).to_not be_nil
1598
- end
1609
+ context 'when statistics are available' do
1610
+ max_server_version '4.2'
1599
1611
 
1600
- it "contains the count statistics" do
1601
- expect(results["counts"]).to eq({
1602
- "input" => 2, "emit" => 2, "reduce" => 0, "output" => 2
1603
- })
1604
- end
1612
+ it "contains the execution time" do
1613
+ expect(results.time).to_not be_nil
1614
+ end
1605
1615
 
1606
- it "contains the input count" do
1607
- expect(results.input).to eq(2)
1608
- end
1616
+ it "contains the count statistics" do
1617
+ expect(results["counts"]).to eq({
1618
+ "input" => 2, "emit" => 2, "reduce" => 0, "output" => 2
1619
+ })
1620
+ end
1609
1621
 
1610
- it "contains the emitted count" do
1611
- expect(results.emitted).to eq(2)
1612
- end
1622
+ it "contains the input count" do
1623
+ expect(results.input).to eq(2)
1624
+ end
1613
1625
 
1614
- it "contains the reduced count" do
1615
- expect(results.reduced).to eq(0)
1616
- end
1626
+ it "contains the emitted count" do
1627
+ expect(results.emitted).to eq(2)
1628
+ end
1617
1629
 
1618
- it "contains the output count" do
1619
- expect(results.output).to eq(2)
1630
+ it "contains the reduced count" do
1631
+ expect(results.reduced).to eq(0)
1632
+ end
1633
+
1634
+ it "contains the output count" do
1635
+ expect(results.output).to eq(2)
1636
+ end
1620
1637
  end
1621
1638
  end
1622
1639
 
@@ -1645,35 +1662,39 @@ describe Mongoid::Contextual::Mongo do
1645
1662
  end
1646
1663
 
1647
1664
  it "contains the entire raw results" do
1648
- expect(results["results"]).to eq([
1665
+ expect(ordered_results).to eq([
1649
1666
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }}
1650
1667
  ])
1651
1668
  end
1652
1669
 
1653
- it "contains the execution time" do
1654
- expect(results.time).to_not be_nil
1655
- end
1670
+ context 'when statistics are available' do
1671
+ max_server_version '4.2'
1656
1672
 
1657
- it "contains the count statistics" do
1658
- expect(results["counts"]).to eq({
1659
- "input" => 1, "emit" => 1, "reduce" => 0, "output" => 1
1660
- })
1661
- end
1673
+ it "contains the execution time" do
1674
+ expect(results.time).to_not be_nil
1675
+ end
1662
1676
 
1663
- it "contains the input count" do
1664
- expect(results.input).to eq(1)
1665
- end
1677
+ it "contains the count statistics" do
1678
+ expect(results["counts"]).to eq({
1679
+ "input" => 1, "emit" => 1, "reduce" => 0, "output" => 1
1680
+ })
1681
+ end
1666
1682
 
1667
- it "contains the emitted count" do
1668
- expect(results.emitted).to eq(1)
1669
- end
1683
+ it "contains the input count" do
1684
+ expect(results.input).to eq(1)
1685
+ end
1670
1686
 
1671
- it "contains the reduced count" do
1672
- expect(results.reduced).to eq(0)
1673
- end
1687
+ it "contains the emitted count" do
1688
+ expect(results.emitted).to eq(1)
1689
+ end
1674
1690
 
1675
- it "contains the output count" do
1676
- expect(results.output).to eq(1)
1691
+ it "contains the reduced count" do
1692
+ expect(results.reduced).to eq(0)
1693
+ end
1694
+
1695
+ it "contains the output count" do
1696
+ expect(results.output).to eq(1)
1697
+ end
1677
1698
  end
1678
1699
  end
1679
1700
 
@@ -1713,7 +1734,7 @@ describe Mongoid::Contextual::Mongo do
1713
1734
  end
1714
1735
 
1715
1736
  it "contains the entire raw results" do
1716
- expect(results["results"]).to eq([
1737
+ expect(ordered_results).to eq([
1717
1738
  { "_id" => "Depeche Mode", "value" => { "likes" => 200 }},
1718
1739
  { "_id" => "Tool", "value" => { "likes" => 100 }}
1719
1740
  ])
@@ -2166,7 +2187,8 @@ describe Mongoid::Contextual::Mongo do
2166
2187
  end
2167
2188
  end
2168
2189
 
2169
- context 'when provided array filters', if: array_filters_supported? do
2190
+ context 'when provided array filters' do
2191
+ min_server_version '3.6'
2170
2192
 
2171
2193
  before do
2172
2194
  Band.delete_all
@@ -2338,7 +2360,8 @@ describe Mongoid::Contextual::Mongo do
2338
2360
  end
2339
2361
  end
2340
2362
 
2341
- context 'when provided array filters', if: array_filters_supported? do
2363
+ context 'when provided array filters' do
2364
+ min_server_version '3.6'
2342
2365
 
2343
2366
  before do
2344
2367
  Band.delete_all
@@ -2376,7 +2399,7 @@ describe Mongoid::Contextual::Mongo do
2376
2399
 
2377
2400
  describe '#pipeline' do
2378
2401
 
2379
- context 'when the criteria has a selector', if: non_legacy_server? do
2402
+ context 'when the criteria has a selector' do
2380
2403
 
2381
2404
  before do
2382
2405
  Artist.index(name: "text")
@@ -3,7 +3,7 @@
3
3
 
4
4
  require "spec_helper"
5
5
 
6
- describe Mongoid::Criteria::Queryable::Extensions::Regexp::Raw do
6
+ describe Mongoid::Criteria::Queryable::Extensions::Regexp::Raw_ do
7
7
 
8
8
  describe ".evolve" do
9
9
 
@@ -11,7 +11,7 @@ describe Mongoid::Criteria::Queryable::Extensions::Regexp do
11
11
  context "when provided a regexp" do
12
12
 
13
13
  let(:regexp) do
14
- /^[123]/
14
+ /\A[123]/
15
15
  end
16
16
 
17
17
  let(:evolved) do
@@ -26,7 +26,7 @@ describe Mongoid::Criteria::Queryable::Extensions::Regexp do
26
26
  context "when provided a string" do
27
27
 
28
28
  let(:regexp) do
29
- "^[123]"
29
+ "\\A[123]"
30
30
  end
31
31
 
32
32
  let(:evolved) do
@@ -34,7 +34,7 @@ describe Mongoid::Criteria::Queryable::Extensions::Regexp do
34
34
  end
35
35
 
36
36
  it "returns the converted regexp" do
37
- expect(evolved).to eq(/^[123]/)
37
+ expect(evolved).to eq(/\A[123]/)
38
38
  end
39
39
  end
40
40
 
@@ -43,7 +43,7 @@ describe Mongoid::Criteria::Queryable::Extensions::Regexp do
43
43
  context "when the elements are regexps" do
44
44
 
45
45
  let(:regexp) do
46
- /^[123]/
46
+ /\A[123]/
47
47
  end
48
48
 
49
49
  let(:array) do
@@ -66,7 +66,7 @@ describe Mongoid::Criteria::Queryable::Extensions::Regexp do
66
66
  context "when the elements are strings" do
67
67
 
68
68
  let(:regexp) do
69
- "^[123]"
69
+ "\\A[123]"
70
70
  end
71
71
 
72
72
  let(:evolved) do
@@ -74,7 +74,7 @@ describe Mongoid::Criteria::Queryable::Extensions::Regexp do
74
74
  end
75
75
 
76
76
  it "returns the regexps" do
77
- expect(evolved).to eq([ /^[123]/ ])
77
+ expect(evolved).to eq([ /\A[123]/ ])
78
78
  end
79
79
  end
80
80
  end
@@ -83,7 +83,7 @@ describe Mongoid::Criteria::Queryable::Extensions::Regexp do
83
83
  describe "#regexp?" do
84
84
 
85
85
  let(:regexp) do
86
- /^[123]/
86
+ /\A[123]/
87
87
  end
88
88
 
89
89
  it "returns true" do