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
@@ -136,21 +136,135 @@ describe Mongoid::Stateful do
|
|
136
136
|
Band.new
|
137
137
|
end
|
138
138
|
|
139
|
-
context "when
|
139
|
+
context "when legacy_readonly is true" do
|
140
|
+
config_override :legacy_readonly, true
|
140
141
|
|
141
|
-
|
142
|
-
|
142
|
+
context "when the selected fields are set" do
|
143
|
+
|
144
|
+
before do
|
145
|
+
document.__selected_fields = { test: 1 }
|
146
|
+
end
|
147
|
+
|
148
|
+
it "returns true" do
|
149
|
+
expect(document).to be_readonly
|
150
|
+
end
|
143
151
|
end
|
144
152
|
|
145
|
-
|
146
|
-
|
153
|
+
context "when no readonly has been set" do
|
154
|
+
|
155
|
+
it "returns false" do
|
156
|
+
expect(document).to_not be_readonly
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
context "when the readonly! method is called" do
|
161
|
+
|
162
|
+
let(:op) do
|
163
|
+
document.readonly!
|
164
|
+
end
|
165
|
+
|
166
|
+
it "returns false" do
|
167
|
+
op
|
168
|
+
expect(document).to_not be_readonly
|
169
|
+
end
|
170
|
+
|
171
|
+
it "warns" do
|
172
|
+
expect(Mongoid::Warnings).to receive(:warn_legacy_readonly)
|
173
|
+
op
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
context "when overriding readonly?" do
|
178
|
+
|
179
|
+
let(:doc) { ReadonlyModel.create! }
|
180
|
+
|
181
|
+
before do
|
182
|
+
class ReadonlyModel
|
183
|
+
include Mongoid::Document
|
184
|
+
|
185
|
+
attr_accessor :locked
|
186
|
+
|
187
|
+
def readonly?
|
188
|
+
!!locked
|
189
|
+
end
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
after do
|
194
|
+
Object.send(:remove_const, :ReadonlyModel)
|
195
|
+
end
|
196
|
+
|
197
|
+
it "raises when readonly? is true" do
|
198
|
+
expect(doc.readonly?).to be false
|
199
|
+
doc.locked = true
|
200
|
+
expect(doc.readonly?).to be true
|
201
|
+
expect do
|
202
|
+
doc.destroy
|
203
|
+
end.to raise_error(Mongoid::Errors::ReadonlyDocument)
|
204
|
+
end
|
147
205
|
end
|
148
206
|
end
|
149
207
|
|
150
|
-
context "when
|
208
|
+
context "when legacy_readonly is false" do
|
209
|
+
config_override :legacy_readonly, false
|
151
210
|
|
152
|
-
|
153
|
-
|
211
|
+
context "when the selected fields are set" do
|
212
|
+
|
213
|
+
before do
|
214
|
+
document.__selected_fields = { test: 1 }
|
215
|
+
end
|
216
|
+
|
217
|
+
it "returns false" do
|
218
|
+
expect(document).to_not be_readonly
|
219
|
+
end
|
220
|
+
end
|
221
|
+
|
222
|
+
context "when the readonly! method is called" do
|
223
|
+
|
224
|
+
before do
|
225
|
+
document.readonly!
|
226
|
+
end
|
227
|
+
|
228
|
+
it "returns true" do
|
229
|
+
expect(document).to be_readonly
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
context "when no readonly has been set" do
|
234
|
+
|
235
|
+
it "returns false" do
|
236
|
+
expect(document).to_not be_readonly
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
context "when overriding readonly?" do
|
241
|
+
|
242
|
+
let(:doc) { ReadonlyModel.new }
|
243
|
+
|
244
|
+
before do
|
245
|
+
class ReadonlyModel
|
246
|
+
include Mongoid::Document
|
247
|
+
|
248
|
+
attr_accessor :locked
|
249
|
+
|
250
|
+
def readonly?
|
251
|
+
!!locked
|
252
|
+
end
|
253
|
+
end
|
254
|
+
end
|
255
|
+
|
256
|
+
after do
|
257
|
+
Object.send(:remove_const, :ReadonlyModel)
|
258
|
+
end
|
259
|
+
|
260
|
+
it "raises when readonly? is true" do
|
261
|
+
expect(doc.readonly?).to be false
|
262
|
+
doc.locked = true
|
263
|
+
expect(doc.readonly?).to be true
|
264
|
+
expect do
|
265
|
+
doc.save!
|
266
|
+
end.to raise_error(Mongoid::Errors::ReadonlyDocument)
|
267
|
+
end
|
154
268
|
end
|
155
269
|
end
|
156
270
|
end
|
@@ -35,6 +35,22 @@ shared_context "rake task" do
|
|
35
35
|
task.invoke
|
36
36
|
end
|
37
37
|
end
|
38
|
+
|
39
|
+
shared_examples_for "create_collections" do
|
40
|
+
|
41
|
+
it "receives create_collections" do
|
42
|
+
expect(Mongoid::Tasks::Database).to receive(:create_collections)
|
43
|
+
task.invoke
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
shared_examples_for "force create_collections" do
|
48
|
+
|
49
|
+
it "receives create_collections" do
|
50
|
+
expect(Mongoid::Tasks::Database).to receive(:create_collections).with(force: true)
|
51
|
+
task.invoke
|
52
|
+
end
|
53
|
+
end
|
38
54
|
end
|
39
55
|
|
40
56
|
shared_context "rails rake task" do
|
@@ -99,6 +115,10 @@ describe "db:setup" do
|
|
99
115
|
expect(task.prerequisites).to include("mongoid:create_indexes")
|
100
116
|
end
|
101
117
|
|
118
|
+
it "calls db:mongoid:create_collections" do
|
119
|
+
expect(task.prerequisites).to include("mongoid:create_collections")
|
120
|
+
end
|
121
|
+
|
102
122
|
it "calls db:seed" do
|
103
123
|
expect(task.prerequisites).to include("db:seed")
|
104
124
|
end
|
@@ -113,6 +133,7 @@ describe "db:setup" do
|
|
113
133
|
|
114
134
|
it "works" do
|
115
135
|
expect(Mongoid::Tasks::Database).to receive(:create_indexes)
|
136
|
+
expect(Mongoid::Tasks::Database).to receive(:create_collections)
|
116
137
|
expect(Rails).to receive(:root).and_return(".")
|
117
138
|
expect(Rails).to receive(:application).and_return(application)
|
118
139
|
task.invoke
|
@@ -169,9 +190,14 @@ describe "db:test:prepare" do
|
|
169
190
|
expect(task.prerequisites).to include("mongoid:create_indexes")
|
170
191
|
end
|
171
192
|
|
193
|
+
it "calls mongoid:create_collections" do
|
194
|
+
expect(task.prerequisites).to include("mongoid:create_collections")
|
195
|
+
end
|
196
|
+
|
172
197
|
it "works" do
|
173
198
|
expect(Rails).to receive(:application).and_return(application)
|
174
199
|
expect(Mongoid::Tasks::Database).to receive(:create_indexes)
|
200
|
+
expect(Mongoid::Tasks::Database).to receive(:create_collections)
|
175
201
|
task.invoke
|
176
202
|
end
|
177
203
|
end
|
@@ -200,6 +226,54 @@ describe "db:mongoid:create_indexes" do
|
|
200
226
|
end
|
201
227
|
end
|
202
228
|
|
229
|
+
describe "db:mongoid:create_collections" do
|
230
|
+
include_context "rake task"
|
231
|
+
|
232
|
+
it_behaves_like "create_collections"
|
233
|
+
|
234
|
+
it "calls load_models" do
|
235
|
+
expect(task.prerequisites).to include("load_models")
|
236
|
+
end
|
237
|
+
|
238
|
+
it "calls environment" do
|
239
|
+
expect(task.prerequisites).to include("environment")
|
240
|
+
end
|
241
|
+
|
242
|
+
context "when using rails task" do
|
243
|
+
include_context "rails rake task"
|
244
|
+
|
245
|
+
before do
|
246
|
+
expect(Rails).to receive(:application).and_return(application)
|
247
|
+
end
|
248
|
+
|
249
|
+
it_behaves_like "create_collections"
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
describe "db:mongoid:create_collections:force" do
|
254
|
+
include_context "rake task"
|
255
|
+
|
256
|
+
it_behaves_like "force create_collections"
|
257
|
+
|
258
|
+
it "calls load_models" do
|
259
|
+
expect(task.prerequisites).to include("load_models")
|
260
|
+
end
|
261
|
+
|
262
|
+
it "calls environment" do
|
263
|
+
expect(task.prerequisites).to include("environment")
|
264
|
+
end
|
265
|
+
|
266
|
+
context "when using rails task" do
|
267
|
+
include_context "rails rake task"
|
268
|
+
|
269
|
+
before do
|
270
|
+
expect(Rails).to receive(:application).and_return(application)
|
271
|
+
end
|
272
|
+
|
273
|
+
it_behaves_like "force create_collections"
|
274
|
+
end
|
275
|
+
end
|
276
|
+
|
203
277
|
describe "db:mongoid:remove_undefined_indexes" do
|
204
278
|
include_context "rake task"
|
205
279
|
|
@@ -4,6 +4,59 @@ require "spec_helper"
|
|
4
4
|
|
5
5
|
describe "Mongoid::Tasks::Database" do
|
6
6
|
|
7
|
+
before(:all) do
|
8
|
+
module DatabaseSpec
|
9
|
+
class Measurement
|
10
|
+
include Mongoid::Document
|
11
|
+
|
12
|
+
field :timestamp, type: Time
|
13
|
+
field :temperature, type: Integer
|
14
|
+
|
15
|
+
embeds_many :comments
|
16
|
+
|
17
|
+
store_in collection: "measurement",
|
18
|
+
collection_options: {
|
19
|
+
capped: true, size: 10000
|
20
|
+
}
|
21
|
+
end
|
22
|
+
|
23
|
+
class Comment
|
24
|
+
include Mongoid::Document
|
25
|
+
|
26
|
+
field :content, type: String
|
27
|
+
|
28
|
+
embedded_in :measurement
|
29
|
+
|
30
|
+
store_in collection_options: {
|
31
|
+
capped: true, size: 10000
|
32
|
+
}
|
33
|
+
end
|
34
|
+
|
35
|
+
class Note
|
36
|
+
include Mongoid::Document
|
37
|
+
|
38
|
+
field :text
|
39
|
+
|
40
|
+
recursively_embeds_one
|
41
|
+
|
42
|
+
store_in collection_options: {
|
43
|
+
capped: true, size: 10000
|
44
|
+
}
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
after(:all) do
|
50
|
+
Mongoid.deregister_model(DatabaseSpec::Measurement)
|
51
|
+
DatabaseSpec.send(:remove_const, :Measurement)
|
52
|
+
Mongoid.deregister_model(DatabaseSpec::Comment)
|
53
|
+
DatabaseSpec.send(:remove_const, :Comment)
|
54
|
+
Mongoid.deregister_model(DatabaseSpec::Note)
|
55
|
+
DatabaseSpec.send(:remove_const, :Note)
|
56
|
+
Object.send(:remove_const, :DatabaseSpec)
|
57
|
+
end
|
58
|
+
|
59
|
+
|
7
60
|
let(:logger) do
|
8
61
|
double("logger").tap do |log|
|
9
62
|
allow(log).to receive(:info)
|
@@ -18,6 +71,80 @@ describe "Mongoid::Tasks::Database" do
|
|
18
71
|
[ User, Account, Address, Draft ]
|
19
72
|
end
|
20
73
|
|
74
|
+
describe '.create_collections' do
|
75
|
+
context 'collection_options are specified' do
|
76
|
+
let(:models) do
|
77
|
+
[DatabaseSpec::Measurement]
|
78
|
+
end
|
79
|
+
|
80
|
+
after do
|
81
|
+
DatabaseSpec::Measurement.collection.drop
|
82
|
+
end
|
83
|
+
|
84
|
+
[true, false].each do |force|
|
85
|
+
context "when force is #{force}" do
|
86
|
+
it 'creates the collection' do
|
87
|
+
expect(DatabaseSpec::Measurement).to receive(:create_collection).once.with(force: force)
|
88
|
+
Mongoid::Tasks::Database.create_collections(models, force: force)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
93
|
+
|
94
|
+
context 'collection_options are not specified' do
|
95
|
+
let(:models) do
|
96
|
+
[Person]
|
97
|
+
end
|
98
|
+
|
99
|
+
[true, false].each do |force|
|
100
|
+
context "when force is #{force}" do
|
101
|
+
it 'creates the collection' do
|
102
|
+
expect(Person).to receive(:create_collection).once.with(force: force)
|
103
|
+
Mongoid::Tasks::Database.create_collections(models, force: force)
|
104
|
+
end
|
105
|
+
end
|
106
|
+
end
|
107
|
+
|
108
|
+
context "when collection options is defined on embedded model" do
|
109
|
+
|
110
|
+
let(:models) do
|
111
|
+
[DatabaseSpec::Comment]
|
112
|
+
end
|
113
|
+
|
114
|
+
let(:logger) do
|
115
|
+
double("logger").tap do |log|
|
116
|
+
expect(log).to receive(:info).once.with(/MONGOID: collection options ignored on: .*, please define in the root model/)
|
117
|
+
end
|
118
|
+
end
|
119
|
+
|
120
|
+
before do
|
121
|
+
allow(Mongoid::Tasks::Database).to receive(:logger).and_return(logger)
|
122
|
+
end
|
123
|
+
|
124
|
+
it "does nothing, but logging" do
|
125
|
+
expect(DatabaseSpec::Comment).to receive(:create_collection).never
|
126
|
+
Mongoid::Tasks::Database.create_collections(models)
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
context "when collection options is defined on cyclic model" do
|
131
|
+
|
132
|
+
let(:models) do
|
133
|
+
[DatabaseSpec::Note]
|
134
|
+
end
|
135
|
+
|
136
|
+
after do
|
137
|
+
DatabaseSpec::Note.collection.drop
|
138
|
+
end
|
139
|
+
|
140
|
+
it "creates the collection" do
|
141
|
+
expect(DatabaseSpec::Note).to receive(:create_collection).once
|
142
|
+
Mongoid::Tasks::Database.create_collections(models)
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
146
|
+
end
|
147
|
+
|
21
148
|
describe ".create_indexes" do
|
22
149
|
|
23
150
|
let!(:klass) do
|
@@ -17,12 +17,7 @@ describe Mongoid::Timestamps do
|
|
17
17
|
|
18
18
|
let(:time_zone) { "Pacific Time (US & Canada)" }
|
19
19
|
|
20
|
-
|
21
|
-
z = Time.zone
|
22
|
-
Time.zone = time_zone
|
23
|
-
ex.run
|
24
|
-
Time.zone = z
|
25
|
-
end
|
20
|
+
time_zone_override "Pacific Time (US & Canada)"
|
26
21
|
|
27
22
|
before do
|
28
23
|
document.run_callbacks(:create)
|
@@ -77,17 +72,20 @@ describe Mongoid::Timestamps do
|
|
77
72
|
context "when the document has changed with updated_at specified" do
|
78
73
|
|
79
74
|
let(:document) do
|
80
|
-
Dokument.
|
75
|
+
Dokument.create(created_at: Time.now.utc)
|
76
|
+
end
|
77
|
+
|
78
|
+
let(:expected_updated_at) do
|
79
|
+
DateTime.parse("2001-06-12")
|
81
80
|
end
|
82
81
|
|
83
82
|
before do
|
84
|
-
document.
|
85
|
-
document.updated_at = DateTime.parse("2001-06-12")
|
83
|
+
document.updated_at = expected_updated_at
|
86
84
|
end
|
87
85
|
|
88
86
|
it "does not set updated at" do
|
89
|
-
expect(document).to receive(:updated_at=).never
|
90
87
|
document.save!
|
88
|
+
expect(document.reload.updated_at).to be == expected_updated_at
|
91
89
|
end
|
92
90
|
end
|
93
91
|
|
@@ -127,7 +125,7 @@ describe Mongoid::Timestamps do
|
|
127
125
|
end
|
128
126
|
|
129
127
|
# This section of tests describes the behavior of the updated_at field for
|
130
|
-
# different updates on associations, as outlined in PR #5219.
|
128
|
+
# different updates on referenced associations, as outlined in PR #5219.
|
131
129
|
describe "updated_at attribute" do
|
132
130
|
let!(:start_time) { Timecop.freeze(Time.at(Time.now.to_i)) }
|
133
131
|
|