mongoid 7.5.4 → 8.1.7
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 +29 -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 +3 -3
- 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 +47 -38
- 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 +127 -35
- 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 +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 +186 -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 +1 -1
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +3 -4
- data/lib/mongoid/traversable.rb +10 -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 +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 +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/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 +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 +78 -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 +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 +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 +824 -22
- 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 +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_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 +101 -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
@@ -40,20 +40,167 @@ describe Mongoid::Document do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
it 'assigns as a BSON::Binary object' do
|
43
|
-
pending 'https://jira.mongodb.org/browse/MONGOID-4823'
|
44
|
-
|
45
43
|
registry.data.should be_a(BSON::Binary)
|
46
44
|
end
|
47
45
|
|
48
46
|
it 'persists' do
|
49
|
-
pending 'https://jira.mongodb.org/browse/MONGOID-4823'
|
50
|
-
|
51
47
|
registry.save!
|
52
48
|
|
53
49
|
_registry = Registry.find(registry.id)
|
54
50
|
_registry.data.should == BSON::Binary.new(data)
|
55
51
|
end
|
56
52
|
end
|
53
|
+
|
54
|
+
context 'when assigned nil' do
|
55
|
+
let(:data) do
|
56
|
+
nil
|
57
|
+
end
|
58
|
+
|
59
|
+
let(:registry) do
|
60
|
+
Registry.new(data: data)
|
61
|
+
end
|
62
|
+
|
63
|
+
it 'assigns nil' do
|
64
|
+
registry.data.should be nil
|
65
|
+
end
|
66
|
+
|
67
|
+
it 'persists' do
|
68
|
+
registry.save!
|
69
|
+
|
70
|
+
_registry = Registry.find(registry.id)
|
71
|
+
_registry.data.should be nil
|
72
|
+
end
|
73
|
+
end
|
74
|
+
|
75
|
+
context 'when assigned an invalid type' do
|
76
|
+
let(:data) do
|
77
|
+
true
|
78
|
+
end
|
79
|
+
|
80
|
+
let(:registry) do
|
81
|
+
Registry.new(data: data)
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'assigns nil' do
|
85
|
+
registry.data.should be nil
|
86
|
+
end
|
87
|
+
|
88
|
+
it 'persists' do
|
89
|
+
registry.save!
|
90
|
+
|
91
|
+
_registry = Registry.find(registry.id)
|
92
|
+
_registry.data.should be nil
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
describe 'BSON::ObjectId field' do
|
98
|
+
context 'when assigned a BSON::ObjectId instance' do
|
99
|
+
let(:obj_id) do
|
100
|
+
BSON::ObjectId.new
|
101
|
+
end
|
102
|
+
|
103
|
+
let(:registry) do
|
104
|
+
Registry.new(obj_id: obj_id)
|
105
|
+
end
|
106
|
+
|
107
|
+
it 'does not freeze the specified data' do
|
108
|
+
registry
|
109
|
+
|
110
|
+
obj_id.should_not be_frozen
|
111
|
+
end
|
112
|
+
|
113
|
+
it 'persists' do
|
114
|
+
registry.save!
|
115
|
+
|
116
|
+
_registry = Registry.find(registry.id)
|
117
|
+
_registry.obj_id.should == obj_id
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context 'when assigned a valid string' do
|
122
|
+
let(:obj_id) do
|
123
|
+
BSON::ObjectId.new.to_s
|
124
|
+
end
|
125
|
+
|
126
|
+
let(:registry) do
|
127
|
+
Registry.new(obj_id: obj_id)
|
128
|
+
end
|
129
|
+
|
130
|
+
it 'assigns as a BSON::Binary object' do
|
131
|
+
registry.obj_id.should be_a(BSON::ObjectId)
|
132
|
+
end
|
133
|
+
|
134
|
+
it 'persists' do
|
135
|
+
registry.save!
|
136
|
+
|
137
|
+
_registry = Registry.find(registry.id)
|
138
|
+
_registry.obj_id.should == BSON::ObjectId.from_string(obj_id)
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
context 'when assigned nil' do
|
143
|
+
let(:obj_id) do
|
144
|
+
nil
|
145
|
+
end
|
146
|
+
|
147
|
+
let(:registry) do
|
148
|
+
Registry.new(obj_id: obj_id)
|
149
|
+
end
|
150
|
+
|
151
|
+
it 'assigns nil' do
|
152
|
+
registry.obj_id.should be nil
|
153
|
+
end
|
154
|
+
|
155
|
+
it 'persists' do
|
156
|
+
registry.save!
|
157
|
+
|
158
|
+
_registry = Registry.find(registry.id)
|
159
|
+
_registry.obj_id.should be nil
|
160
|
+
end
|
161
|
+
end
|
162
|
+
|
163
|
+
context 'when assigned an invalid string' do
|
164
|
+
let(:obj_id) do
|
165
|
+
"hello"
|
166
|
+
end
|
167
|
+
|
168
|
+
let(:registry) do
|
169
|
+
Registry.new(obj_id: obj_id)
|
170
|
+
end
|
171
|
+
|
172
|
+
it 'assigns nil' do
|
173
|
+
registry.obj_id.should == "hello"
|
174
|
+
end
|
175
|
+
|
176
|
+
it 'persists' do
|
177
|
+
registry.save!
|
178
|
+
|
179
|
+
_registry = Registry.find(registry.id)
|
180
|
+
_registry.obj_id.should == "hello"
|
181
|
+
end
|
182
|
+
end
|
183
|
+
|
184
|
+
context 'when assigned an invalid type' do
|
185
|
+
let(:obj_id) do
|
186
|
+
:sym
|
187
|
+
end
|
188
|
+
|
189
|
+
let(:registry) do
|
190
|
+
Registry.new(obj_id: obj_id)
|
191
|
+
end
|
192
|
+
|
193
|
+
it 'assigns nil' do
|
194
|
+
registry.obj_id.should == :sym
|
195
|
+
end
|
196
|
+
|
197
|
+
it 'persists' do
|
198
|
+
registry.save!
|
199
|
+
|
200
|
+
_registry = Registry.find(registry.id)
|
201
|
+
_registry.obj_id.should == :sym
|
202
|
+
end
|
203
|
+
end
|
57
204
|
end
|
58
205
|
|
59
206
|
describe 'Hash field' do
|
@@ -86,28 +233,30 @@ describe Mongoid::Document do
|
|
86
233
|
end
|
87
234
|
|
88
235
|
context 'Regexp field' do
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
).to be == 1
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
context "< 3.2" do
|
104
|
-
max_server_version("3.1")
|
105
|
-
include_examples "persists strings as regexp", 11
|
236
|
+
it 'persists strings as regexp' do
|
237
|
+
mop = Mop.create!(regexp_field: 'foo')
|
238
|
+
expect(mop.regexp_field).to be_a Regexp
|
239
|
+
expect(Mop.find(mop.id).regexp_field).to be_a Regexp
|
240
|
+
expect(
|
241
|
+
Mop.collection.find(
|
242
|
+
"_id" => mop.id,
|
243
|
+
"regexp_field" => { "$type" => 'regex' }
|
244
|
+
).count
|
245
|
+
).to be == 1
|
106
246
|
end
|
247
|
+
end
|
107
248
|
|
108
|
-
|
109
|
-
|
110
|
-
|
249
|
+
context 'BSON::Regexp::Raw field' do
|
250
|
+
it 'round-trips BSON::Regexp::Raws' do
|
251
|
+
mop = Mop.create!(bson_regexp_field: BSON::Regexp::Raw.new('foo'))
|
252
|
+
expect(mop.bson_regexp_field).to be_a BSON::Regexp::Raw
|
253
|
+
expect(Mop.find(mop.id).bson_regexp_field).to be_a BSON::Regexp::Raw
|
254
|
+
expect(
|
255
|
+
Mop.collection.find(
|
256
|
+
"_id" => mop.id,
|
257
|
+
"bson_regexp_field" => { "$type" => 'regex' }
|
258
|
+
).count
|
259
|
+
).to be == 1
|
111
260
|
end
|
112
261
|
end
|
113
262
|
end
|
@@ -165,13 +165,40 @@ describe Mongoid::Document do
|
|
165
165
|
|
166
166
|
describe "#attributes" do
|
167
167
|
|
168
|
-
let(:person) do
|
169
|
-
Person.
|
168
|
+
let!(:person) do
|
169
|
+
Person.create!(title: "Sir")
|
170
170
|
end
|
171
171
|
|
172
172
|
it "returns the attributes with indifferent access" do
|
173
173
|
expect(person[:title]).to eq("Sir")
|
174
174
|
end
|
175
|
+
|
176
|
+
context "when instantiating a new document" do
|
177
|
+
it "returns a Hash" do
|
178
|
+
expect(person.attributes.class).to eq(Hash)
|
179
|
+
end
|
180
|
+
end
|
181
|
+
|
182
|
+
context "when retrieving a document from the database" do
|
183
|
+
|
184
|
+
let(:from_db) { Person.first }
|
185
|
+
|
186
|
+
context "when legacy_attributes is false" do
|
187
|
+
config_override :legacy_attributes, false
|
188
|
+
|
189
|
+
it "returns a Hash" do
|
190
|
+
expect(from_db.attributes.class).to eq(Hash)
|
191
|
+
end
|
192
|
+
end
|
193
|
+
|
194
|
+
context "when legacy_attributes is true" do
|
195
|
+
config_override :legacy_attributes, true
|
196
|
+
|
197
|
+
it "returns a BSON::Document" do
|
198
|
+
expect(from_db.attributes.class).to eq(BSON::Document)
|
199
|
+
end
|
200
|
+
end
|
201
|
+
end
|
175
202
|
end
|
176
203
|
|
177
204
|
describe "#identity" do
|
@@ -293,27 +320,6 @@ describe Mongoid::Document do
|
|
293
320
|
expect(person.game.name).to eq("Ms. Pacman")
|
294
321
|
end
|
295
322
|
end
|
296
|
-
|
297
|
-
context "when instantiating model" do
|
298
|
-
|
299
|
-
let(:person) do
|
300
|
-
Person.instantiate("_id" => BSON::ObjectId.new, "title" => "Sir")
|
301
|
-
end
|
302
|
-
|
303
|
-
before do
|
304
|
-
Person.set_callback :initialize, :after do |doc|
|
305
|
-
doc.title = "Madam"
|
306
|
-
end
|
307
|
-
end
|
308
|
-
|
309
|
-
after do
|
310
|
-
Person.reset_callbacks(:initialize)
|
311
|
-
end
|
312
|
-
|
313
|
-
it "runs the callbacks" do
|
314
|
-
expect(person.title).to eq("Madam")
|
315
|
-
end
|
316
|
-
end
|
317
323
|
end
|
318
324
|
|
319
325
|
context "when defaults are defined" do
|
@@ -409,21 +415,6 @@ describe Mongoid::Document do
|
|
409
415
|
end
|
410
416
|
end
|
411
417
|
|
412
|
-
describe "#to_a" do
|
413
|
-
|
414
|
-
let(:person) do
|
415
|
-
Person.new
|
416
|
-
end
|
417
|
-
|
418
|
-
let(:people) do
|
419
|
-
person.to_a
|
420
|
-
end
|
421
|
-
|
422
|
-
it "returns the document in an array" do
|
423
|
-
expect(people).to eq([ person ])
|
424
|
-
end
|
425
|
-
end
|
426
|
-
|
427
418
|
describe "#as_json" do
|
428
419
|
|
429
420
|
let!(:person) do
|
@@ -501,12 +492,12 @@ describe Mongoid::Document do
|
|
501
492
|
end
|
502
493
|
|
503
494
|
it 'logs a deprecation warning when :compact is given' do
|
504
|
-
|
495
|
+
expect(Mongoid::Warnings).to receive(:warn_as_json_compact_deprecated)
|
505
496
|
church.as_json(compact: true)
|
506
497
|
end
|
507
498
|
|
508
499
|
it 'does not log a deprecation warning when :compact is not given' do
|
509
|
-
|
500
|
+
expect(Mongoid::Warnings).to_not receive(:warn_as_json_compact_deprecated)
|
510
501
|
church.as_json
|
511
502
|
end
|
512
503
|
end
|
@@ -627,7 +618,7 @@ describe Mongoid::Document do
|
|
627
618
|
end
|
628
619
|
|
629
620
|
it "does not include the document in the hash" do
|
630
|
-
expect(person.as_document
|
621
|
+
expect(person.as_document).to_not have_key("addresses")
|
631
622
|
end
|
632
623
|
end
|
633
624
|
|
@@ -81,10 +81,37 @@ describe Mongoid::Errors::DocumentNotFound do
|
|
81
81
|
end
|
82
82
|
end
|
83
83
|
|
84
|
+
context "when providing an _id and a shard key" do
|
85
|
+
|
86
|
+
let(:id) { BSON::ObjectId.new }
|
87
|
+
let(:doc) { { _id: id, a: "syd" } }
|
88
|
+
let(:error) do
|
89
|
+
described_class.new(Person, id, doc)
|
90
|
+
end
|
91
|
+
|
92
|
+
it "contains the problem in the message" do
|
93
|
+
expect(error.message).to include(
|
94
|
+
"Document not found for class Person with id #{id.to_s} and shard key a: syd."
|
95
|
+
)
|
96
|
+
end
|
97
|
+
|
98
|
+
it "contains the summary in the message" do
|
99
|
+
expect(error.message).to include(
|
100
|
+
"When calling Person.find with an id and a shard key"
|
101
|
+
)
|
102
|
+
end
|
103
|
+
|
104
|
+
it "contains the resolution in the message" do
|
105
|
+
expect(error.message).to include(
|
106
|
+
"Search for an id/shard key that is in the database or set"
|
107
|
+
)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
84
111
|
context "when providing an id in a hash without a shard key" do
|
85
112
|
|
86
113
|
let(:error) do
|
87
|
-
described_class.new(Person, 1, 1)
|
114
|
+
described_class.new(Person, 1, { _id: 1 })
|
88
115
|
end
|
89
116
|
|
90
117
|
it "contains the problem in the message" do
|
@@ -125,7 +152,7 @@ describe Mongoid::Errors::DocumentNotFound do
|
|
125
152
|
|
126
153
|
it "contains the resolution in the message" do
|
127
154
|
expect(error.message).to include(
|
128
|
-
"Create a document of class Person or use a finder method that
|
155
|
+
"Create a document of class Person or use a finder method that does not raise an exception when no documents are found."
|
129
156
|
)
|
130
157
|
end
|
131
158
|
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Mongoid::Errors::InvalidFieldType do
|
6
|
+
|
7
|
+
describe "#message" do
|
8
|
+
|
9
|
+
let(:error) do
|
10
|
+
described_class.new(Person, :first_name, :stringgy)
|
11
|
+
end
|
12
|
+
|
13
|
+
context 'when type is a symbol' do
|
14
|
+
let(:error) do
|
15
|
+
described_class.new(Person, :first_name, :stringgy)
|
16
|
+
end
|
17
|
+
|
18
|
+
it "contains the problem in the message" do
|
19
|
+
expect(error.message).to include(
|
20
|
+
"Invalid field type :stringgy for field 'first_name' on model 'Person'."
|
21
|
+
)
|
22
|
+
end
|
23
|
+
|
24
|
+
it "contains the summary in the message" do
|
25
|
+
expect(error.message).to include(
|
26
|
+
"Model 'Person' defines a field 'first_name' with an unknown type value :stringgy."
|
27
|
+
)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'when type is a string' do
|
32
|
+
let(:error) do
|
33
|
+
described_class.new(Person, :first_name, 'stringgy')
|
34
|
+
end
|
35
|
+
|
36
|
+
it "contains the problem in the message" do
|
37
|
+
expect(error.message).to include(
|
38
|
+
%q,Invalid field type "stringgy" for field 'first_name' on model 'Person'.,
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
it "contains the summary in the message" do
|
43
|
+
expect(error.message).to include(
|
44
|
+
%q,Model 'Person' defines a field 'first_name' with an unknown type value "stringgy".,
|
45
|
+
)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
it "contains the resolution in the message" do
|
50
|
+
expect(error.message).to include(
|
51
|
+
'Please provide a valid type value for the field.'
|
52
|
+
)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -9,7 +9,9 @@ describe Mongoid::Errors::MongoidError do
|
|
9
9
|
let(:options) { {} }
|
10
10
|
|
11
11
|
before do
|
12
|
-
|
12
|
+
# JRuby 9.3 RUBY_VERSION is set to 2.6.8, but the behavior matches Ruby 2.7.
|
13
|
+
# See https://github.com/jruby/jruby/issues/7184
|
14
|
+
if RUBY_VERSION >= '2.7' || (BSON::Environment.jruby? && JRUBY_VERSION >= '9.3')
|
13
15
|
{"message_title" => "message", "summary_title" => "summary", "resolution_title" => "resolution"}.each do |key, name|
|
14
16
|
expect(::I18n).to receive(:translate).with("mongoid.errors.messages.#{key}", **{}).and_return(name)
|
15
17
|
end
|
@@ -12,19 +12,19 @@ describe Mongoid::Errors::NoEnvironment do
|
|
12
12
|
|
13
13
|
it "contains the problem in the message" do
|
14
14
|
expect(error.message).to include(
|
15
|
-
"
|
15
|
+
"Mongoid could not determine the environment"
|
16
16
|
)
|
17
17
|
end
|
18
18
|
|
19
19
|
it "contains the summary in the message" do
|
20
20
|
expect(error.message).to include(
|
21
|
-
"
|
21
|
+
"it was not specified in any of the following locations"
|
22
22
|
)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "contains the resolution in the message" do
|
26
26
|
expect(error.message).to include(
|
27
|
-
"
|
27
|
+
"Please ensure an environment is set"
|
28
28
|
)
|
29
29
|
end
|
30
30
|
end
|
@@ -12,13 +12,13 @@ describe Mongoid::Errors::ReadonlyDocument do
|
|
12
12
|
|
13
13
|
it "contains the problem in the message" do
|
14
14
|
expect(error.message).to include(
|
15
|
-
"Attempted to persist
|
15
|
+
"Attempted to persist a readonly document of class 'Band'."
|
16
16
|
)
|
17
17
|
end
|
18
18
|
|
19
19
|
it "contains the summary in the message" do
|
20
20
|
expect(error.message).to include(
|
21
|
-
"Documents
|
21
|
+
"Documents that are marked readonly cannot be persisted"
|
22
22
|
)
|
23
23
|
end
|
24
24
|
|
@@ -12,7 +12,7 @@ describe Mongoid::Errors::TooManyNestedAttributeRecords do
|
|
12
12
|
|
13
13
|
it "contains the problem in the message" do
|
14
14
|
expect(error.message).to include(
|
15
|
-
"Accepting nested attributes for favorites is limited to 5
|
15
|
+
"Accepting nested attributes for favorites is limited to 5 documents."
|
16
16
|
)
|
17
17
|
end
|
18
18
|
|
@@ -488,12 +488,12 @@ describe Mongoid::Extensions::Array do
|
|
488
488
|
Date.new(2012, 1, 1)
|
489
489
|
end
|
490
490
|
|
491
|
-
let(:
|
491
|
+
let(:input) do
|
492
492
|
[ date ]
|
493
493
|
end
|
494
494
|
|
495
495
|
let(:mongoized) do
|
496
|
-
Array.mongoize(
|
496
|
+
Array.mongoize(input)
|
497
497
|
end
|
498
498
|
|
499
499
|
it "mongoizes each element in the array" do
|
@@ -503,6 +503,20 @@ describe Mongoid::Extensions::Array do
|
|
503
503
|
it "converts the elements properly" do
|
504
504
|
expect(mongoized.first).to eq(Time.utc(2012, 1, 1, 0, 0, 0))
|
505
505
|
end
|
506
|
+
|
507
|
+
context "when passing in a set" do
|
508
|
+
let(:input) do
|
509
|
+
[ date ].to_set
|
510
|
+
end
|
511
|
+
|
512
|
+
it "mongoizes to an array" do
|
513
|
+
expect(mongoized).to be_a(Array)
|
514
|
+
end
|
515
|
+
|
516
|
+
it "converts the elements properly" do
|
517
|
+
expect(mongoized.first).to eq(Time.utc(2012, 1, 1, 0, 0, 0))
|
518
|
+
end
|
519
|
+
end
|
506
520
|
end
|
507
521
|
|
508
522
|
describe "#mongoize" do
|