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
@@ -6,20 +6,12 @@ describe Mongoid::Extensions::TimeWithZone do
|
|
6
6
|
|
7
7
|
describe ".demongoize" do
|
8
8
|
|
9
|
-
after(:all) do
|
10
|
-
Mongoid.use_utc = false
|
11
|
-
Mongoid.use_activesupport_time_zone = true
|
12
|
-
end
|
13
|
-
|
14
9
|
let!(:time) do
|
15
10
|
Time.local(2010, 11, 19)
|
16
11
|
end
|
17
12
|
|
18
13
|
context "when the time zone is not defined" do
|
19
|
-
|
20
|
-
before do
|
21
|
-
Mongoid.use_utc = false
|
22
|
-
end
|
14
|
+
config_override :use_utc, false
|
23
15
|
|
24
16
|
context "when the local time is not observing daylight saving" do
|
25
17
|
|
@@ -57,16 +49,8 @@ describe Mongoid::Extensions::TimeWithZone do
|
|
57
49
|
end
|
58
50
|
|
59
51
|
context "when using the ActiveSupport time zone" do
|
60
|
-
|
61
|
-
|
62
|
-
Mongoid.use_activesupport_time_zone = true
|
63
|
-
Time.zone = "Stockholm"
|
64
|
-
end
|
65
|
-
|
66
|
-
after do
|
67
|
-
Time.zone = nil
|
68
|
-
Mongoid.use_activesupport_time_zone = false
|
69
|
-
end
|
52
|
+
config_override :use_activesupport_time_zone, true
|
53
|
+
time_zone_override "Stockholm"
|
70
54
|
|
71
55
|
it "returns an ActiveSupport::TimeWithZone" do
|
72
56
|
expect(ActiveSupport::TimeWithZone.demongoize(time).class).to eq(ActiveSupport::TimeWithZone)
|
@@ -114,35 +98,20 @@ describe Mongoid::Extensions::TimeWithZone do
|
|
114
98
|
end
|
115
99
|
|
116
100
|
context "when the time zone is defined as UTC" do
|
117
|
-
|
118
|
-
before do
|
119
|
-
Mongoid.use_utc = true
|
120
|
-
end
|
121
|
-
|
122
|
-
after do
|
123
|
-
Mongoid.use_utc = false
|
124
|
-
end
|
101
|
+
config_override :use_utc, true
|
125
102
|
|
126
103
|
it "returns utc" do
|
127
104
|
expect(ActiveSupport::TimeWithZone.demongoize(time.dup.utc).utc_offset).to eq(0)
|
128
105
|
end
|
129
106
|
|
130
107
|
context "when using the ActiveSupport time zone" do
|
108
|
+
config_override :use_activesupport_time_zone, true
|
109
|
+
time_zone_override "Stockholm"
|
131
110
|
|
132
111
|
let(:time) do
|
133
112
|
Time.utc(2010, 11, 19, 0, 30)
|
134
113
|
end
|
135
114
|
|
136
|
-
before do
|
137
|
-
Mongoid.use_activesupport_time_zone = true
|
138
|
-
Time.zone = "Stockholm"
|
139
|
-
end
|
140
|
-
|
141
|
-
after do
|
142
|
-
Time.zone = nil
|
143
|
-
Mongoid.use_activesupport_time_zone = false
|
144
|
-
end
|
145
|
-
|
146
115
|
it "returns utc" do
|
147
116
|
expect(ActiveSupport::TimeWithZone.demongoize(time)).to eq(
|
148
117
|
ActiveSupport::TimeZone['UTC'].local(2010, 11, 19, 0, 30)
|
@@ -180,8 +149,12 @@ describe Mongoid::Extensions::TimeWithZone do
|
|
180
149
|
|
181
150
|
context "when string is empty" do
|
182
151
|
|
152
|
+
let(:mongoized) do
|
153
|
+
ActiveSupport::TimeWithZone.mongoize("")
|
154
|
+
end
|
155
|
+
|
183
156
|
it "returns nil" do
|
184
|
-
expect(
|
157
|
+
expect(mongoized).to be_nil
|
185
158
|
end
|
186
159
|
end
|
187
160
|
|
@@ -205,24 +178,19 @@ describe Mongoid::Extensions::TimeWithZone do
|
|
205
178
|
end
|
206
179
|
|
207
180
|
context "when the string is an invalid time" do
|
181
|
+
let(:mongoized) do
|
182
|
+
ActiveSupport::TimeWithZone.mongoize("time")
|
183
|
+
end
|
208
184
|
|
209
185
|
it "returns nil" do
|
210
|
-
expect(
|
186
|
+
expect(mongoized).to be_nil
|
211
187
|
end
|
212
188
|
end
|
213
189
|
|
214
190
|
context "when using the ActiveSupport time zone" do
|
215
|
-
|
216
|
-
|
217
|
-
|
218
|
-
# if this is actually your time zone, the following tests are useless
|
219
|
-
Time.zone = "Stockholm"
|
220
|
-
end
|
221
|
-
|
222
|
-
after do
|
223
|
-
Time.zone = nil
|
224
|
-
Mongoid.use_activesupport_time_zone = false
|
225
|
-
end
|
191
|
+
config_override :use_activesupport_time_zone, true
|
192
|
+
# if this is actually your time zone, the following tests are useless
|
193
|
+
time_zone_override "Stockholm"
|
226
194
|
|
227
195
|
context "when the local time is not observing daylight saving" do
|
228
196
|
|
@@ -257,22 +225,13 @@ describe Mongoid::Extensions::TimeWithZone do
|
|
257
225
|
end
|
258
226
|
|
259
227
|
context "when using the ActiveSupport time zone" do
|
228
|
+
config_override :use_activesupport_time_zone, true
|
229
|
+
time_zone_override "Stockholm"
|
260
230
|
|
261
231
|
let(:datetime) do
|
262
232
|
DateTime.new(2010, 11, 19)
|
263
233
|
end
|
264
234
|
|
265
|
-
before do
|
266
|
-
Mongoid.use_activesupport_time_zone = true
|
267
|
-
# if this is actually your time zone, the following tests are useless
|
268
|
-
Time.zone = "Stockholm"
|
269
|
-
end
|
270
|
-
|
271
|
-
after do
|
272
|
-
Time.zone = nil
|
273
|
-
Mongoid.use_activesupport_time_zone = false
|
274
|
-
end
|
275
|
-
|
276
235
|
it "assumes the given time is local" do
|
277
236
|
expect(ActiveSupport::TimeWithZone.mongoize(datetime)).to eq(
|
278
237
|
Time.utc(2010, 11, 19)
|
@@ -328,22 +287,13 @@ describe Mongoid::Extensions::TimeWithZone do
|
|
328
287
|
end
|
329
288
|
|
330
289
|
context "when using the ActiveSupport time zone" do
|
290
|
+
config_override :use_activesupport_time_zone, true
|
291
|
+
time_zone_override "Stockholm"
|
331
292
|
|
332
293
|
let(:date) do
|
333
294
|
Date.new(2010, 11, 19)
|
334
295
|
end
|
335
296
|
|
336
|
-
before do
|
337
|
-
Mongoid.use_activesupport_time_zone = true
|
338
|
-
# if this is actually your time zone, the following tests are useless
|
339
|
-
Time.zone = "Stockholm"
|
340
|
-
end
|
341
|
-
|
342
|
-
after do
|
343
|
-
Time.zone = nil
|
344
|
-
Mongoid.use_activesupport_time_zone = false
|
345
|
-
end
|
346
|
-
|
347
297
|
it "assumes the given time is local" do
|
348
298
|
expect(ActiveSupport::TimeWithZone.mongoize(date)).to eq(Time.utc(2010, 11, 18, 23))
|
349
299
|
end
|
@@ -361,17 +311,8 @@ describe Mongoid::Extensions::TimeWithZone do
|
|
361
311
|
end
|
362
312
|
|
363
313
|
context "when using the ActiveSupport time zone" do
|
364
|
-
|
365
|
-
|
366
|
-
Mongoid.use_activesupport_time_zone = true
|
367
|
-
# if this is actually your time zone, the following tests are useless
|
368
|
-
Time.zone = "Stockholm"
|
369
|
-
end
|
370
|
-
|
371
|
-
after do
|
372
|
-
Time.zone = nil
|
373
|
-
Mongoid.use_activesupport_time_zone = false
|
374
|
-
end
|
314
|
+
config_override :use_activesupport_time_zone, true
|
315
|
+
time_zone_override "Stockholm"
|
375
316
|
|
376
317
|
it "assumes the given time is local" do
|
377
318
|
expect(ActiveSupport::TimeWithZone.mongoize(array)).to eq(
|
@@ -449,7 +449,7 @@ describe Mongoid::Factory do
|
|
449
449
|
|
450
450
|
context 'when type is correct but the instantiation raises a NoMethodError' do
|
451
451
|
class BadPerson < Person
|
452
|
-
def self.
|
452
|
+
def self.instantiate_document(*args)
|
453
453
|
call_some_nonexistent_method(*args)
|
454
454
|
super
|
455
455
|
end
|
@@ -470,5 +470,65 @@ describe Mongoid::Factory do
|
|
470
470
|
end
|
471
471
|
|
472
472
|
end
|
473
|
+
|
474
|
+
context "when not deferring callbacks" do
|
475
|
+
|
476
|
+
let(:person) do
|
477
|
+
described_class.execute_from_db(Person, {}, execute_callbacks: true)
|
478
|
+
end
|
479
|
+
|
480
|
+
before do
|
481
|
+
Person.set_callback :initialize, :after do |doc|
|
482
|
+
doc.title = "Madam"
|
483
|
+
end
|
484
|
+
|
485
|
+
Person.set_callback :find, :after do |doc|
|
486
|
+
doc.ssn = 1234
|
487
|
+
end
|
488
|
+
end
|
489
|
+
|
490
|
+
after do
|
491
|
+
Person.reset_callbacks(:initialize)
|
492
|
+
Person.reset_callbacks(:find)
|
493
|
+
end
|
494
|
+
|
495
|
+
it "runs the initialize callbacks" do
|
496
|
+
expect(person.title).to eq("Madam")
|
497
|
+
end
|
498
|
+
|
499
|
+
it "runs the find callbacks" do
|
500
|
+
expect(person.ssn).to eq(1234)
|
501
|
+
end
|
502
|
+
end
|
503
|
+
|
504
|
+
context "when deferring callbacks" do
|
505
|
+
|
506
|
+
let(:person) do
|
507
|
+
described_class.execute_from_db(Person, {}, nil, nil, execute_callbacks: false)
|
508
|
+
end
|
509
|
+
|
510
|
+
before do
|
511
|
+
Person.set_callback :initialize, :after do |doc|
|
512
|
+
doc.title = "Madam"
|
513
|
+
end
|
514
|
+
|
515
|
+
Person.set_callback :find, :after do |doc|
|
516
|
+
doc.ssn = 1234
|
517
|
+
end
|
518
|
+
end
|
519
|
+
|
520
|
+
after do
|
521
|
+
Person.reset_callbacks(:initialize)
|
522
|
+
Person.reset_callbacks(:find)
|
523
|
+
end
|
524
|
+
|
525
|
+
it "runs the initialize callbacks" do
|
526
|
+
expect(person.title).to be nil
|
527
|
+
end
|
528
|
+
|
529
|
+
it "runs the find callbacks" do
|
530
|
+
expect(person.ssn).to be nil
|
531
|
+
end
|
532
|
+
end
|
473
533
|
end
|
474
534
|
end
|
@@ -81,16 +81,12 @@ describe Mongoid::Fields::Localized do
|
|
81
81
|
end
|
82
82
|
|
83
83
|
context "when a locale is provided" do
|
84
|
+
with_default_i18n_configs
|
84
85
|
|
85
86
|
before do
|
86
|
-
I18n.enforce_available_locales = false
|
87
87
|
::I18n.locale = :de
|
88
88
|
end
|
89
89
|
|
90
|
-
after do
|
91
|
-
::I18n.locale = :en
|
92
|
-
end
|
93
|
-
|
94
90
|
context "when the value exists" do
|
95
91
|
|
96
92
|
let(:value) do
|
@@ -102,9 +98,33 @@ describe Mongoid::Fields::Localized do
|
|
102
98
|
end
|
103
99
|
end
|
104
100
|
|
101
|
+
context "when key is a symbol" do
|
102
|
+
|
103
|
+
let(:value) do
|
104
|
+
field.demongoize({ :de => "This is a test" })
|
105
|
+
end
|
106
|
+
|
107
|
+
it "returns the string from the set locale" do
|
108
|
+
expect(value).to eq("This is a test")
|
109
|
+
end
|
110
|
+
end
|
111
|
+
|
112
|
+
|
113
|
+
context "passing a bogus value" do
|
114
|
+
|
115
|
+
let(:value) do
|
116
|
+
field.demongoize("bogus")
|
117
|
+
end
|
118
|
+
|
119
|
+
it "returns nil" do
|
120
|
+
expect(value).to be_nil
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
105
124
|
context "when the value does not exist" do
|
106
125
|
|
107
126
|
context "when not using fallbacks" do
|
127
|
+
require_no_fallbacks
|
108
128
|
|
109
129
|
let(:value) do
|
110
130
|
field.demongoize({ "en" => "testing" })
|
@@ -116,11 +136,7 @@ describe Mongoid::Fields::Localized do
|
|
116
136
|
end
|
117
137
|
|
118
138
|
context "when using fallbacks" do
|
119
|
-
|
120
|
-
before(:all) do
|
121
|
-
require "i18n/backend/fallbacks"
|
122
|
-
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
|
123
|
-
end
|
139
|
+
require_fallbacks
|
124
140
|
|
125
141
|
context "when fallbacks are defined" do
|
126
142
|
|
@@ -139,6 +155,17 @@ describe Mongoid::Fields::Localized do
|
|
139
155
|
end
|
140
156
|
end
|
141
157
|
|
158
|
+
context "when the fallback translation exists and is a symbol" do
|
159
|
+
|
160
|
+
let(:value) do
|
161
|
+
field.demongoize({ :es => "testing" })
|
162
|
+
end
|
163
|
+
|
164
|
+
it "returns the fallback translation" do
|
165
|
+
expect(value).to eq("testing")
|
166
|
+
end
|
167
|
+
end
|
168
|
+
|
142
169
|
context "when another fallback translation exists" do
|
143
170
|
|
144
171
|
let(:value) do
|
@@ -240,15 +267,12 @@ describe Mongoid::Fields::Localized do
|
|
240
267
|
end
|
241
268
|
|
242
269
|
context "when a locale is provided" do
|
270
|
+
with_default_i18n_configs
|
243
271
|
|
244
272
|
before do
|
245
273
|
::I18n.locale = :de
|
246
274
|
end
|
247
275
|
|
248
|
-
after do
|
249
|
-
::I18n.locale = :en
|
250
|
-
end
|
251
|
-
|
252
276
|
context "when the value exists" do
|
253
277
|
|
254
278
|
let(:value) do
|
@@ -274,13 +298,10 @@ describe Mongoid::Fields::Localized do
|
|
274
298
|
end
|
275
299
|
|
276
300
|
context "when using fallbacks" do
|
277
|
-
|
278
|
-
before(:all) do
|
279
|
-
require "i18n/backend/fallbacks"
|
280
|
-
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
|
281
|
-
end
|
301
|
+
require_fallbacks
|
282
302
|
|
283
303
|
context "when fallbacks are defined" do
|
304
|
+
with_default_i18n_configs
|
284
305
|
|
285
306
|
before do
|
286
307
|
::I18n.fallbacks[:de] = [ :de, :en, :es ]
|
@@ -339,6 +360,7 @@ describe Mongoid::Fields::Localized do
|
|
339
360
|
end
|
340
361
|
|
341
362
|
context "when no fallbacks are defined" do
|
363
|
+
with_default_i18n_configs
|
342
364
|
|
343
365
|
before do
|
344
366
|
::I18n.fallbacks[:de] = [ :de ]
|
@@ -378,15 +400,12 @@ describe Mongoid::Fields::Localized do
|
|
378
400
|
end
|
379
401
|
|
380
402
|
context "when a locale is provided" do
|
403
|
+
with_default_i18n_configs
|
381
404
|
|
382
405
|
before do
|
383
406
|
::I18n.locale = :de
|
384
407
|
end
|
385
408
|
|
386
|
-
after do
|
387
|
-
::I18n.locale = :en
|
388
|
-
end
|
389
|
-
|
390
409
|
let(:value) do
|
391
410
|
field.mongoize("This is a test")
|
392
411
|
end
|
@@ -415,15 +434,12 @@ describe Mongoid::Fields::Localized do
|
|
415
434
|
end
|
416
435
|
|
417
436
|
context "when a locale is provided" do
|
437
|
+
with_default_i18n_configs
|
418
438
|
|
419
439
|
before do
|
420
440
|
::I18n.locale = :de
|
421
441
|
end
|
422
442
|
|
423
|
-
after do
|
424
|
-
::I18n.locale = :en
|
425
|
-
end
|
426
|
-
|
427
443
|
let(:value) do
|
428
444
|
field.mongoize("100")
|
429
445
|
end
|
@@ -434,16 +450,12 @@ describe Mongoid::Fields::Localized do
|
|
434
450
|
end
|
435
451
|
|
436
452
|
context 'when the type is Boolean' do
|
453
|
+
with_default_i18n_configs
|
437
454
|
|
438
455
|
before do
|
439
|
-
I18n.enforce_available_locales = false
|
440
456
|
::I18n.locale = :de
|
441
457
|
end
|
442
458
|
|
443
|
-
after do
|
444
|
-
::I18n.locale = :en
|
445
|
-
end
|
446
|
-
|
447
459
|
context "when the value is false" do
|
448
460
|
|
449
461
|
let(:field) do
|
@@ -475,15 +487,12 @@ describe Mongoid::Fields::Localized do
|
|
475
487
|
end
|
476
488
|
|
477
489
|
context "when fallbacks are defined" do
|
478
|
-
|
479
|
-
before(:all) do
|
480
|
-
require "i18n/backend/fallbacks"
|
481
|
-
I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks)
|
482
|
-
end
|
490
|
+
require_fallbacks
|
483
491
|
|
484
492
|
context "when the lookup does not need to use fallbacks" do
|
485
493
|
|
486
494
|
context "when the value is false" do
|
495
|
+
with_default_i18n_configs
|
487
496
|
|
488
497
|
before do
|
489
498
|
::I18n.fallbacks[:de] = [:en, :es]
|
@@ -503,6 +512,7 @@ describe Mongoid::Fields::Localized do
|
|
503
512
|
end
|
504
513
|
|
505
514
|
context "when the value is true" do
|
515
|
+
with_default_i18n_configs
|
506
516
|
|
507
517
|
before do
|
508
518
|
::I18n.fallbacks[:de] = [:en, :es]
|
@@ -525,4 +535,37 @@ describe Mongoid::Fields::Localized do
|
|
525
535
|
end
|
526
536
|
end
|
527
537
|
end
|
538
|
+
|
539
|
+
describe "localize: :present" do
|
540
|
+
|
541
|
+
let(:field) do
|
542
|
+
described_class.new(:description, localize: :present, type: String)
|
543
|
+
end
|
544
|
+
|
545
|
+
context "when setting the localize to present" do
|
546
|
+
|
547
|
+
it "is localized?" do
|
548
|
+
expect(field.localized?).to be true
|
549
|
+
end
|
550
|
+
|
551
|
+
it "is localize_present?" do
|
552
|
+
expect(field.localize_present?).to be true
|
553
|
+
end
|
554
|
+
end
|
555
|
+
|
556
|
+
context "when localize is not localize_present" do
|
557
|
+
|
558
|
+
let(:field) do
|
559
|
+
described_class.new(:description, localize: true, type: String)
|
560
|
+
end
|
561
|
+
|
562
|
+
it "is localized?" do
|
563
|
+
expect(field.localized?).to be true
|
564
|
+
end
|
565
|
+
|
566
|
+
it "is not localize_present?" do
|
567
|
+
expect(field.localize_present?).to be false
|
568
|
+
end
|
569
|
+
end
|
570
|
+
end
|
528
571
|
end
|