mongoid 7.5.4 → 8.1.9
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
- data/CHANGELOG.md +3 -3
- data/README.md +6 -6
- data/Rakefile +44 -46
- data/lib/config/locales/en.yml +92 -43
- data/lib/mongoid/association/accessors.rb +44 -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 +32 -7
- data/lib/mongoid/association/embedded/batchable.rb +34 -11
- 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 +85 -46
- 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 +40 -21
- 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.rb +16 -7
- 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 +11 -6
- data/lib/mongoid/attributes.rb +51 -42
- 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 +153 -18
- 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 +540 -346
- 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 +15 -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 +48 -39
- data/lib/mongoid/criteria/queryable/selector.rb +92 -7
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- 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 +37 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +135 -36
- data/lib/mongoid/equality.rb +9 -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 +38 -9
- 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 +142 -28
- 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 +187 -16
- 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 +48 -14
- 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 +6 -4
- 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 +17 -13
- 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 +9 -2
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +3 -4
- data/lib/mongoid/traversable.rb +41 -5
- data/lib/mongoid/utils.rb +22 -0
- data/lib/mongoid/validatable/associated.rb +98 -17
- 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 +17 -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 +24 -19
- 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 +61 -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 +381 -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 +26 -3
- 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 +290 -65
- data/spec/mongoid/association/embedded/embeds_many_models.rb +37 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +16 -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 +19 -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 +186 -229
- 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 +215 -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/association_spec.rb +60 -0
- 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/readonly_spec.rb +19 -0
- data/spec/mongoid/attributes_spec.rb +526 -33
- 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 +149 -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 +214 -31
- 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 +2256 -1005
- 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 +107 -86
- data/spec/mongoid/criteria/queryable/selector_spec.rb +15 -3
- 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 +59 -41
- data/spec/mongoid/equality_spec.rb +6 -0
- 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 +503 -87
- 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 +904 -22
- data/spec/mongoid/interceptable_spec_models.rb +189 -22
- 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 +31 -57
- 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 +25 -39
- data/spec/mongoid/shardable_spec.rb +4 -4
- 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/created_spec.rb +23 -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/associated_spec.rb +27 -34
- 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 -16
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- 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 +5 -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/lat_lng.rb +6 -0
- data/spec/support/models/name.rb +10 -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
- metadata +98 -96
- checksums.yaml.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/shared/LICENSE +0 -20
- data/spec/shared/bin/get-mongodb-download-url +0 -17
- data/spec/shared/bin/s3-copy +0 -45
- data/spec/shared/bin/s3-upload +0 -69
- data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
- data/spec/shared/lib/mrss/cluster_config.rb +0 -231
- data/spec/shared/lib/mrss/constraints.rb +0 -378
- data/spec/shared/lib/mrss/docker_runner.rb +0 -291
- data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
- data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
- data/spec/shared/lib/mrss/session_registry.rb +0 -69
- data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
- data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
- data/spec/shared/lib/mrss/utils.rb +0 -15
- data/spec/shared/share/Dockerfile.erb +0 -325
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/shared/shlib/config.sh +0 -27
- data/spec/shared/shlib/distro.sh +0 -74
- data/spec/shared/shlib/server.sh +0 -392
- data/spec/shared/shlib/set_env.sh +0 -169
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -3
@@ -37,12 +37,18 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
37
37
|
User.new(name: "test")
|
38
38
|
end
|
39
39
|
|
40
|
-
let(:
|
40
|
+
let(:description1) do
|
41
|
+
Description.new
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:description2) do
|
41
45
|
Description.new
|
42
46
|
end
|
43
47
|
|
44
48
|
before do
|
45
|
-
user.descriptions <<
|
49
|
+
user.descriptions << description1
|
50
|
+
user.descriptions << description2
|
51
|
+
user.valid?
|
46
52
|
end
|
47
53
|
|
48
54
|
it "only validates the parent once" do
|
@@ -50,12 +56,16 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
50
56
|
end
|
51
57
|
|
52
58
|
it "adds the errors from the relation" do
|
53
|
-
user.valid?
|
54
59
|
expect(user.errors[:descriptions]).to_not be_nil
|
55
60
|
end
|
56
61
|
|
62
|
+
it 'reports all failed validations' do
|
63
|
+
errors = user.descriptions.flat_map { |d| d.errors[:details] }
|
64
|
+
expect(errors.length).to be == 2
|
65
|
+
end
|
66
|
+
|
57
67
|
it "only validates the child once" do
|
58
|
-
expect(
|
68
|
+
expect(description1).to_not be_valid
|
59
69
|
end
|
60
70
|
end
|
61
71
|
|
@@ -75,7 +85,6 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
75
85
|
end
|
76
86
|
|
77
87
|
it "does not run validation on them" do
|
78
|
-
expect(description).to receive(:valid?).never
|
79
88
|
expect(user).to be_valid
|
80
89
|
end
|
81
90
|
|
@@ -84,14 +93,14 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
84
93
|
end
|
85
94
|
end
|
86
95
|
|
87
|
-
describe "#
|
96
|
+
describe "#validate" do
|
88
97
|
|
89
98
|
let(:person) do
|
90
99
|
Person.new
|
91
100
|
end
|
92
101
|
|
93
102
|
let(:validator) do
|
94
|
-
described_class.new(attributes: person.
|
103
|
+
described_class.new(attributes: person.relations.keys)
|
95
104
|
end
|
96
105
|
|
97
106
|
context "when the association is a one to one" do
|
@@ -99,7 +108,7 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
99
108
|
context "when the association is nil" do
|
100
109
|
|
101
110
|
before do
|
102
|
-
validator.
|
111
|
+
validator.validate(person)
|
103
112
|
end
|
104
113
|
|
105
114
|
it "adds no errors" do
|
@@ -108,14 +117,9 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
108
117
|
end
|
109
118
|
|
110
119
|
context "when the association is valid" do
|
111
|
-
|
112
|
-
let(:associated) do
|
113
|
-
double(valid?: true, flagged_for_destroy?: false)
|
114
|
-
end
|
115
|
-
|
116
120
|
before do
|
117
|
-
|
118
|
-
validator.
|
121
|
+
person.name = Name.new(first_name: 'A', last_name: 'B')
|
122
|
+
validator.validate(person)
|
119
123
|
end
|
120
124
|
|
121
125
|
it "adds no errors" do
|
@@ -125,13 +129,9 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
125
129
|
|
126
130
|
context "when the association is invalid" do
|
127
131
|
|
128
|
-
let(:associated) do
|
129
|
-
double(valid?: false, flagged_for_destroy?: false)
|
130
|
-
end
|
131
|
-
|
132
132
|
before do
|
133
|
-
|
134
|
-
validator.
|
133
|
+
person.name = Name.new(first_name: 'Jamis', last_name: 'Buck')
|
134
|
+
validator.validate(person)
|
135
135
|
end
|
136
136
|
|
137
137
|
it "adds errors to the parent document" do
|
@@ -149,7 +149,7 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
149
149
|
context "when the association is empty" do
|
150
150
|
|
151
151
|
before do
|
152
|
-
validator.
|
152
|
+
validator.validate(person)
|
153
153
|
end
|
154
154
|
|
155
155
|
it "adds no errors" do
|
@@ -159,13 +159,9 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
159
159
|
|
160
160
|
context "when the association has invalid documents" do
|
161
161
|
|
162
|
-
let(:associated) do
|
163
|
-
double(valid?: false, flagged_for_destroy?: false)
|
164
|
-
end
|
165
|
-
|
166
162
|
before do
|
167
|
-
|
168
|
-
validator.
|
163
|
+
person.addresses << Address.new(street: '123')
|
164
|
+
validator.validate(person)
|
169
165
|
end
|
170
166
|
|
171
167
|
it "adds errors to the parent document" do
|
@@ -175,13 +171,10 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
175
171
|
|
176
172
|
context "when the association has all valid documents" do
|
177
173
|
|
178
|
-
let(:associated) do
|
179
|
-
double(valid?: true, flagged_for_destroy?: false)
|
180
|
-
end
|
181
|
-
|
182
174
|
before do
|
183
|
-
|
184
|
-
|
175
|
+
person.addresses << Address.new(street: '123 First St')
|
176
|
+
person.addresses << Address.new(street: '456 Second St')
|
177
|
+
validator.validate(person)
|
185
178
|
end
|
186
179
|
|
187
180
|
it "adds no errors" do
|
@@ -287,7 +287,7 @@ describe Mongoid::Validatable::PresenceValidator do
|
|
287
287
|
it "does not save the association target" do
|
288
288
|
child.persisted?.should be false
|
289
289
|
|
290
|
-
expect { child.reload }.to raise_error(Mongoid::Errors::DocumentNotFound)
|
290
|
+
expect { child.reload }.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class HomAccreditation with id\(s\)/)
|
291
291
|
end
|
292
292
|
end
|
293
293
|
end
|
@@ -120,7 +120,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
120
120
|
it "adds the uniqueness error to the aliased field name" do
|
121
121
|
dictionary.valid?
|
122
122
|
expect(dictionary.errors).to have_key(:language)
|
123
|
-
expect(dictionary.errors[:language]).to eq([ "
|
123
|
+
expect(dictionary.errors[:language]).to eq([ "has already been taken" ])
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
@@ -137,7 +137,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
137
137
|
it "adds the uniqueness error to the underlying field name" do
|
138
138
|
dictionary.valid?
|
139
139
|
expect(dictionary.errors).to have_key(:l)
|
140
|
-
expect(dictionary.errors[:l]).to eq([ "
|
140
|
+
expect(dictionary.errors[:l]).to eq([ "has already been taken" ])
|
141
141
|
end
|
142
142
|
end
|
143
143
|
end
|
@@ -239,7 +239,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
239
239
|
|
240
240
|
it "adds the uniqueness error" do
|
241
241
|
dictionary.valid?
|
242
|
-
expect(dictionary.errors[:description]).to eq([ "
|
242
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
243
243
|
end
|
244
244
|
end
|
245
245
|
|
@@ -260,7 +260,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
260
260
|
|
261
261
|
it "adds the uniqueness error" do
|
262
262
|
dictionary.valid?
|
263
|
-
expect(dictionary.errors[:description]).to eq([ "
|
263
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
264
264
|
end
|
265
265
|
end
|
266
266
|
end
|
@@ -330,7 +330,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
330
330
|
|
331
331
|
it "adds the uniqueness error" do
|
332
332
|
dictionary.valid?
|
333
|
-
expect(dictionary.errors[:description]).to eq([ "
|
333
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
334
334
|
end
|
335
335
|
end
|
336
336
|
|
@@ -351,7 +351,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
351
351
|
|
352
352
|
it "adds the uniqueness error" do
|
353
353
|
dictionary.valid?
|
354
|
-
expect(dictionary.errors[:description]).to eq([ "
|
354
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
355
355
|
end
|
356
356
|
end
|
357
357
|
end
|
@@ -399,7 +399,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
399
399
|
|
400
400
|
it "adds the uniqueness error" do
|
401
401
|
dictionary.valid?
|
402
|
-
expect(dictionary.errors[:description]).to eq([ "
|
402
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
403
403
|
end
|
404
404
|
end
|
405
405
|
end
|
@@ -460,7 +460,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
460
460
|
|
461
461
|
it "adds the uniqueness error" do
|
462
462
|
dictionary.valid?
|
463
|
-
expect(dictionary.errors[:name]).to eq([ "
|
463
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
464
464
|
end
|
465
465
|
end
|
466
466
|
|
@@ -623,7 +623,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
623
623
|
|
624
624
|
it "adds the uniqueness errors" do
|
625
625
|
dictionary.valid?
|
626
|
-
expect(dictionary.errors[:name]).to eq([ "
|
626
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
627
627
|
end
|
628
628
|
end
|
629
629
|
|
@@ -701,7 +701,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
701
701
|
|
702
702
|
it "should set an error for associated object not being unique" do
|
703
703
|
item.update_attributes(folder_id: personal_folder.id)
|
704
|
-
expect(item.errors.messages[:name].first).to eq("
|
704
|
+
expect(item.errors.messages[:name].first).to eq("has already been taken")
|
705
705
|
end
|
706
706
|
end
|
707
707
|
|
@@ -753,7 +753,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
753
753
|
|
754
754
|
it "adds the uniqueness errors" do
|
755
755
|
dictionary.valid?
|
756
|
-
expect(dictionary.errors[:name]).to eq([ "
|
756
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
757
757
|
end
|
758
758
|
end
|
759
759
|
|
@@ -792,7 +792,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
792
792
|
|
793
793
|
it "adds the uniqueness errors" do
|
794
794
|
dictionary.valid?
|
795
|
-
expect(dictionary.errors[:name]).to eq([ "
|
795
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
796
796
|
end
|
797
797
|
end
|
798
798
|
end
|
@@ -815,7 +815,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
815
815
|
|
816
816
|
expect do
|
817
817
|
Dictionary.create!(name: "French-English", year: 1960)
|
818
|
-
end.to raise_error(Mongoid::Errors::Validations, /Name
|
818
|
+
end.to raise_error(Mongoid::Errors::Validations, /Name has already been taken/)
|
819
819
|
|
820
820
|
expect(Dictionary.all.size).to eq(1)
|
821
821
|
end
|
@@ -954,7 +954,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
954
954
|
|
955
955
|
it "adds the uniqueness errors" do
|
956
956
|
dictionary.valid?
|
957
|
-
expect(dictionary.errors[:name]).to eq([ "
|
957
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
958
958
|
end
|
959
959
|
end
|
960
960
|
|
@@ -1018,7 +1018,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1018
1018
|
|
1019
1019
|
it "adds the uniqueness error" do
|
1020
1020
|
dictionary.valid?
|
1021
|
-
expect(dictionary.errors[:name]).to eq([ "
|
1021
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
1022
1022
|
end
|
1023
1023
|
end
|
1024
1024
|
|
@@ -1096,7 +1096,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1096
1096
|
|
1097
1097
|
it "adds the uniqueness error" do
|
1098
1098
|
dictionary.valid?
|
1099
|
-
expect(dictionary.errors[:name]).to eq([ "
|
1099
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
1100
1100
|
end
|
1101
1101
|
end
|
1102
1102
|
|
@@ -1218,7 +1218,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1218
1218
|
|
1219
1219
|
it "adds the uniqueness error" do
|
1220
1220
|
login.valid?
|
1221
|
-
expect(login.errors[:username]).to eq([ "
|
1221
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
1222
1222
|
end
|
1223
1223
|
end
|
1224
1224
|
|
@@ -1323,7 +1323,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1323
1323
|
|
1324
1324
|
it "adds the uniqueness errors" do
|
1325
1325
|
login.valid?
|
1326
|
-
expect(login.errors[:username]).to eq([ "
|
1326
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
1327
1327
|
end
|
1328
1328
|
end
|
1329
1329
|
|
@@ -1383,7 +1383,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1383
1383
|
|
1384
1384
|
it "adds the uniqueness error" do
|
1385
1385
|
login.valid?
|
1386
|
-
expect(login.errors[:username]).to eq([ "
|
1386
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
1387
1387
|
end
|
1388
1388
|
end
|
1389
1389
|
|
@@ -1461,7 +1461,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1461
1461
|
|
1462
1462
|
it "adds the uniqueness error" do
|
1463
1463
|
login.valid?
|
1464
|
-
expect(login.errors[:username]).to eq([ "
|
1464
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
1465
1465
|
end
|
1466
1466
|
end
|
1467
1467
|
|
@@ -1710,7 +1710,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1710
1710
|
|
1711
1711
|
it "adds the uniqueness error" do
|
1712
1712
|
definition.valid?
|
1713
|
-
expect(definition.errors[:description]).to eq([ "
|
1713
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
1714
1714
|
end
|
1715
1715
|
end
|
1716
1716
|
|
@@ -1838,7 +1838,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1838
1838
|
|
1839
1839
|
it "adds the uniqueness errors" do
|
1840
1840
|
definition.valid?
|
1841
|
-
expect(definition.errors[:description]).to eq([ "
|
1841
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
1842
1842
|
end
|
1843
1843
|
end
|
1844
1844
|
|
@@ -1976,7 +1976,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1976
1976
|
|
1977
1977
|
it "adds the uniqueness errors" do
|
1978
1978
|
definition.valid?
|
1979
|
-
expect(definition.errors[:description]).to eq([ "
|
1979
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
1980
1980
|
end
|
1981
1981
|
end
|
1982
1982
|
|
@@ -2040,7 +2040,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2040
2040
|
|
2041
2041
|
it "adds the uniqueness error" do
|
2042
2042
|
definition.valid?
|
2043
|
-
expect(definition.errors[:description]).to eq([ "
|
2043
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
2044
2044
|
end
|
2045
2045
|
end
|
2046
2046
|
|
@@ -2118,7 +2118,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2118
2118
|
|
2119
2119
|
it "adds the uniqueness error" do
|
2120
2120
|
definition.valid?
|
2121
|
-
expect(definition.errors[:description]).to eq([ "
|
2121
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
2122
2122
|
end
|
2123
2123
|
end
|
2124
2124
|
|
@@ -2214,7 +2214,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2214
2214
|
it "adds the uniqueness error to the aliased field name" do
|
2215
2215
|
definition.valid?
|
2216
2216
|
expect(definition.errors).to have_key(:part)
|
2217
|
-
expect(definition.errors[:part]).to eq([ "
|
2217
|
+
expect(definition.errors[:part]).to eq([ "has already been taken" ])
|
2218
2218
|
end
|
2219
2219
|
end
|
2220
2220
|
|
@@ -2231,7 +2231,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2231
2231
|
it "adds the uniqueness error to the underlying field name" do
|
2232
2232
|
definition.valid?
|
2233
2233
|
expect(definition.errors).to have_key(:p)
|
2234
|
-
expect(definition.errors[:p]).to eq([ "
|
2234
|
+
expect(definition.errors[:p]).to eq([ "has already been taken" ])
|
2235
2235
|
end
|
2236
2236
|
end
|
2237
2237
|
|
@@ -2250,7 +2250,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2250
2250
|
it "adds the uniqueness error to the aliased field name" do
|
2251
2251
|
definition.valid?
|
2252
2252
|
expect(definition.errors).to have_key(:synonyms)
|
2253
|
-
expect(definition.errors[:synonyms]).to eq([ "
|
2253
|
+
expect(definition.errors[:synonyms]).to eq([ "has already been taken" ])
|
2254
2254
|
end
|
2255
2255
|
end
|
2256
2256
|
|
@@ -2267,7 +2267,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2267
2267
|
it "adds the uniqueness error to the aliased field name" do
|
2268
2268
|
definition.valid?
|
2269
2269
|
expect(definition.errors).to have_key(:syn)
|
2270
|
-
expect(definition.errors[:syn]).to eq([ "
|
2270
|
+
expect(definition.errors[:syn]).to eq([ "has already been taken" ])
|
2271
2271
|
end
|
2272
2272
|
end
|
2273
2273
|
end
|
@@ -2319,7 +2319,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2319
2319
|
|
2320
2320
|
it "adds the uniqueness error" do
|
2321
2321
|
word_origin.valid?
|
2322
|
-
expect(word_origin.errors[:origin_id]).to eq([ "
|
2322
|
+
expect(word_origin.errors[:origin_id]).to eq([ "has already been taken" ])
|
2323
2323
|
end
|
2324
2324
|
end
|
2325
2325
|
|
@@ -2444,7 +2444,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2444
2444
|
it "should be invalid" do
|
2445
2445
|
subclass_document_with_duplicated_name.tap do |d|
|
2446
2446
|
expect(d).to be_invalid
|
2447
|
-
expect(d.errors[:name]).to eq([ "
|
2447
|
+
expect(d.errors[:name]).to eq([ "has already been taken" ])
|
2448
2448
|
end
|
2449
2449
|
end
|
2450
2450
|
end
|
@@ -2472,4 +2472,31 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2472
2472
|
}.to raise_error(Mongo::Error::OperationFailure)
|
2473
2473
|
end
|
2474
2474
|
end
|
2475
|
+
|
2476
|
+
describe "i18n" do
|
2477
|
+
|
2478
|
+
context 'when using a different locale' do
|
2479
|
+
with_default_i18n_configs
|
2480
|
+
|
2481
|
+
before do
|
2482
|
+
I18n.locale = :fr
|
2483
|
+
# Translation key location is as per rails-i18n gem.
|
2484
|
+
# See: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml
|
2485
|
+
I18n.backend.store_translations(:fr, { errors: { messages: { taken: 'est déjà utilisé(e)' } } })
|
2486
|
+
end
|
2487
|
+
|
2488
|
+
after do
|
2489
|
+
# i18n 1.0 requires +send+ because +translations+ aren't public.
|
2490
|
+
# Newer i18n versions have it as public.
|
2491
|
+
I18n.backend.send(:translations).delete(:fr)
|
2492
|
+
end
|
2493
|
+
|
2494
|
+
it "correctly translates the error message" do
|
2495
|
+
Circus.create!(slogan: 'The Greatest Show on Mars')
|
2496
|
+
dict = Circus.new(slogan: 'The Greatest Show on Mars')
|
2497
|
+
dict.valid?
|
2498
|
+
expect(dict.errors.messages[:slogan]).to eq(["est déjà utilisé(e)"])
|
2499
|
+
end
|
2500
|
+
end
|
2501
|
+
end
|
2475
2502
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Mongoid::Warnings do
|
6
|
+
|
7
|
+
describe ".warn_*" do
|
8
|
+
|
9
|
+
context "when calling a warn_* method" do
|
10
|
+
|
11
|
+
let(:id) { :geo_haystack_deprecated }
|
12
|
+
let(:message) do
|
13
|
+
'The geoHaystack type is deprecated.'
|
14
|
+
end
|
15
|
+
|
16
|
+
before do
|
17
|
+
warn_id = id
|
18
|
+
Mongoid::Warnings.class_eval do
|
19
|
+
instance_variable_set("@#{warn_id}", false)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "logs the warning" do
|
24
|
+
expect_any_instance_of(Logger).to receive(:warn).once.with(message)
|
25
|
+
Mongoid::Warnings.send("warn_#{id}")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "logs the warning only once" do
|
29
|
+
expect_any_instance_of(Logger).to receive(:warn).once.with(message)
|
30
|
+
Mongoid::Warnings.send("warn_#{id}")
|
31
|
+
Mongoid::Warnings.send("warn_#{id}")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
data/spec/mongoid_spec.rb
CHANGED
@@ -13,22 +13,46 @@ describe Mongoid do
|
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
16
|
-
context "when a block is
|
16
|
+
context "when a block is given" do
|
17
|
+
config_override :preload_models, false
|
17
18
|
|
18
|
-
|
19
|
-
|
20
|
-
|
19
|
+
context "with arity 0" do
|
20
|
+
|
21
|
+
before do
|
22
|
+
Mongoid.configure do
|
23
|
+
config.preload_models = true
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
it "sets the values on the config instance" do
|
28
|
+
expect(Mongoid.preload_models).to be true
|
21
29
|
end
|
22
30
|
end
|
23
31
|
|
24
|
-
|
25
|
-
|
26
|
-
|
32
|
+
context "with arity 1" do
|
33
|
+
|
34
|
+
before do
|
35
|
+
Mongoid.configure do |config|
|
36
|
+
config.preload_models = true
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it "sets the values on the config instance" do
|
41
|
+
expect(Mongoid.preload_models).to be true
|
27
42
|
end
|
28
43
|
end
|
29
44
|
|
30
|
-
|
31
|
-
|
45
|
+
context "with arity 2" do
|
46
|
+
|
47
|
+
before do
|
48
|
+
Mongoid.configure do |config, _other|
|
49
|
+
config.preload_models = true
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
it "sets the values on the config instance" do
|
54
|
+
expect(Mongoid.preload_models).to be true
|
55
|
+
end
|
32
56
|
end
|
33
57
|
end
|
34
58
|
end
|
@@ -51,14 +75,8 @@ describe Mongoid do
|
|
51
75
|
end
|
52
76
|
|
53
77
|
it "disconnects from all active clients" do
|
54
|
-
method_name = if Gem::Version.new(Mongo::VERSION) >= Gem::Version.new('2.19.0')
|
55
|
-
:close
|
56
|
-
else
|
57
|
-
:disconnect!
|
58
|
-
end
|
59
|
-
|
60
78
|
clients.each do |client|
|
61
|
-
expect(client
|
79
|
+
expect(client).to receive(:close).and_call_original
|
62
80
|
end
|
63
81
|
Mongoid.disconnect_clients
|
64
82
|
end
|
@@ -30,11 +30,11 @@ describe "Mongoid::Railties::ControllerRuntime" do
|
|
30
30
|
|
31
31
|
clear_metric!
|
32
32
|
instance.succeeded event_payload
|
33
|
-
expect(collector.runtime).to eq(
|
33
|
+
expect(collector.runtime).to eq(42000)
|
34
34
|
|
35
35
|
clear_metric!
|
36
36
|
instance.failed event_payload
|
37
|
-
expect(collector.runtime).to eq(
|
37
|
+
expect(collector.runtime).to eq(42000)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "resets the metric and returns the value" do
|
data/spec/rails/mongoid_spec.rb
CHANGED
@@ -30,6 +30,7 @@ describe "Rails::Mongoid" do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
context "when preload models config is false" do
|
33
|
+
config_override :preload_models, false
|
33
34
|
|
34
35
|
let(:files) do
|
35
36
|
[
|
@@ -38,10 +39,6 @@ describe "Rails::Mongoid" do
|
|
38
39
|
]
|
39
40
|
end
|
40
41
|
|
41
|
-
before(:all) do
|
42
|
-
Mongoid.preload_models = false
|
43
|
-
end
|
44
|
-
|
45
42
|
it "does not load any models" do
|
46
43
|
allow(Dir).to receive(:glob).with("/rails/root/app/models/**/*.rb").and_return(files)
|
47
44
|
expect(Rails::Mongoid).to receive(:load_model).never
|
@@ -50,10 +47,7 @@ describe "Rails::Mongoid" do
|
|
50
47
|
end
|
51
48
|
|
52
49
|
context "when preload models config is true" do
|
53
|
-
|
54
|
-
before(:all) do
|
55
|
-
Mongoid.preload_models = true
|
56
|
-
end
|
50
|
+
config_override :preload_models, true
|
57
51
|
|
58
52
|
context "when all models are in the models directory" do
|
59
53
|
|
@@ -112,6 +106,7 @@ describe "Rails::Mongoid" do
|
|
112
106
|
end
|
113
107
|
|
114
108
|
context "even when preload models config is false" do
|
109
|
+
config_override :preload_models, false
|
115
110
|
|
116
111
|
let(:files) do
|
117
112
|
[
|
@@ -120,10 +115,6 @@ describe "Rails::Mongoid" do
|
|
120
115
|
]
|
121
116
|
end
|
122
117
|
|
123
|
-
before(:all) do
|
124
|
-
Mongoid.preload_models = false
|
125
|
-
end
|
126
|
-
|
127
118
|
it "loads all models" do
|
128
119
|
allow(Dir).to receive(:glob).with("/rails/root/app/models/**/*.rb").and_return(files)
|
129
120
|
expect(Rails::Mongoid).to receive(:load_model).with("address")
|
@@ -133,6 +124,7 @@ describe "Rails::Mongoid" do
|
|
133
124
|
end
|
134
125
|
|
135
126
|
context "when list of models to load was configured" do
|
127
|
+
config_override :preload_models, %w(user AddressNumber)
|
136
128
|
|
137
129
|
let(:files) do
|
138
130
|
[
|
@@ -141,10 +133,6 @@ describe "Rails::Mongoid" do
|
|
141
133
|
]
|
142
134
|
end
|
143
135
|
|
144
|
-
before(:all) do
|
145
|
-
Mongoid.preload_models = ["user", "AddressNumber"]
|
146
|
-
end
|
147
|
-
|
148
136
|
it "loads selected models only" do
|
149
137
|
allow(Dir).to receive(:glob).with("/rails/root/app/models/**/*.rb").and_return(files)
|
150
138
|
expect(Rails::Mongoid).to receive(:load_model).with("user")
|
data/spec/spec_helper.rb
CHANGED
@@ -124,6 +124,11 @@ end
|
|
124
124
|
|
125
125
|
I18n.config.enforce_available_locales = false
|
126
126
|
|
127
|
+
|
128
|
+
if %w(yes true 1).include?((ENV['TEST_I18N_FALLBACKS'] || '').downcase)
|
129
|
+
require "i18n/backend/fallbacks"
|
130
|
+
end
|
131
|
+
|
127
132
|
# The user must be created before any of the tests are loaded, until
|
128
133
|
# https://jira.mongodb.org/browse/MONGOID-4827 is implemented.
|
129
134
|
client = Mongo::Client.new(SpecConfig.instance.addresses, server_selection_timeout: 3.03)
|