mongoid 7.5.1 → 8.1.2
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/CHANGELOG.md +3 -3
- data/README.md +6 -6
- data/Rakefile +25 -0
- data/lib/config/locales/en.yml +92 -43
- data/lib/mongoid/association/accessors.rb +40 -11
- data/lib/mongoid/association/bindable.rb +50 -2
- data/lib/mongoid/association/builders.rb +5 -3
- data/lib/mongoid/association/constrainable.rb +0 -1
- data/lib/mongoid/association/eager_loadable.rb +29 -7
- data/lib/mongoid/association/embedded/batchable.rb +54 -14
- data/lib/mongoid/association/embedded/cyclic.rb +1 -1
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +4 -3
- data/lib/mongoid/association/embedded/embedded_in.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +4 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +69 -45
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +19 -5
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +24 -5
- data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
- data/lib/mongoid/association/macros.rb +8 -1
- data/lib/mongoid/association/many.rb +11 -7
- data/lib/mongoid/association/nested/many.rb +5 -4
- data/lib/mongoid/association/nested/nested_buildable.rb +4 -4
- data/lib/mongoid/association/nested/one.rb +45 -7
- data/lib/mongoid/association/one.rb +2 -2
- data/lib/mongoid/association/options.rb +9 -9
- data/lib/mongoid/association/proxy.rb +15 -4
- data/lib/mongoid/association/referenced/auto_save.rb +4 -3
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +5 -6
- data/lib/mongoid/association/referenced/belongs_to.rb +2 -2
- data/lib/mongoid/association/referenced/counter_cache.rb +10 -10
- data/lib/mongoid/association/referenced/eager.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +70 -13
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +22 -30
- data/lib/mongoid/association/referenced/has_many/proxy.rb +29 -19
- data/lib/mongoid/association/referenced/has_many.rb +3 -3
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +5 -5
- data/lib/mongoid/association/referenced/has_one/proxy.rb +9 -12
- data/lib/mongoid/association/referenced/has_one.rb +3 -3
- data/lib/mongoid/association/referenced/syncable.rb +4 -4
- data/lib/mongoid/association/reflections.rb +4 -4
- data/lib/mongoid/association/relatable.rb +44 -10
- data/lib/mongoid/association.rb +5 -5
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic/paths/embedded/many.rb +19 -0
- data/lib/mongoid/atomic.rb +7 -0
- data/lib/mongoid/attributes/dynamic.rb +4 -4
- data/lib/mongoid/attributes/nested.rb +6 -6
- data/lib/mongoid/attributes/processing.rb +37 -6
- data/lib/mongoid/attributes/projector.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +3 -3
- data/lib/mongoid/attributes.rb +51 -42
- data/lib/mongoid/cacheable.rb +2 -2
- data/lib/mongoid/changeable.rb +147 -14
- data/lib/mongoid/clients/options.rb +5 -1
- data/lib/mongoid/clients/sessions.rb +2 -14
- data/lib/mongoid/clients/storage_options.rb +2 -5
- data/lib/mongoid/clients/validators/storage.rb +3 -15
- 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/options.rb +3 -0
- data/lib/mongoid/config/validators/async_query_executor.rb +24 -0
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config/validators.rb +1 -0
- data/lib/mongoid/config.rb +145 -17
- data/lib/mongoid/contextual/aggregable/memory.rb +24 -16
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -5
- data/lib/mongoid/contextual/aggregable/none.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +7 -7
- data/lib/mongoid/contextual/map_reduce.rb +2 -2
- data/lib/mongoid/contextual/memory.rb +285 -58
- data/lib/mongoid/contextual/mongo/documents_loader.rb +177 -0
- data/lib/mongoid/contextual/mongo.rb +521 -333
- data/lib/mongoid/contextual/none.rb +193 -20
- data/lib/mongoid/contextual/queryable.rb +1 -1
- data/lib/mongoid/contextual.rb +14 -2
- data/lib/mongoid/copyable.rb +32 -8
- data/lib/mongoid/criteria/findable.rb +8 -5
- data/lib/mongoid/criteria/includable.rb +27 -22
- data/lib/mongoid/criteria/marshalable.rb +10 -2
- data/lib/mongoid/criteria/permission.rb +1 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/array.rb +3 -16
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +1 -17
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -9
- data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/set.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/string.rb +4 -14
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -12
- data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
- data/lib/mongoid/criteria/queryable/key.rb +4 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -1
- data/lib/mongoid/criteria/queryable/optional.rb +11 -17
- data/lib/mongoid/criteria/queryable/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/pipeline.rb +1 -1
- data/lib/mongoid/criteria/queryable/selectable.rb +47 -38
- data/lib/mongoid/criteria/queryable/selector.rb +93 -8
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable/storable.rb +1 -1
- data/lib/mongoid/criteria/queryable.rb +12 -7
- data/lib/mongoid/criteria/scopable.rb +2 -2
- data/lib/mongoid/criteria/translator.rb +45 -0
- data/lib/mongoid/criteria.rb +20 -40
- data/lib/mongoid/deprecable.rb +36 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +135 -36
- data/lib/mongoid/equality.rb +8 -8
- data/lib/mongoid/errors/create_collection_failure.rb +33 -0
- data/lib/mongoid/errors/document_not_found.rb +10 -6
- 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_config_option.rb +1 -1
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -1
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
- data/lib/mongoid/errors/invalid_field.rb +6 -2
- data/lib/mongoid/errors/invalid_field_type.rb +26 -0
- data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +22 -0
- data/lib/mongoid/errors/invalid_relation.rb +1 -1
- data/lib/mongoid/errors/invalid_relation_option.rb +1 -1
- data/lib/mongoid/errors/invalid_session_use.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -0
- data/lib/mongoid/errors/mongoid_error.rb +3 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -1
- data/lib/mongoid/errors/no_client_database.rb +1 -1
- data/lib/mongoid/errors/no_client_hosts.rb +1 -1
- data/lib/mongoid/errors/readonly_attribute.rb +1 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
- data/lib/mongoid/errors/unknown_attribute.rb +1 -1
- data/lib/mongoid/errors.rb +6 -3
- data/lib/mongoid/extensions/array.rb +9 -7
- data/lib/mongoid/extensions/big_decimal.rb +33 -10
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +8 -2
- data/lib/mongoid/extensions/date.rb +26 -20
- data/lib/mongoid/extensions/date_time.rb +1 -1
- data/lib/mongoid/extensions/false_class.rb +1 -1
- data/lib/mongoid/extensions/float.rb +7 -4
- data/lib/mongoid/extensions/hash.rb +19 -8
- data/lib/mongoid/extensions/integer.rb +7 -4
- data/lib/mongoid/extensions/module.rb +1 -1
- data/lib/mongoid/extensions/object.rb +10 -8
- data/lib/mongoid/extensions/range.rb +41 -10
- data/lib/mongoid/extensions/regexp.rb +11 -4
- data/lib/mongoid/extensions/set.rb +11 -4
- data/lib/mongoid/extensions/string.rb +11 -22
- data/lib/mongoid/extensions/symbol.rb +4 -15
- data/lib/mongoid/extensions/time.rb +29 -16
- data/lib/mongoid/extensions/time_with_zone.rb +1 -2
- data/lib/mongoid/extensions/true_class.rb +1 -1
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +55 -7
- data/lib/mongoid/fields/foreign_key.rb +11 -4
- data/lib/mongoid/fields/localized.rb +19 -4
- data/lib/mongoid/fields/standard.rb +17 -7
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +129 -20
- data/lib/mongoid/findable.rb +54 -24
- data/lib/mongoid/indexable/specification.rb +2 -2
- data/lib/mongoid/indexable/validators/options.rb +6 -2
- data/lib/mongoid/interceptable.rb +76 -15
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher/eq_impl.rb +1 -1
- data/lib/mongoid/matcher/type.rb +1 -1
- data/lib/mongoid/matcher.rb +33 -13
- data/lib/mongoid/persistable/creatable.rb +19 -9
- data/lib/mongoid/persistable/deletable.rb +2 -2
- data/lib/mongoid/persistable/destroyable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +14 -2
- data/lib/mongoid/persistable/unsettable.rb +2 -2
- data/lib/mongoid/persistable/updatable.rb +69 -12
- data/lib/mongoid/persistable/upsertable.rb +21 -2
- data/lib/mongoid/persistable.rb +6 -3
- data/lib/mongoid/persistence_context.rb +63 -10
- data/lib/mongoid/query_cache.rb +13 -261
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/railties/database.rake +7 -2
- data/lib/mongoid/reloadable.rb +10 -8
- data/lib/mongoid/scopable.rb +15 -13
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +10 -6
- data/lib/mongoid/shardable.rb +35 -11
- data/lib/mongoid/stateful.rb +57 -10
- data/lib/mongoid/tasks/database.rake +12 -0
- data/lib/mongoid/tasks/database.rb +20 -2
- data/lib/mongoid/threaded/lifecycle.rb +5 -5
- data/lib/mongoid/threaded.rb +42 -12
- data/lib/mongoid/timestamps/created.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +2 -3
- data/lib/mongoid/traversable.rb +5 -4
- data/lib/mongoid/utils.rb +22 -0
- data/lib/mongoid/validatable/localizable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +5 -7
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +9 -8
- data/lib/mongoid/validatable.rb +9 -6
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +19 -4
- data/lib/mongoid.rb +17 -3
- data/spec/config/mongoid.yml +16 -0
- data/spec/integration/app_spec.rb +10 -14
- data/spec/integration/associations/belongs_to_spec.rb +18 -0
- data/spec/integration/associations/embedded_spec.rb +15 -0
- data/spec/integration/associations/embeds_many_spec.rb +15 -2
- data/spec/integration/associations/embeds_one_spec.rb +18 -0
- data/spec/integration/associations/foreign_key_spec.rb +9 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
- data/spec/integration/associations/has_one_spec.rb +97 -1
- data/spec/integration/associations/scope_option_spec.rb +1 -1
- data/spec/integration/callbacks_models.rb +132 -1
- data/spec/integration/callbacks_spec.rb +360 -4
- data/spec/integration/criteria/range_spec.rb +95 -1
- data/spec/integration/discriminator_key_spec.rb +118 -80
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +3 -32
- data/spec/integration/matcher_examples_spec.rb +20 -13
- data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
- data/spec/integration/matcher_operator_spec.rb +3 -5
- data/spec/integration/persistence/range_field_spec.rb +350 -0
- data/spec/mongoid/association/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +9 -9
- data/spec/mongoid/association/eager_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +96 -9
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +276 -65
- data/spec/mongoid/association/embedded/embeds_many_models.rb +158 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +12 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +15 -2
- data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +15 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +4 -20
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +215 -228
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +193 -177
- data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
- data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
- data/spec/mongoid/association/syncable_spec.rb +15 -1
- data/spec/mongoid/atomic/paths_spec.rb +0 -14
- data/spec/mongoid/attributes/nested_spec.rb +80 -11
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
- data/spec/mongoid/attributes/projector_spec.rb +1 -5
- data/spec/mongoid/attributes_spec.rb +554 -33
- data/spec/mongoid/cacheable_spec.rb +3 -3
- data/spec/mongoid/changeable_spec.rb +429 -37
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +179 -15
- data/spec/mongoid/collection_configurable_spec.rb +158 -0
- data/spec/mongoid/config/defaults_spec.rb +160 -0
- data/spec/mongoid/config_spec.rb +220 -30
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
- data/spec/mongoid/contextual/memory_spec.rb +850 -88
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
- data/spec/mongoid/contextual/mongo_spec.rb +1570 -413
- data/spec/mongoid/contextual/none_spec.rb +60 -21
- data/spec/mongoid/copyable_spec.rb +453 -11
- data/spec/mongoid/criteria/findable_spec.rb +86 -210
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +4 -69
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -59
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +15 -484
- data/spec/mongoid/criteria/queryable/options_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +469 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +78 -86
- data/spec/mongoid/criteria/queryable/selector_spec.rb +90 -5
- data/spec/mongoid/criteria/queryable/storable_spec.rb +72 -0
- data/spec/mongoid/criteria/translator_spec.rb +132 -0
- data/spec/mongoid/criteria_projection_spec.rb +1 -5
- data/spec/mongoid/criteria_spec.rb +469 -1205
- data/spec/mongoid/document_fields_spec.rb +173 -24
- data/spec/mongoid/document_spec.rb +32 -41
- data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
- data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_document_spec.rb +2 -2
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
- data/spec/mongoid/extensions/array_spec.rb +16 -2
- data/spec/mongoid/extensions/big_decimal_spec.rb +712 -212
- data/spec/mongoid/extensions/binary_spec.rb +44 -9
- data/spec/mongoid/extensions/boolean_spec.rb +68 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
- data/spec/mongoid/extensions/date_spec.rb +71 -1
- data/spec/mongoid/extensions/date_time_spec.rb +15 -9
- data/spec/mongoid/extensions/float_spec.rb +53 -74
- data/spec/mongoid/extensions/hash_spec.rb +33 -3
- data/spec/mongoid/extensions/integer_spec.rb +50 -64
- data/spec/mongoid/extensions/range_spec.rb +255 -54
- data/spec/mongoid/extensions/regexp_spec.rb +58 -33
- data/spec/mongoid/extensions/set_spec.rb +106 -0
- data/spec/mongoid/extensions/string_spec.rb +53 -25
- data/spec/mongoid/extensions/symbol_spec.rb +18 -25
- data/spec/mongoid/extensions/time_spec.rb +639 -106
- data/spec/mongoid/extensions/time_with_zone_spec.rb +24 -83
- data/spec/mongoid/factory_spec.rb +61 -1
- data/spec/mongoid/fields/localized_spec.rb +80 -37
- data/spec/mongoid/fields_spec.rb +500 -84
- data/spec/mongoid/findable_spec.rb +450 -58
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +55 -30
- data/spec/mongoid/interceptable_spec.rb +599 -8
- data/spec/mongoid/interceptable_spec_models.rb +235 -4
- data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +2 -2
- data/spec/mongoid/persistable/deletable_spec.rb +28 -8
- data/spec/mongoid/persistable/destroyable_spec.rb +28 -8
- 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 +89 -1
- data/spec/mongoid/persistence_context_spec.rb +57 -58
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
- data/spec/mongoid/query_cache_spec.rb +56 -215
- data/spec/mongoid/reloadable_spec.rb +83 -6
- data/spec/mongoid/scopable_spec.rb +91 -1
- data/spec/mongoid/serializable_spec.rb +9 -30
- data/spec/mongoid/shardable_models.rb +14 -0
- data/spec/mongoid/shardable_spec.rb +157 -51
- data/spec/mongoid/stateful_spec.rb +150 -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 +392 -4
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +390 -2
- data/spec/mongoid/touchable_spec_models.rb +14 -8
- data/spec/mongoid/traversable_spec.rb +13 -35
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +58 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +34 -10
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
- data/spec/shared/shlib/server.sh +5 -5
- data/spec/spec_helper.rb +5 -0
- data/spec/support/constraints.rb +24 -0
- data/spec/support/immutable_ids.rb +118 -0
- data/spec/support/macros.rb +78 -0
- data/spec/support/models/artist.rb +0 -1
- data/spec/support/models/augmentation.rb +12 -0
- data/spec/support/models/band.rb +4 -0
- data/spec/support/models/book.rb +1 -0
- data/spec/support/models/building.rb +2 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/circus.rb +3 -0
- data/spec/support/models/cover.rb +10 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/support/models/implant.rb +9 -0
- data/spec/support/models/label.rb +2 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +2 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/product.rb +1 -0
- data/spec/support/models/purse.rb +9 -0
- data/spec/support/models/registry.rb +1 -0
- data/spec/support/models/school.rb +14 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/support/models/weapon.rb +12 -0
- data.tar.gz.sig +0 -0
- metadata +720 -638
- metadata.gz.sig +0 -0
- data/lib/mongoid/errors/eager_load.rb +0 -23
- data/lib/mongoid/errors/invalid_value.rb +0 -17
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -60
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -60
- data/spec/mongoid/errors/eager_load_spec.rb +0 -31
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
|
@@ -265,71 +338,101 @@ describe Mongoid::Config do
|
|
265
338
|
end
|
266
339
|
end
|
267
340
|
|
341
|
+
context 'when setting the map_big_decimal_to_decimal128 option in the config' do
|
342
|
+
let(:option) { :map_big_decimal_to_decimal128 }
|
343
|
+
let(:default) { true }
|
344
|
+
|
345
|
+
it_behaves_like "a config option"
|
346
|
+
end
|
347
|
+
|
348
|
+
context 'when setting the allow_bson5_decimal128 option in the config' do
|
349
|
+
min_bson_version '5.0'
|
350
|
+
|
351
|
+
let(:option) { :allow_bson5_decimal128 }
|
352
|
+
let(:default) { false }
|
353
|
+
|
354
|
+
it_behaves_like "a config option"
|
355
|
+
end
|
356
|
+
|
268
357
|
context 'when setting the broken_updates option in the config' do
|
269
358
|
let(:option) { :broken_updates }
|
270
|
-
let(:default) {
|
359
|
+
let(:default) { false }
|
271
360
|
|
272
361
|
it_behaves_like "a config option"
|
273
362
|
end
|
274
363
|
|
275
364
|
context 'when setting the legacy_triple_equals option in the config' do
|
276
365
|
let(:option) { :legacy_triple_equals }
|
277
|
-
let(:default) {
|
366
|
+
let(:default) { false }
|
278
367
|
|
279
368
|
it_behaves_like "a config option"
|
280
369
|
end
|
281
370
|
|
282
371
|
context 'when setting the broken_scoping option in the config' do
|
283
372
|
let(:option) { :broken_scoping }
|
284
|
-
let(:default) {
|
373
|
+
let(:default) { false }
|
285
374
|
|
286
375
|
it_behaves_like "a config option"
|
287
376
|
end
|
288
377
|
|
289
378
|
context 'when setting the broken_aggregables option in the config' do
|
290
379
|
let(:option) { :broken_aggregables }
|
291
|
-
let(:default) {
|
380
|
+
let(:default) { false }
|
292
381
|
|
293
382
|
it_behaves_like "a config option"
|
294
383
|
end
|
295
384
|
|
296
385
|
context 'when setting the broken_alias_handling option in the config' do
|
297
386
|
let(:option) { :broken_alias_handling }
|
298
|
-
let(:default) {
|
387
|
+
let(:default) { false }
|
299
388
|
|
300
389
|
it_behaves_like "a config option"
|
301
390
|
end
|
302
391
|
|
303
392
|
context 'when setting the broken_and option in the config' do
|
304
393
|
let(:option) { :broken_and }
|
305
|
-
let(:default) {
|
394
|
+
let(:default) { false }
|
306
395
|
|
307
396
|
it_behaves_like "a config option"
|
308
397
|
end
|
309
398
|
|
310
399
|
context 'when setting the compare_time_by_ms option in the config' do
|
311
400
|
let(:option) { :compare_time_by_ms }
|
312
|
-
let(:default) {
|
401
|
+
let(:default) { true }
|
313
402
|
|
314
403
|
it_behaves_like "a config option"
|
315
404
|
end
|
316
405
|
|
317
406
|
context 'when setting the object_id_as_json_oid option in the config' do
|
318
407
|
let(:option) { :object_id_as_json_oid }
|
319
|
-
let(:default) {
|
408
|
+
let(:default) { false }
|
320
409
|
|
321
410
|
it_behaves_like "a config option"
|
322
411
|
end
|
323
412
|
|
324
413
|
context 'when setting the legacy_pluck_distinct option in the config' do
|
325
414
|
let(:option) { :legacy_pluck_distinct }
|
326
|
-
let(:default) {
|
415
|
+
let(:default) { false }
|
327
416
|
|
328
417
|
it_behaves_like "a config option"
|
329
418
|
end
|
330
419
|
|
331
420
|
context 'when setting the overwrite_chained_operators option in the config' do
|
332
421
|
let(:option) { :overwrite_chained_operators }
|
422
|
+
let(:default) { false }
|
423
|
+
|
424
|
+
it_behaves_like "a config option"
|
425
|
+
end
|
426
|
+
|
427
|
+
context 'when setting the legacy_attributes option in the config' do
|
428
|
+
let(:option) { :legacy_attributes }
|
429
|
+
let(:default) { false }
|
430
|
+
|
431
|
+
it_behaves_like "a config option"
|
432
|
+
end
|
433
|
+
|
434
|
+
context 'when setting the legacy_readonly option in the config' do
|
435
|
+
let(:option) { :legacy_readonly }
|
333
436
|
let(:default) { true }
|
334
437
|
|
335
438
|
it_behaves_like "a config option"
|
@@ -455,6 +558,40 @@ describe Mongoid::Config do
|
|
455
558
|
end
|
456
559
|
end
|
457
560
|
|
561
|
+
context "when provided an environment with driver options" do
|
562
|
+
|
563
|
+
before do
|
564
|
+
described_class.load!(file, :test)
|
565
|
+
end
|
566
|
+
|
567
|
+
after do
|
568
|
+
described_class.reset
|
569
|
+
end
|
570
|
+
|
571
|
+
it "sets the Mongo.broken_view_options option" do
|
572
|
+
expect(Mongo.broken_view_options).to eq(false)
|
573
|
+
end
|
574
|
+
|
575
|
+
it "does not override the unset Mongo.validate_update_replace option" do
|
576
|
+
expect(Mongo.validate_update_replace).to eq(false)
|
577
|
+
end
|
578
|
+
end
|
579
|
+
|
580
|
+
context "when provided an environment with a nil driver option" do
|
581
|
+
|
582
|
+
before do
|
583
|
+
described_class.load!(file, :test_nil)
|
584
|
+
end
|
585
|
+
|
586
|
+
after do
|
587
|
+
described_class.reset
|
588
|
+
end
|
589
|
+
|
590
|
+
it "sets the Mongo.broken_view_options option to nil" do
|
591
|
+
expect(Mongo.broken_view_options).to be_nil
|
592
|
+
end
|
593
|
+
end
|
594
|
+
|
458
595
|
context "when the rack environment is set" do
|
459
596
|
|
460
597
|
before do
|
@@ -549,29 +686,28 @@ describe Mongoid::Config do
|
|
549
686
|
|
550
687
|
let(:client) { Mongoid.default_client }
|
551
688
|
|
552
|
-
# Wrapping libraries are only recognized by driver 2.13.0+.
|
553
|
-
min_driver_version '2.13'
|
554
|
-
|
555
689
|
it 'passes uuid to driver' do
|
556
690
|
Mongo::Client.should receive(:new).with(SpecConfig.instance.addresses,
|
557
|
-
|
558
|
-
|
559
|
-
|
560
|
-
|
561
|
-
'
|
562
|
-
|
563
|
-
'
|
564
|
-
'
|
565
|
-
|
566
|
-
|
567
|
-
|
568
|
-
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
573
|
-
|
574
|
-
|
691
|
+
{
|
692
|
+
auto_encryption_options: {
|
693
|
+
'key_vault_namespace' => 'admin.datakeys',
|
694
|
+
'kms_providers' => { 'local' => { 'key' => 'z7iYiYKLuYymEWtk4kfny1ESBwwFdA58qMqff96A8ghiOcIK75lJGPUIocku8LOFjQuEgeIP4xlln3s7r93FV9J5sAE7zg8U' } },
|
695
|
+
'schema_map' => { 'blog_development.comments' => {
|
696
|
+
'bsonType' => 'object',
|
697
|
+
'properties' => {
|
698
|
+
'message' => { 'encrypt' => {
|
699
|
+
'algorithm' => 'AEAD_AES_256_CBC_HMAC_SHA_512-Deterministic',
|
700
|
+
'bsonType' => 'string',
|
701
|
+
'keyId' => [BSON::Binary.new("G\xF0 5\xCC@HX\xA2%b\x97\xA9a\xA8\xE7", :uuid)],
|
702
|
+
} },
|
703
|
+
},
|
704
|
+
} } },
|
705
|
+
database: 'mongoid_test',
|
706
|
+
platform: "mongoid-#{Mongoid::VERSION}",
|
707
|
+
wrapping_libraries: [
|
708
|
+
{ 'name' => 'Mongoid', 'version' => Mongoid::VERSION },
|
709
|
+
],
|
710
|
+
}
|
575
711
|
)
|
576
712
|
|
577
713
|
client
|
@@ -600,6 +736,17 @@ describe Mongoid::Config do
|
|
600
736
|
}.to raise_error(Mongoid::Errors::InvalidConfigOption)
|
601
737
|
end
|
602
738
|
end
|
739
|
+
|
740
|
+
context 'when invalid global_executor_concurrency option provided' do
|
741
|
+
it "raises an error" do
|
742
|
+
expect do
|
743
|
+
described_class.options = {
|
744
|
+
async_query_executor: :immediate,
|
745
|
+
global_executor_concurrency: 5
|
746
|
+
}
|
747
|
+
end.to raise_error(Mongoid::Errors::InvalidGlobalExecutorConcurrency)
|
748
|
+
end
|
749
|
+
end
|
603
750
|
end
|
604
751
|
|
605
752
|
describe "#clients=" do
|
@@ -800,4 +947,47 @@ describe Mongoid::Config do
|
|
800
947
|
end
|
801
948
|
end
|
802
949
|
end
|
950
|
+
|
951
|
+
describe 'deprecations' do
|
952
|
+
{ use_activesupport_time_zone: true,
|
953
|
+
broken_aggregables: false,
|
954
|
+
broken_alias_handling: false,
|
955
|
+
broken_and: false,
|
956
|
+
broken_scoping: false,
|
957
|
+
broken_updates: false,
|
958
|
+
compare_time_by_ms: true,
|
959
|
+
legacy_attributes: false,
|
960
|
+
legacy_pluck_distinct: false,
|
961
|
+
legacy_triple_equals: false,
|
962
|
+
object_id_as_json_oid: false,
|
963
|
+
overwrite_chained_operators: false }.each do |option, default|
|
964
|
+
|
965
|
+
context ":#{option} option" do
|
966
|
+
|
967
|
+
before do
|
968
|
+
Mongoid::Warnings.class_eval do
|
969
|
+
instance_variable_set(:"@#{option}_deprecated", false)
|
970
|
+
end
|
971
|
+
end
|
972
|
+
|
973
|
+
let(:matcher) do
|
974
|
+
/Config option :#{option}.+\. It will always be #{default} beginning in Mongoid 9\.0\./
|
975
|
+
end
|
976
|
+
|
977
|
+
context 'when set to true' do
|
978
|
+
it 'gives a deprecation warning' do
|
979
|
+
expect(Mongoid.logger).to receive(:warn).with(matcher)
|
980
|
+
described_class.send(:"#{option}=", true)
|
981
|
+
end
|
982
|
+
end
|
983
|
+
|
984
|
+
context 'when set to false' do
|
985
|
+
it 'gives a deprecation warning' do
|
986
|
+
expect(Mongoid.logger).to receive(:warn).with(matcher)
|
987
|
+
described_class.send(:"#{option}=", false)
|
988
|
+
end
|
989
|
+
end
|
990
|
+
end
|
991
|
+
end
|
992
|
+
end
|
803
993
|
end
|