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::EmbeddedIn do
|
|
8
|
-
|
|
9
7
|
before do
|
|
10
8
|
class Container; include Mongoid::Document; end
|
|
11
9
|
class EmbeddedObject; include Mongoid::Document; end
|
|
@@ -29,11 +27,10 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
29
27
|
end
|
|
30
28
|
|
|
31
29
|
let(:options) do
|
|
32
|
-
{
|
|
30
|
+
{}
|
|
33
31
|
end
|
|
34
32
|
|
|
35
33
|
describe '#VALID_OPTIONS' do
|
|
36
|
-
|
|
37
34
|
it 'returns the SHARED options with the ASSOCIATION_OPTIONS' do
|
|
38
35
|
expect(association.class::VALID_OPTIONS).to match_array(Mongoid::Association::Relatable::SHARED_OPTIONS +
|
|
39
36
|
association.class::ASSOCIATION_OPTIONS)
|
|
@@ -41,7 +38,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
41
38
|
end
|
|
42
39
|
|
|
43
40
|
describe '#relation_complements' do
|
|
44
|
-
|
|
45
41
|
let(:expected_complements) do
|
|
46
42
|
[
|
|
47
43
|
Mongoid::Association::Embedded::EmbedsMany,
|
|
@@ -55,7 +51,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
55
51
|
end
|
|
56
52
|
|
|
57
53
|
describe '#setup_instance_methods!' do
|
|
58
|
-
|
|
59
54
|
it 'sets up a getter for the relation' do
|
|
60
55
|
expect(Mongoid::Association::Accessors).to receive(:define_getter!).with(association)
|
|
61
56
|
association.send(:setup_instance_methods!)
|
|
@@ -73,9 +68,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
73
68
|
end
|
|
74
69
|
|
|
75
70
|
describe '#inverse_type_setter' do
|
|
76
|
-
|
|
77
71
|
context 'when polymorphic' do
|
|
78
|
-
|
|
79
72
|
let(:options) do
|
|
80
73
|
{ polymorphic: true }
|
|
81
74
|
end
|
|
@@ -86,7 +79,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
86
79
|
end
|
|
87
80
|
|
|
88
81
|
context 'when not polymorphic' do
|
|
89
|
-
|
|
90
82
|
it 'returns nil' do
|
|
91
83
|
expect(association.inverse_type).to be_nil
|
|
92
84
|
end
|
|
@@ -94,44 +86,37 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
94
86
|
end
|
|
95
87
|
|
|
96
88
|
describe '#embedded?' do
|
|
97
|
-
|
|
98
89
|
it 'returns true' do
|
|
99
90
|
expect(association.embedded?).to be(true)
|
|
100
91
|
end
|
|
101
92
|
end
|
|
102
93
|
|
|
103
94
|
describe '#relation' do
|
|
104
|
-
|
|
105
95
|
it 'returns Mongoid::Association::Embedded::EmbeddedIn::Proxy' do
|
|
106
96
|
expect(association.relation).to be(Mongoid::Association::Embedded::EmbeddedIn::Proxy)
|
|
107
97
|
end
|
|
108
98
|
end
|
|
109
99
|
|
|
110
100
|
describe '#validation_default' do
|
|
111
|
-
|
|
112
101
|
it 'returns false' do
|
|
113
102
|
expect(association.validation_default).to be(false)
|
|
114
103
|
end
|
|
115
104
|
end
|
|
116
105
|
|
|
117
106
|
describe '#name' do
|
|
118
|
-
|
|
119
107
|
it 'returns the name of the relation' do
|
|
120
108
|
expect(association.name).to be(name)
|
|
121
109
|
end
|
|
122
110
|
end
|
|
123
111
|
|
|
124
112
|
describe '#options' do
|
|
125
|
-
|
|
126
113
|
it 'returns the options' do
|
|
127
114
|
expect(association.options).to be(options)
|
|
128
115
|
end
|
|
129
116
|
end
|
|
130
117
|
|
|
131
118
|
describe '#cyclic?' do
|
|
132
|
-
|
|
133
119
|
context 'when :cyclic is specified in the options' do
|
|
134
|
-
|
|
135
120
|
let(:options) do
|
|
136
121
|
{ cyclic: true }
|
|
137
122
|
end
|
|
@@ -142,7 +127,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
142
127
|
end
|
|
143
128
|
|
|
144
129
|
context 'when :cyclic is not specified in the options' do
|
|
145
|
-
|
|
146
130
|
it 'returns false' do
|
|
147
131
|
expect(association.cyclic?).to be(false)
|
|
148
132
|
end
|
|
@@ -150,12 +134,9 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
150
134
|
end
|
|
151
135
|
|
|
152
136
|
describe '#merge!' do
|
|
153
|
-
|
|
154
137
|
end
|
|
155
138
|
|
|
156
|
-
|
|
157
139
|
describe '#touchable?' do
|
|
158
|
-
|
|
159
140
|
context 'when :touch is in the options' do
|
|
160
141
|
shared_examples_for ':touch is in the options' do
|
|
161
142
|
it 'returns the value in the options' do
|
|
@@ -165,17 +146,18 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
165
146
|
|
|
166
147
|
context 'when the option is true' do
|
|
167
148
|
let(:options) { { touch: true } }
|
|
149
|
+
|
|
168
150
|
it_behaves_like ':touch is in the options'
|
|
169
151
|
end
|
|
170
152
|
|
|
171
153
|
context 'when the option is false' do
|
|
172
154
|
let(:options) { { touch: false } }
|
|
155
|
+
|
|
173
156
|
it_behaves_like ':touch is in the options'
|
|
174
157
|
end
|
|
175
158
|
end
|
|
176
159
|
|
|
177
160
|
context 'when :touch is not in the options' do
|
|
178
|
-
|
|
179
161
|
it 'return the default value' do
|
|
180
162
|
expect(association.send(:touchable?)).to be(true)
|
|
181
163
|
end
|
|
@@ -183,9 +165,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
183
165
|
end
|
|
184
166
|
|
|
185
167
|
describe '#polymorphic?' do
|
|
186
|
-
|
|
187
168
|
context 'when :polymorphic is specified in the options as true' do
|
|
188
|
-
|
|
189
169
|
let(:options) do
|
|
190
170
|
{ polymorphic: true }
|
|
191
171
|
end
|
|
@@ -196,7 +176,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
196
176
|
end
|
|
197
177
|
|
|
198
178
|
context 'when :polymorphic is specified in the options as false' do
|
|
199
|
-
|
|
200
179
|
let(:options) do
|
|
201
180
|
{ polymorphic: false }
|
|
202
181
|
end
|
|
@@ -207,7 +186,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
207
186
|
end
|
|
208
187
|
|
|
209
188
|
context 'when :polymorphic is not specified in the options' do
|
|
210
|
-
|
|
211
189
|
it 'returns false' do
|
|
212
190
|
expect(association.polymorphic?).to be(false)
|
|
213
191
|
end
|
|
@@ -215,16 +193,13 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
215
193
|
end
|
|
216
194
|
|
|
217
195
|
describe '#bindable?' do
|
|
218
|
-
|
|
219
196
|
it 'returns false' do
|
|
220
197
|
expect(association.bindable?(Person.new)).to be(false)
|
|
221
198
|
end
|
|
222
199
|
end
|
|
223
200
|
|
|
224
201
|
describe '#inverses' do
|
|
225
|
-
|
|
226
202
|
context 'when polymorphic' do
|
|
227
|
-
|
|
228
203
|
let(:options) do
|
|
229
204
|
{
|
|
230
205
|
polymorphic: true
|
|
@@ -236,19 +211,16 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
236
211
|
end
|
|
237
212
|
|
|
238
213
|
context 'when another object is passed to the method' do
|
|
239
|
-
|
|
240
214
|
let(:instance_of_other_class) do
|
|
241
215
|
Container.new
|
|
242
216
|
end
|
|
243
217
|
|
|
244
218
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
245
|
-
|
|
246
219
|
before do
|
|
247
220
|
Container.embeds_many :embedded_objects, as: :containable
|
|
248
221
|
end
|
|
249
222
|
|
|
250
223
|
context 'when :inverse_of is specified' do
|
|
251
|
-
|
|
252
224
|
before do
|
|
253
225
|
options.merge!(inverse_of: :inverse_name)
|
|
254
226
|
end
|
|
@@ -259,34 +231,30 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
259
231
|
end
|
|
260
232
|
|
|
261
233
|
context 'when inverse_of is not specified' do
|
|
262
|
-
|
|
263
234
|
it 'returns the list of relations whose :as attribute matches the name of this association' do
|
|
264
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
235
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:embedded_objects)
|
|
265
236
|
end
|
|
266
237
|
|
|
267
238
|
context 'when the relation class has two associations with the same name' do
|
|
268
|
-
|
|
269
239
|
before do
|
|
270
240
|
Container.embeds_many :embedded_objects, as: :containable
|
|
271
241
|
Container.embeds_many :other_embedded_objects, as: :containable
|
|
272
242
|
end
|
|
273
243
|
|
|
274
244
|
it 'returns only the relations whose :as attribute and class match' do
|
|
275
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
245
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:embedded_objects)
|
|
276
246
|
end
|
|
277
247
|
end
|
|
278
248
|
end
|
|
279
249
|
end
|
|
280
250
|
|
|
281
251
|
context 'when the relation class has more than one relation whose class matches the owning class' do
|
|
282
|
-
|
|
283
252
|
before do
|
|
284
253
|
Container.embeds_many :embedded_objects, as: :containable
|
|
285
254
|
Container.embeds_one :other_embedded_object, as: :containable, class_name: 'EmbeddedObject'
|
|
286
255
|
end
|
|
287
256
|
|
|
288
257
|
context 'when :inverse_of is specified' do
|
|
289
|
-
|
|
290
258
|
before do
|
|
291
259
|
options.merge!(inverse_of: :inverse_name)
|
|
292
260
|
end
|
|
@@ -297,19 +265,16 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
297
265
|
end
|
|
298
266
|
|
|
299
267
|
context 'when inverse_of is not specified' do
|
|
300
|
-
|
|
301
268
|
it 'returns the list of relations whose :as attribute matches the name of this association' do
|
|
302
|
-
expect(association.inverses(instance_of_other_class)).to match_array([
|
|
303
|
-
|
|
269
|
+
expect(association.inverses(instance_of_other_class)).to match_array(%i[embedded_objects
|
|
270
|
+
other_embedded_object])
|
|
304
271
|
end
|
|
305
272
|
end
|
|
306
273
|
end
|
|
307
274
|
end
|
|
308
275
|
|
|
309
276
|
context 'when another object is not passed to the method' do
|
|
310
|
-
|
|
311
277
|
context 'when inverse_of is specified' do
|
|
312
|
-
|
|
313
278
|
before do
|
|
314
279
|
options.merge!(inverse_of: :inverse_name)
|
|
315
280
|
end
|
|
@@ -320,7 +285,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
320
285
|
end
|
|
321
286
|
|
|
322
287
|
context 'when inverse_of is not specified' do
|
|
323
|
-
|
|
324
288
|
it 'returns nil' do
|
|
325
289
|
expect(association.inverses).to eq(nil)
|
|
326
290
|
end
|
|
@@ -332,7 +296,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
332
296
|
|
|
333
297
|
it 'returns the inverse in an array' do
|
|
334
298
|
inverses = association.inverses
|
|
335
|
-
expect(inverses).to eq([:parent])
|
|
299
|
+
expect(inverses).to eq([ :parent ])
|
|
336
300
|
end
|
|
337
301
|
end
|
|
338
302
|
|
|
@@ -345,7 +309,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
345
309
|
pending 'MONGOID-4751'
|
|
346
310
|
|
|
347
311
|
inverses = association.inverses
|
|
348
|
-
expect(inverses).to eq([:child])
|
|
312
|
+
expect(inverses).to eq([ :child ])
|
|
349
313
|
end
|
|
350
314
|
|
|
351
315
|
context 'when other associations referencing unloaded classes exist' do
|
|
@@ -355,7 +319,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
355
319
|
|
|
356
320
|
it 'does not load other classes' do
|
|
357
321
|
inverses = association.inverses
|
|
358
|
-
expect(inverses).to eq([:child])
|
|
322
|
+
expect(inverses).to eq([ :child ])
|
|
359
323
|
expect(Object.const_defined?(:EoDnlMarker)).to be false
|
|
360
324
|
end
|
|
361
325
|
end
|
|
@@ -365,9 +329,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
365
329
|
end
|
|
366
330
|
|
|
367
331
|
context 'when not polymorphic' do
|
|
368
|
-
|
|
369
332
|
context 'when inverse_of is specified' do
|
|
370
|
-
|
|
371
333
|
before do
|
|
372
334
|
options.merge!(inverse_of: :inverse_name)
|
|
373
335
|
end
|
|
@@ -378,7 +340,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
378
340
|
end
|
|
379
341
|
|
|
380
342
|
context 'when inverse_of is not specified' do
|
|
381
|
-
|
|
382
343
|
before do
|
|
383
344
|
Container.embeds_many :embedded_objects
|
|
384
345
|
end
|
|
@@ -389,28 +350,24 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
389
350
|
end
|
|
390
351
|
|
|
391
352
|
context 'when :cyclic is specified' do
|
|
392
|
-
|
|
393
353
|
it 'returns the cyclic inverse name' do
|
|
394
|
-
|
|
395
354
|
end
|
|
396
355
|
end
|
|
397
356
|
|
|
398
357
|
context 'when the inverse class has more than one relation with objects of the owner class' do
|
|
399
|
-
|
|
400
358
|
before do
|
|
401
359
|
Container.embeds_many :embedded_objects
|
|
402
360
|
Container.embeds_many :other_embedded_objects, class_name: 'EmbeddedObject'
|
|
403
361
|
end
|
|
404
362
|
|
|
405
363
|
it 'raises a Mongoid::Errors::AmbiguousRelationship exception' do
|
|
406
|
-
expect
|
|
364
|
+
expect do
|
|
407
365
|
association.inverses
|
|
408
|
-
|
|
366
|
+
end.to raise_exception(Mongoid::Errors::AmbiguousRelationship)
|
|
409
367
|
end
|
|
410
368
|
end
|
|
411
369
|
|
|
412
370
|
context 'when the inverse class only has one relation with objects of the owner class' do
|
|
413
|
-
|
|
414
371
|
before do
|
|
415
372
|
Container.embeds_many :embedded_objects
|
|
416
373
|
end
|
|
@@ -423,9 +380,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
423
380
|
end
|
|
424
381
|
|
|
425
382
|
describe '#inverse' do
|
|
426
|
-
|
|
427
383
|
context 'when polymorphic' do
|
|
428
|
-
|
|
429
384
|
let(:options) do
|
|
430
385
|
{
|
|
431
386
|
polymorphic: true
|
|
@@ -437,19 +392,16 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
437
392
|
end
|
|
438
393
|
|
|
439
394
|
context 'when another object is passed to the method' do
|
|
440
|
-
|
|
441
395
|
let(:instance_of_other_class) do
|
|
442
396
|
Container.new
|
|
443
397
|
end
|
|
444
398
|
|
|
445
399
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
446
|
-
|
|
447
400
|
before do
|
|
448
401
|
Container.embeds_many :embedded_objects, as: :containable
|
|
449
402
|
end
|
|
450
403
|
|
|
451
404
|
context 'when :inverse_of is specified' do
|
|
452
|
-
|
|
453
405
|
before do
|
|
454
406
|
options.merge!(inverse_of: :inverse_name)
|
|
455
407
|
end
|
|
@@ -460,7 +412,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
460
412
|
end
|
|
461
413
|
|
|
462
414
|
context 'when inverse_of is not specified' do
|
|
463
|
-
|
|
464
415
|
it 'returns the list of relations whose :as attribute matches the name of this association' do
|
|
465
416
|
expect(association.inverse(instance_of_other_class)).to eq(:embedded_objects)
|
|
466
417
|
end
|
|
@@ -468,14 +419,12 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
468
419
|
end
|
|
469
420
|
|
|
470
421
|
context 'when the relation class has more than one relation whose class matches the owning class' do
|
|
471
|
-
|
|
472
422
|
before do
|
|
473
423
|
Container.embeds_many :embedded_objects, as: :containable
|
|
474
424
|
Container.embeds_one :other_embedded_object, as: :containable
|
|
475
425
|
end
|
|
476
426
|
|
|
477
427
|
context 'when :inverse_of is specified' do
|
|
478
|
-
|
|
479
428
|
before do
|
|
480
429
|
options.merge!(inverse_of: :inverse_name)
|
|
481
430
|
end
|
|
@@ -486,7 +435,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
486
435
|
end
|
|
487
436
|
|
|
488
437
|
context 'when inverse_of is not specified' do
|
|
489
|
-
|
|
490
438
|
it 'returns the first candidate whose :as attribute matches the name of this association' do
|
|
491
439
|
expect(association.inverse(instance_of_other_class)).to eq(:embedded_objects)
|
|
492
440
|
end
|
|
@@ -495,9 +443,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
495
443
|
end
|
|
496
444
|
|
|
497
445
|
context 'when another object is not passed to the method' do
|
|
498
|
-
|
|
499
446
|
context 'when inverse_of is specified' do
|
|
500
|
-
|
|
501
447
|
before do
|
|
502
448
|
options.merge!(inverse_of: :inverse_name)
|
|
503
449
|
end
|
|
@@ -508,7 +454,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
508
454
|
end
|
|
509
455
|
|
|
510
456
|
context 'when inverse_of is not specified' do
|
|
511
|
-
|
|
512
457
|
it 'returns nil' do
|
|
513
458
|
expect(association.inverse).to eq(nil)
|
|
514
459
|
end
|
|
@@ -517,9 +462,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
517
462
|
end
|
|
518
463
|
|
|
519
464
|
context 'when not polymorphic' do
|
|
520
|
-
|
|
521
465
|
context 'when inverse_of is specified' do
|
|
522
|
-
|
|
523
466
|
before do
|
|
524
467
|
options.merge!(inverse_of: :inverse_name)
|
|
525
468
|
end
|
|
@@ -530,7 +473,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
530
473
|
end
|
|
531
474
|
|
|
532
475
|
context 'when inverse_of is not specified' do
|
|
533
|
-
|
|
534
476
|
before do
|
|
535
477
|
Container.embeds_many :embedded_objects
|
|
536
478
|
end
|
|
@@ -541,28 +483,24 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
541
483
|
end
|
|
542
484
|
|
|
543
485
|
context 'when :cyclic is specified' do
|
|
544
|
-
|
|
545
486
|
it 'returns the cyclic inverse name' do
|
|
546
|
-
|
|
547
487
|
end
|
|
548
488
|
end
|
|
549
489
|
|
|
550
490
|
context 'when the inverse class has more than one relation with objects of the owner class' do
|
|
551
|
-
|
|
552
491
|
before do
|
|
553
492
|
Container.embeds_many :embedded_objects
|
|
554
493
|
Container.embeds_many :other_embedded_objects, class_name: 'EmbeddedObject'
|
|
555
494
|
end
|
|
556
495
|
|
|
557
496
|
it 'raises a Mongoid::Errors::AmbiguousRelationship exception' do
|
|
558
|
-
expect
|
|
497
|
+
expect do
|
|
559
498
|
association.inverse
|
|
560
|
-
|
|
499
|
+
end.to raise_exception(Mongoid::Errors::AmbiguousRelationship)
|
|
561
500
|
end
|
|
562
501
|
end
|
|
563
502
|
|
|
564
503
|
context 'when the inverse class only has one relation with objects of the owner class' do
|
|
565
|
-
|
|
566
504
|
before do
|
|
567
505
|
Container.embeds_many :embedded_objects
|
|
568
506
|
end
|
|
@@ -575,20 +513,16 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
575
513
|
end
|
|
576
514
|
|
|
577
515
|
describe '#inverse_association' do
|
|
578
|
-
|
|
579
516
|
end
|
|
580
517
|
|
|
581
518
|
describe '#autosave' do
|
|
582
|
-
|
|
583
519
|
it 'returns false' do
|
|
584
520
|
expect(association.autosave).to be(false)
|
|
585
521
|
end
|
|
586
522
|
end
|
|
587
523
|
|
|
588
524
|
describe '#relation_class_name' do
|
|
589
|
-
|
|
590
525
|
context 'when the :class_name option is specified' do
|
|
591
|
-
|
|
592
526
|
let(:options) do
|
|
593
527
|
# `touch: true` is the default (see MONGOID-5016), which means by
|
|
594
528
|
# default, callbacks are added to the referenced class. In this case,
|
|
@@ -613,7 +547,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
613
547
|
end
|
|
614
548
|
|
|
615
549
|
context 'when the class_name option is not specified' do
|
|
616
|
-
|
|
617
550
|
it 'uses the name of the relation to deduce the class name' do
|
|
618
551
|
expect(association.relation_class_name).to eq('Container')
|
|
619
552
|
end
|
|
@@ -632,9 +565,7 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
632
565
|
end
|
|
633
566
|
|
|
634
567
|
describe '#klass' do
|
|
635
|
-
|
|
636
568
|
context 'when the :class_name option is specified' do
|
|
637
|
-
|
|
638
569
|
let!(:_class) do
|
|
639
570
|
class OtherContainer; end
|
|
640
571
|
OtherContainer
|
|
@@ -650,7 +581,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
650
581
|
end
|
|
651
582
|
|
|
652
583
|
context 'when the class_name option is not specified' do
|
|
653
|
-
|
|
654
584
|
it 'uses the name of the relation to deduce the class name' do
|
|
655
585
|
expect(association.klass).to eq(Container)
|
|
656
586
|
end
|
|
@@ -658,23 +588,19 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
658
588
|
end
|
|
659
589
|
|
|
660
590
|
describe '#inverse_class_name' do
|
|
661
|
-
|
|
662
591
|
it 'returns the name of the owner class' do
|
|
663
592
|
expect(association.inverse_class_name).to eq(embedded_class.name)
|
|
664
593
|
end
|
|
665
594
|
end
|
|
666
595
|
|
|
667
596
|
describe '#inverse_class' do
|
|
668
|
-
|
|
669
597
|
it 'returns the owner class' do
|
|
670
598
|
expect(association.inverse_class).to be(embedded_class)
|
|
671
599
|
end
|
|
672
600
|
end
|
|
673
601
|
|
|
674
602
|
describe '#inverse_of' do
|
|
675
|
-
|
|
676
603
|
context 'when :inverse_of is specified in the options' do
|
|
677
|
-
|
|
678
604
|
let(:options) do
|
|
679
605
|
{ inverse_of: :a_container }
|
|
680
606
|
end
|
|
@@ -685,7 +611,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
685
611
|
end
|
|
686
612
|
|
|
687
613
|
context 'when :inverse_of is not specified in the options' do
|
|
688
|
-
|
|
689
614
|
it 'returns nil' do
|
|
690
615
|
expect(association.inverse_of).to be_nil
|
|
691
616
|
end
|
|
@@ -693,25 +618,20 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
693
618
|
end
|
|
694
619
|
|
|
695
620
|
describe '#key' do
|
|
696
|
-
|
|
697
621
|
it 'returns the name of the relation as a string' do
|
|
698
622
|
expect(association.key).to eq(name.to_s)
|
|
699
623
|
end
|
|
700
624
|
end
|
|
701
625
|
|
|
702
626
|
describe '#setter' do
|
|
703
|
-
|
|
704
627
|
it 'returns a string of the name followed by =' do
|
|
705
628
|
expect(association.setter).to eq("#{name}=")
|
|
706
629
|
end
|
|
707
630
|
end
|
|
708
631
|
|
|
709
632
|
describe '#validate?' do
|
|
710
|
-
|
|
711
633
|
context 'when :validate is specified in the options' do
|
|
712
|
-
|
|
713
634
|
context 'when validate is true' do
|
|
714
|
-
|
|
715
635
|
let(:options) do
|
|
716
636
|
{ validate: true }
|
|
717
637
|
end
|
|
@@ -722,7 +642,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
722
642
|
end
|
|
723
643
|
|
|
724
644
|
context 'when validate is false' do
|
|
725
|
-
|
|
726
645
|
let(:options) do
|
|
727
646
|
{ validate: false }
|
|
728
647
|
end
|
|
@@ -734,7 +653,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
734
653
|
end
|
|
735
654
|
|
|
736
655
|
context 'when :validate is not specified in the options' do
|
|
737
|
-
|
|
738
656
|
it 'returns the validation_default' do
|
|
739
657
|
expect(association.send(:validate?)).to eq(association.validation_default)
|
|
740
658
|
end
|
|
@@ -742,11 +660,8 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
742
660
|
end
|
|
743
661
|
|
|
744
662
|
describe '#autobuilding?' do
|
|
745
|
-
|
|
746
663
|
context 'when :autobuild is specified in the options' do
|
|
747
|
-
|
|
748
664
|
context 'when autobuild is true' do
|
|
749
|
-
|
|
750
665
|
let(:options) do
|
|
751
666
|
{ autobuild: true }
|
|
752
667
|
end
|
|
@@ -757,7 +672,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
757
672
|
end
|
|
758
673
|
|
|
759
674
|
context 'when autobuild is false' do
|
|
760
|
-
|
|
761
675
|
let(:options) do
|
|
762
676
|
{ autobuild: false }
|
|
763
677
|
end
|
|
@@ -769,7 +683,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
769
683
|
end
|
|
770
684
|
|
|
771
685
|
context 'when :validate is not specified in the options' do
|
|
772
|
-
|
|
773
686
|
it 'returns false' do
|
|
774
687
|
expect(association.autobuilding?).to be(false)
|
|
775
688
|
end
|
|
@@ -777,23 +690,19 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
777
690
|
end
|
|
778
691
|
|
|
779
692
|
describe '#forced_nil_inverse?' do
|
|
780
|
-
|
|
781
693
|
it 'returns false' do
|
|
782
694
|
expect(association.forced_nil_inverse?).to be(false)
|
|
783
695
|
end
|
|
784
696
|
end
|
|
785
697
|
|
|
786
698
|
describe '#stores_foreign_key?' do
|
|
787
|
-
|
|
788
699
|
it 'returns false' do
|
|
789
700
|
expect(association.stores_foreign_key?).to be(false)
|
|
790
701
|
end
|
|
791
702
|
end
|
|
792
703
|
|
|
793
704
|
describe '#inverse_setter' do
|
|
794
|
-
|
|
795
705
|
context 'when an inverse can be determined' do
|
|
796
|
-
|
|
797
706
|
before do
|
|
798
707
|
Container.embeds_many :embedded_objects
|
|
799
708
|
end
|
|
@@ -804,7 +713,6 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
804
713
|
end
|
|
805
714
|
|
|
806
715
|
context 'when an inverse cannot be determined' do
|
|
807
|
-
|
|
808
716
|
it 'returns nil' do
|
|
809
717
|
expect(association.inverse_setter).to be_nil
|
|
810
718
|
end
|
|
@@ -812,11 +720,10 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
812
720
|
end
|
|
813
721
|
|
|
814
722
|
describe '#extension' do
|
|
815
|
-
|
|
816
723
|
context 'when a block is passed' do
|
|
817
|
-
|
|
818
724
|
let(:association) do
|
|
819
|
-
embedded_class.embedded_in name, options do
|
|
725
|
+
embedded_class.embedded_in name, options do
|
|
726
|
+
end
|
|
820
727
|
end
|
|
821
728
|
|
|
822
729
|
it 'defines an extension module' do
|
|
@@ -825,12 +732,12 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
825
732
|
|
|
826
733
|
it 'returns the extension' do
|
|
827
734
|
expect(association.extension).to eq(
|
|
828
|
-
"#{embedded_class.name}::#{embedded_class.name}#{name.capitalize}RelationExtension".constantize
|
|
735
|
+
"#{embedded_class.name}::#{embedded_class.name}#{name.capitalize}RelationExtension".constantize
|
|
736
|
+
)
|
|
829
737
|
end
|
|
830
738
|
end
|
|
831
739
|
|
|
832
740
|
context 'when an :extension is not specified in the options' do
|
|
833
|
-
|
|
834
741
|
it 'returns false' do
|
|
835
742
|
expect(association.extension).to be_nil
|
|
836
743
|
end
|
|
@@ -838,45 +745,39 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
838
745
|
end
|
|
839
746
|
|
|
840
747
|
describe '#criteria' do
|
|
841
|
-
|
|
842
748
|
it 'does not respond to the method' do
|
|
843
|
-
expect
|
|
749
|
+
expect do
|
|
844
750
|
association.criteria
|
|
845
|
-
|
|
751
|
+
end.to raise_exception(NoMethodError)
|
|
846
752
|
end
|
|
847
753
|
end
|
|
848
754
|
|
|
849
755
|
describe '#destructive?' do
|
|
850
|
-
|
|
851
756
|
it 'returns false' do
|
|
852
757
|
expect(association.destructive?).to be(false)
|
|
853
758
|
end
|
|
854
759
|
end
|
|
855
760
|
|
|
856
761
|
describe '#nested_builder' do
|
|
857
|
-
|
|
858
762
|
it 'returns an instance of Association::Nested::One' do
|
|
859
763
|
expect(association.nested_builder({}, {})).to be_a(Mongoid::Association::Nested::One)
|
|
860
764
|
end
|
|
861
765
|
end
|
|
862
766
|
|
|
863
767
|
describe '#cascading_callbacks?' do
|
|
864
|
-
|
|
865
768
|
context 'when cascade_callbacks is specified in the options' do
|
|
866
|
-
|
|
867
769
|
let(:options) do
|
|
868
|
-
{cascade_callbacks: true}
|
|
770
|
+
{ cascade_callbacks: true }
|
|
869
771
|
end
|
|
870
772
|
|
|
871
773
|
it 'raises a Mongoid::Errors::InvalidRelationOption exception' do
|
|
872
|
-
expect
|
|
774
|
+
expect do
|
|
873
775
|
association.cascading_callbacks?
|
|
874
|
-
|
|
776
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
875
777
|
end
|
|
876
778
|
end
|
|
877
779
|
|
|
878
780
|
context 'when cascade_callbacks is not specified in the options' do
|
|
879
|
-
|
|
880
781
|
it 'returns false' do
|
|
881
782
|
expect(association.cascading_callbacks?).to be(false)
|
|
882
783
|
end
|
|
@@ -884,21 +785,18 @@ describe Mongoid::Association::Embedded::EmbeddedIn do
|
|
|
884
785
|
end
|
|
885
786
|
|
|
886
787
|
describe '#path' do
|
|
887
|
-
|
|
888
788
|
it 'returns an instance of Mongoid::Atomic::Paths::Root' do
|
|
889
789
|
expect(association.path({})).to be_a(Mongoid::Atomic::Paths::Root)
|
|
890
790
|
end
|
|
891
791
|
end
|
|
892
792
|
|
|
893
793
|
describe '#foreign_key_check' do
|
|
894
|
-
|
|
895
794
|
it 'returns nil' do
|
|
896
795
|
expect(association.foreign_key_check).to be_nil
|
|
897
796
|
end
|
|
898
797
|
end
|
|
899
798
|
|
|
900
799
|
describe '#create_relation' do
|
|
901
|
-
|
|
902
800
|
let(:owner) do
|
|
903
801
|
Container.new
|
|
904
802
|
end
|