mongoid 9.0.11 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +8 -8
- data/README.md +5 -11
- data/Rakefile +35 -38
- data/lib/config/locales/en.yml +11 -0
- data/lib/mongoid/association/accessors.rb +19 -26
- data/lib/mongoid/association/bindable.rb +43 -45
- data/lib/mongoid/association/builders.rb +18 -15
- data/lib/mongoid/association/constrainable.rb +3 -5
- data/lib/mongoid/association/depending.rb +34 -38
- data/lib/mongoid/association/eager.rb +47 -13
- data/lib/mongoid/association/eager_loadable.rb +152 -24
- data/lib/mongoid/association/embedded/batchable.rb +28 -30
- data/lib/mongoid/association/embedded/cyclic.rb +8 -11
- data/lib/mongoid/association/embedded/eager.rb +1 -6
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +6 -9
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +2 -3
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +25 -22
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -2
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +2 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many.rb +24 -21
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +2 -6
- data/lib/mongoid/association/embedded/embeds_one.rb +20 -18
- data/lib/mongoid/association/embedded.rb +0 -1
- data/lib/mongoid/association/macros.rb +3 -7
- data/lib/mongoid/association/many.rb +75 -3
- data/lib/mongoid/association/marshalable.rb +0 -3
- data/lib/mongoid/association/nested/many.rb +18 -13
- data/lib/mongoid/association/nested/nested_buildable.rb +6 -9
- data/lib/mongoid/association/nested/one.rb +4 -7
- data/lib/mongoid/association/nested.rb +1 -3
- data/lib/mongoid/association/one.rb +0 -3
- data/lib/mongoid/association/options.rb +8 -7
- data/lib/mongoid/association/referenced/auto_save.rb +0 -2
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +11 -15
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +23 -5
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +1 -3
- data/lib/mongoid/association/referenced/belongs_to.rb +48 -43
- data/lib/mongoid/association/referenced/counter_cache.rb +5 -10
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +8 -4
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -3
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +52 -47
- data/lib/mongoid/association/referenced/has_many/binding.rb +0 -2
- data/lib/mongoid/association/referenced/has_many/buildable.rb +11 -5
- data/lib/mongoid/association/referenced/has_many/eager.rb +0 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +107 -38
- data/lib/mongoid/association/referenced/has_many/proxy.rb +10 -6
- data/lib/mongoid/association/referenced/has_many.rb +30 -24
- data/lib/mongoid/association/referenced/has_one/binding.rb +0 -2
- data/lib/mongoid/association/referenced/has_one/buildable.rb +11 -9
- data/lib/mongoid/association/referenced/has_one/eager.rb +0 -3
- data/lib/mongoid/association/referenced/has_one.rb +26 -21
- data/lib/mongoid/association/referenced/syncable.rb +30 -34
- data/lib/mongoid/association/referenced.rb +0 -1
- data/lib/mongoid/association/reflections.rb +0 -3
- data/lib/mongoid/association/relatable.rb +69 -66
- data/lib/mongoid/association.rb +12 -15
- data/lib/mongoid/atomic/modifiers.rb +65 -25
- data/lib/mongoid/atomic/paths/embedded/many.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded/one.rb +2 -4
- data/lib/mongoid/atomic/paths/embedded.rb +3 -6
- data/lib/mongoid/atomic/paths/root.rb +1 -4
- data/lib/mongoid/atomic/paths.rb +2 -3
- data/lib/mongoid/atomic.rb +0 -3
- data/lib/mongoid/attributes/dynamic.rb +6 -7
- data/lib/mongoid/attributes/nested.rb +8 -10
- data/lib/mongoid/attributes/projector.rb +7 -20
- data/lib/mongoid/attributes/readonly.rb +6 -11
- data/lib/mongoid/attributes.rb +18 -34
- data/lib/mongoid/cacheable.rb +24 -6
- data/lib/mongoid/clients/factory.rb +12 -15
- data/lib/mongoid/clients/options.rb +2 -5
- data/lib/mongoid/clients/sessions.rb +50 -60
- data/lib/mongoid/clients/storage_options.rb +1 -4
- data/lib/mongoid/clients/validators/storage.rb +2 -3
- data/lib/mongoid/clients/validators.rb +1 -2
- data/lib/mongoid/clients.rb +8 -11
- data/lib/mongoid/collection_configurable.rb +10 -14
- data/lib/mongoid/composable.rb +30 -34
- data/lib/mongoid/config/defaults.rb +7 -4
- data/lib/mongoid/config/encryption.rb +1 -3
- data/lib/mongoid/config/environment.rb +7 -16
- data/lib/mongoid/config/introspection.rb +14 -16
- data/lib/mongoid/config/options.rb +16 -10
- data/lib/mongoid/config/validators/async_query_executor.rb +3 -6
- data/lib/mongoid/config/validators/client.rb +12 -15
- data/lib/mongoid/config/validators/option.rb +3 -5
- data/lib/mongoid/config/validators.rb +3 -4
- data/lib/mongoid/config.rb +132 -42
- data/lib/mongoid/contextual/aggregable/memory.rb +2 -4
- data/lib/mongoid/contextual/aggregable/mongo.rb +20 -22
- data/lib/mongoid/contextual/aggregable/none.rb +2 -4
- data/lib/mongoid/contextual/aggregable.rb +5 -7
- data/lib/mongoid/contextual/atomic.rb +20 -24
- data/lib/mongoid/contextual/command.rb +0 -3
- data/lib/mongoid/contextual/map_reduce.rb +12 -16
- data/lib/mongoid/contextual/memory.rb +72 -65
- data/lib/mongoid/contextual/mongo/documents_loader.rb +2 -3
- data/lib/mongoid/contextual/mongo.rb +169 -85
- data/lib/mongoid/contextual/none.rb +9 -9
- data/lib/mongoid/contextual/queryable.rb +1 -4
- data/lib/mongoid/contextual.rb +18 -7
- data/lib/mongoid/copyable.rb +7 -9
- data/lib/mongoid/criteria/findable.rb +5 -7
- data/lib/mongoid/criteria/includable.rb +37 -8
- data/lib/mongoid/criteria/inspectable.rb +2 -5
- data/lib/mongoid/criteria/marshalable.rb +4 -8
- data/lib/mongoid/criteria/modifiable.rb +3 -11
- data/lib/mongoid/criteria/options.rb +0 -3
- data/lib/mongoid/criteria/permission.rb +34 -37
- data/lib/mongoid/criteria/queryable/aggregable.rb +9 -10
- data/lib/mongoid/criteria/queryable/expandable.rb +4 -9
- data/lib/mongoid/criteria/queryable/extensions/array.rb +7 -10
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -5
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +1 -4
- data/lib/mongoid/criteria/queryable/extensions/date.rb +2 -6
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +3 -7
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +1 -4
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +20 -11
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +15 -11
- data/lib/mongoid/criteria/queryable/extensions/object.rb +7 -8
- data/lib/mongoid/criteria/queryable/extensions/range.rb +6 -9
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +10 -12
- data/lib/mongoid/criteria/queryable/extensions/set.rb +4 -6
- data/lib/mongoid/criteria/queryable/extensions/string.rb +5 -9
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -7
- data/lib/mongoid/criteria/queryable/extensions/time.rb +2 -6
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +2 -12
- data/lib/mongoid/criteria/queryable/extensions.rb +18 -21
- data/lib/mongoid/criteria/queryable/key.rb +12 -18
- data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +31 -39
- data/lib/mongoid/criteria/queryable/optional.rb +17 -18
- data/lib/mongoid/criteria/queryable/options.rb +20 -9
- data/lib/mongoid/criteria/queryable/pipeline.rb +6 -9
- data/lib/mongoid/criteria/queryable/selectable.rb +131 -193
- data/lib/mongoid/criteria/queryable/selector.rb +20 -29
- data/lib/mongoid/criteria/queryable/smash.rb +1 -6
- data/lib/mongoid/criteria/queryable/storable.rb +20 -39
- data/lib/mongoid/criteria/queryable.rb +25 -15
- data/lib/mongoid/criteria/scopable.rb +5 -11
- data/lib/mongoid/criteria/translator.rb +5 -8
- data/lib/mongoid/criteria.rb +109 -54
- data/lib/mongoid/deprecable.rb +1 -4
- data/lib/mongoid/deprecation.rb +2 -6
- data/lib/mongoid/document.rb +1 -1
- data/lib/mongoid/encryptable.rb +1 -2
- data/lib/mongoid/equality.rb +4 -5
- data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
- data/lib/mongoid/errors/attribute_not_loaded.rb +1 -4
- data/lib/mongoid/errors/callback.rb +1 -4
- data/lib/mongoid/errors/create_collection_failure.rb +8 -11
- data/lib/mongoid/errors/criteria_argument_required.rb +2 -5
- data/lib/mongoid/errors/delete_restriction.rb +1 -4
- data/lib/mongoid/errors/document_not_destroyed.rb +1 -4
- data/lib/mongoid/errors/document_not_found.rb +16 -21
- data/lib/mongoid/errors/drop_collection_failure.rb +7 -10
- data/lib/mongoid/errors/empty_config_file.rb +1 -4
- data/lib/mongoid/errors/immutable_attribute.rb +1 -4
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +1 -4
- data/lib/mongoid/errors/invalid_async_query_executor.rb +2 -5
- data/lib/mongoid/errors/invalid_auto_encryption_configuration.rb +2 -5
- data/lib/mongoid/errors/invalid_collection.rb +1 -3
- data/lib/mongoid/errors/invalid_config_file.rb +1 -4
- data/lib/mongoid/errors/invalid_config_option.rb +2 -5
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +6 -10
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +2 -4
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +1 -4
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +5 -9
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +1 -4
- data/lib/mongoid/errors/invalid_estimated_count_scoping.rb +1 -4
- data/lib/mongoid/errors/invalid_expression_operator.rb +3 -7
- data/lib/mongoid/errors/invalid_field.rb +2 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +5 -9
- data/lib/mongoid/errors/invalid_field_option.rb +2 -5
- data/lib/mongoid/errors/invalid_field_type.rb +1 -4
- data/lib/mongoid/errors/invalid_find.rb +1 -4
- data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +1 -4
- data/lib/mongoid/errors/invalid_includes.rb +3 -6
- data/lib/mongoid/errors/invalid_index.rb +1 -4
- data/lib/mongoid/errors/invalid_options.rb +1 -4
- data/lib/mongoid/errors/invalid_path.rb +1 -4
- data/lib/mongoid/errors/invalid_persistence_option.rb +4 -7
- data/lib/mongoid/errors/invalid_query.rb +6 -11
- data/lib/mongoid/errors/invalid_relation.rb +10 -13
- data/lib/mongoid/errors/invalid_relation_option.rb +4 -7
- data/lib/mongoid/errors/invalid_scope.rb +1 -4
- data/lib/mongoid/errors/invalid_session_nesting.rb +0 -3
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +2 -4
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -4
- data/lib/mongoid/errors/invalid_time.rb +1 -4
- data/lib/mongoid/errors/invalid_transaction_nesting.rb +0 -3
- data/lib/mongoid/errors/inverse_not_found.rb +1 -4
- data/lib/mongoid/errors/mixed_client_configuration.rb +1 -4
- data/lib/mongoid/errors/mixed_relations.rb +1 -3
- data/lib/mongoid/errors/mongoid_error.rb +7 -11
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -4
- data/lib/mongoid/errors/no_client_config.rb +1 -4
- data/lib/mongoid/errors/no_client_database.rb +1 -4
- data/lib/mongoid/errors/no_client_hosts.rb +1 -4
- data/lib/mongoid/errors/no_clients_config.rb +1 -4
- data/lib/mongoid/errors/no_default_client.rb +1 -4
- data/lib/mongoid/errors/no_environment.rb +1 -4
- data/lib/mongoid/errors/no_map_reduce_output.rb +1 -4
- data/lib/mongoid/errors/no_metadata.rb +1 -4
- data/lib/mongoid/errors/no_parent.rb +1 -4
- data/lib/mongoid/errors/readonly_attribute.rb +1 -4
- data/lib/mongoid/errors/readonly_document.rb +1 -4
- data/lib/mongoid/errors/rollback.rb +0 -2
- data/lib/mongoid/errors/scope_overwrite.rb +2 -4
- data/lib/mongoid/errors/sessions_not_supported.rb +0 -3
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -3
- data/lib/mongoid/errors/transaction_error.rb +0 -3
- data/lib/mongoid/errors/transactions_not_supported.rb +0 -3
- data/lib/mongoid/errors/unknown_attribute.rb +1 -4
- data/lib/mongoid/errors/unknown_model.rb +1 -4
- data/lib/mongoid/errors/unregistered_class.rb +1 -1
- data/lib/mongoid/errors/unsaved_document.rb +1 -3
- data/lib/mongoid/errors/unsupported_isolation_level.rb +22 -0
- data/lib/mongoid/errors/unsupported_javascript.rb +1 -4
- data/lib/mongoid/errors/validations.rb +3 -5
- data/lib/mongoid/errors.rb +72 -72
- data/lib/mongoid/evolvable.rb +0 -3
- data/lib/mongoid/extensions/array.rb +5 -7
- data/lib/mongoid/extensions/big_decimal.rb +6 -7
- data/lib/mongoid/extensions/binary.rb +3 -6
- data/lib/mongoid/extensions/boolean.rb +4 -7
- data/lib/mongoid/extensions/bson_document.rb +28 -0
- data/lib/mongoid/extensions/date.rb +10 -14
- data/lib/mongoid/extensions/date_time.rb +2 -6
- data/lib/mongoid/extensions/decimal128.rb +1 -5
- data/lib/mongoid/extensions/false_class.rb +3 -5
- data/lib/mongoid/extensions/float.rb +5 -10
- data/lib/mongoid/extensions/hash.rb +5 -10
- data/lib/mongoid/extensions/integer.rb +5 -10
- data/lib/mongoid/extensions/module.rb +1 -4
- data/lib/mongoid/extensions/nil_class.rb +0 -1
- data/lib/mongoid/extensions/object.rb +9 -14
- data/lib/mongoid/extensions/object_id.rb +2 -6
- data/lib/mongoid/extensions/range.rb +14 -15
- data/lib/mongoid/extensions/raw_value.rb +0 -3
- data/lib/mongoid/extensions/regexp.rb +3 -6
- data/lib/mongoid/extensions/set.rb +3 -4
- data/lib/mongoid/extensions/string.rb +8 -12
- data/lib/mongoid/extensions/symbol.rb +3 -7
- data/lib/mongoid/extensions/time.rb +24 -26
- data/lib/mongoid/extensions/time_with_zone.rb +4 -7
- data/lib/mongoid/extensions/true_class.rb +3 -5
- data/lib/mongoid/extensions.rb +26 -26
- data/lib/mongoid/factory.rb +5 -9
- data/lib/mongoid/fields/encrypted.rb +0 -1
- data/lib/mongoid/fields/foreign_key.rb +9 -10
- data/lib/mongoid/fields/localized.rb +12 -12
- data/lib/mongoid/fields/standard.rb +5 -7
- data/lib/mongoid/fields/validators/macro.rb +23 -34
- data/lib/mongoid/fields/validators.rb +1 -2
- data/lib/mongoid/fields.rb +151 -58
- data/lib/mongoid/findable.rb +82 -53
- data/lib/mongoid/indexable/specification.rb +20 -6
- data/lib/mongoid/indexable/validators/options.rb +33 -40
- data/lib/mongoid/indexable.rb +26 -25
- data/lib/mongoid/inspectable.rb +4 -7
- data/lib/mongoid/interceptable.rb +41 -40
- data/lib/mongoid/loadable.rb +17 -18
- data/lib/mongoid/loggable.rb +4 -8
- data/lib/mongoid/matchable.rb +0 -2
- data/lib/mongoid/matcher/all.rb +2 -5
- data/lib/mongoid/matcher/and.rb +0 -3
- data/lib/mongoid/matcher/bits.rb +13 -8
- data/lib/mongoid/matcher/bits_all_clear.rb +1 -3
- data/lib/mongoid/matcher/bits_all_set.rb +1 -3
- data/lib/mongoid/matcher/bits_any_clear.rb +1 -3
- data/lib/mongoid/matcher/bits_any_set.rb +1 -3
- data/lib/mongoid/matcher/elem_match.rb +13 -15
- data/lib/mongoid/matcher/elem_match_expression.rb +0 -3
- data/lib/mongoid/matcher/eq.rb +0 -3
- data/lib/mongoid/matcher/eq_impl.rb +12 -17
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +4 -7
- data/lib/mongoid/matcher/exists.rb +1 -4
- data/lib/mongoid/matcher/expression.rb +5 -10
- data/lib/mongoid/matcher/expression_operator.rb +1 -3
- data/lib/mongoid/matcher/field_expression.rb +10 -13
- data/lib/mongoid/matcher/field_operator.rb +4 -6
- data/lib/mongoid/matcher/gt.rb +0 -3
- data/lib/mongoid/matcher/gte.rb +0 -3
- data/lib/mongoid/matcher/in.rb +9 -12
- data/lib/mongoid/matcher/lt.rb +0 -3
- data/lib/mongoid/matcher/lte.rb +0 -3
- data/lib/mongoid/matcher/mod.rb +4 -8
- data/lib/mongoid/matcher/ne.rb +0 -3
- data/lib/mongoid/matcher/nin.rb +0 -3
- data/lib/mongoid/matcher/nor.rb +1 -6
- data/lib/mongoid/matcher/not.rb +0 -3
- data/lib/mongoid/matcher/or.rb +0 -3
- data/lib/mongoid/matcher/regex.rb +11 -14
- data/lib/mongoid/matcher/size.rb +2 -5
- data/lib/mongoid/matcher/type.rb +32 -37
- data/lib/mongoid/matcher.rb +7 -15
- data/lib/mongoid/model_resolver.rb +1 -0
- data/lib/mongoid/persistable/creatable.rb +23 -7
- data/lib/mongoid/persistable/deletable.rb +6 -7
- data/lib/mongoid/persistable/destroyable.rb +2 -6
- data/lib/mongoid/persistable/incrementable.rb +1 -3
- data/lib/mongoid/persistable/logical.rb +3 -5
- data/lib/mongoid/persistable/maxable.rb +2 -4
- data/lib/mongoid/persistable/minable.rb +2 -4
- data/lib/mongoid/persistable/multipliable.rb +1 -3
- data/lib/mongoid/persistable/poppable.rb +2 -4
- data/lib/mongoid/persistable/pullable.rb +3 -5
- data/lib/mongoid/persistable/pushable.rb +5 -7
- data/lib/mongoid/persistable/renamable.rb +1 -3
- data/lib/mongoid/persistable/savable.rb +0 -3
- data/lib/mongoid/persistable/settable.rb +4 -13
- data/lib/mongoid/persistable/unsettable.rb +1 -3
- data/lib/mongoid/persistable/updatable.rb +16 -24
- data/lib/mongoid/persistable/upsertable.rb +8 -10
- data/lib/mongoid/persistable.rb +28 -27
- data/lib/mongoid/persistence_context.rb +34 -41
- data/lib/mongoid/pluckable.rb +0 -2
- data/lib/mongoid/positional.rb +5 -11
- data/lib/mongoid/railtie.rb +16 -22
- data/lib/mongoid/railties/console_sandbox.rb +6 -8
- data/lib/mongoid/railties/controller_runtime.rb +7 -11
- data/lib/mongoid/railties/database.rake +42 -44
- data/lib/mongoid/scopable.rb +23 -31
- data/lib/mongoid/search_indexable.rb +330 -0
- data/lib/mongoid/selectable.rb +1 -3
- data/lib/mongoid/serializable.rb +6 -8
- data/lib/mongoid/shardable.rb +8 -17
- data/lib/mongoid/stateful.rb +5 -10
- data/lib/mongoid/stringified_symbol.rb +5 -9
- data/lib/mongoid/tasks/database.rake +31 -32
- data/lib/mongoid/tasks/database.rb +28 -30
- data/lib/mongoid/tasks/encryption.rb +10 -15
- data/lib/mongoid/threaded/lifecycle.rb +6 -9
- data/lib/mongoid/threaded.rb +132 -32
- data/lib/mongoid/timestamps/created/short.rb +2 -3
- data/lib/mongoid/timestamps/created.rb +1 -2
- data/lib/mongoid/timestamps/short.rb +0 -1
- data/lib/mongoid/timestamps/timeless.rb +8 -13
- data/lib/mongoid/timestamps/updated/short.rb +2 -3
- data/lib/mongoid/timestamps/updated.rb +2 -5
- data/lib/mongoid/timestamps.rb +4 -6
- data/lib/mongoid/touchable.rb +19 -11
- data/lib/mongoid/traversable.rb +3 -2
- data/lib/mongoid/validatable/associated.rb +1 -5
- data/lib/mongoid/validatable/format.rb +0 -2
- data/lib/mongoid/validatable/length.rb +0 -2
- data/lib/mongoid/validatable/localizable.rb +0 -3
- data/lib/mongoid/validatable/macros.rb +0 -2
- data/lib/mongoid/validatable/numericality.rb +24 -3
- data/lib/mongoid/validatable/presence.rb +8 -10
- data/lib/mongoid/validatable/queryable.rb +0 -3
- data/lib/mongoid/validatable/uniqueness.rb +12 -14
- data/lib/mongoid/validatable.rb +15 -20
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +10 -11
- data/lib/mongoid.rb +30 -34
- data/lib/rails/generators/mongoid/config/config_generator.rb +2 -4
- data/lib/rails/generators/mongoid/config/templates/mongoid.rb +4 -5
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +2 -2
- data/lib/rails/generators/mongoid/model/model_generator.rb +5 -8
- data/lib/rails/generators/mongoid_generator.rb +6 -10
- data/lib/rails/mongoid.rb +1 -3
- data/spec/integration/active_job_spec.rb +1 -2
- data/spec/integration/app_spec.rb +142 -178
- data/spec/integration/associations/belongs_to_spec.rb +30 -28
- data/spec/integration/associations/embedded_dirty_spec.rb +0 -1
- data/spec/integration/associations/embedded_spec.rb +41 -43
- data/spec/integration/associations/embeds_many_spec.rb +46 -29
- data/spec/integration/associations/embeds_one_spec.rb +2 -1
- data/spec/integration/associations/foreign_key_spec.rb +10 -11
- data/spec/integration/associations/foreign_key_spec_models.rb +8 -9
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +16 -13
- data/spec/integration/associations/has_many_spec.rb +17 -18
- data/spec/integration/associations/has_one_spec.rb +42 -45
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +36 -39
- data/spec/integration/associations/reverse_population_spec.rb +4 -5
- data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
- data/spec/integration/associations/scope_option_spec.rb +18 -20
- data/spec/integration/atomic/modifiers_spec.rb +72 -52
- data/spec/integration/bson_regexp_raw_spec.rb +2 -3
- data/spec/integration/caching_spec.rb +68 -0
- data/spec/integration/callbacks_models.rb +11 -9
- data/spec/integration/callbacks_spec.rb +78 -80
- data/spec/integration/contextual/empty_spec.rb +19 -20
- data/spec/integration/criteria/alias_query_spec.rb +12 -19
- data/spec/integration/criteria/date_field_spec.rb +1 -2
- data/spec/integration/criteria/default_scope_spec.rb +23 -18
- data/spec/integration/criteria/logical_spec.rb +18 -19
- data/spec/integration/criteria/range_spec.rb +77 -86
- data/spec/integration/criteria/raw_value_spec.rb +122 -109
- data/spec/integration/criteria/time_with_zone_spec.rb +33 -24
- data/spec/integration/discriminator_key_spec.rb +85 -85
- data/spec/integration/discriminator_value_spec.rb +70 -73
- data/spec/integration/document_spec.rb +9 -10
- data/spec/integration/dots_and_dollars_spec.rb +104 -119
- data/spec/integration/encryption_spec.rb +8 -11
- data/spec/integration/i18n_fallbacks_spec.rb +7 -8
- data/spec/integration/isolation_state_spec.rb +241 -0
- data/spec/integration/matcher_examples_spec.rb +145 -168
- data/spec/integration/matcher_operator_data/in.yml +6 -6
- data/spec/integration/matcher_operator_spec.rb +16 -26
- data/spec/integration/matcher_spec.rb +31 -32
- data/spec/integration/persistence/collection_options_spec.rb +0 -2
- data/spec/integration/persistence/range_field_spec.rb +24 -2
- data/spec/integration/server_query_spec.rb +43 -37
- data/spec/integration/shardable_spec.rb +10 -11
- data/spec/integration/stringified_symbol_field_spec.rb +28 -43
- data/spec/lite_spec_helper.rb +11 -12
- data/spec/mongoid/association/accessors_spec.rb +197 -285
- data/spec/mongoid/association/auto_save_spec.rb +62 -93
- data/spec/mongoid/association/builders_spec.rb +121 -74
- data/spec/mongoid/association/constrainable_spec.rb +9 -22
- data/spec/mongoid/association/counter_cache_spec.rb +71 -104
- data/spec/mongoid/association/depending_spec.rb +166 -208
- data/spec/mongoid/association/eager_spec.rb +416 -80
- data/spec/mongoid/association/embedded/cyclic_spec.rb +36 -48
- data/spec/mongoid/association/embedded/dirty_spec.rb +15 -20
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +36 -54
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +8 -15
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +135 -175
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +25 -127
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +9 -14
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +38 -51
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +1151 -1340
- data/spec/mongoid/association/embedded/embeds_many_models.rb +17 -17
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +11 -11
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +25 -138
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +15 -23
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +18 -26
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +204 -273
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_models.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +5 -6
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -143
- data/spec/mongoid/association/macros_spec.rb +213 -300
- data/spec/mongoid/association/nested/many_spec.rb +51 -73
- data/spec/mongoid/association/nested/one_spec.rb +56 -80
- data/spec/mongoid/association/options_spec.rb +187 -310
- data/spec/mongoid/association/polymorphic_spec.rb +35 -53
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +55 -76
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +36 -41
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +81 -101
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +258 -345
- data/spec/mongoid/association/referenced/belongs_to_models.rb +4 -3
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +3 -4
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +91 -294
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +42 -56
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +41 -32
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +36 -42
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +8 -9
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +771 -975
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +9 -9
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +5 -6
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +59 -177
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +29 -43
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +53 -53
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +104 -67
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +431 -675
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -2
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +173 -11
- data/spec/mongoid/association/referenced/has_many_models.rb +1 -2
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +3 -4
- data/spec/mongoid/association/referenced/has_many_spec.rb +44 -188
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +26 -38
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +28 -29
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +29 -42
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +270 -332
- data/spec/mongoid/association/referenced/has_one_models.rb +1 -2
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +3 -4
- data/spec/mongoid/association/referenced/has_one_spec.rb +40 -188
- data/spec/mongoid/association/reflections_spec.rb +14 -24
- data/spec/mongoid/association/syncable_spec.rb +102 -125
- data/spec/mongoid/association_spec.rb +47 -70
- data/spec/mongoid/atomic/modifiers_spec.rb +184 -197
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +39 -52
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +35 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +9 -15
- data/spec/mongoid/atomic/paths_spec.rb +81 -117
- data/spec/mongoid/atomic_spec.rb +156 -171
- data/spec/mongoid/attributes/dynamic_spec.rb +5 -6
- data/spec/mongoid/attributes/nested_spec.rb +1219 -1692
- data/spec/mongoid/attributes/nested_spec_models.rb +8 -9
- data/spec/mongoid/attributes/projector_spec.rb +2 -6
- data/spec/mongoid/attributes/readonly_spec.rb +73 -97
- data/spec/mongoid/attributes_spec.rb +669 -826
- data/spec/mongoid/cacheable_spec.rb +74 -44
- data/spec/mongoid/changeable_spec.rb +591 -733
- data/spec/mongoid/clients/factory_spec.rb +122 -154
- data/spec/mongoid/clients/options_spec.rb +40 -59
- data/spec/mongoid/clients/sessions_spec.rb +25 -44
- data/spec/mongoid/clients/transactions_spec.rb +33 -50
- data/spec/mongoid/clients/transactions_spec_models.rb +3 -4
- data/spec/mongoid/clients_spec.rb +265 -355
- data/spec/mongoid/collection_configurable_spec.rb +9 -12
- data/spec/mongoid/composable_spec.rb +2 -9
- data/spec/mongoid/config/defaults_spec.rb +24 -31
- data/spec/mongoid/config/encryption_spec.rb +54 -57
- data/spec/mongoid/config/environment_spec.rb +30 -40
- data/spec/mongoid/config/introspection_spec.rb +42 -37
- data/spec/mongoid/config/options_spec.rb +14 -21
- data/spec/mongoid/config_spec.rb +145 -195
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +98 -135
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +4 -7
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +149 -187
- data/spec/mongoid/contextual/aggregable/none_spec.rb +14 -16
- data/spec/mongoid/contextual/atomic_spec.rb +223 -271
- data/spec/mongoid/contextual/map_reduce_spec.rb +110 -138
- data/spec/mongoid/contextual/memory_spec.rb +706 -854
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +12 -13
- data/spec/mongoid/contextual/mongo_spec.rb +1008 -1213
- data/spec/mongoid/contextual/none_spec.rb +54 -59
- data/spec/mongoid/contextual/short_circuit_spec.rb +139 -0
- data/spec/mongoid/copyable_spec.rb +254 -300
- data/spec/mongoid/copyable_spec_models.rb +0 -1
- data/spec/mongoid/criteria/findable_spec.rb +322 -387
- data/spec/mongoid/criteria/includable_spec.rb +421 -372
- data/spec/mongoid/criteria/includable_spec_models.rb +16 -7
- data/spec/mongoid/criteria/inspectable_spec.rb +11 -14
- data/spec/mongoid/criteria/marshalable_spec.rb +11 -14
- data/spec/mongoid/criteria/modifiable_spec.rb +366 -512
- data/spec/mongoid/criteria/options_spec.rb +2 -7
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +112 -141
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +8 -11
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +127 -184
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +123 -60
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +84 -117
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +44 -65
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +86 -108
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +94 -33
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +103 -138
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +95 -34
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +25 -38
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +26 -28
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +32 -54
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +136 -130
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +16 -24
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +15 -24
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +12 -19
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +46 -63
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +28 -42
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +73 -96
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +71 -92
- data/spec/mongoid/criteria/queryable/key_spec.rb +32 -36
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +44 -49
- data/spec/mongoid/criteria/queryable/optional_spec.rb +373 -486
- data/spec/mongoid/criteria/queryable/options_spec.rb +172 -123
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +65 -87
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +41 -53
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +576 -680
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +7 -11
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +807 -998
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +154 -191
- data/spec/mongoid/criteria/queryable/selector_spec.rb +294 -390
- data/spec/mongoid/criteria/queryable/smash_spec.rb +6 -11
- data/spec/mongoid/criteria/queryable/storable_spec.rb +54 -81
- data/spec/mongoid/criteria/queryable_mql_spec.rb +92 -0
- data/spec/mongoid/criteria/scopable_spec.rb +102 -138
- data/spec/mongoid/criteria/translator_spec.rb +59 -60
- data/spec/mongoid/criteria_projection_spec.rb +81 -99
- data/spec/mongoid/criteria_spec.rb +935 -950
- data/spec/mongoid/document_fields_spec.rb +28 -30
- data/spec/mongoid/document_persistence_context_spec.rb +13 -15
- data/spec/mongoid/document_query_spec.rb +9 -12
- data/spec/mongoid/document_spec.rb +317 -409
- data/spec/mongoid/equality_spec.rb +69 -102
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +8 -11
- data/spec/mongoid/errors/attribute_not_loaded_spec.rb +7 -10
- data/spec/mongoid/errors/callback_spec.rb +8 -11
- data/spec/mongoid/errors/delete_restriction_spec.rb +5 -8
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +7 -10
- data/spec/mongoid/errors/document_not_found_spec.rb +51 -61
- data/spec/mongoid/errors/invalid_collection_spec.rb +9 -13
- data/spec/mongoid/errors/invalid_config_file_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_config_option_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_field_option_spec.rb +7 -10
- data/spec/mongoid/errors/invalid_field_spec.rb +10 -11
- data/spec/mongoid/errors/invalid_field_type_spec.rb +9 -12
- data/spec/mongoid/errors/invalid_find_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_includes_spec.rb +9 -13
- data/spec/mongoid/errors/invalid_index_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_options_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_path_spec.rb +7 -10
- data/spec/mongoid/errors/invalid_relation_spec.rb +15 -16
- data/spec/mongoid/errors/invalid_scope_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -6
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +8 -11
- data/spec/mongoid/errors/invalid_time_spec.rb +8 -11
- data/spec/mongoid/errors/inverse_not_found_spec.rb +9 -12
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +9 -12
- data/spec/mongoid/errors/mixed_relations_spec.rb +8 -11
- data/spec/mongoid/errors/mongoid_error_spec.rb +21 -24
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +6 -9
- data/spec/mongoid/errors/no_client_config_spec.rb +7 -10
- data/spec/mongoid/errors/no_client_database_spec.rb +9 -12
- data/spec/mongoid/errors/no_client_hosts_spec.rb +9 -12
- data/spec/mongoid/errors/no_clients_config_spec.rb +7 -10
- data/spec/mongoid/errors/no_environment_spec.rb +8 -11
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +8 -11
- data/spec/mongoid/errors/no_metadata_spec.rb +7 -10
- data/spec/mongoid/errors/no_parent_spec.rb +7 -10
- data/spec/mongoid/errors/readonly_attribute_spec.rb +7 -10
- data/spec/mongoid/errors/readonly_document_spec.rb +6 -9
- data/spec/mongoid/errors/scope_overwrite_spec.rb +9 -12
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +9 -12
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -8
- data/spec/mongoid/errors/unsaved_document_spec.rb +8 -11
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +9 -12
- data/spec/mongoid/errors/validations_spec.rb +11 -14
- data/spec/mongoid/extensions/array_spec.rb +70 -92
- data/spec/mongoid/extensions/big_decimal_spec.rb +233 -313
- data/spec/mongoid/extensions/binary_spec.rb +21 -32
- data/spec/mongoid/extensions/boolean_spec.rb +52 -75
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +43 -54
- data/spec/mongoid/extensions/date_spec.rb +26 -38
- data/spec/mongoid/extensions/date_time_spec.rb +22 -32
- data/spec/mongoid/extensions/decimal128_spec.rb +12 -18
- data/spec/mongoid/extensions/false_class_spec.rb +10 -17
- data/spec/mongoid/extensions/float_spec.rb +40 -61
- data/spec/mongoid/extensions/hash_spec.rb +46 -64
- data/spec/mongoid/extensions/integer_spec.rb +40 -61
- data/spec/mongoid/extensions/module_spec.rb +13 -18
- data/spec/mongoid/extensions/nil_class_spec.rb +2 -5
- data/spec/mongoid/extensions/object_id_spec.rb +159 -247
- data/spec/mongoid/extensions/object_spec.rb +31 -47
- data/spec/mongoid/extensions/range_spec.rb +112 -115
- data/spec/mongoid/extensions/raw_value_spec.rb +10 -12
- data/spec/mongoid/extensions/regexp_spec.rb +23 -36
- data/spec/mongoid/extensions/set_spec.rb +38 -49
- data/spec/mongoid/extensions/string_spec.rb +118 -167
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +29 -43
- data/spec/mongoid/extensions/symbol_spec.rb +12 -20
- data/spec/mongoid/extensions/time_spec.rb +160 -202
- data/spec/mongoid/extensions/time_with_zone_spec.rb +79 -105
- data/spec/mongoid/extensions/true_class_spec.rb +10 -17
- data/spec/mongoid/factory_spec.rb +125 -148
- data/spec/mongoid/fields/foreign_key_spec.rb +124 -169
- data/spec/mongoid/fields/localized_spec.rb +140 -185
- data/spec/mongoid/fields/standard_spec.rb +43 -59
- data/spec/mongoid/fields_spec.rb +751 -620
- data/spec/mongoid/findable_spec.rb +260 -228
- data/spec/mongoid/indexable/specification_spec.rb +42 -58
- data/spec/mongoid/indexable_spec.rb +260 -264
- data/spec/mongoid/inspectable_spec.rb +45 -55
- data/spec/mongoid/interceptable_spec.rb +784 -922
- data/spec/mongoid/interceptable_spec_models.rb +35 -35
- data/spec/mongoid/loading_spec.rb +47 -43
- data/spec/mongoid/loggable_spec.rb +3 -6
- data/spec/mongoid/matcher/extract_attribute_spec.rb +2 -6
- data/spec/mongoid/mongoizable_spec.rb +81 -90
- data/spec/mongoid/monkey_patches_spec.rb +4 -0
- data/spec/mongoid/persistable/creatable_spec.rb +181 -220
- data/spec/mongoid/persistable/deletable_spec.rb +139 -179
- data/spec/mongoid/persistable/destroyable_spec.rb +135 -164
- data/spec/mongoid/persistable/incrementable_spec.rb +65 -84
- data/spec/mongoid/persistable/logical_spec.rb +48 -61
- data/spec/mongoid/persistable/maxable_spec.rb +45 -44
- data/spec/mongoid/persistable/minable_spec.rb +45 -44
- data/spec/mongoid/persistable/multipliable_spec.rb +54 -69
- data/spec/mongoid/persistable/poppable_spec.rb +47 -60
- data/spec/mongoid/persistable/pullable_spec.rb +79 -103
- data/spec/mongoid/persistable/pushable_spec.rb +106 -131
- data/spec/mongoid/persistable/renamable_spec.rb +52 -65
- data/spec/mongoid/persistable/savable_spec.rb +152 -189
- data/spec/mongoid/persistable/settable_spec.rb +121 -145
- data/spec/mongoid/persistable/unsettable_spec.rb +56 -73
- data/spec/mongoid/persistable/updatable_spec.rb +185 -232
- data/spec/mongoid/persistable/upsertable_spec.rb +66 -77
- data/spec/mongoid/persistable_spec.rb +132 -139
- data/spec/mongoid/persistence_context_spec.rb +31 -89
- data/spec/mongoid/positional_spec.rb +67 -79
- data/spec/mongoid/railties/bson_object_id_serializer_spec.rb +0 -3
- data/spec/mongoid/railties/console_sandbox_spec.rb +0 -1
- data/spec/mongoid/relations/proxy_spec.rb +0 -1
- data/spec/mongoid/reloadable_spec.rb +250 -145
- data/spec/mongoid/scopable_spec.rb +319 -398
- data/spec/mongoid/search_indexable_spec.rb +446 -41
- data/spec/mongoid/selectable_spec.rb +36 -51
- data/spec/mongoid/serializable_spec.rb +269 -312
- data/spec/mongoid/shardable_models.rb +5 -5
- data/spec/mongoid/shardable_spec.rb +44 -46
- data/spec/mongoid/stateful_spec.rb +55 -75
- data/spec/mongoid/tasks/database_rake_spec.rb +138 -141
- data/spec/mongoid/tasks/database_spec.rb +80 -80
- data/spec/mongoid/tasks/encryption_spec.rb +22 -20
- data/spec/mongoid/threaded_spec.rb +57 -83
- data/spec/mongoid/timestamps/created/short_spec.rb +12 -16
- data/spec/mongoid/timestamps/created_spec.rb +16 -20
- data/spec/mongoid/timestamps/timeless_spec.rb +31 -43
- data/spec/mongoid/timestamps/updated/short_spec.rb +21 -28
- data/spec/mongoid/timestamps/updated_spec.rb +18 -25
- data/spec/mongoid/timestamps_spec.rb +171 -188
- data/spec/mongoid/timestamps_spec_models.rb +12 -13
- data/spec/mongoid/touchable_spec.rb +330 -294
- data/spec/mongoid/touchable_spec_models.rb +35 -37
- data/spec/mongoid/traversable_spec.rb +435 -471
- data/spec/mongoid/validatable/associated_spec.rb +42 -60
- data/spec/mongoid/validatable/format_spec.rb +24 -34
- data/spec/mongoid/validatable/length_spec.rb +62 -86
- data/spec/mongoid/validatable/numericality_spec.rb +114 -23
- data/spec/mongoid/validatable/presence_spec.rb +149 -203
- data/spec/mongoid/validatable/uniqueness_spec.rb +632 -830
- data/spec/mongoid/validatable_spec.rb +71 -103
- data/spec/mongoid/warnings_spec.rb +5 -9
- data/spec/mongoid_spec.rb +25 -41
- data/spec/rails/controller_extension/controller_runtime_spec.rb +45 -49
- data/spec/rails/mongoid_spec.rb +15 -15
- data/spec/shared/lib/mrss/cluster_config.rb +5 -40
- data/spec/shared/lib/mrss/constraints.rb +7 -46
- data/spec/shared/lib/mrss/docker_runner.rb +10 -21
- data/spec/shared/lib/mrss/eg_config_utils.rb +0 -31
- data/spec/shared/lib/mrss/release/candidate.rb +18 -12
- data/spec/shared/lib/mrss/server_version_registry.rb +1 -5
- data/spec/shared/share/Dockerfile.erb +6 -8
- data/spec/shared/shlib/server.sh +0 -50
- data/spec/shared/shlib/set_env.sh +4 -10
- data/spec/spec_helper.rb +54 -31
- data/spec/support/authorization.rb +0 -1
- data/spec/support/client_registry.rb +1 -2
- data/spec/support/constraints.rb +8 -25
- data/spec/support/crypt/models.rb +7 -8
- data/spec/support/crypt.rb +6 -9
- data/spec/support/expectations.rb +21 -7
- data/spec/support/feature_sandbox.rb +1 -4
- data/spec/support/helpers.rb +0 -1
- data/spec/support/immutable_ids.rb +20 -21
- data/spec/support/macros.rb +1 -3
- data/spec/support/models/account.rb +4 -5
- data/spec/support/models/acolyte.rb +5 -5
- data/spec/support/models/actor.rb +3 -3
- data/spec/support/models/actress.rb +0 -1
- data/spec/support/models/address.rb +11 -11
- data/spec/support/models/address_component.rb +1 -1
- data/spec/support/models/address_number.rb +1 -1
- data/spec/support/models/agency.rb +1 -1
- data/spec/support/models/agent.rb +1 -1
- data/spec/support/models/album.rb +1 -2
- data/spec/support/models/alert.rb +1 -1
- data/spec/support/models/animal.rb +4 -5
- data/spec/support/models/answer.rb +1 -1
- data/spec/support/models/appointment.rb +2 -2
- data/spec/support/models/armrest.rb +0 -1
- data/spec/support/models/array_field.rb +0 -1
- data/spec/support/models/article.rb +0 -1
- data/spec/support/models/artist.rb +16 -12
- data/spec/support/models/artwork.rb +1 -1
- data/spec/support/models/audible_sound.rb +0 -1
- data/spec/support/models/audio.rb +2 -2
- data/spec/support/models/augmentation.rb +1 -2
- data/spec/support/models/author.rb +1 -1
- data/spec/support/models/baby.rb +1 -1
- data/spec/support/models/band.rb +0 -1
- data/spec/support/models/bar.rb +2 -2
- data/spec/support/models/basic.rb +0 -1
- data/spec/support/models/bed.rb +0 -1
- data/spec/support/models/big_palette.rb +0 -1
- data/spec/support/models/birthday.rb +3 -5
- data/spec/support/models/bolt.rb +0 -1
- data/spec/support/models/bomb.rb +1 -1
- data/spec/support/models/book.rb +1 -1
- data/spec/support/models/breed.rb +1 -1
- data/spec/support/models/browser.rb +1 -2
- data/spec/support/models/building.rb +0 -1
- data/spec/support/models/building_address.rb +1 -1
- data/spec/support/models/bus.rb +1 -1
- data/spec/support/models/business.rb +2 -2
- data/spec/support/models/callback_test.rb +1 -1
- data/spec/support/models/canvas.rb +5 -6
- data/spec/support/models/car.rb +0 -1
- data/spec/support/models/cat.rb +0 -2
- data/spec/support/models/catalog.rb +0 -1
- data/spec/support/models/category.rb +1 -1
- data/spec/support/models/child.rb +1 -1
- data/spec/support/models/child_doc.rb +5 -6
- data/spec/support/models/church.rb +1 -1
- data/spec/support/models/circle.rb +0 -1
- data/spec/support/models/circuit.rb +2 -2
- data/spec/support/models/circus.rb +0 -1
- data/spec/support/models/code.rb +2 -1
- data/spec/support/models/coding/pull_request.rb +0 -1
- data/spec/support/models/coding.rb +0 -1
- data/spec/support/models/comment.rb +0 -1
- data/spec/support/models/company.rb +0 -1
- data/spec/support/models/consumption_period.rb +0 -1
- data/spec/support/models/contextable_item.rb +1 -1
- data/spec/support/models/contractor.rb +1 -1
- data/spec/support/models/cookie.rb +0 -1
- data/spec/support/models/country_code.rb +2 -3
- data/spec/support/models/courier_job.rb +2 -2
- data/spec/support/models/cover.rb +0 -1
- data/spec/support/models/crate.rb +0 -1
- data/spec/support/models/customer.rb +0 -1
- data/spec/support/models/customer_address.rb +0 -1
- data/spec/support/models/deed.rb +1 -1
- data/spec/support/models/definition.rb +1 -1
- data/spec/support/models/delegating_patient.rb +0 -1
- data/spec/support/models/description.rb +0 -1
- data/spec/support/models/dictionary.rb +1 -1
- data/spec/support/models/division.rb +2 -2
- data/spec/support/models/doctor.rb +0 -1
- data/spec/support/models/dog.rb +2 -2
- data/spec/support/models/dokument.rb +1 -1
- data/spec/support/models/draft.rb +0 -1
- data/spec/support/models/dragon.rb +1 -1
- data/spec/support/models/driver.rb +2 -2
- data/spec/support/models/drug.rb +1 -1
- data/spec/support/models/dungeon.rb +1 -1
- data/spec/support/models/edit.rb +1 -1
- data/spec/support/models/email.rb +1 -1
- data/spec/support/models/employer.rb +1 -2
- data/spec/support/models/entry.rb +1 -1
- data/spec/support/models/eraser.rb +0 -1
- data/spec/support/models/even.rb +1 -1
- data/spec/support/models/event.rb +3 -4
- data/spec/support/models/exhibition.rb +1 -1
- data/spec/support/models/exhibitor.rb +1 -1
- data/spec/support/models/explosion.rb +1 -1
- data/spec/support/models/eye.rb +0 -1
- data/spec/support/models/eye_bowl.rb +2 -3
- data/spec/support/models/face.rb +2 -3
- data/spec/support/models/fanatic.rb +1 -1
- data/spec/support/models/favorite.rb +1 -1
- data/spec/support/models/filesystem.rb +1 -1
- data/spec/support/models/fire_hydrant.rb +1 -1
- data/spec/support/models/firefox.rb +0 -1
- data/spec/support/models/fish.rb +0 -1
- data/spec/support/models/folder.rb +0 -2
- data/spec/support/models/folder_item.rb +1 -3
- data/spec/support/models/fruits.rb +9 -5
- data/spec/support/models/game.rb +3 -4
- data/spec/support/models/ghost.rb +0 -1
- data/spec/support/models/guitar.rb +0 -1
- data/spec/support/models/hole.rb +0 -1
- data/spec/support/models/home.rb +1 -1
- data/spec/support/models/house.rb +2 -2
- data/spec/support/models/html_writer.rb +0 -1
- data/spec/support/models/id_key.rb +3 -3
- data/spec/support/models/idnodef.rb +0 -1
- data/spec/support/models/image.rb +0 -1
- data/spec/support/models/implant.rb +1 -2
- data/spec/support/models/instrument.rb +2 -3
- data/spec/support/models/item.rb +2 -2
- data/spec/support/models/jar.rb +1 -2
- data/spec/support/models/kaleidoscope.rb +1 -1
- data/spec/support/models/kangaroo.rb +1 -1
- data/spec/support/models/label.rb +2 -2
- data/spec/support/models/language.rb +1 -1
- data/spec/support/models/lat_lng.rb +0 -1
- data/spec/support/models/league.rb +1 -1
- data/spec/support/models/learner.rb +0 -1
- data/spec/support/models/line_item.rb +1 -1
- data/spec/support/models/location.rb +1 -1
- data/spec/support/models/login.rb +1 -2
- data/spec/support/models/manufacturer.rb +0 -1
- data/spec/support/models/meat.rb +1 -1
- data/spec/support/models/membership.rb +1 -1
- data/spec/support/models/message.rb +1 -2
- data/spec/support/models/minim.rb +0 -1
- data/spec/support/models/mixed_drink.rb +1 -1
- data/spec/support/models/modifier_models.rb +25 -0
- data/spec/support/models/mop.rb +0 -1
- data/spec/support/models/movie.rb +1 -1
- data/spec/support/models/my_hash.rb +1 -2
- data/spec/support/models/name.rb +4 -5
- data/spec/support/models/name_only.rb +0 -1
- data/spec/support/models/node.rb +1 -1
- data/spec/support/models/note.rb +3 -3
- data/spec/support/models/nut.rb +0 -1
- data/spec/support/models/odd.rb +1 -1
- data/spec/support/models/order.rb +1 -1
- data/spec/support/models/ordered_post.rb +1 -1
- data/spec/support/models/ordered_preference.rb +1 -1
- data/spec/support/models/oscar.rb +1 -1
- data/spec/support/models/other_owner_object.rb +0 -1
- data/spec/support/models/override.rb +3 -11
- data/spec/support/models/ownable.rb +1 -1
- data/spec/support/models/owner.rb +1 -1
- data/spec/support/models/pack.rb +0 -1
- data/spec/support/models/page.rb +3 -3
- data/spec/support/models/page_question.rb +1 -1
- data/spec/support/models/palette.rb +2 -2
- data/spec/support/models/parent.rb +2 -2
- data/spec/support/models/parent_doc.rb +1 -1
- data/spec/support/models/passport.rb +0 -1
- data/spec/support/models/patient.rb +2 -2
- data/spec/support/models/pdf_writer.rb +0 -1
- data/spec/support/models/pencil.rb +0 -1
- data/spec/support/models/person.rb +32 -28
- data/spec/support/models/pet.rb +1 -1
- data/spec/support/models/pet_owner.rb +1 -1
- data/spec/support/models/phone.rb +1 -2
- data/spec/support/models/piano.rb +0 -1
- data/spec/support/models/pizza.rb +1 -1
- data/spec/support/models/player.rb +5 -5
- data/spec/support/models/post.rb +12 -12
- data/spec/support/models/post_genre.rb +1 -1
- data/spec/support/models/powerup.rb +1 -2
- data/spec/support/models/preference.rb +2 -2
- data/spec/support/models/princess.rb +1 -1
- data/spec/support/models/product.rb +3 -3
- data/spec/support/models/profile.rb +2 -1
- data/spec/support/models/pronunciation.rb +1 -1
- data/spec/support/models/pub.rb +2 -2
- data/spec/support/models/publication/encyclopedia.rb +0 -1
- data/spec/support/models/publication/review.rb +0 -1
- data/spec/support/models/publication.rb +0 -1
- data/spec/support/models/purchase.rb +1 -1
- data/spec/support/models/purchased_item.rb +1 -1
- data/spec/support/models/question.rb +2 -2
- data/spec/support/models/quiz.rb +1 -1
- data/spec/support/models/rating.rb +1 -1
- data/spec/support/models/record.rb +2 -3
- data/spec/support/models/registry.rb +1 -1
- data/spec/support/models/role.rb +1 -1
- data/spec/support/models/root_category.rb +1 -1
- data/spec/support/models/sandbox/app/models/app_models_message.rb +0 -1
- data/spec/support/models/sandbox/lib/models/lib_models_message.rb +0 -1
- data/spec/support/models/sandbox/sandbox_message.rb +0 -1
- data/spec/support/models/sandbox/sandbox_user.rb +0 -1
- data/spec/support/models/sandbox/subdir/sandbox_comment.rb +0 -1
- data/spec/support/models/sandwich.rb +1 -1
- data/spec/support/models/scheduler.rb +0 -1
- data/spec/support/models/school.rb +0 -1
- data/spec/support/models/scribe.rb +1 -1
- data/spec/support/models/sealer.rb +0 -1
- data/spec/support/models/seat.rb +0 -1
- data/spec/support/models/seo.rb +1 -1
- data/spec/support/models/series.rb +1 -1
- data/spec/support/models/server.rb +1 -1
- data/spec/support/models/service.rb +2 -2
- data/spec/support/models/shape.rb +3 -3
- data/spec/support/models/shelf.rb +1 -1
- data/spec/support/models/shield.rb +2 -2
- data/spec/support/models/shipment_address.rb +0 -1
- data/spec/support/models/shipping_container.rb +1 -1
- data/spec/support/models/shipping_pack.rb +0 -1
- data/spec/support/models/shirt.rb +0 -1
- data/spec/support/models/shop.rb +2 -2
- data/spec/support/models/short_agent.rb +0 -1
- data/spec/support/models/short_quiz.rb +1 -1
- data/spec/support/models/simple.rb +1 -1
- data/spec/support/models/slave.rb +1 -1
- data/spec/support/models/song.rb +1 -2
- data/spec/support/models/sound.rb +2 -2
- data/spec/support/models/spacer.rb +0 -1
- data/spec/support/models/square.rb +0 -1
- data/spec/support/models/staff.rb +0 -1
- data/spec/support/models/store_as_dup_test1.rb +2 -2
- data/spec/support/models/store_as_dup_test2.rb +1 -1
- data/spec/support/models/store_as_dup_test3.rb +2 -2
- data/spec/support/models/store_as_dup_test4.rb +1 -1
- data/spec/support/models/strategy.rb +0 -1
- data/spec/support/models/student.rb +1 -2
- data/spec/support/models/sub_item.rb +0 -1
- data/spec/support/models/subscription.rb +2 -2
- data/spec/support/models/survey.rb +2 -2
- data/spec/support/models/symptom.rb +2 -2
- data/spec/support/models/system_role.rb +2 -3
- data/spec/support/models/tag.rb +2 -2
- data/spec/support/models/target.rb +1 -1
- data/spec/support/models/template.rb +1 -1
- data/spec/support/models/thing.rb +1 -1
- data/spec/support/models/threadlocker.rb +0 -1
- data/spec/support/models/title.rb +0 -1
- data/spec/support/models/tool.rb +3 -3
- data/spec/support/models/topping.rb +1 -1
- data/spec/support/models/toy.rb +0 -1
- data/spec/support/models/track.rb +1 -1
- data/spec/support/models/translation.rb +1 -1
- data/spec/support/models/tree.rb +2 -3
- data/spec/support/models/truck.rb +0 -1
- data/spec/support/models/updatable.rb +0 -1
- data/spec/support/models/user.rb +3 -4
- data/spec/support/models/user_account.rb +3 -3
- data/spec/support/models/validation_callback.rb +4 -4
- data/spec/support/models/vehicle.rb +2 -3
- data/spec/support/models/version.rb +1 -1
- data/spec/support/models/vertex.rb +0 -1
- data/spec/support/models/vet_visit.rb +1 -1
- data/spec/support/models/video.rb +2 -2
- data/spec/support/models/video_game.rb +0 -1
- data/spec/support/models/washer.rb +0 -1
- data/spec/support/models/weapon.rb +1 -2
- data/spec/support/models/wiki_page.rb +2 -3
- data/spec/support/models/word.rb +2 -2
- data/spec/support/models/word_origin.rb +1 -2
- data/spec/support/models/writer.rb +3 -3
- data/spec/support/rails_mock.rb +7 -12
- data/spec/support/shared/time.rb +0 -1
- data/spec/support/sinatra_mock.rb +4 -2
- data/spec/support/spec_config.rb +19 -18
- metadata +14 -2
|
@@ -1,11 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
|
-
require
|
|
5
|
-
require_relative '
|
|
3
|
+
require 'spec_helper'
|
|
4
|
+
require_relative 'embeds_one_models'
|
|
6
5
|
|
|
7
6
|
describe Mongoid::Association::Embedded::EmbedsOne do
|
|
8
|
-
|
|
9
7
|
before do
|
|
10
8
|
class Container; include Mongoid::Document; end
|
|
11
9
|
class EmbeddedObject; include Mongoid::Document; end
|
|
@@ -29,14 +27,13 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
29
27
|
end
|
|
30
28
|
|
|
31
29
|
let(:options) do
|
|
32
|
-
{
|
|
30
|
+
{}
|
|
33
31
|
end
|
|
34
32
|
|
|
35
33
|
describe '#relation_complements' do
|
|
36
|
-
|
|
37
34
|
let(:expected_complements) do
|
|
38
35
|
[
|
|
39
|
-
Mongoid::Association::Embedded::EmbeddedIn
|
|
36
|
+
Mongoid::Association::Embedded::EmbeddedIn
|
|
40
37
|
]
|
|
41
38
|
end
|
|
42
39
|
|
|
@@ -46,7 +43,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
46
43
|
end
|
|
47
44
|
|
|
48
45
|
describe '#setup!' do
|
|
49
|
-
|
|
50
46
|
it 'sets up a getter for the relation' do
|
|
51
47
|
expect(Mongoid::Association::Accessors).to receive(:define_getter!).with(association)
|
|
52
48
|
association.setup!
|
|
@@ -73,10 +69,9 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
73
69
|
end
|
|
74
70
|
|
|
75
71
|
context 'when the :validate option is true' do
|
|
76
|
-
|
|
77
72
|
let(:options) do
|
|
78
73
|
{
|
|
79
|
-
|
|
74
|
+
validate: true
|
|
80
75
|
}
|
|
81
76
|
end
|
|
82
77
|
|
|
@@ -93,10 +88,9 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
93
88
|
end
|
|
94
89
|
|
|
95
90
|
context 'when the :validate option is false' do
|
|
96
|
-
|
|
97
91
|
let(:options) do
|
|
98
92
|
{
|
|
99
|
-
|
|
93
|
+
validate: false
|
|
100
94
|
}
|
|
101
95
|
end
|
|
102
96
|
|
|
@@ -107,7 +101,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
107
101
|
end
|
|
108
102
|
|
|
109
103
|
context 'when the :validate option is not provided' do
|
|
110
|
-
|
|
111
104
|
let(:association) do
|
|
112
105
|
# Note that it is necessary to create the association directly, otherwise the
|
|
113
106
|
# setup! method will be called by the :embeds_one macro
|
|
@@ -122,9 +115,7 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
122
115
|
end
|
|
123
116
|
|
|
124
117
|
describe '#type' do
|
|
125
|
-
|
|
126
118
|
context 'when polymorphic' do
|
|
127
|
-
|
|
128
119
|
let(:options) do
|
|
129
120
|
{ as: :containable }
|
|
130
121
|
end
|
|
@@ -135,7 +126,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
135
126
|
end
|
|
136
127
|
|
|
137
128
|
context 'when not polymorphic' do
|
|
138
|
-
|
|
139
129
|
it 'returns nil' do
|
|
140
130
|
expect(association.type).to be_nil
|
|
141
131
|
end
|
|
@@ -143,9 +133,7 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
143
133
|
end
|
|
144
134
|
|
|
145
135
|
describe '#inverse_type' do
|
|
146
|
-
|
|
147
136
|
context 'when polymorphic' do
|
|
148
|
-
|
|
149
137
|
let(:options) do
|
|
150
138
|
{ as: :containable }
|
|
151
139
|
end
|
|
@@ -156,7 +144,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
156
144
|
end
|
|
157
145
|
|
|
158
146
|
context 'when not polymorphic' do
|
|
159
|
-
|
|
160
147
|
it 'returns nil' do
|
|
161
148
|
expect(association.inverse_type).to be_nil
|
|
162
149
|
end
|
|
@@ -164,9 +151,7 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
164
151
|
end
|
|
165
152
|
|
|
166
153
|
describe '#inverse_type_setter' do
|
|
167
|
-
|
|
168
154
|
context 'when polymorphic' do
|
|
169
|
-
|
|
170
155
|
let(:options) do
|
|
171
156
|
{ as: :containable }
|
|
172
157
|
end
|
|
@@ -177,7 +162,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
177
162
|
end
|
|
178
163
|
|
|
179
164
|
context 'when not polymorphic' do
|
|
180
|
-
|
|
181
165
|
it 'returns nil' do
|
|
182
166
|
expect(association.inverse_type).to be_nil
|
|
183
167
|
end
|
|
@@ -185,58 +169,49 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
185
169
|
end
|
|
186
170
|
|
|
187
171
|
describe '#embedded?' do
|
|
188
|
-
|
|
189
172
|
it 'returns true' do
|
|
190
173
|
expect(association.embedded?).to be(true)
|
|
191
174
|
end
|
|
192
175
|
end
|
|
193
176
|
|
|
194
177
|
describe '#primary_key' do
|
|
195
|
-
|
|
196
178
|
it 'returns nil' do
|
|
197
179
|
expect(association.primary_key).to be_nil
|
|
198
180
|
end
|
|
199
181
|
end
|
|
200
182
|
|
|
201
183
|
describe '#indexed?' do
|
|
202
|
-
|
|
203
184
|
it 'returns false' do
|
|
204
185
|
expect(association.indexed?).to be(false)
|
|
205
186
|
end
|
|
206
187
|
end
|
|
207
188
|
|
|
208
189
|
describe '#relation' do
|
|
209
|
-
|
|
210
190
|
it 'returns Mongoid::Association::Embedded::EmbedsOne::Proxy' do
|
|
211
191
|
expect(association.relation).to be(Mongoid::Association::Embedded::EmbedsOne::Proxy)
|
|
212
192
|
end
|
|
213
193
|
end
|
|
214
194
|
|
|
215
195
|
describe '#validation_default' do
|
|
216
|
-
|
|
217
196
|
it 'returns true' do
|
|
218
197
|
expect(association.validation_default).to be(true)
|
|
219
198
|
end
|
|
220
199
|
end
|
|
221
200
|
|
|
222
201
|
describe '#name' do
|
|
223
|
-
|
|
224
202
|
it 'returns the name of the relation' do
|
|
225
203
|
expect(association.name).to be(name)
|
|
226
204
|
end
|
|
227
205
|
end
|
|
228
206
|
|
|
229
207
|
describe '#options' do
|
|
230
|
-
|
|
231
208
|
it 'returns the options' do
|
|
232
209
|
expect(association.options).to be(options)
|
|
233
210
|
end
|
|
234
211
|
end
|
|
235
212
|
|
|
236
213
|
describe '#cyclic?' do
|
|
237
|
-
|
|
238
214
|
context 'when :cyclic is specified in the options' do
|
|
239
|
-
|
|
240
215
|
let(:options) do
|
|
241
216
|
{ cyclic: true }
|
|
242
217
|
end
|
|
@@ -247,7 +222,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
247
222
|
end
|
|
248
223
|
|
|
249
224
|
context 'when :cyclic is not specified in the options' do
|
|
250
|
-
|
|
251
225
|
it 'returns false' do
|
|
252
226
|
expect(association.cyclic?).to be(false)
|
|
253
227
|
end
|
|
@@ -255,13 +229,10 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
255
229
|
end
|
|
256
230
|
|
|
257
231
|
describe '#merge!' do
|
|
258
|
-
|
|
259
232
|
end
|
|
260
233
|
|
|
261
234
|
describe '#store_as' do
|
|
262
|
-
|
|
263
235
|
context 'when :store_as is specified in the options' do
|
|
264
|
-
|
|
265
236
|
let(:options) do
|
|
266
237
|
{
|
|
267
238
|
store_as: :baby_kangaroo
|
|
@@ -274,7 +245,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
274
245
|
end
|
|
275
246
|
|
|
276
247
|
context 'when :store_as is not specified in the options' do
|
|
277
|
-
|
|
278
248
|
it 'returns name as a String' do
|
|
279
249
|
expect(association.store_as).to eq(name.to_s)
|
|
280
250
|
end
|
|
@@ -282,23 +252,19 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
282
252
|
end
|
|
283
253
|
|
|
284
254
|
describe '#touchable?' do
|
|
285
|
-
|
|
286
255
|
it 'return false' do
|
|
287
256
|
expect(association.send(:touchable?)).to be(false)
|
|
288
257
|
end
|
|
289
258
|
end
|
|
290
259
|
|
|
291
260
|
describe '#order' do
|
|
292
|
-
|
|
293
261
|
it 'returns nil' do
|
|
294
262
|
expect(association.order).to be_nil
|
|
295
263
|
end
|
|
296
264
|
end
|
|
297
265
|
|
|
298
266
|
describe '#as' do
|
|
299
|
-
|
|
300
267
|
context 'when :as is specified in the options' do
|
|
301
|
-
|
|
302
268
|
let(:options) do
|
|
303
269
|
{
|
|
304
270
|
as: :containable
|
|
@@ -311,7 +277,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
311
277
|
end
|
|
312
278
|
|
|
313
279
|
context 'when :as is not specified in the options' do
|
|
314
|
-
|
|
315
280
|
it 'returns nil' do
|
|
316
281
|
expect(association.as).to be_nil
|
|
317
282
|
end
|
|
@@ -319,9 +284,7 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
319
284
|
end
|
|
320
285
|
|
|
321
286
|
describe '#polymorphic?' do
|
|
322
|
-
|
|
323
287
|
context 'when :as is specified in the options' do
|
|
324
|
-
|
|
325
288
|
let(:options) do
|
|
326
289
|
{
|
|
327
290
|
as: :containable
|
|
@@ -331,11 +294,9 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
331
294
|
it 'returns true' do
|
|
332
295
|
expect(association.polymorphic?).to be(true)
|
|
333
296
|
end
|
|
334
|
-
|
|
335
297
|
end
|
|
336
298
|
|
|
337
299
|
context 'when :as is not specified in the options' do
|
|
338
|
-
|
|
339
300
|
it 'returns false' do
|
|
340
301
|
expect(association.polymorphic?).to be(false)
|
|
341
302
|
end
|
|
@@ -343,20 +304,17 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
343
304
|
end
|
|
344
305
|
|
|
345
306
|
describe '#type_setter' do
|
|
346
|
-
|
|
347
307
|
context 'when polymorphic' do
|
|
348
|
-
|
|
349
308
|
let(:options) do
|
|
350
309
|
{ as: :containable }
|
|
351
310
|
end
|
|
352
311
|
|
|
353
312
|
it 'returns the type followed by = as a String' do
|
|
354
|
-
expect(association.type_setter).to eq(
|
|
313
|
+
expect(association.type_setter).to eq('containable_type=')
|
|
355
314
|
end
|
|
356
315
|
end
|
|
357
316
|
|
|
358
317
|
context 'when not polymorphic' do
|
|
359
|
-
|
|
360
318
|
it 'returns nil' do
|
|
361
319
|
expect(association.type).to be_nil
|
|
362
320
|
end
|
|
@@ -364,30 +322,25 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
364
322
|
end
|
|
365
323
|
|
|
366
324
|
describe '#dependent' do
|
|
367
|
-
|
|
368
325
|
it 'returns nil' do
|
|
369
326
|
expect(association.dependent).to be_nil
|
|
370
327
|
end
|
|
371
328
|
end
|
|
372
329
|
|
|
373
330
|
describe '#inverse_type' do
|
|
374
|
-
|
|
375
331
|
it 'returns nil' do
|
|
376
332
|
expect(association.inverse_type).to be_nil
|
|
377
333
|
end
|
|
378
334
|
end
|
|
379
335
|
|
|
380
336
|
describe '#bindable?' do
|
|
381
|
-
|
|
382
337
|
it 'returns false' do
|
|
383
338
|
expect(association.bindable?(Person.new)).to be(false)
|
|
384
339
|
end
|
|
385
340
|
end
|
|
386
341
|
|
|
387
342
|
describe '#inverses' do
|
|
388
|
-
|
|
389
343
|
context 'when polymorphic' do
|
|
390
|
-
|
|
391
344
|
before do
|
|
392
345
|
EmbeddedObject.embedded_in :containable, polymorphic: true
|
|
393
346
|
end
|
|
@@ -399,20 +352,17 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
399
352
|
end
|
|
400
353
|
|
|
401
354
|
context 'when another object is passed to the method' do
|
|
402
|
-
|
|
403
355
|
let(:instance_of_other_class) do
|
|
404
356
|
EmbeddedObject.new
|
|
405
357
|
end
|
|
406
358
|
|
|
407
359
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
408
|
-
|
|
409
360
|
it 'returns the :as attribute of this association' do
|
|
410
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
361
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
|
|
411
362
|
end
|
|
412
363
|
end
|
|
413
364
|
|
|
414
365
|
context 'when :inverse_of is specified' do
|
|
415
|
-
|
|
416
366
|
before do
|
|
417
367
|
options.merge!(inverse_of: :inverse_name)
|
|
418
368
|
end
|
|
@@ -423,17 +373,14 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
423
373
|
end
|
|
424
374
|
|
|
425
375
|
context 'when inverse_of is not specified' do
|
|
426
|
-
|
|
427
376
|
it 'returns the :as attribute of this association' do
|
|
428
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
377
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
|
|
429
378
|
end
|
|
430
379
|
end
|
|
431
380
|
end
|
|
432
381
|
|
|
433
382
|
context 'when another object is not passed to the method' do
|
|
434
|
-
|
|
435
383
|
context 'when inverse_of is specified' do
|
|
436
|
-
|
|
437
384
|
before do
|
|
438
385
|
options.merge!(inverse_of: :inverse_name)
|
|
439
386
|
end
|
|
@@ -444,20 +391,18 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
444
391
|
end
|
|
445
392
|
|
|
446
393
|
context 'when inverse_of is not specified' do
|
|
447
|
-
|
|
448
394
|
it 'returns the :as attribute' do
|
|
449
395
|
expect(association.inverses).to eq([ :containable ])
|
|
450
396
|
end
|
|
451
397
|
|
|
452
398
|
context 'when class_name is given and is a :: prefixed string' do
|
|
453
|
-
|
|
454
399
|
let(:association) do
|
|
455
400
|
EomCcParent.relations['child']
|
|
456
401
|
end
|
|
457
402
|
|
|
458
403
|
it 'returns the inverse in an array' do
|
|
459
404
|
inverses = association.inverses
|
|
460
|
-
expect(inverses).to eq([:parent])
|
|
405
|
+
expect(inverses).to eq([ :parent ])
|
|
461
406
|
end
|
|
462
407
|
|
|
463
408
|
context 'when other associations referencing unloaded classes exist' do
|
|
@@ -467,7 +412,7 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
467
412
|
|
|
468
413
|
it 'does not load other classes' do
|
|
469
414
|
inverses = association.inverses
|
|
470
|
-
expect(inverses).to eq([:parent])
|
|
415
|
+
expect(inverses).to eq([ :parent ])
|
|
471
416
|
expect(Object.const_defined?(:EoDnlMarker)).to be false
|
|
472
417
|
end
|
|
473
418
|
end
|
|
@@ -477,13 +422,11 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
477
422
|
end
|
|
478
423
|
|
|
479
424
|
context 'when not polymorphic' do
|
|
480
|
-
|
|
481
425
|
before do
|
|
482
426
|
EmbeddedObject.embedded_in :container
|
|
483
427
|
end
|
|
484
428
|
|
|
485
429
|
context 'when inverse_of is specified' do
|
|
486
|
-
|
|
487
430
|
before do
|
|
488
431
|
options.merge!(inverse_of: :inverse_name)
|
|
489
432
|
end
|
|
@@ -494,50 +437,42 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
494
437
|
end
|
|
495
438
|
|
|
496
439
|
context 'when inverse_of is not specified' do
|
|
497
|
-
|
|
498
440
|
it 'uses the inverse class to find the inverse name' do
|
|
499
441
|
expect(association.inverses).to eq([ :container ])
|
|
500
442
|
end
|
|
501
443
|
end
|
|
502
444
|
|
|
503
445
|
context 'when :cyclic is specified' do
|
|
504
|
-
|
|
505
446
|
it 'returns the cyclic inverse name' do
|
|
506
|
-
|
|
507
447
|
end
|
|
508
448
|
end
|
|
509
449
|
end
|
|
510
450
|
end
|
|
511
451
|
|
|
512
452
|
describe '##inverse' do
|
|
513
|
-
|
|
514
453
|
context 'when polymorphic' do
|
|
515
|
-
|
|
516
454
|
before do
|
|
517
455
|
EmbeddedObject.embedded_in :containable, polymorphic: true
|
|
518
456
|
end
|
|
519
457
|
|
|
520
458
|
let(:options) do
|
|
521
459
|
{
|
|
522
|
-
|
|
460
|
+
as: :containable
|
|
523
461
|
}
|
|
524
462
|
end
|
|
525
463
|
|
|
526
464
|
context 'when another object is passed to the method' do
|
|
527
|
-
|
|
528
465
|
let(:instance_of_other_class) do
|
|
529
466
|
EmbeddedObject.new
|
|
530
467
|
end
|
|
531
468
|
|
|
532
469
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
533
|
-
|
|
534
470
|
it 'returns the :as attribute of this association' do
|
|
535
471
|
expect(association.inverse(instance_of_other_class)).to eq(:containable)
|
|
536
472
|
end
|
|
537
473
|
end
|
|
538
474
|
|
|
539
475
|
context 'when :inverse_of is specified' do
|
|
540
|
-
|
|
541
476
|
before do
|
|
542
477
|
options.merge!(inverse_of: :inverse_name)
|
|
543
478
|
end
|
|
@@ -548,7 +483,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
548
483
|
end
|
|
549
484
|
|
|
550
485
|
context 'when inverse_of is not specified' do
|
|
551
|
-
|
|
552
486
|
it 'returns the :as attribute of this association' do
|
|
553
487
|
expect(association.inverse(instance_of_other_class)).to eq(:containable)
|
|
554
488
|
end
|
|
@@ -556,9 +490,7 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
556
490
|
end
|
|
557
491
|
|
|
558
492
|
context 'when another object is not passed to the method' do
|
|
559
|
-
|
|
560
493
|
context 'when inverse_of is specified' do
|
|
561
|
-
|
|
562
494
|
before do
|
|
563
495
|
options.merge!(inverse_of: :inverse_name)
|
|
564
496
|
end
|
|
@@ -569,7 +501,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
569
501
|
end
|
|
570
502
|
|
|
571
503
|
context 'when inverse_of is not specified' do
|
|
572
|
-
|
|
573
504
|
it 'returns the :as attribute' do
|
|
574
505
|
expect(association.inverse).to eq(:containable)
|
|
575
506
|
end
|
|
@@ -578,13 +509,11 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
578
509
|
end
|
|
579
510
|
|
|
580
511
|
context 'when not polymorphic' do
|
|
581
|
-
|
|
582
512
|
before do
|
|
583
513
|
EmbeddedObject.embedded_in :container
|
|
584
514
|
end
|
|
585
515
|
|
|
586
516
|
context 'when inverse_of is specified' do
|
|
587
|
-
|
|
588
517
|
before do
|
|
589
518
|
options.merge!(inverse_of: :inverse_name)
|
|
590
519
|
end
|
|
@@ -595,36 +524,29 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
595
524
|
end
|
|
596
525
|
|
|
597
526
|
context 'when inverse_of is not specified' do
|
|
598
|
-
|
|
599
527
|
it 'uses the inverse class to find the inverse name' do
|
|
600
528
|
expect(association.inverse).to eq(:container)
|
|
601
529
|
end
|
|
602
530
|
end
|
|
603
531
|
|
|
604
532
|
context 'when :cyclic is specified' do
|
|
605
|
-
|
|
606
533
|
it 'returns the cyclic inverse name' do
|
|
607
|
-
|
|
608
534
|
end
|
|
609
535
|
end
|
|
610
536
|
end
|
|
611
537
|
end
|
|
612
538
|
|
|
613
539
|
describe '#inverse_association' do
|
|
614
|
-
|
|
615
540
|
end
|
|
616
541
|
|
|
617
542
|
describe '#autosave' do
|
|
618
|
-
|
|
619
543
|
it 'returns false' do
|
|
620
544
|
expect(association.autosave).to be(false)
|
|
621
545
|
end
|
|
622
546
|
end
|
|
623
547
|
|
|
624
548
|
describe '#relation_class_name' do
|
|
625
|
-
|
|
626
549
|
context 'when the :class_name option is specified' do
|
|
627
|
-
|
|
628
550
|
let(:options) do
|
|
629
551
|
{ class_name: 'OtherEmbeddedObject' }
|
|
630
552
|
end
|
|
@@ -645,7 +567,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
645
567
|
end
|
|
646
568
|
|
|
647
569
|
context 'when the class_name option is not specified' do
|
|
648
|
-
|
|
649
570
|
it 'uses the name of the relation to deduce the class name' do
|
|
650
571
|
expect(association.relation_class_name).to eq('EmbeddedObject')
|
|
651
572
|
end
|
|
@@ -664,9 +585,7 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
664
585
|
end
|
|
665
586
|
|
|
666
587
|
describe '#klass' do
|
|
667
|
-
|
|
668
588
|
context 'when the :class_name option is specified' do
|
|
669
|
-
|
|
670
589
|
let!(:_class) do
|
|
671
590
|
class OtherEmbeddedObject; end
|
|
672
591
|
OtherEmbeddedObject
|
|
@@ -682,7 +601,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
682
601
|
end
|
|
683
602
|
|
|
684
603
|
context 'when the class_name option is not specified' do
|
|
685
|
-
|
|
686
604
|
it 'uses the name of the relation to deduce the class name' do
|
|
687
605
|
expect(association.klass).to eq(EmbeddedObject)
|
|
688
606
|
end
|
|
@@ -690,23 +608,19 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
690
608
|
end
|
|
691
609
|
|
|
692
610
|
describe '#inverse_class_name' do
|
|
693
|
-
|
|
694
611
|
it 'returns the name of the owner class' do
|
|
695
612
|
expect(association.inverse_class_name).to eq(Container.name)
|
|
696
613
|
end
|
|
697
614
|
end
|
|
698
615
|
|
|
699
616
|
describe '#inverse_class' do
|
|
700
|
-
|
|
701
617
|
it 'returns the owner class' do
|
|
702
618
|
expect(association.inverse_class).to be(Container)
|
|
703
619
|
end
|
|
704
620
|
end
|
|
705
621
|
|
|
706
622
|
describe '#inverse_of' do
|
|
707
|
-
|
|
708
623
|
context 'when :inverse_of is specified in the options' do
|
|
709
|
-
|
|
710
624
|
let(:options) do
|
|
711
625
|
{ inverse_of: :objects_list }
|
|
712
626
|
end
|
|
@@ -717,7 +631,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
717
631
|
end
|
|
718
632
|
|
|
719
633
|
context 'when :inverse_of is not specified in the options' do
|
|
720
|
-
|
|
721
634
|
it 'returns nil' do
|
|
722
635
|
expect(association.inverse_of).to be_nil
|
|
723
636
|
end
|
|
@@ -725,25 +638,20 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
725
638
|
end
|
|
726
639
|
|
|
727
640
|
describe '#key' do
|
|
728
|
-
|
|
729
641
|
it 'returns the name of the relation as a string' do
|
|
730
642
|
expect(association.key).to eq(name.to_s)
|
|
731
643
|
end
|
|
732
644
|
end
|
|
733
645
|
|
|
734
646
|
describe '#setter' do
|
|
735
|
-
|
|
736
647
|
it 'returns a string of the name followed by =' do
|
|
737
648
|
expect(association.setter).to eq("#{name}=")
|
|
738
649
|
end
|
|
739
650
|
end
|
|
740
651
|
|
|
741
652
|
describe '#validate?' do
|
|
742
|
-
|
|
743
653
|
context 'when :validate is specified in the options' do
|
|
744
|
-
|
|
745
654
|
context 'when validate is true' do
|
|
746
|
-
|
|
747
655
|
let(:options) do
|
|
748
656
|
{ validate: true }
|
|
749
657
|
end
|
|
@@ -754,7 +662,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
754
662
|
end
|
|
755
663
|
|
|
756
664
|
context 'when validate is false' do
|
|
757
|
-
|
|
758
665
|
let(:options) do
|
|
759
666
|
{ validate: false }
|
|
760
667
|
end
|
|
@@ -766,7 +673,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
766
673
|
end
|
|
767
674
|
|
|
768
675
|
context 'when :validate is not specified in the options' do
|
|
769
|
-
|
|
770
676
|
it 'returns the validation_default' do
|
|
771
677
|
expect(association.send(:validate?)).to eq(association.validation_default)
|
|
772
678
|
end
|
|
@@ -774,11 +680,8 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
774
680
|
end
|
|
775
681
|
|
|
776
682
|
describe '#autobuilding?' do
|
|
777
|
-
|
|
778
683
|
context 'when :autobuild is specified in the options' do
|
|
779
|
-
|
|
780
684
|
context 'when autobuild is true' do
|
|
781
|
-
|
|
782
685
|
let(:options) do
|
|
783
686
|
{ autobuild: true }
|
|
784
687
|
end
|
|
@@ -789,7 +692,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
789
692
|
end
|
|
790
693
|
|
|
791
694
|
context 'when autobuild is false' do
|
|
792
|
-
|
|
793
695
|
let(:options) do
|
|
794
696
|
{ autobuild: false }
|
|
795
697
|
end
|
|
@@ -801,7 +703,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
801
703
|
end
|
|
802
704
|
|
|
803
705
|
context 'when :validate is not specified in the options' do
|
|
804
|
-
|
|
805
706
|
it 'returns false' do
|
|
806
707
|
expect(association.autobuilding?).to be(false)
|
|
807
708
|
end
|
|
@@ -809,23 +710,19 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
809
710
|
end
|
|
810
711
|
|
|
811
712
|
describe '#forced_nil_inverse?' do
|
|
812
|
-
|
|
813
713
|
it 'returns false' do
|
|
814
714
|
expect(association.forced_nil_inverse?).to be(false)
|
|
815
715
|
end
|
|
816
716
|
end
|
|
817
717
|
|
|
818
718
|
describe '#stores_foreign_key?' do
|
|
819
|
-
|
|
820
719
|
it 'returns false' do
|
|
821
720
|
expect(association.stores_foreign_key?).to be(false)
|
|
822
721
|
end
|
|
823
722
|
end
|
|
824
723
|
|
|
825
724
|
describe '#inverse_setter' do
|
|
826
|
-
|
|
827
725
|
context 'when an inverse can be determined' do
|
|
828
|
-
|
|
829
726
|
before do
|
|
830
727
|
EmbeddedObject.embedded_in :container
|
|
831
728
|
end
|
|
@@ -836,7 +733,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
836
733
|
end
|
|
837
734
|
|
|
838
735
|
context 'when an inverse cannot be determined' do
|
|
839
|
-
|
|
840
736
|
it 'returns nil' do
|
|
841
737
|
expect(association.inverse_setter).to be_nil
|
|
842
738
|
end
|
|
@@ -844,11 +740,10 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
844
740
|
end
|
|
845
741
|
|
|
846
742
|
describe '#extension' do
|
|
847
|
-
|
|
848
743
|
context 'when a block is passed' do
|
|
849
|
-
|
|
850
744
|
let(:association) do
|
|
851
|
-
embeds_one_class.embeds_one name, options do
|
|
745
|
+
embeds_one_class.embeds_one name, options do
|
|
746
|
+
end
|
|
852
747
|
end
|
|
853
748
|
|
|
854
749
|
it 'defines an extension module' do
|
|
@@ -857,12 +752,12 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
857
752
|
|
|
858
753
|
it 'returns the extension' do
|
|
859
754
|
expect(association.extension).to eq(
|
|
860
|
-
"#{embeds_one_class.name}::#{embeds_one_class.name}#{name.to_s.camelize}RelationExtension".constantize
|
|
755
|
+
"#{embeds_one_class.name}::#{embeds_one_class.name}#{name.to_s.camelize}RelationExtension".constantize
|
|
756
|
+
)
|
|
861
757
|
end
|
|
862
758
|
end
|
|
863
759
|
|
|
864
760
|
context 'when an :extension is not specified in the options' do
|
|
865
|
-
|
|
866
761
|
it 'returns false' do
|
|
867
762
|
expect(association.extension).to be_nil
|
|
868
763
|
end
|
|
@@ -870,34 +765,28 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
870
765
|
end
|
|
871
766
|
|
|
872
767
|
describe '#criteria' do
|
|
873
|
-
|
|
874
768
|
it 'does not respond to the method' do
|
|
875
|
-
expect
|
|
769
|
+
expect do
|
|
876
770
|
association.criteria
|
|
877
|
-
|
|
771
|
+
end.to raise_exception(NoMethodError)
|
|
878
772
|
end
|
|
879
773
|
end
|
|
880
774
|
|
|
881
775
|
describe '#destructive?' do
|
|
882
|
-
|
|
883
776
|
it 'returns false' do
|
|
884
777
|
expect(association.destructive?).to be(false)
|
|
885
778
|
end
|
|
886
779
|
end
|
|
887
780
|
|
|
888
781
|
describe '#nested_builder' do
|
|
889
|
-
|
|
890
782
|
it 'returns an instance of Association::Nested::One' do
|
|
891
783
|
expect(association.nested_builder({}, {})).to be_a(Mongoid::Association::Nested::One)
|
|
892
784
|
end
|
|
893
785
|
end
|
|
894
786
|
|
|
895
787
|
describe '#cascading_callbacks?' do
|
|
896
|
-
|
|
897
788
|
context 'when cascade_callbacks is specified in the options' do
|
|
898
|
-
|
|
899
789
|
context 'when :cascade_callbacks is true' do
|
|
900
|
-
|
|
901
790
|
let(:options) do
|
|
902
791
|
{ cascade_callbacks: true }
|
|
903
792
|
end
|
|
@@ -908,7 +797,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
908
797
|
end
|
|
909
798
|
|
|
910
799
|
context 'when :cascade_callbacks is false' do
|
|
911
|
-
|
|
912
800
|
let(:options) do
|
|
913
801
|
{ cascade_callbacks: false }
|
|
914
802
|
end
|
|
@@ -920,7 +808,6 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
920
808
|
end
|
|
921
809
|
|
|
922
810
|
context 'when cascade_callbacks is not specified in the options' do
|
|
923
|
-
|
|
924
811
|
it 'returns false' do
|
|
925
812
|
expect(association.cascading_callbacks?).to be(false)
|
|
926
813
|
end
|
|
@@ -928,14 +815,12 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
928
815
|
end
|
|
929
816
|
|
|
930
817
|
describe '#path' do
|
|
931
|
-
|
|
932
818
|
it 'returns an instance of Mongoid::Atomic::Paths::Root' do
|
|
933
|
-
expect(association.path(double(
|
|
819
|
+
expect(association.path(double(_parent: true))).to be_a(Mongoid::Atomic::Paths::Embedded::One)
|
|
934
820
|
end
|
|
935
821
|
end
|
|
936
822
|
|
|
937
823
|
describe '#create_relation' do
|
|
938
|
-
|
|
939
824
|
let(:owner) do
|
|
940
825
|
Container.new
|
|
941
826
|
end
|
|
@@ -955,30 +840,30 @@ describe Mongoid::Association::Embedded::EmbedsOne do
|
|
|
955
840
|
end
|
|
956
841
|
end
|
|
957
842
|
|
|
958
|
-
context
|
|
843
|
+
context 'when multiple embeds_one associations reference the same class' do
|
|
959
844
|
let(:acme) { EomCompany.create(address: { city: 'Gotham' }, delivery_address: { city: 'Parcelville' }) }
|
|
960
845
|
|
|
961
|
-
context
|
|
846
|
+
context 'when the first assignment is modified' do
|
|
962
847
|
before do
|
|
963
848
|
acme.update(address: EomAddress.new(city: 'Bigville'))
|
|
964
849
|
acme.reload
|
|
965
850
|
end
|
|
966
851
|
|
|
967
|
-
it
|
|
968
|
-
expect(acme.address.city).to eq(
|
|
969
|
-
expect(acme.delivery_address.city).to eq(
|
|
852
|
+
it 'updates the correct association' do
|
|
853
|
+
expect(acme.address.city).to eq('Bigville')
|
|
854
|
+
expect(acme.delivery_address.city).to eq('Parcelville')
|
|
970
855
|
end
|
|
971
856
|
end
|
|
972
857
|
|
|
973
|
-
context
|
|
858
|
+
context 'when the second assignment is modified' do
|
|
974
859
|
before do
|
|
975
860
|
acme.update(delivery_address: EomAddress.new(city: 'Bigville'))
|
|
976
861
|
acme.reload
|
|
977
862
|
end
|
|
978
863
|
|
|
979
|
-
it
|
|
980
|
-
expect(acme.address.city).to eq(
|
|
981
|
-
expect(acme.delivery_address.city).to eq(
|
|
864
|
+
it 'updates the correct association' do
|
|
865
|
+
expect(acme.address.city).to eq('Gotham')
|
|
866
|
+
expect(acme.delivery_address.city).to eq('Bigville')
|
|
982
867
|
end
|
|
983
868
|
end
|
|
984
869
|
end
|