mongoid 8.0.5 → 8.1.0
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/CHANGELOG.md +3 -3
- data/README.md +3 -3
- data/Rakefile +0 -25
- data/lib/config/locales/en.yml +46 -14
- data/lib/mongoid/association/accessors.rb +2 -2
- data/lib/mongoid/association/builders.rb +1 -1
- data/lib/mongoid/association/embedded/batchable.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -1
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +6 -6
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +1 -1
- data/lib/mongoid/association/nested/one.rb +40 -2
- data/lib/mongoid/association/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/counter_cache.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +2 -2
- data/lib/mongoid/association/referenced/has_many/proxy.rb +3 -3
- data/lib/mongoid/association/reflections.rb +2 -2
- data/lib/mongoid/atomic.rb +0 -7
- data/lib/mongoid/attributes/dynamic.rb +1 -1
- data/lib/mongoid/attributes/nested.rb +2 -2
- data/lib/mongoid/attributes/projector.rb +1 -1
- data/lib/mongoid/attributes/readonly.rb +1 -1
- data/lib/mongoid/attributes.rb +8 -2
- data/lib/mongoid/changeable.rb +107 -5
- data/lib/mongoid/clients/storage_options.rb +2 -5
- data/lib/mongoid/clients/validators/storage.rb +1 -13
- data/lib/mongoid/collection_configurable.rb +58 -0
- data/lib/mongoid/composable.rb +2 -0
- data/lib/mongoid/config/defaults.rb +60 -0
- data/lib/mongoid/config/validators/async_query_executor.rb +24 -0
- data/lib/mongoid/config/validators.rb +1 -0
- data/lib/mongoid/config.rb +101 -0
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +233 -33
- data/lib/mongoid/contextual/mongo/documents_loader.rb +177 -0
- data/lib/mongoid/contextual/mongo.rb +373 -113
- data/lib/mongoid/contextual/none.rb +162 -7
- data/lib/mongoid/contextual.rb +12 -0
- data/lib/mongoid/criteria/findable.rb +2 -2
- data/lib/mongoid/criteria/includable.rb +4 -3
- data/lib/mongoid/criteria/queryable/key.rb +1 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -1
- data/lib/mongoid/criteria/queryable/optional.rb +8 -8
- data/lib/mongoid/criteria/queryable/selectable.rb +43 -12
- data/lib/mongoid/criteria.rb +6 -5
- data/lib/mongoid/deprecable.rb +1 -1
- data/lib/mongoid/errors/create_collection_failure.rb +33 -0
- data/lib/mongoid/errors/drop_collection_failure.rb +27 -0
- data/lib/mongoid/errors/immutable_attribute.rb +26 -0
- data/lib/mongoid/errors/invalid_async_query_executor.rb +25 -0
- data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +22 -0
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
- data/lib/mongoid/errors.rb +4 -1
- data/lib/mongoid/extensions/object.rb +2 -2
- data/lib/mongoid/extensions/time.rb +2 -0
- data/lib/mongoid/fields/localized.rb +10 -0
- data/lib/mongoid/fields/standard.rb +10 -0
- data/lib/mongoid/fields.rb +69 -13
- data/lib/mongoid/findable.rb +27 -3
- data/lib/mongoid/interceptable.rb +7 -6
- data/lib/mongoid/matcher/eq_impl.rb +1 -1
- data/lib/mongoid/matcher/type.rb +1 -1
- data/lib/mongoid/persistable/creatable.rb +1 -0
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +13 -1
- data/lib/mongoid/persistable/unsettable.rb +2 -2
- data/lib/mongoid/persistable/updatable.rb +51 -1
- data/lib/mongoid/persistable/upsertable.rb +20 -1
- data/lib/mongoid/persistable.rb +3 -0
- data/lib/mongoid/query_cache.rb +5 -1
- data/lib/mongoid/railties/database.rake +7 -2
- data/lib/mongoid/reloadable.rb +5 -3
- data/lib/mongoid/stateful.rb +22 -1
- data/lib/mongoid/tasks/database.rake +12 -0
- data/lib/mongoid/tasks/database.rb +20 -0
- data/lib/mongoid/utils.rb +22 -0
- data/lib/mongoid/validatable/macros.rb +5 -5
- data/lib/mongoid/validatable.rb +4 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +17 -1
- data/lib/mongoid.rb +16 -3
- data/spec/integration/app_spec.rb +2 -2
- data/spec/integration/callbacks_models.rb +37 -0
- data/spec/integration/callbacks_spec.rb +134 -0
- data/spec/integration/discriminator_key_spec.rb +4 -5
- data/spec/integration/i18n_fallbacks_spec.rb +3 -2
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +27 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +20 -25
- data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +15 -2
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -18
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +5 -27
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +9 -50
- data/spec/mongoid/association/syncable_spec.rb +1 -1
- data/spec/mongoid/attributes_spec.rb +3 -6
- data/spec/mongoid/changeable_spec.rb +299 -24
- data/spec/mongoid/clients_spec.rb +122 -13
- data/spec/mongoid/collection_configurable_spec.rb +158 -0
- data/spec/mongoid/config/defaults_spec.rb +160 -0
- data/spec/mongoid/config_spec.rb +154 -18
- data/spec/mongoid/contextual/memory_spec.rb +332 -76
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
- data/spec/mongoid/contextual/mongo_spec.rb +995 -36
- data/spec/mongoid/contextual/none_spec.rb +49 -2
- data/spec/mongoid/copyable_spec.rb +3 -11
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -10
- data/spec/mongoid/criteria/queryable/options_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +419 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/selector_spec.rb +1 -1
- data/spec/mongoid/criteria_projection_spec.rb +1 -4
- data/spec/mongoid/criteria_spec.rb +5 -9
- data/spec/mongoid/errors/readonly_document_spec.rb +2 -2
- data/spec/mongoid/extensions/time_spec.rb +8 -43
- data/spec/mongoid/extensions/time_with_zone_spec.rb +7 -52
- data/spec/mongoid/fields/localized_spec.rb +46 -28
- data/spec/mongoid/fields_spec.rb +136 -34
- data/spec/mongoid/findable_spec.rb +391 -34
- data/spec/mongoid/indexable_spec.rb +16 -10
- data/spec/mongoid/interceptable_spec.rb +15 -3
- data/spec/mongoid/persistable/deletable_spec.rb +26 -6
- data/spec/mongoid/persistable/destroyable_spec.rb +26 -6
- data/spec/mongoid/persistable/incrementable_spec.rb +37 -0
- data/spec/mongoid/persistable/logical_spec.rb +37 -0
- data/spec/mongoid/persistable/poppable_spec.rb +36 -0
- data/spec/mongoid/persistable/pullable_spec.rb +72 -0
- data/spec/mongoid/persistable/pushable_spec.rb +72 -0
- data/spec/mongoid/persistable/renamable_spec.rb +36 -0
- data/spec/mongoid/persistable/savable_spec.rb +96 -0
- data/spec/mongoid/persistable/settable_spec.rb +37 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +36 -0
- data/spec/mongoid/persistable/updatable_spec.rb +20 -28
- data/spec/mongoid/persistable/upsertable_spec.rb +80 -6
- data/spec/mongoid/persistence_context_spec.rb +7 -57
- data/spec/mongoid/query_cache_spec.rb +56 -61
- data/spec/mongoid/reloadable_spec.rb +24 -28
- data/spec/mongoid/scopable_spec.rb +70 -0
- data/spec/mongoid/serializable_spec.rb +9 -30
- data/spec/mongoid/stateful_spec.rb +122 -8
- data/spec/mongoid/tasks/database_rake_spec.rb +74 -0
- data/spec/mongoid/tasks/database_spec.rb +127 -0
- data/spec/mongoid/timestamps_spec.rb +9 -11
- data/spec/mongoid/touchable_spec.rb +277 -5
- data/spec/mongoid/touchable_spec_models.rb +3 -1
- data/spec/mongoid/traversable_spec.rb +9 -24
- data/spec/mongoid/validatable/uniqueness_spec.rb +2 -3
- data/spec/mongoid_spec.rb +36 -10
- data/spec/shared/lib/mrss/docker_runner.rb +7 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +15 -5
- data/spec/shared/lib/mrss/lite_constraints.rb +10 -2
- data/spec/shared/lib/mrss/server_version_registry.rb +16 -23
- data/spec/shared/lib/mrss/utils.rb +28 -6
- data/spec/shared/share/Dockerfile.erb +36 -40
- data/spec/shared/shlib/server.sh +32 -8
- data/spec/shared/shlib/set_env.sh +4 -4
- data/spec/spec_helper.rb +5 -0
- data/spec/support/immutable_ids.rb +118 -0
- data/spec/support/macros.rb +47 -15
- data/spec/support/models/artist.rb +0 -1
- data/spec/support/models/band.rb +1 -0
- data/spec/support/models/book.rb +1 -0
- data/spec/support/models/building.rb +2 -0
- data/spec/support/models/cover.rb +10 -0
- data/spec/support/models/product.rb +1 -0
- data.tar.gz.sig +0 -0
- metadata +686 -650
- metadata.gz.sig +0 -0
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -60
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -60
@@ -0,0 +1,160 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Mongoid::Config::Defaults do
|
6
|
+
|
7
|
+
let(:config) do
|
8
|
+
Mongoid::Config
|
9
|
+
end
|
10
|
+
|
11
|
+
describe ".load_defaults" do
|
12
|
+
|
13
|
+
shared_examples "uses settings for 7.3" do
|
14
|
+
it "uses settings for 7.3" do
|
15
|
+
expect(Mongoid.broken_aggregables).to be true
|
16
|
+
expect(Mongoid.broken_alias_handling).to be true
|
17
|
+
expect(Mongoid.broken_and).to be true
|
18
|
+
expect(Mongoid.broken_scoping).to be true
|
19
|
+
expect(Mongoid.broken_updates).to be true
|
20
|
+
expect(Mongoid.compare_time_by_ms).to be false
|
21
|
+
expect(Mongoid.legacy_pluck_distinct).to be true
|
22
|
+
expect(Mongoid.legacy_triple_equals).to be true
|
23
|
+
expect(Mongoid.object_id_as_json_oid).to be true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
shared_examples "does not use settings for 7.3" do
|
28
|
+
it "does not use settings for 7.3" do
|
29
|
+
expect(Mongoid.broken_aggregables).to be false
|
30
|
+
expect(Mongoid.broken_alias_handling).to be false
|
31
|
+
expect(Mongoid.broken_and).to be false
|
32
|
+
expect(Mongoid.broken_scoping).to be false
|
33
|
+
expect(Mongoid.broken_updates).to be false
|
34
|
+
expect(Mongoid.compare_time_by_ms).to be true
|
35
|
+
expect(Mongoid.legacy_pluck_distinct).to be false
|
36
|
+
expect(Mongoid.legacy_triple_equals).to be false
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
shared_examples "uses settings for 7.4" do
|
41
|
+
it "uses settings for 7.4" do
|
42
|
+
expect(Mongoid.legacy_attributes).to be true
|
43
|
+
expect(Mongoid.overwrite_chained_operators).to be true
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
shared_examples "does not use settings for 7.4" do
|
48
|
+
it "does not use settings for 7.4" do
|
49
|
+
expect(Mongoid.legacy_attributes).to be false
|
50
|
+
expect(Mongoid.overwrite_chained_operators).to be false
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
shared_examples "uses settings for 7.5" do
|
55
|
+
it "uses settings for 7.5" do
|
56
|
+
expect(Mongoid.map_big_decimal_to_decimal128).to be false
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
shared_examples "does not use settings for 7.5" do
|
61
|
+
it "does not use settings for 7.5" do
|
62
|
+
expect(Mongoid.map_big_decimal_to_decimal128).to be true
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
shared_examples "uses settings for 8.0" do
|
67
|
+
it "uses settings for 8.0" do
|
68
|
+
expect(Mongoid.legacy_readonly).to be true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
shared_examples "does not use settings for 8.0" do
|
73
|
+
it "does not use settings for 8.0" do
|
74
|
+
expect(Mongoid.legacy_readonly).to be false
|
75
|
+
end
|
76
|
+
end
|
77
|
+
|
78
|
+
shared_examples "uses settings for 8.1" do
|
79
|
+
it "uses settings for 8.1" do
|
80
|
+
expect(Mongoid.immutable_ids).to be false
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
context "when giving a valid version" do
|
85
|
+
|
86
|
+
before do
|
87
|
+
config.load_defaults(version)
|
88
|
+
end
|
89
|
+
|
90
|
+
after do
|
91
|
+
Mongoid::Config.reset
|
92
|
+
end
|
93
|
+
|
94
|
+
context "when the given version is 7.3" do
|
95
|
+
|
96
|
+
let(:version) { 7.3 }
|
97
|
+
|
98
|
+
it_behaves_like "uses settings for 7.3"
|
99
|
+
it_behaves_like "uses settings for 7.4"
|
100
|
+
it_behaves_like "uses settings for 7.5"
|
101
|
+
it_behaves_like "uses settings for 8.0"
|
102
|
+
it_behaves_like "uses settings for 8.1"
|
103
|
+
end
|
104
|
+
|
105
|
+
context "when the given version is 7.4" do
|
106
|
+
|
107
|
+
let(:version) { 7.4 }
|
108
|
+
|
109
|
+
it_behaves_like "does not use settings for 7.3"
|
110
|
+
it_behaves_like "uses settings for 7.4"
|
111
|
+
it_behaves_like "uses settings for 7.5"
|
112
|
+
it_behaves_like "uses settings for 8.0"
|
113
|
+
it_behaves_like "uses settings for 8.1"
|
114
|
+
end
|
115
|
+
|
116
|
+
context "when the given version is 7.5" do
|
117
|
+
|
118
|
+
let(:version) { 7.5 }
|
119
|
+
|
120
|
+
it_behaves_like "does not use settings for 7.3"
|
121
|
+
it_behaves_like "does not use settings for 7.4"
|
122
|
+
it_behaves_like "uses settings for 7.5"
|
123
|
+
it_behaves_like "uses settings for 8.0"
|
124
|
+
it_behaves_like "uses settings for 8.1"
|
125
|
+
end
|
126
|
+
|
127
|
+
context "when the given version is 8.0" do
|
128
|
+
|
129
|
+
let(:version) { 8.0 }
|
130
|
+
|
131
|
+
it_behaves_like "does not use settings for 7.3"
|
132
|
+
it_behaves_like "does not use settings for 7.4"
|
133
|
+
it_behaves_like "does not use settings for 7.5"
|
134
|
+
it_behaves_like "uses settings for 8.0"
|
135
|
+
it_behaves_like "uses settings for 8.1"
|
136
|
+
end
|
137
|
+
|
138
|
+
context "when the given version is 8.1" do
|
139
|
+
|
140
|
+
let(:version) { 8.1 }
|
141
|
+
|
142
|
+
it_behaves_like "does not use settings for 7.3"
|
143
|
+
it_behaves_like "does not use settings for 7.4"
|
144
|
+
it_behaves_like "does not use settings for 7.5"
|
145
|
+
it_behaves_like "does not use settings for 8.0"
|
146
|
+
it_behaves_like "uses settings for 8.1"
|
147
|
+
end
|
148
|
+
end
|
149
|
+
|
150
|
+
context "when given version an invalid version" do
|
151
|
+
let(:version) { 4.2 }
|
152
|
+
|
153
|
+
it "raises an error" do
|
154
|
+
expect do
|
155
|
+
config.load_defaults(version)
|
156
|
+
end.to raise_error(ArgumentError, /Unknown version: 4.2/)
|
157
|
+
end
|
158
|
+
end
|
159
|
+
end
|
160
|
+
end
|
data/spec/mongoid/config_spec.rb
CHANGED
@@ -224,6 +224,79 @@ describe Mongoid::Config do
|
|
224
224
|
end
|
225
225
|
end
|
226
226
|
|
227
|
+
context 'async_query_executor option' do
|
228
|
+
let(:option) { :async_query_executor }
|
229
|
+
|
230
|
+
before do
|
231
|
+
Mongoid::Config.reset
|
232
|
+
Mongoid.configure do |config|
|
233
|
+
config.load_configuration(conf)
|
234
|
+
end
|
235
|
+
end
|
236
|
+
|
237
|
+
context "when it is not set in the config" do
|
238
|
+
|
239
|
+
let(:conf) { CONFIG }
|
240
|
+
|
241
|
+
it "it is set to its default" do
|
242
|
+
expect(Mongoid.send(option)).to eq(:immediate)
|
243
|
+
end
|
244
|
+
end
|
245
|
+
|
246
|
+
context 'when the value is :immediate' do
|
247
|
+
|
248
|
+
let(:conf) do
|
249
|
+
CONFIG.merge(options: { option => :immediate })
|
250
|
+
end
|
251
|
+
|
252
|
+
it "is set to false" do
|
253
|
+
expect(Mongoid.send(option)).to be(:immediate)
|
254
|
+
end
|
255
|
+
end
|
256
|
+
|
257
|
+
context 'when the value is :global_thread_pool' do
|
258
|
+
|
259
|
+
let(:conf) do
|
260
|
+
CONFIG.merge(options: { option => :global_thread_pool })
|
261
|
+
end
|
262
|
+
|
263
|
+
it "is set to false" do
|
264
|
+
expect(Mongoid.send(option)).to be(:global_thread_pool)
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
context 'global_executor_concurrency option' do
|
270
|
+
let(:option) { :global_executor_concurrency }
|
271
|
+
|
272
|
+
before do
|
273
|
+
Mongoid::Config.reset
|
274
|
+
Mongoid.configure do |config|
|
275
|
+
config.load_configuration(conf)
|
276
|
+
end
|
277
|
+
end
|
278
|
+
|
279
|
+
context "when it is not set in the config" do
|
280
|
+
|
281
|
+
let(:conf) { CONFIG }
|
282
|
+
|
283
|
+
it "it is set to its default" do
|
284
|
+
expect(Mongoid.send(option)).to eq(nil)
|
285
|
+
end
|
286
|
+
end
|
287
|
+
|
288
|
+
context 'when the value is set to a number' do
|
289
|
+
|
290
|
+
let(:conf) do
|
291
|
+
CONFIG.merge(options: { option => 5 })
|
292
|
+
end
|
293
|
+
|
294
|
+
it "is set to the number" do
|
295
|
+
expect(Mongoid.send(option)).to be(5)
|
296
|
+
end
|
297
|
+
end
|
298
|
+
end
|
299
|
+
|
227
300
|
shared_examples "a config option" do
|
228
301
|
|
229
302
|
before do
|
@@ -349,6 +422,13 @@ describe Mongoid::Config do
|
|
349
422
|
it_behaves_like "a config option"
|
350
423
|
end
|
351
424
|
|
425
|
+
context 'when setting the legacy_readonly option in the config' do
|
426
|
+
let(:option) { :legacy_readonly }
|
427
|
+
let(:default) { true }
|
428
|
+
|
429
|
+
it_behaves_like "a config option"
|
430
|
+
end
|
431
|
+
|
352
432
|
describe "#load!" do
|
353
433
|
|
354
434
|
before(:all) do
|
@@ -599,24 +679,26 @@ describe Mongoid::Config do
|
|
599
679
|
|
600
680
|
it 'passes uuid to driver' do
|
601
681
|
Mongo::Client.should receive(:new).with(SpecConfig.instance.addresses,
|
602
|
-
|
603
|
-
|
604
|
-
|
605
|
-
|
606
|
-
'
|
607
|
-
|
608
|
-
'
|
609
|
-
'
|
610
|
-
|
611
|
-
|
612
|
-
|
613
|
-
|
614
|
-
|
615
|
-
|
616
|
-
|
617
|
-
|
618
|
-
|
619
|
-
|
682
|
+
{
|
683
|
+
auto_encryption_options: {
|
684
|
+
'key_vault_namespace' => 'admin.datakeys',
|
685
|
+
'kms_providers' => { 'local' => { 'key' => 'z7iYiYKLuYymEWtk4kfny1ESBwwFdA58qMqff96A8ghiOcIK75lJGPUIocku8LOFjQuEgeIP4xlln3s7r93FV9J5sAE7zg8U' } },
|
686
|
+
'schema_map' => { 'blog_development.comments' => {
|
687
|
+
'bsonType' => 'object',
|
688
|
+
'properties' => {
|
689
|
+
'message' => { 'encrypt' => {
|
690
|
+
'algorithm' => 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic',
|
691
|
+
'bsonType' => 'string',
|
692
|
+
'keyId' => [BSON::Binary.new("G\xF0 5\xCC@HX\xA2%b\x97\xA9a\xA8\xE7", :uuid)],
|
693
|
+
} },
|
694
|
+
},
|
695
|
+
} } },
|
696
|
+
database: 'mongoid_test',
|
697
|
+
platform: "mongoid-#{Mongoid::VERSION}",
|
698
|
+
wrapping_libraries: [
|
699
|
+
{ 'name' => 'Mongoid', 'version' => Mongoid::VERSION },
|
700
|
+
],
|
701
|
+
}
|
620
702
|
)
|
621
703
|
|
622
704
|
client
|
@@ -645,6 +727,17 @@ describe Mongoid::Config do
|
|
645
727
|
}.to raise_error(Mongoid::Errors::InvalidConfigOption)
|
646
728
|
end
|
647
729
|
end
|
730
|
+
|
731
|
+
context 'when invalid global_executor_concurrency option provided' do
|
732
|
+
it "raises an error" do
|
733
|
+
expect do
|
734
|
+
described_class.options = {
|
735
|
+
async_query_executor: :immediate,
|
736
|
+
global_executor_concurrency: 5
|
737
|
+
}
|
738
|
+
end.to raise_error(Mongoid::Errors::InvalidGlobalExecutorConcurrency)
|
739
|
+
end
|
740
|
+
end
|
648
741
|
end
|
649
742
|
|
650
743
|
describe "#clients=" do
|
@@ -845,4 +938,47 @@ describe Mongoid::Config do
|
|
845
938
|
end
|
846
939
|
end
|
847
940
|
end
|
941
|
+
|
942
|
+
describe 'deprecations' do
|
943
|
+
{ use_activesupport_time_zone: true,
|
944
|
+
broken_aggregables: false,
|
945
|
+
broken_alias_handling: false,
|
946
|
+
broken_and: false,
|
947
|
+
broken_scoping: false,
|
948
|
+
broken_updates: false,
|
949
|
+
compare_time_by_ms: true,
|
950
|
+
legacy_attributes: false,
|
951
|
+
legacy_pluck_distinct: false,
|
952
|
+
legacy_triple_equals: false,
|
953
|
+
object_id_as_json_oid: false,
|
954
|
+
overwrite_chained_operators: false }.each do |option, default|
|
955
|
+
|
956
|
+
context ":#{option} option" do
|
957
|
+
|
958
|
+
before do
|
959
|
+
Mongoid::Warnings.class_eval do
|
960
|
+
instance_variable_set(:"@#{option}_deprecated", false)
|
961
|
+
end
|
962
|
+
end
|
963
|
+
|
964
|
+
let(:matcher) do
|
965
|
+
/Config option :#{option}.+\. It will always be #{default} beginning in Mongoid 9\.0\./
|
966
|
+
end
|
967
|
+
|
968
|
+
context 'when set to true' do
|
969
|
+
it 'gives a deprecation warning' do
|
970
|
+
expect(Mongoid.logger).to receive(:warn).with(matcher)
|
971
|
+
described_class.send(:"#{option}=", true)
|
972
|
+
end
|
973
|
+
end
|
974
|
+
|
975
|
+
context 'when set to false' do
|
976
|
+
it 'gives a deprecation warning' do
|
977
|
+
expect(Mongoid.logger).to receive(:warn).with(matcher)
|
978
|
+
described_class.send(:"#{option}=", false)
|
979
|
+
end
|
980
|
+
end
|
981
|
+
end
|
982
|
+
end
|
983
|
+
end
|
848
984
|
end
|