mongoid 7.1.0 → 7.1.6
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/CHANGELOG.md +6 -6
- data/README.md +1 -1
- data/Rakefile +14 -5
- data/lib/config/locales/en.yml +5 -5
- data/lib/mongoid/association/accessors.rb +37 -2
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -1
- data/lib/mongoid/association/embedded/embeds_one.rb +2 -1
- data/lib/mongoid/association/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +38 -2
- data/lib/mongoid/association/referenced/eager.rb +29 -9
- data/lib/mongoid/association/referenced/has_one/proxy.rb +6 -1
- data/lib/mongoid/atomic.rb +13 -3
- data/lib/mongoid/clients/factory.rb +2 -2
- data/lib/mongoid/clients/options.rb +8 -8
- data/lib/mongoid/clients/sessions.rb +20 -4
- data/lib/mongoid/clients/storage_options.rb +5 -5
- data/lib/mongoid/config.rb +39 -9
- data/lib/mongoid/criteria.rb +23 -4
- data/lib/mongoid/criteria/modifiable.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +6 -6
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +12 -0
- data/lib/mongoid/criteria/queryable/mergeable.rb +75 -8
- data/lib/mongoid/criteria/queryable/pipeline.rb +3 -2
- data/lib/mongoid/criteria/queryable/selectable.rb +120 -13
- data/lib/mongoid/criteria/queryable/storable.rb +104 -99
- data/lib/mongoid/errors/eager_load.rb +2 -0
- data/lib/mongoid/errors/no_client_config.rb +2 -2
- data/lib/mongoid/errors/no_default_client.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +4 -2
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/fields.rb +2 -1
- data/lib/mongoid/fields/validators/macro.rb +4 -1
- data/lib/mongoid/matchable/regexp.rb +2 -2
- data/lib/mongoid/persistable/pushable.rb +11 -2
- data/lib/mongoid/persistence_context.rb +6 -6
- data/lib/mongoid/query_cache.rb +61 -18
- data/lib/mongoid/serializable.rb +9 -3
- data/lib/mongoid/tasks/database.rb +38 -3
- data/lib/mongoid/validatable/uniqueness.rb +1 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +32 -23
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
- data/spec/app/models/coding.rb +4 -0
- data/spec/app/models/coding/pull_request.rb +12 -0
- data/spec/app/models/delegating_patient.rb +16 -0
- data/spec/app/models/passport.rb +1 -0
- data/spec/app/models/person.rb +2 -0
- data/spec/app/models/phone.rb +1 -0
- data/spec/app/models/publication.rb +5 -0
- data/spec/app/models/publication/encyclopedia.rb +12 -0
- data/spec/app/models/publication/review.rb +14 -0
- data/spec/app/models/series.rb +1 -0
- data/spec/app/models/wiki_page.rb +1 -0
- data/spec/integration/app_spec.rb +254 -0
- data/spec/integration/associations/embedded_spec.rb +54 -0
- data/spec/integration/associations/embeds_many_spec.rb +24 -0
- data/spec/integration/associations/embeds_one_spec.rb +24 -0
- data/spec/integration/associations/has_many_spec.rb +76 -0
- data/spec/integration/associations/has_one_spec.rb +76 -0
- data/spec/integration/bson_regexp_raw_spec.rb +20 -0
- data/spec/integration/criteria/date_field_spec.rb +41 -0
- data/spec/integration/criteria/logical_spec.rb +13 -0
- data/spec/integration/document_spec.rb +22 -0
- data/spec/integration/shardable_spec.rb +20 -4
- data/spec/lite_spec_helper.rb +12 -4
- data/spec/mongoid/association/accessors_spec.rb +238 -63
- data/spec/mongoid/association/embedded/embeds_many_models.rb +19 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +10 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -2
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +193 -10
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +140 -1
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +105 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +2 -1
- data/spec/mongoid/clients/factory_spec.rb +8 -8
- data/spec/mongoid/clients/options_spec.rb +11 -11
- data/spec/mongoid/clients/sessions_spec.rb +8 -4
- data/spec/mongoid/clients/transactions_spec.rb +20 -8
- data/spec/mongoid/clients_spec.rb +2 -2
- data/spec/mongoid/contextual/atomic_spec.rb +22 -11
- data/spec/mongoid/contextual/geo_near_spec.rb +11 -2
- data/spec/mongoid/contextual/map_reduce_spec.rb +20 -5
- data/spec/mongoid/contextual/mongo_spec.rb +76 -53
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +7 -7
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +19 -7
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +28 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +45 -12
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +1051 -392
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +52 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +80 -2
- data/spec/mongoid/criteria_spec.rb +36 -2
- data/spec/mongoid/document_persistence_context_spec.rb +33 -0
- data/spec/mongoid/errors/no_client_config_spec.rb +2 -2
- data/spec/mongoid/errors/no_client_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_client_hosts_spec.rb +3 -3
- data/spec/mongoid/fields_spec.rb +24 -1
- data/spec/mongoid/indexable_spec.rb +6 -4
- data/spec/mongoid/matchable/default_spec.rb +1 -1
- data/spec/mongoid/matchable/regexp_spec.rb +2 -2
- data/spec/mongoid/matchable_spec.rb +2 -2
- data/spec/mongoid/persistable/pushable_spec.rb +55 -1
- data/spec/mongoid/query_cache_spec.rb +77 -9
- data/spec/mongoid/relations/proxy_spec.rb +1 -1
- data/spec/mongoid/scopable_spec.rb +2 -1
- data/spec/mongoid/serializable_spec.rb +129 -18
- data/spec/mongoid/shardable_models.rb +1 -1
- data/spec/mongoid/shardable_spec.rb +2 -2
- data/spec/mongoid/tasks/database_rake_spec.rb +13 -13
- data/spec/mongoid/tasks/database_spec.rb +1 -1
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +211 -0
- data/spec/shared/lib/mrss/constraints.rb +312 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +175 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +149 -0
- data/spec/spec_helper.rb +2 -31
- data/spec/support/child_process_helper.rb +76 -0
- data/spec/support/cluster_config.rb +3 -3
- data/spec/support/constraints.rb +26 -10
- data/spec/support/expectations.rb +3 -1
- data/spec/support/helpers.rb +11 -0
- data/spec/support/session_registry.rb +50 -0
- data/spec/support/spec_config.rb +12 -4
- metadata +520 -473
- metadata.gz.sig +0 -0
@@ -2450,6 +2450,58 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
2450
2450
|
end
|
2451
2451
|
end
|
2452
2452
|
end
|
2453
|
+
|
2454
|
+
context 'when using an MQL logical operator manually' do
|
2455
|
+
let(:base_query) do
|
2456
|
+
query.where(test: 1)
|
2457
|
+
end
|
2458
|
+
|
2459
|
+
let(:selection) do
|
2460
|
+
base_query.where(mql_operator => ['hello' => 'world'])
|
2461
|
+
end
|
2462
|
+
|
2463
|
+
shared_examples_for 'adds conditions to existing query' do
|
2464
|
+
it 'adds conditions to existing query' do
|
2465
|
+
selection.selector.should == {
|
2466
|
+
'test' => 1,
|
2467
|
+
mql_operator => ['hello' => 'world'],
|
2468
|
+
}
|
2469
|
+
end
|
2470
|
+
end
|
2471
|
+
|
2472
|
+
shared_examples_for 'adds conditions to existing query with an extra $and' do
|
2473
|
+
it 'adds conditions to existing query' do
|
2474
|
+
selection.selector.should == {
|
2475
|
+
'test' => 1,
|
2476
|
+
mql_operator => ['hello' => 'world'],
|
2477
|
+
}
|
2478
|
+
end
|
2479
|
+
end
|
2480
|
+
|
2481
|
+
context '$or' do
|
2482
|
+
let(:mql_operator) { '$or' }
|
2483
|
+
|
2484
|
+
it_behaves_like 'adds conditions to existing query with an extra $and'
|
2485
|
+
end
|
2486
|
+
|
2487
|
+
context '$nor' do
|
2488
|
+
let(:mql_operator) { '$nor' }
|
2489
|
+
|
2490
|
+
it_behaves_like 'adds conditions to existing query with an extra $and'
|
2491
|
+
end
|
2492
|
+
|
2493
|
+
context '$not' do
|
2494
|
+
let(:mql_operator) { '$not' }
|
2495
|
+
|
2496
|
+
it_behaves_like 'adds conditions to existing query'
|
2497
|
+
end
|
2498
|
+
|
2499
|
+
context '$and' do
|
2500
|
+
let(:mql_operator) { '$and' }
|
2501
|
+
|
2502
|
+
it_behaves_like 'adds conditions to existing query'
|
2503
|
+
end
|
2504
|
+
end
|
2453
2505
|
end
|
2454
2506
|
|
2455
2507
|
describe Symbol do
|
@@ -52,6 +52,22 @@ describe Mongoid::Criteria::Queryable::Storable do
|
|
52
52
|
end
|
53
53
|
end
|
54
54
|
|
55
|
+
context '$and to query with $and which already has the given key' do
|
56
|
+
let(:query) do
|
57
|
+
Mongoid::Query.new.where('$and' => [{foo: 'zoom'}])
|
58
|
+
end
|
59
|
+
|
60
|
+
let(:modified) do
|
61
|
+
query.send(query_method, '$and', [{'foo' => 'bar'}])
|
62
|
+
end
|
63
|
+
|
64
|
+
it 'adds to existing $and' do
|
65
|
+
modified.selector.should == {
|
66
|
+
'$and' => [{'foo' => 'zoom'}, {'foo' => 'bar'}],
|
67
|
+
}
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
55
71
|
end
|
56
72
|
|
57
73
|
context '$or operator' do
|
@@ -74,9 +90,11 @@ describe Mongoid::Criteria::Queryable::Storable do
|
|
74
90
|
query.send(query_method, '$or', [{'foo' => 'bar'}])
|
75
91
|
end
|
76
92
|
|
77
|
-
it '
|
93
|
+
it 'adds the new conditions' do
|
78
94
|
modified.selector.should == {
|
79
|
-
'
|
95
|
+
'zoom' => 'zoom',
|
96
|
+
'$or' => ['foo' => 'bar'],
|
97
|
+
}
|
80
98
|
end
|
81
99
|
end
|
82
100
|
|
@@ -98,6 +116,66 @@ describe Mongoid::Criteria::Queryable::Storable do
|
|
98
116
|
end
|
99
117
|
end
|
100
118
|
|
119
|
+
describe '#add_field_expression' do
|
120
|
+
context 'simple field and value write' do
|
121
|
+
let(:modified) do
|
122
|
+
query.add_field_expression('foo', 'bar')
|
123
|
+
end
|
124
|
+
|
125
|
+
it 'adds the condition' do
|
126
|
+
modified.selector.should == {
|
127
|
+
'foo' => 'bar'
|
128
|
+
}
|
129
|
+
end
|
130
|
+
end
|
131
|
+
|
132
|
+
context 'an operator write' do
|
133
|
+
let(:modified) do
|
134
|
+
query.add_field_expression('$eq', {'foo' => 'bar'})
|
135
|
+
end
|
136
|
+
|
137
|
+
it 'is not allowed' do
|
138
|
+
lambda do
|
139
|
+
modified
|
140
|
+
end.should raise_error(ArgumentError, /Field cannot be an operator/)
|
141
|
+
end
|
142
|
+
end
|
143
|
+
|
144
|
+
context 'when another field exists in destination' do
|
145
|
+
let(:base) do
|
146
|
+
query.add_field_expression('foo', 'bar')
|
147
|
+
end
|
148
|
+
|
149
|
+
let(:modified) do
|
150
|
+
base.add_field_expression('zoom', 'zoom')
|
151
|
+
end
|
152
|
+
|
153
|
+
it 'adds the condition' do
|
154
|
+
modified.selector.should == {
|
155
|
+
'foo' => 'bar',
|
156
|
+
'zoom' => 'zoom',
|
157
|
+
}
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
context 'when field being added already exists in destination' do
|
162
|
+
let(:base) do
|
163
|
+
query.add_field_expression('foo', 'bar')
|
164
|
+
end
|
165
|
+
|
166
|
+
let(:modified) do
|
167
|
+
base.add_field_expression('foo', 'zoom')
|
168
|
+
end
|
169
|
+
|
170
|
+
it 'adds the new condition using $and' do
|
171
|
+
modified.selector.should == {
|
172
|
+
'foo' => 'bar',
|
173
|
+
'$and' => ['foo' => 'zoom'],
|
174
|
+
}
|
175
|
+
end
|
176
|
+
end
|
177
|
+
end
|
178
|
+
|
101
179
|
describe '#add_operator_expression' do
|
102
180
|
let(:query_method) { :add_operator_expression }
|
103
181
|
|
@@ -2337,7 +2337,7 @@ describe Mongoid::Criteria do
|
|
2337
2337
|
end
|
2338
2338
|
|
2339
2339
|
it "returns the map/reduce results" do
|
2340
|
-
expect(map_reduce).to eq([
|
2340
|
+
expect(map_reduce.sort_by { |doc| doc['_id'] }).to eq([
|
2341
2341
|
{ "_id" => "Depeche Mode", "value" => { "likes" => 200 }},
|
2342
2342
|
{ "_id" => "Tool", "value" => { "likes" => 100 }}
|
2343
2343
|
])
|
@@ -3428,6 +3428,38 @@ describe Mongoid::Criteria do
|
|
3428
3428
|
Band.create(name: "Tool")
|
3429
3429
|
end
|
3430
3430
|
|
3431
|
+
context 'when provided no arguments' do
|
3432
|
+
context 'on a model class' do
|
3433
|
+
it 'returns an empty criteria' do
|
3434
|
+
Band.where.selector.should == {}
|
3435
|
+
end
|
3436
|
+
end
|
3437
|
+
|
3438
|
+
context 'on an association' do
|
3439
|
+
it 'returns an empty criteria' do
|
3440
|
+
match.records.where.selector.should == {}
|
3441
|
+
end
|
3442
|
+
end
|
3443
|
+
end
|
3444
|
+
|
3445
|
+
context 'when provided multiple arguments' do
|
3446
|
+
context 'on a model class' do
|
3447
|
+
it 'raises ArgumentError' do
|
3448
|
+
lambda do
|
3449
|
+
Band.where({foo: 1}, {bar: 2})
|
3450
|
+
end.should raise_error(ArgumentError, /where requires zero or one arguments/)
|
3451
|
+
end
|
3452
|
+
end
|
3453
|
+
|
3454
|
+
context 'on an association' do
|
3455
|
+
it 'raises ArgumentError' do
|
3456
|
+
lambda do
|
3457
|
+
match.records.where({foo: 1}, {bar: 2})
|
3458
|
+
end.should raise_error(ArgumentError, /where requires zero or one arguments/)
|
3459
|
+
end
|
3460
|
+
end
|
3461
|
+
end
|
3462
|
+
|
3431
3463
|
context "when provided a string" do
|
3432
3464
|
|
3433
3465
|
context "when the criteria is embedded" do
|
@@ -3502,7 +3534,8 @@ describe Mongoid::Criteria do
|
|
3502
3534
|
end
|
3503
3535
|
end
|
3504
3536
|
|
3505
|
-
context "when querying on a BSON::Decimal128"
|
3537
|
+
context "when querying on a BSON::Decimal128" do
|
3538
|
+
min_server_version '3.4'
|
3506
3539
|
|
3507
3540
|
let(:decimal) do
|
3508
3541
|
BSON::Decimal128.new("0.0005")
|
@@ -3590,6 +3623,7 @@ describe Mongoid::Criteria do
|
|
3590
3623
|
end
|
3591
3624
|
|
3592
3625
|
context "when the code has scope" do
|
3626
|
+
max_server_version '4.2'
|
3593
3627
|
|
3594
3628
|
let(:criteria) do
|
3595
3629
|
Band.for_js("this.name == param", param: "Depeche Mode")
|
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require "spec_helper"
|
5
|
+
|
6
|
+
describe Mongoid::Document do
|
7
|
+
|
8
|
+
let(:klass) do
|
9
|
+
Person
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:person) do
|
13
|
+
Person.new
|
14
|
+
end
|
15
|
+
|
16
|
+
describe '.client_name' do
|
17
|
+
it 'returns client name' do
|
18
|
+
Person.client_name.should == :default
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
describe '.database_name' do
|
23
|
+
it 'returns database name' do
|
24
|
+
Person.database_name.should == 'mongoid_test'
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
describe '.collection_name' do
|
29
|
+
it 'returns collection name' do
|
30
|
+
Person.collection_name.should == :people
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -8,12 +8,12 @@ describe Mongoid::Errors::NoClientConfig do
|
|
8
8
|
describe "#message" do
|
9
9
|
|
10
10
|
let(:error) do
|
11
|
-
described_class.new(:
|
11
|
+
described_class.new(:analytics)
|
12
12
|
end
|
13
13
|
|
14
14
|
it "contains the problem in the message" do
|
15
15
|
expect(error.message).to include(
|
16
|
-
"No configuration could be found for a client named '
|
16
|
+
"No configuration could be found for a client named 'analytics'."
|
17
17
|
)
|
18
18
|
end
|
19
19
|
|
@@ -8,12 +8,12 @@ describe Mongoid::Errors::NoClientDatabase do
|
|
8
8
|
describe "#message" do
|
9
9
|
|
10
10
|
let(:error) do
|
11
|
-
described_class.new(:
|
11
|
+
described_class.new(:analytics, { hosts: [ "127.0.0.1:27017" ] })
|
12
12
|
end
|
13
13
|
|
14
14
|
it "contains the problem in the message" do
|
15
15
|
expect(error.message).to include(
|
16
|
-
"No database provided for client configuration: :
|
16
|
+
"No database provided for client configuration: :analytics."
|
17
17
|
)
|
18
18
|
end
|
19
19
|
|
@@ -25,7 +25,7 @@ describe Mongoid::Errors::NoClientDatabase do
|
|
25
25
|
|
26
26
|
it "contains the resolution in the message" do
|
27
27
|
expect(error.message).to include(
|
28
|
-
"If configuring via a mongoid.yml, ensure that within your :
|
28
|
+
"If configuring via a mongoid.yml, ensure that within your :analytics"
|
29
29
|
)
|
30
30
|
end
|
31
31
|
end
|
@@ -8,12 +8,12 @@ describe Mongoid::Errors::NoClientHosts do
|
|
8
8
|
describe "#message" do
|
9
9
|
|
10
10
|
let(:error) do
|
11
|
-
described_class.new(:
|
11
|
+
described_class.new(:analytics, { database: "mongoid_test" })
|
12
12
|
end
|
13
13
|
|
14
14
|
it "contains the problem in the message" do
|
15
15
|
expect(error.message).to include(
|
16
|
-
"No hosts provided for client configuration: :
|
16
|
+
"No hosts provided for client configuration: :analytics."
|
17
17
|
)
|
18
18
|
end
|
19
19
|
|
@@ -25,7 +25,7 @@ describe Mongoid::Errors::NoClientHosts do
|
|
25
25
|
|
26
26
|
it "contains the resolution in the message" do
|
27
27
|
expect(error.message).to include(
|
28
|
-
"If configuring via a mongoid.yml, ensure that within your :
|
28
|
+
"If configuring via a mongoid.yml, ensure that within your :analytics"
|
29
29
|
)
|
30
30
|
end
|
31
31
|
end
|
data/spec/mongoid/fields_spec.rb
CHANGED
@@ -431,7 +431,9 @@ describe Mongoid::Fields do
|
|
431
431
|
context "when the Symbol type is used" do
|
432
432
|
|
433
433
|
before do
|
434
|
-
|
434
|
+
Mongoid::Fields::Validators::Macro.class_eval do
|
435
|
+
@field_type_is_symbol_warned = false
|
436
|
+
end
|
435
437
|
end
|
436
438
|
|
437
439
|
after do
|
@@ -439,8 +441,29 @@ describe Mongoid::Fields do
|
|
439
441
|
end
|
440
442
|
|
441
443
|
it "warns that the BSON symbol type is deprecated" do
|
444
|
+
expect(Mongoid.logger).to receive(:warn)
|
445
|
+
|
446
|
+
Band.field :should_warn, type: Symbol
|
447
|
+
end
|
448
|
+
|
449
|
+
it "warns on first use of Symbol type only" do
|
450
|
+
expect(Mongoid.logger).to receive(:warn).once
|
451
|
+
|
442
452
|
Band.field :should_warn, type: Symbol
|
443
453
|
end
|
454
|
+
|
455
|
+
context 'when using Symbol field type in multiple classes' do
|
456
|
+
after do
|
457
|
+
Truck.fields.delete("should_warn")
|
458
|
+
end
|
459
|
+
|
460
|
+
it "warns on first use of Symbol type only" do
|
461
|
+
expect(Mongoid.logger).to receive(:warn).once
|
462
|
+
|
463
|
+
Band.field :should_warn, type: Symbol
|
464
|
+
Truck.field :should_warn, type: Symbol
|
465
|
+
end
|
466
|
+
end
|
444
467
|
end
|
445
468
|
|
446
469
|
context "when the options are not valid" do
|
@@ -48,7 +48,7 @@ describe Mongoid::Indexable do
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
|
-
context "when database specific options exist"
|
51
|
+
context "when database specific options exist" do
|
52
52
|
|
53
53
|
let(:klass) do
|
54
54
|
Class.new do
|
@@ -98,7 +98,7 @@ describe Mongoid::Indexable do
|
|
98
98
|
end
|
99
99
|
end
|
100
100
|
|
101
|
-
context "when database options are specified"
|
101
|
+
context "when database options are specified" do
|
102
102
|
|
103
103
|
let(:klass) do
|
104
104
|
Class.new do
|
@@ -136,7 +136,8 @@ describe Mongoid::Indexable do
|
|
136
136
|
end
|
137
137
|
end
|
138
138
|
|
139
|
-
context "when a collation option is specified"
|
139
|
+
context "when a collation option is specified" do
|
140
|
+
min_server_version '3.4'
|
140
141
|
|
141
142
|
let(:klass) do
|
142
143
|
Class.new do
|
@@ -311,7 +312,8 @@ describe Mongoid::Indexable do
|
|
311
312
|
end
|
312
313
|
end
|
313
314
|
|
314
|
-
context "when providing a collation option"
|
315
|
+
context "when providing a collation option" do
|
316
|
+
min_server_version '3.4'
|
315
317
|
|
316
318
|
before do
|
317
319
|
klass.index({ name: 1 }, collation: { locale: 'en_US', strength: 2 })
|
@@ -18,7 +18,7 @@ describe Mongoid::Matchable::Regexp do
|
|
18
18
|
context 'when a BSON::Regexp::Raw object is passed' do
|
19
19
|
|
20
20
|
let(:regexp) do
|
21
|
-
BSON::Regexp::Raw.new(
|
21
|
+
BSON::Regexp::Raw.new("\\AEm")
|
22
22
|
end
|
23
23
|
|
24
24
|
it 'compiles the regexp object to a native regexp for the matching' do
|
@@ -40,7 +40,7 @@ describe Mongoid::Matchable::Regexp do
|
|
40
40
|
context 'when a native Regexp object is passed' do
|
41
41
|
|
42
42
|
let(:regexp) do
|
43
|
-
|
43
|
+
/\AEm/
|
44
44
|
end
|
45
45
|
|
46
46
|
it 'calls super with the native regexp' do
|
@@ -296,7 +296,7 @@ describe Mongoid::Matchable do
|
|
296
296
|
context 'when a BSON::Regexp::Raw object is used' do
|
297
297
|
|
298
298
|
let(:selector) do
|
299
|
-
{ street: BSON::Regexp::Raw.new("
|
299
|
+
{ street: BSON::Regexp::Raw.new("\\AClarkenwell") }
|
300
300
|
end
|
301
301
|
|
302
302
|
it "returns true" do
|
@@ -307,7 +307,7 @@ describe Mongoid::Matchable do
|
|
307
307
|
context 'when a native Regexp object is used' do
|
308
308
|
|
309
309
|
let(:selector) do
|
310
|
-
{ street:
|
310
|
+
{ street: /\AClarkenwell/ }
|
311
311
|
end
|
312
312
|
|
313
313
|
it "returns true" do
|