mongoid 6.4.8 → 7.0.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/Rakefile +0 -26
- data/lib/config/locales/en.yml +17 -0
- data/lib/mongoid/association/accessors.rb +339 -0
- data/lib/mongoid/{relations/binding.rb → association/bindable.rb} +32 -52
- data/lib/mongoid/association/builders.rb +92 -0
- data/lib/mongoid/{relations/constraint.rb → association/constrainable.rb} +11 -22
- data/lib/mongoid/association/depending.rb +116 -0
- data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
- data/lib/mongoid/{relations → association}/embedded/batchable.rb +21 -21
- data/lib/mongoid/association/embedded/cyclic.rb +109 -0
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +56 -0
- data/lib/mongoid/{relations/builders/embedded/in.rb → association/embedded/embedded_in/buildable.rb} +12 -6
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +121 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +154 -0
- data/lib/mongoid/{relations/bindings/embedded/many.rb → association/embedded/embeds_many/binding.rb} +11 -9
- data/lib/mongoid/{relations/builders/embedded/many.rb → association/embedded/embeds_many/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +529 -0
- data/lib/mongoid/association/embedded/embeds_many.rb +210 -0
- data/lib/mongoid/{relations/bindings/embedded/one.rb → association/embedded/embeds_one/binding.rb} +12 -10
- data/lib/mongoid/{relations/builders/embedded/one.rb → association/embedded/embeds_one/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +130 -0
- data/lib/mongoid/association/embedded/embeds_one.rb +173 -0
- data/lib/mongoid/association/embedded.rb +4 -0
- data/lib/mongoid/association/macros.rb +204 -0
- data/lib/mongoid/{relations → association}/many.rb +20 -50
- data/lib/mongoid/{relations → association}/marshalable.rb +6 -4
- data/lib/mongoid/association/nested/many.rb +200 -0
- data/lib/mongoid/association/nested/nested_buildable.rb +72 -0
- data/lib/mongoid/association/nested/one.rb +127 -0
- data/lib/mongoid/association/nested.rb +15 -0
- data/lib/mongoid/{relations → association}/one.rb +6 -6
- data/lib/mongoid/association/options.rb +152 -0
- data/lib/mongoid/{relations → association}/proxy.rb +31 -58
- data/lib/mongoid/association/referenced/auto_save.rb +79 -0
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +87 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +46 -0
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +36 -0
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +136 -0
- data/lib/mongoid/association/referenced/belongs_to.rb +248 -0
- data/lib/mongoid/association/referenced/counter_cache.rb +163 -0
- data/lib/mongoid/association/referenced/eager.rb +159 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +71 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +40 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +52 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +310 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +290 -0
- data/lib/mongoid/{relations/bindings/referenced/many.rb → association/referenced/has_many/binding.rb} +6 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +38 -0
- data/lib/mongoid/association/referenced/has_many/eager.rb +43 -0
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +510 -0
- data/lib/mongoid/association/referenced/has_many/proxy.rb +578 -0
- data/lib/mongoid/association/referenced/has_many.rb +275 -0
- data/lib/mongoid/{relations/bindings/referenced/one.rb → association/referenced/has_one/binding.rb} +11 -8
- data/lib/mongoid/association/referenced/has_one/buildable.rb +60 -0
- data/lib/mongoid/association/referenced/has_one/eager.rb +35 -0
- data/lib/mongoid/{relations/builders/nested_attributes/one.rb → association/referenced/has_one/nested_builder.rb} +9 -9
- data/lib/mongoid/association/referenced/has_one/proxy.rb +113 -0
- data/lib/mongoid/association/referenced/has_one.rb +204 -0
- data/lib/mongoid/association/referenced/syncable.rb +170 -0
- data/lib/mongoid/association/referenced.rb +7 -0
- data/lib/mongoid/{relations → association}/reflections.rb +21 -17
- data/lib/mongoid/association/relatable.rb +415 -0
- data/lib/mongoid/association/touchable.rb +97 -0
- data/lib/mongoid/association.rb +150 -0
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic.rb +4 -4
- data/lib/mongoid/attributes/dynamic.rb +2 -2
- data/lib/mongoid/attributes/nested.rb +10 -10
- data/lib/mongoid/attributes/processing.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +2 -4
- data/lib/mongoid/attributes.rb +22 -13
- data/lib/mongoid/changeable.rb +1 -1
- data/lib/mongoid/clients/options.rb +1 -1
- data/lib/mongoid/clients/sessions.rb +2 -2
- data/lib/mongoid/composable.rb +4 -4
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +4 -4
- data/lib/mongoid/contextual/memory.rb +25 -7
- data/lib/mongoid/contextual/mongo.rb +13 -11
- data/lib/mongoid/copyable.rb +6 -6
- data/lib/mongoid/criteria/includable.rb +14 -14
- data/lib/mongoid/criteria/modifiable.rb +8 -14
- data/lib/mongoid/criteria/queryable/extensions/string.rb +1 -1
- data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
- data/lib/mongoid/criteria/queryable/selectable.rb +10 -34
- data/lib/mongoid/criteria.rb +2 -2
- data/lib/mongoid/document.rb +6 -6
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +32 -0
- data/lib/mongoid/errors/invalid_relation_option.rb +29 -0
- data/lib/mongoid/errors/unknown_model.rb +25 -0
- data/lib/mongoid/errors.rb +3 -0
- data/lib/mongoid/extensions/array.rb +5 -5
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +5 -2
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/range.rb +1 -0
- data/lib/mongoid/extensions/regexp.rb +0 -1
- data/lib/mongoid/extensions/string.rb +1 -3
- data/lib/mongoid/extensions.rb +0 -4
- data/lib/mongoid/factory.rb +13 -3
- data/lib/mongoid/fields/foreign_key.rb +5 -5
- data/lib/mongoid/fields/standard.rb +2 -14
- data/lib/mongoid/fields/validators/macro.rb +1 -1
- data/lib/mongoid/fields.rb +3 -3
- data/lib/mongoid/indexable.rb +8 -5
- data/lib/mongoid/interceptable.rb +5 -5
- data/lib/mongoid/matchable/and.rb +1 -1
- data/lib/mongoid/matchable/elem_match.rb +9 -3
- data/lib/mongoid/matchable.rb +0 -3
- data/lib/mongoid/persistable/creatable.rb +2 -2
- data/lib/mongoid/persistable/deletable.rb +9 -8
- data/lib/mongoid/persistable/incrementable.rb +1 -1
- data/lib/mongoid/persistable/logical.rb +1 -1
- data/lib/mongoid/persistable/settable.rb +5 -5
- data/lib/mongoid/persistable/updatable.rb +2 -2
- data/lib/mongoid/persistable/upsertable.rb +1 -1
- data/lib/mongoid/persistable.rb +5 -6
- data/lib/mongoid/persistence_context.rb +1 -5
- data/lib/mongoid/query_cache.rb +19 -64
- data/lib/mongoid/railtie.rb +0 -17
- data/lib/mongoid/reloadable.rb +1 -1
- data/lib/mongoid/scopable.rb +3 -3
- data/lib/mongoid/serializable.rb +4 -4
- data/lib/mongoid/shardable.rb +1 -1
- data/lib/mongoid/tasks/database.rb +2 -2
- data/lib/mongoid/threaded.rb +0 -36
- data/lib/mongoid/traversable.rb +3 -3
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +4 -4
- data/lib/mongoid/validatable.rb +8 -8
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -0
- data/spec/app/models/animal.rb +2 -1
- data/spec/app/models/bomb.rb +1 -1
- data/spec/app/models/message.rb +1 -1
- data/spec/app/models/person.rb +5 -2
- data/spec/app/models/shipment_address.rb +1 -0
- data/spec/app/models/vertex.rb +6 -0
- data/spec/app/models/wiki_page.rb +1 -1
- data/spec/config/mongoid.yml +1 -0
- data/spec/mongoid/{relations → association}/accessors_spec.rb +1 -1
- data/spec/mongoid/{relations → association}/auto_save_spec.rb +60 -12
- data/spec/mongoid/{relations → association}/builders_spec.rb +1 -1
- data/spec/mongoid/association/constrainable_spec.rb +115 -0
- data/spec/mongoid/{relations → association}/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +613 -0
- data/spec/mongoid/{relations → association}/eager_spec.rb +12 -12
- data/spec/mongoid/{relations → association/embedded}/cyclic_spec.rb +1 -1
- data/spec/mongoid/{relations/bindings/embedded/in_spec.rb → association/embedded/embedded_in/binding_spec.rb} +13 -13
- data/spec/mongoid/{relations/builders/embedded/in_spec.rb → association/embedded/embedded_in/buildable_spec.rb} +9 -9
- data/spec/mongoid/{relations/embedded/in_spec.rb → association/embedded/embedded_in/proxy_spec.rb} +5 -77
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +843 -0
- data/spec/mongoid/{relations/bindings/embedded/many_spec.rb → association/embedded/embeds_many/binding_spec.rb} +3 -3
- data/spec/mongoid/{relations/builders/embedded/many_spec.rb → association/embedded/embeds_many/buildable_spec.rb} +17 -45
- data/spec/mongoid/{relations/embedded/many_spec.rb → association/embedded/embeds_many/proxy_spec.rb} +140 -428
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +852 -0
- data/spec/mongoid/{relations/bindings/embedded/one_spec.rb → association/embedded/embeds_one/binding_spec.rb} +4 -4
- data/spec/mongoid/{relations/builders/embedded/one_spec.rb → association/embedded/embeds_one/buildable_spec.rb} +14 -34
- data/spec/mongoid/{relations/embedded/one_spec.rb → association/embedded/embeds_one/proxy_spec.rb} +39 -84
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +908 -0
- data/spec/mongoid/{relations → association}/macros_spec.rb +148 -73
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/many_spec.rb +16 -19
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/one_spec.rb +17 -20
- data/spec/mongoid/association/options_spec.rb +1321 -0
- data/spec/mongoid/{relations → association}/polymorphic_spec.rb +7 -34
- data/spec/mongoid/{relations/bindings/referenced/in_spec.rb → association/referenced/belongs_to/binding_spec.rb} +7 -7
- data/spec/mongoid/{relations/builders/referenced/in_spec.rb → association/referenced/belongs_to/buildable_spec.rb} +46 -79
- data/spec/mongoid/{relations/eager/belongs_to_spec.rb → association/referenced/belongs_to/eager_spec.rb} +9 -9
- data/spec/mongoid/{relations/referenced/in_spec.rb → association/referenced/belongs_to/proxy_spec.rb} +57 -91
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +1963 -0
- data/spec/mongoid/{relations/bindings/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +121 -0
- data/spec/mongoid/{relations/eager/has_and_belongs_to_many_spec.rb → association/referenced/has_and_belongs_to_many/eager_spec.rb} +5 -5
- data/spec/mongoid/{relations/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/proxy_spec.rb} +107 -98
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1027 -0
- data/spec/mongoid/{relations/bindings/referenced/many_spec.rb → association/referenced/has_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +119 -0
- data/spec/mongoid/{relations/eager/has_many_spec.rb → association/referenced/has_many/eager_spec.rb} +26 -11
- data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +122 -1
- data/spec/mongoid/{relations/referenced/many_spec.rb → association/referenced/has_many/proxy_spec.rb} +28 -93
- data/spec/mongoid/association/referenced/has_many_spec.rb +1225 -0
- data/spec/mongoid/{relations/bindings/referenced/one_spec.rb → association/referenced/has_one/binding_spec.rb} +4 -4
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +113 -0
- data/spec/mongoid/{relations/eager/has_one_spec.rb → association/referenced/has_one/eager_spec.rb} +10 -10
- data/spec/mongoid/{relations/referenced/one_spec.rb → association/referenced/has_one/proxy_spec.rb} +9 -109
- data/spec/mongoid/association/referenced/has_one_spec.rb +1244 -0
- data/spec/mongoid/{relations → association}/reflections_spec.rb +1 -12
- data/spec/mongoid/{relations/synchronization_spec.rb → association/syncable_spec.rb} +4 -2
- data/spec/mongoid/{relations → association}/touchable_spec.rb +19 -1
- data/spec/mongoid/{relations_spec.rb → association_spec.rb} +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +2 -2
- data/spec/mongoid/atomic_spec.rb +4 -4
- data/spec/mongoid/attributes/nested_spec.rb +14 -12
- data/spec/mongoid/attributes/readonly_spec.rb +80 -125
- data/spec/mongoid/attributes_spec.rb +38 -2
- data/spec/mongoid/clients/factory_spec.rb +28 -52
- data/spec/mongoid/clients/options_spec.rb +65 -69
- data/spec/mongoid/clients/sessions_spec.rb +4 -13
- data/spec/mongoid/config_spec.rb +24 -0
- data/spec/mongoid/contextual/geo_near_spec.rb +0 -1
- data/spec/mongoid/contextual/memory_spec.rb +19 -0
- data/spec/mongoid/contextual/mongo_spec.rb +30 -5
- data/spec/mongoid/copyable_spec.rb +34 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +183 -60
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -3
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +43 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +12 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +3 -42
- data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -2
- data/spec/mongoid/criteria/scopable_spec.rb +0 -81
- data/spec/mongoid/criteria_spec.rb +16 -19
- data/spec/mongoid/document_spec.rb +2 -56
- data/spec/mongoid/extensions/array_spec.rb +11 -15
- data/spec/mongoid/extensions/big_decimal_spec.rb +9 -9
- data/spec/mongoid/extensions/hash_spec.rb +18 -1
- data/spec/mongoid/extensions/object_spec.rb +7 -11
- data/spec/mongoid/extensions/range_spec.rb +7 -0
- data/spec/mongoid/extensions/regexp_spec.rb +0 -23
- data/spec/mongoid/extensions/string_spec.rb +7 -35
- data/spec/mongoid/factory_spec.rb +19 -1
- data/spec/mongoid/fields/foreign_key_spec.rb +24 -32
- data/spec/mongoid/fields_spec.rb +2 -2
- data/spec/mongoid/findable_spec.rb +1 -1
- data/spec/mongoid/indexable_spec.rb +18 -8
- data/spec/mongoid/interceptable_spec.rb +22 -1
- data/spec/mongoid/matchable/elem_match_spec.rb +20 -0
- data/spec/mongoid/matchable_spec.rb +1 -26
- data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
- data/spec/mongoid/persistable/savable_spec.rb +2 -2
- data/spec/mongoid/persistable/settable_spec.rb +1 -35
- data/spec/mongoid/persistable_spec.rb +21 -6
- data/spec/mongoid/query_cache_spec.rb +16 -99
- data/spec/mongoid/relations/proxy_spec.rb +124 -124
- data/spec/mongoid/scopable_spec.rb +0 -13
- data/spec/mongoid/shardable_spec.rb +32 -12
- data/spec/mongoid/threaded_spec.rb +0 -68
- data/spec/mongoid/validatable/associated_spec.rb +1 -1
- data/spec/mongoid/validatable/presence_spec.rb +7 -6
- data/spec/mongoid/validatable_spec.rb +1 -1
- data/spec/spec_helper.rb +12 -14
- data.tar.gz.sig +1 -1
- metadata +192 -207
- metadata.gz.sig +0 -0
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/railties/controller_runtime.rb +0 -86
- data/lib/mongoid/relations/accessors.rb +0 -267
- data/lib/mongoid/relations/auto_save.rb +0 -94
- data/lib/mongoid/relations/bindings/embedded/in.rb +0 -59
- data/lib/mongoid/relations/bindings/referenced/in.rb +0 -65
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +0 -70
- data/lib/mongoid/relations/bindings.rb +0 -9
- data/lib/mongoid/relations/builder.rb +0 -57
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +0 -199
- data/lib/mongoid/relations/builders/referenced/in.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +0 -39
- data/lib/mongoid/relations/builders/referenced/one.rb +0 -26
- data/lib/mongoid/relations/builders.rb +0 -106
- data/lib/mongoid/relations/cascading/delete.rb +0 -44
- data/lib/mongoid/relations/cascading/destroy.rb +0 -43
- data/lib/mongoid/relations/cascading/nullify.rb +0 -35
- data/lib/mongoid/relations/cascading/restrict.rb +0 -39
- data/lib/mongoid/relations/cascading.rb +0 -56
- data/lib/mongoid/relations/conversions.rb +0 -34
- data/lib/mongoid/relations/counter_cache.rb +0 -160
- data/lib/mongoid/relations/cyclic.rb +0 -107
- data/lib/mongoid/relations/eager/base.rb +0 -153
- data/lib/mongoid/relations/eager/belongs_to.rb +0 -31
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +0 -47
- data/lib/mongoid/relations/eager/has_many.rb +0 -38
- data/lib/mongoid/relations/eager/has_one.rb +0 -30
- data/lib/mongoid/relations/embedded/in.rb +0 -241
- data/lib/mongoid/relations/embedded/many.rb +0 -683
- data/lib/mongoid/relations/embedded/one.rb +0 -235
- data/lib/mongoid/relations/macros.rb +0 -367
- data/lib/mongoid/relations/metadata.rb +0 -1179
- data/lib/mongoid/relations/nested_builder.rb +0 -74
- data/lib/mongoid/relations/options.rb +0 -49
- data/lib/mongoid/relations/polymorphic.rb +0 -39
- data/lib/mongoid/relations/referenced/in.rb +0 -304
- data/lib/mongoid/relations/referenced/many.rb +0 -812
- data/lib/mongoid/relations/referenced/many_to_many.rb +0 -479
- data/lib/mongoid/relations/referenced/one.rb +0 -290
- data/lib/mongoid/relations/synchronization.rb +0 -169
- data/lib/mongoid/relations/targets/enumerable.rb +0 -493
- data/lib/mongoid/relations/targets.rb +0 -2
- data/lib/mongoid/relations/touchable.rb +0 -97
- data/lib/mongoid/relations.rb +0 -148
- data/spec/app/models/array_field.rb +0 -7
- data/spec/app/models/delegating_patient.rb +0 -16
- data/spec/integration/document_spec.rb +0 -22
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +0 -184
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +0 -201
- data/spec/mongoid/matchable/nor_spec.rb +0 -209
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +0 -137
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +0 -178
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +0 -111
- data/spec/mongoid/relations/cascading/delete_spec.rb +0 -101
- data/spec/mongoid/relations/cascading/destroy_spec.rb +0 -47
- data/spec/mongoid/relations/cascading/nullify_spec.rb +0 -32
- data/spec/mongoid/relations/cascading/restrict_spec.rb +0 -68
- data/spec/mongoid/relations/cascading_spec.rb +0 -355
- data/spec/mongoid/relations/constraint_spec.rb +0 -75
- data/spec/mongoid/relations/conversions_spec.rb +0 -128
- data/spec/mongoid/relations/metadata_spec.rb +0 -1985
- data/spec/mongoid/relations/options_spec.rb +0 -35
- data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -110
- data/spec/support/cluster_config.rb +0 -158
- data/spec/support/constraints.rb +0 -101
- data/spec/support/macros.rb +0 -20
- data/spec/support/session_registry.rb +0 -50
- data/spec/support/spec_config.rb +0 -42
- /data/spec/mongoid/{relations → association}/embedded/dirty_spec.rb +0 -0
|
@@ -277,77 +277,49 @@ describe Mongoid::Extensions::String do
|
|
|
277
277
|
context "when the string is an integer" do
|
|
278
278
|
|
|
279
279
|
it "returns true" do
|
|
280
|
-
expect("1234"
|
|
280
|
+
expect("1234").to be_numeric
|
|
281
281
|
end
|
|
282
282
|
end
|
|
283
283
|
|
|
284
284
|
context "when string is a float" do
|
|
285
285
|
|
|
286
286
|
it "returns true" do
|
|
287
|
-
expect("1234.123"
|
|
287
|
+
expect("1234.123").to be_numeric
|
|
288
288
|
end
|
|
289
289
|
end
|
|
290
290
|
|
|
291
291
|
context "when the string is has exponents" do
|
|
292
292
|
|
|
293
293
|
it "returns true" do
|
|
294
|
-
expect("1234.123123E4"
|
|
294
|
+
expect("1234.123123E4").to be_numeric
|
|
295
295
|
end
|
|
296
296
|
end
|
|
297
297
|
|
|
298
298
|
context "when the string is non numeric" do
|
|
299
299
|
|
|
300
300
|
it "returns false" do
|
|
301
|
-
expect("blah"
|
|
301
|
+
expect("blah").to_not be_numeric
|
|
302
302
|
end
|
|
303
303
|
end
|
|
304
304
|
|
|
305
305
|
context "when the string is NaN" do
|
|
306
306
|
|
|
307
307
|
it "returns true" do
|
|
308
|
-
expect("NaN"
|
|
309
|
-
end
|
|
310
|
-
end
|
|
311
|
-
|
|
312
|
-
context "when the string is NaN and junk in front" do
|
|
313
|
-
|
|
314
|
-
it "returns false" do
|
|
315
|
-
expect("a\nNaN".numeric?).to eq(false)
|
|
316
|
-
end
|
|
317
|
-
end
|
|
318
|
-
|
|
319
|
-
context "when the string is NaN and whitespace at end" do
|
|
320
|
-
|
|
321
|
-
it "returns false" do
|
|
322
|
-
expect("NaN\n".numeric?).to eq(false)
|
|
308
|
+
expect("NaN").to be_numeric
|
|
323
309
|
end
|
|
324
310
|
end
|
|
325
311
|
|
|
326
312
|
context "when the string is Infinity" do
|
|
327
313
|
|
|
328
314
|
it "returns true" do
|
|
329
|
-
expect("Infinity"
|
|
330
|
-
end
|
|
331
|
-
end
|
|
332
|
-
|
|
333
|
-
context "when the string contains Infinity and junk in front" do
|
|
334
|
-
|
|
335
|
-
it "returns false" do
|
|
336
|
-
expect("a\nInfinity".numeric?).to eq(false)
|
|
337
|
-
end
|
|
338
|
-
end
|
|
339
|
-
|
|
340
|
-
context "when the string contains Infinity and whitespace at end" do
|
|
341
|
-
|
|
342
|
-
it "returns false" do
|
|
343
|
-
expect("Infinity\n".numeric?).to eq(false)
|
|
315
|
+
expect("Infinity").to be_numeric
|
|
344
316
|
end
|
|
345
317
|
end
|
|
346
318
|
|
|
347
319
|
context "when the string is -Infinity" do
|
|
348
320
|
|
|
349
321
|
it "returns true" do
|
|
350
|
-
expect("-Infinity"
|
|
322
|
+
expect("-Infinity").to be_numeric
|
|
351
323
|
end
|
|
352
324
|
end
|
|
353
325
|
end
|
|
@@ -92,7 +92,7 @@ describe Mongoid::Factory do
|
|
|
92
92
|
context "when the type is a symbol" do
|
|
93
93
|
|
|
94
94
|
let(:person) do
|
|
95
|
-
described_class.build(Person, {:_type => "Doctor"})
|
|
95
|
+
described_class.build(Person, { :_type => "Doctor" })
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
it "instantiates the subclass" do
|
|
@@ -192,5 +192,23 @@ describe Mongoid::Factory do
|
|
|
192
192
|
expect(document.title).to eq("Sir")
|
|
193
193
|
end
|
|
194
194
|
end
|
|
195
|
+
|
|
196
|
+
context 'when type does not correspond to a Class name' do
|
|
197
|
+
|
|
198
|
+
let(:attributes) do
|
|
199
|
+
{ "title" => "Sir", "_type" => "invalid_class_name" }
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
let(:person) do
|
|
203
|
+
described_class.from_db(Person, attributes)
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
it 'raises a exception' do
|
|
207
|
+
expect {
|
|
208
|
+
person
|
|
209
|
+
}.to raise_exception(Mongoid::Errors::UnknownModel)
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
end
|
|
195
213
|
end
|
|
196
214
|
end
|
|
@@ -7,7 +7,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
7
7
|
let(:field) do
|
|
8
8
|
described_class.new(
|
|
9
9
|
:vals,
|
|
10
|
-
|
|
10
|
+
association: Person.relations["preferences"],
|
|
11
11
|
type: Array,
|
|
12
12
|
default: [],
|
|
13
13
|
identity: true
|
|
@@ -68,7 +68,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
68
68
|
let(:field) do
|
|
69
69
|
described_class.new(
|
|
70
70
|
:vals,
|
|
71
|
-
|
|
71
|
+
association: Person.relations["posts"],
|
|
72
72
|
type: Array,
|
|
73
73
|
default: default,
|
|
74
74
|
identity: true
|
|
@@ -89,7 +89,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
89
89
|
let(:field) do
|
|
90
90
|
described_class.new(
|
|
91
91
|
:vals,
|
|
92
|
-
|
|
92
|
+
association: Person.relations["posts"],
|
|
93
93
|
type: Array,
|
|
94
94
|
default: [],
|
|
95
95
|
identity: true
|
|
@@ -103,14 +103,14 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
103
103
|
|
|
104
104
|
describe "#evolve" do
|
|
105
105
|
|
|
106
|
-
let(:
|
|
106
|
+
let(:association) do
|
|
107
107
|
Person.reflect_on_association(:preferences)
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
context "when provided a document" do
|
|
111
111
|
|
|
112
112
|
let(:field) do
|
|
113
|
-
described_class.new(:person_id, type: Object,
|
|
113
|
+
described_class.new(:person_id, type: Object, association: association)
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
let(:game) do
|
|
@@ -129,7 +129,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
129
129
|
context "when the type is an array" do
|
|
130
130
|
|
|
131
131
|
let(:field) do
|
|
132
|
-
described_class.new(:preference_ids, type: Array, default: [],
|
|
132
|
+
described_class.new(:preference_ids, type: Array, default: [], association: association)
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
context "when providing a single value" do
|
|
@@ -197,12 +197,12 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
197
197
|
|
|
198
198
|
context "when the relation stores ids as strings" do
|
|
199
199
|
|
|
200
|
-
let!(:
|
|
200
|
+
let!(:association) do
|
|
201
201
|
Agent.reflect_on_association(:accounts)
|
|
202
202
|
end
|
|
203
203
|
|
|
204
204
|
let!(:field) do
|
|
205
|
-
described_class.new(:account_ids, type: Array, default: [],
|
|
205
|
+
described_class.new(:account_ids, type: Array, default: [], association: association)
|
|
206
206
|
end
|
|
207
207
|
|
|
208
208
|
let(:id_one) do
|
|
@@ -260,12 +260,12 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
260
260
|
|
|
261
261
|
context "when the type is an object" do
|
|
262
262
|
|
|
263
|
-
let(:
|
|
263
|
+
let(:association) do
|
|
264
264
|
Game.reflect_on_association(:person)
|
|
265
265
|
end
|
|
266
266
|
|
|
267
267
|
let(:field) do
|
|
268
|
-
described_class.new(:person_id, type: Object,
|
|
268
|
+
described_class.new(:person_id, type: Object, association: association)
|
|
269
269
|
end
|
|
270
270
|
|
|
271
271
|
context "when providing a single value" do
|
|
@@ -312,12 +312,12 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
312
312
|
|
|
313
313
|
context "when the relation stores string ids" do
|
|
314
314
|
|
|
315
|
-
let(:
|
|
315
|
+
let(:association) do
|
|
316
316
|
Comment.reflect_on_association(:account)
|
|
317
317
|
end
|
|
318
318
|
|
|
319
319
|
let(:field) do
|
|
320
|
-
described_class.new(:person_id, type: Object,
|
|
320
|
+
described_class.new(:person_id, type: Object, association: association)
|
|
321
321
|
end
|
|
322
322
|
|
|
323
323
|
context "when the value is an id string" do
|
|
@@ -384,12 +384,12 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
384
384
|
|
|
385
385
|
context "when the relation stores ids as strings" do
|
|
386
386
|
|
|
387
|
-
let(:
|
|
387
|
+
let(:association) do
|
|
388
388
|
Comment.reflect_on_association(:account)
|
|
389
389
|
end
|
|
390
390
|
|
|
391
391
|
let(:field) do
|
|
392
|
-
described_class.new(:person_id, type: Object,
|
|
392
|
+
described_class.new(:person_id, type: Object, association: association)
|
|
393
393
|
end
|
|
394
394
|
|
|
395
395
|
let(:id_one) do
|
|
@@ -445,14 +445,14 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
445
445
|
end
|
|
446
446
|
end
|
|
447
447
|
|
|
448
|
-
context "when the
|
|
448
|
+
context "when the association is polymoprhic" do
|
|
449
449
|
|
|
450
|
-
let(:
|
|
450
|
+
let(:association) do
|
|
451
451
|
Agent.reflect_on_association(:names)
|
|
452
452
|
end
|
|
453
453
|
|
|
454
454
|
let(:field) do
|
|
455
|
-
described_class.new(:nameable_id, type: Object,
|
|
455
|
+
described_class.new(:nameable_id, type: Object, association: association)
|
|
456
456
|
end
|
|
457
457
|
|
|
458
458
|
let(:value) do
|
|
@@ -464,7 +464,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
464
464
|
end
|
|
465
465
|
|
|
466
466
|
it "does not change the foreign key" do
|
|
467
|
-
expect(evolved).to
|
|
467
|
+
expect(evolved).to eq(BSON::ObjectId.from_string(value))
|
|
468
468
|
end
|
|
469
469
|
end
|
|
470
470
|
end
|
|
@@ -500,12 +500,8 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
500
500
|
|
|
501
501
|
context "when the array is object ids" do
|
|
502
502
|
|
|
503
|
-
let(:
|
|
504
|
-
|
|
505
|
-
inverse_class_name: "Game",
|
|
506
|
-
name: :person,
|
|
507
|
-
relation: Mongoid::Relations::Referenced::In
|
|
508
|
-
)
|
|
503
|
+
let(:association) do
|
|
504
|
+
Game.relations["person"]
|
|
509
505
|
end
|
|
510
506
|
|
|
511
507
|
let(:field) do
|
|
@@ -514,7 +510,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
514
510
|
type: Array,
|
|
515
511
|
default: [],
|
|
516
512
|
identity: true,
|
|
517
|
-
|
|
513
|
+
association: association,
|
|
518
514
|
overwrite: true
|
|
519
515
|
)
|
|
520
516
|
end
|
|
@@ -589,12 +585,8 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
589
585
|
|
|
590
586
|
context "when the array is object ids" do
|
|
591
587
|
|
|
592
|
-
let(:
|
|
593
|
-
|
|
594
|
-
inverse_class_name: "Game",
|
|
595
|
-
name: :person,
|
|
596
|
-
relation: Mongoid::Relations::Referenced::In
|
|
597
|
-
)
|
|
588
|
+
let(:association) do
|
|
589
|
+
Game.relations['person']
|
|
598
590
|
end
|
|
599
591
|
|
|
600
592
|
let(:field) do
|
|
@@ -603,7 +595,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
603
595
|
type: Object,
|
|
604
596
|
default: nil,
|
|
605
597
|
identity: true,
|
|
606
|
-
|
|
598
|
+
association: association,
|
|
607
599
|
overwrite: true
|
|
608
600
|
)
|
|
609
601
|
end
|
data/spec/mongoid/fields_spec.rb
CHANGED
|
@@ -816,7 +816,7 @@ describe Mongoid::Fields do
|
|
|
816
816
|
|
|
817
817
|
context "when the field name conflicts with mongoid's internals" do
|
|
818
818
|
|
|
819
|
-
[:
|
|
819
|
+
[:_association, :invalid].each do |meth|
|
|
820
820
|
context "when the field is named #{meth}" do
|
|
821
821
|
|
|
822
822
|
it "raises an error" do
|
|
@@ -1171,7 +1171,7 @@ describe Mongoid::Fields do
|
|
|
1171
1171
|
end
|
|
1172
1172
|
|
|
1173
1173
|
let(:decimal) do
|
|
1174
|
-
BigDecimal("1000000.00")
|
|
1174
|
+
BigDecimal.new("1000000.00")
|
|
1175
1175
|
end
|
|
1176
1176
|
|
|
1177
1177
|
context "when setting to a big decimal" do
|
|
@@ -89,8 +89,9 @@ describe Mongoid::Indexable do
|
|
|
89
89
|
klass.create_indexes
|
|
90
90
|
end
|
|
91
91
|
|
|
92
|
-
it "creates the indexes" do
|
|
93
|
-
|
|
92
|
+
it "creates the indexes by using specified background option" do
|
|
93
|
+
index = klass.collection.indexes.get(_type: 1)
|
|
94
|
+
expect(index[:background]).to eq(true)
|
|
94
95
|
end
|
|
95
96
|
end
|
|
96
97
|
|
|
@@ -104,12 +105,9 @@ describe Mongoid::Indexable do
|
|
|
104
105
|
end
|
|
105
106
|
end
|
|
106
107
|
|
|
107
|
-
before do
|
|
108
|
-
klass.create_indexes
|
|
109
|
-
end
|
|
110
|
-
|
|
111
108
|
after do
|
|
112
109
|
klass.remove_indexes
|
|
110
|
+
Mongoid::Config.background_indexing = false
|
|
113
111
|
end
|
|
114
112
|
|
|
115
113
|
let(:indexes) do
|
|
@@ -118,8 +116,20 @@ describe Mongoid::Indexable do
|
|
|
118
116
|
end
|
|
119
117
|
end
|
|
120
118
|
|
|
121
|
-
it "creates the indexes" do
|
|
122
|
-
|
|
119
|
+
it "creates the indexes by using default background_indexing option" do
|
|
120
|
+
klass.create_indexes
|
|
121
|
+
|
|
122
|
+
index = indexes.get(_type: 1)
|
|
123
|
+
expect(index[:background]).to eq(Mongoid::Config.background_indexing)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "creates the indexes by using specified background_indexing option" do
|
|
127
|
+
Mongoid::Config.background_indexing = true
|
|
128
|
+
|
|
129
|
+
klass.create_indexes
|
|
130
|
+
|
|
131
|
+
index = indexes.get(_type: 1)
|
|
132
|
+
expect(index[:background]).to eq(true)
|
|
123
133
|
end
|
|
124
134
|
end
|
|
125
135
|
|
|
@@ -526,6 +526,8 @@ describe Mongoid::Interceptable do
|
|
|
526
526
|
end
|
|
527
527
|
|
|
528
528
|
after(:all) do
|
|
529
|
+
# ActiveSupport may raise an error when trying to reset callbacks on all of Band's
|
|
530
|
+
# descendants, regardless of whether they have a particular callback defined.
|
|
529
531
|
begin; Band.reset_callbacks(:rearrange); rescue; end
|
|
530
532
|
end
|
|
531
533
|
|
|
@@ -597,7 +599,7 @@ describe Mongoid::Interceptable do
|
|
|
597
599
|
it "raises an error" do
|
|
598
600
|
expect {
|
|
599
601
|
Band.has_and_belongs_to_many :tags, cascade_callbacks: true
|
|
600
|
-
}.to raise_error(Mongoid::Errors::
|
|
602
|
+
}.to raise_error(Mongoid::Errors::InvalidRelationOption)
|
|
601
603
|
end
|
|
602
604
|
end
|
|
603
605
|
|
|
@@ -1181,6 +1183,25 @@ describe Mongoid::Interceptable do
|
|
|
1181
1183
|
end
|
|
1182
1184
|
end
|
|
1183
1185
|
|
|
1186
|
+
context 'when the parent is updated' do
|
|
1187
|
+
|
|
1188
|
+
let(:band) do
|
|
1189
|
+
Band.create(name: "Moderat")
|
|
1190
|
+
end
|
|
1191
|
+
|
|
1192
|
+
before do
|
|
1193
|
+
band.update(records: [ { name: 'Black on Both Sides' }])
|
|
1194
|
+
end
|
|
1195
|
+
|
|
1196
|
+
it 'executes the callback' do
|
|
1197
|
+
expect(band.records.first.before_validation_called).to be true
|
|
1198
|
+
end
|
|
1199
|
+
|
|
1200
|
+
it 'persists the change' do
|
|
1201
|
+
expect(band.reload.records.first.before_validation_called).to be true
|
|
1202
|
+
end
|
|
1203
|
+
end
|
|
1204
|
+
|
|
1184
1205
|
context "when the child is persisted" do
|
|
1185
1206
|
|
|
1186
1207
|
let(:band) do
|
|
@@ -53,6 +53,19 @@ describe Mongoid::Matchable::ElemMatch do
|
|
|
53
53
|
expect(matcher._matches?("$elemMatch" => {"a" => {"$in" => [1]}, "b" => {"$gt" => 1}})).to be true
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
|
+
|
|
57
|
+
context "when using a $not operator that matches" do
|
|
58
|
+
|
|
59
|
+
it "returns true" do
|
|
60
|
+
expect(matcher._matches?("$elemMatch" => {"a" => {"$not" => 4}})).to be true
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context "when using symbols and a :$not operator that matches" do
|
|
66
|
+
it "returns true" do
|
|
67
|
+
expect(matcher._matches?(:$elemMatch => {"a" => {:$not => 4}})).to be true
|
|
68
|
+
end
|
|
56
69
|
end
|
|
57
70
|
|
|
58
71
|
context "when there is not a sub document that matches the criteria" do
|
|
@@ -74,6 +87,13 @@ describe Mongoid::Matchable::ElemMatch do
|
|
|
74
87
|
expect(matcher._matches?("$elemMatch" => {"a" => {"$in" => [1]}, "b" => {"$gt" => 10}})).to be false
|
|
75
88
|
end
|
|
76
89
|
end
|
|
90
|
+
|
|
91
|
+
context "when using a $not operator that does not match" do
|
|
92
|
+
|
|
93
|
+
it "returns true" do
|
|
94
|
+
expect(matcher._matches?("$elemMatch" => {"a" => {"$not" => 1}})).to be true
|
|
95
|
+
end
|
|
96
|
+
end
|
|
77
97
|
end
|
|
78
98
|
|
|
79
99
|
context "when using a criteria that matches partially but not a single sub document" do
|
|
@@ -86,7 +86,7 @@ describe Mongoid::Matchable do
|
|
|
86
86
|
let(:selector) do
|
|
87
87
|
{ "occupants.0" => "Tim" }
|
|
88
88
|
end
|
|
89
|
-
|
|
89
|
+
|
|
90
90
|
it "returns true" do
|
|
91
91
|
expect(document.locations.first._matches?(selector)).to be true
|
|
92
92
|
end
|
|
@@ -774,31 +774,6 @@ describe Mongoid::Matchable do
|
|
|
774
774
|
end
|
|
775
775
|
end
|
|
776
776
|
|
|
777
|
-
context "with an $nor selector" do
|
|
778
|
-
|
|
779
|
-
context "when the attributes match" do
|
|
780
|
-
|
|
781
|
-
let(:selector) do
|
|
782
|
-
{ "$nor" => [ { number: 10 }, { number: { "$gt" => 199 } } ] }
|
|
783
|
-
end
|
|
784
|
-
|
|
785
|
-
it "returns true" do
|
|
786
|
-
expect(document._matches?(selector)).to be true
|
|
787
|
-
end
|
|
788
|
-
end
|
|
789
|
-
|
|
790
|
-
context "when the attributes do not match" do
|
|
791
|
-
|
|
792
|
-
let(:selector) do
|
|
793
|
-
{ "$nor" => [ { number: 10 }, { number: { "$gt" => 99 } } ] }
|
|
794
|
-
end
|
|
795
|
-
|
|
796
|
-
it "returns false" do
|
|
797
|
-
expect(document._matches?(selector)).to be false
|
|
798
|
-
end
|
|
799
|
-
end
|
|
800
|
-
end
|
|
801
|
-
|
|
802
777
|
context "with a $size selector" do
|
|
803
778
|
|
|
804
779
|
context "when the attributes match" do
|
|
@@ -66,15 +66,15 @@ describe Mongoid::Persistable::Incrementable do
|
|
|
66
66
|
context "when providing big decimal values" do
|
|
67
67
|
|
|
68
68
|
let(:five) do
|
|
69
|
-
BigDecimal("5.0")
|
|
69
|
+
BigDecimal.new("5.0")
|
|
70
70
|
end
|
|
71
71
|
|
|
72
72
|
let(:neg_ten) do
|
|
73
|
-
BigDecimal("-10.0")
|
|
73
|
+
BigDecimal.new("-10.0")
|
|
74
74
|
end
|
|
75
75
|
|
|
76
76
|
let(:thirty) do
|
|
77
|
-
BigDecimal("30.0")
|
|
77
|
+
BigDecimal.new("30.0")
|
|
78
78
|
end
|
|
79
79
|
|
|
80
80
|
let!(:inc) do
|
|
@@ -151,15 +151,15 @@ describe Mongoid::Persistable::Incrementable do
|
|
|
151
151
|
context "when providing big decimal values" do
|
|
152
152
|
|
|
153
153
|
let(:five) do
|
|
154
|
-
BigDecimal("5.0")
|
|
154
|
+
BigDecimal.new("5.0")
|
|
155
155
|
end
|
|
156
156
|
|
|
157
157
|
let(:neg_ten) do
|
|
158
|
-
BigDecimal("-10.0")
|
|
158
|
+
BigDecimal.new("-10.0")
|
|
159
159
|
end
|
|
160
160
|
|
|
161
161
|
let(:thirty) do
|
|
162
|
-
BigDecimal("30.0")
|
|
162
|
+
BigDecimal.new("30.0")
|
|
163
163
|
end
|
|
164
164
|
|
|
165
165
|
let!(:inc) do
|
|
@@ -190,7 +190,7 @@ describe Mongoid::Persistable::Savable do
|
|
|
190
190
|
"name.first_name" => "Ryan"
|
|
191
191
|
},
|
|
192
192
|
"$push"=> {
|
|
193
|
-
"addresses" =>
|
|
193
|
+
"addresses" => { '$each' => [ { "_id" => address.id, "street" => "Bond St" } ] }
|
|
194
194
|
}
|
|
195
195
|
})
|
|
196
196
|
end
|
|
@@ -309,7 +309,7 @@ describe Mongoid::Persistable::Savable do
|
|
|
309
309
|
expect {
|
|
310
310
|
person.username = 'unloaded-attribute'
|
|
311
311
|
person.save
|
|
312
|
-
}.to raise_error(
|
|
312
|
+
}.to raise_error(ActiveModel::MissingAttributeError)
|
|
313
313
|
end
|
|
314
314
|
|
|
315
315
|
context 'when the changed attribute is aliased' do
|
|
@@ -278,22 +278,7 @@ describe Mongoid::Persistable::Settable do
|
|
|
278
278
|
end
|
|
279
279
|
end
|
|
280
280
|
|
|
281
|
-
context 'when the field is a
|
|
282
|
-
|
|
283
|
-
context 'when the field is reset to an empty hash' do
|
|
284
|
-
|
|
285
|
-
before do
|
|
286
|
-
church.set('location' => {})
|
|
287
|
-
end
|
|
288
|
-
|
|
289
|
-
it 'updates the field locally' do
|
|
290
|
-
expect(church.location).to eq({})
|
|
291
|
-
end
|
|
292
|
-
|
|
293
|
-
it 'updates the field in the database' do
|
|
294
|
-
expect(church.reload.location).to eq({})
|
|
295
|
-
end
|
|
296
|
-
end
|
|
281
|
+
context 'when the field is a bested hash' do
|
|
297
282
|
|
|
298
283
|
context 'when a leaf value in the nested hash is updated' do
|
|
299
284
|
|
|
@@ -315,25 +300,6 @@ describe Mongoid::Persistable::Settable do
|
|
|
315
300
|
end
|
|
316
301
|
end
|
|
317
302
|
|
|
318
|
-
context 'when a leaf value in the nested hash is updated to a number' do
|
|
319
|
-
|
|
320
|
-
let(:church) do
|
|
321
|
-
Church.new.tap do |a|
|
|
322
|
-
a.location = {'address' => {'city' => 'Berlin', 'street' => 'Yorckstr'}}
|
|
323
|
-
a.name = 'Church1'
|
|
324
|
-
a.save
|
|
325
|
-
end
|
|
326
|
-
end
|
|
327
|
-
|
|
328
|
-
before do
|
|
329
|
-
church.set('location.address.city' => 12345)
|
|
330
|
-
end
|
|
331
|
-
|
|
332
|
-
it 'updates the nested value to the correct value' do
|
|
333
|
-
expect(church.name).to eq('Church1')
|
|
334
|
-
expect(church.location).to eql({'address' => {'city' => 12345, 'street' => 'Yorckstr'}})
|
|
335
|
-
end
|
|
336
|
-
end
|
|
337
303
|
|
|
338
304
|
context 'when the nested hash is many levels deep' do
|
|
339
305
|
|
|
@@ -57,7 +57,7 @@ describe Mongoid::Persistable do
|
|
|
57
57
|
"$bit" => { "likes" => { :and => 13 }},
|
|
58
58
|
"$set" => { "name" => "Placebo" },
|
|
59
59
|
"$unset" => { "origin" => true }},
|
|
60
|
-
|
|
60
|
+
{ :session => nil } ]
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
before do
|
|
@@ -83,8 +83,8 @@ describe Mongoid::Persistable do
|
|
|
83
83
|
"$inc" => { "member_count" => 10 },
|
|
84
84
|
"$bit" => { "likes" => { :and => 13 }},
|
|
85
85
|
"$set" => { "name" => "Placebo" },
|
|
86
|
-
"$unset" => { "origin" => true }},
|
|
87
|
-
|
|
86
|
+
"$unset" => { "origin" => true } },
|
|
87
|
+
{ :session => nil } ]
|
|
88
88
|
end
|
|
89
89
|
|
|
90
90
|
before do
|
|
@@ -107,12 +107,12 @@ describe Mongoid::Persistable do
|
|
|
107
107
|
context "when given multiple operations of the same type" do
|
|
108
108
|
|
|
109
109
|
let(:operations) do
|
|
110
|
-
|
|
110
|
+
[{
|
|
111
111
|
"$inc" => { "member_count" => 10, "other_count" => 10 },
|
|
112
112
|
"$bit" => { "likes" => { :and => 13 }},
|
|
113
113
|
"$set" => { "name" => "Placebo" },
|
|
114
114
|
"$unset" => { "origin" => true }},
|
|
115
|
-
{ session
|
|
115
|
+
{ :session => nil } ]
|
|
116
116
|
end
|
|
117
117
|
|
|
118
118
|
before do
|
|
@@ -149,7 +149,7 @@ describe Mongoid::Persistable do
|
|
|
149
149
|
"$bit" => { "likes" => { :and => 13 }},
|
|
150
150
|
"$set" => { "name" => "Placebo" },
|
|
151
151
|
"$unset" => { "origin" => true }},
|
|
152
|
-
{ session
|
|
152
|
+
{ :session => nil } ]
|
|
153
153
|
end
|
|
154
154
|
|
|
155
155
|
before do
|
|
@@ -200,6 +200,21 @@ describe Mongoid::Persistable do
|
|
|
200
200
|
expect(document.atomically).to be true
|
|
201
201
|
end
|
|
202
202
|
end
|
|
203
|
+
|
|
204
|
+
context "when the block has no operations" do
|
|
205
|
+
before do
|
|
206
|
+
expect_any_instance_of(Mongo::Collection::View).to_not receive(:update_one)
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
let!(:update) do
|
|
210
|
+
document.atomically do
|
|
211
|
+
end
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
it "doesn't update the document" do
|
|
215
|
+
expect(document.reload.origin).to eq("London")
|
|
216
|
+
end
|
|
217
|
+
end
|
|
203
218
|
end
|
|
204
219
|
|
|
205
220
|
describe "#fail_due_to_valiation!" do
|