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 'has_one_models'
|
|
6
5
|
|
|
7
6
|
describe Mongoid::Association::Referenced::HasOne do
|
|
8
|
-
|
|
9
7
|
before do
|
|
10
8
|
class OwnerObject; include Mongoid::Document; end
|
|
11
9
|
class BelongingObject; include Mongoid::Document; end
|
|
@@ -29,14 +27,13 @@ describe Mongoid::Association::Referenced::HasOne 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
|
-
|
|
36
|
+
Mongoid::Association::Referenced::BelongsTo
|
|
40
37
|
]
|
|
41
38
|
end
|
|
42
39
|
|
|
@@ -46,7 +43,6 @@ describe Mongoid::Association::Referenced::HasOne 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,12 +69,10 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
73
69
|
end
|
|
74
70
|
|
|
75
71
|
context 'autosave' do
|
|
76
|
-
|
|
77
72
|
context 'when the :autosave option is true' do
|
|
78
|
-
|
|
79
73
|
let(:options) do
|
|
80
74
|
{
|
|
81
|
-
|
|
75
|
+
autosave: true
|
|
82
76
|
}
|
|
83
77
|
end
|
|
84
78
|
|
|
@@ -95,10 +89,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
95
89
|
end
|
|
96
90
|
|
|
97
91
|
context 'when the :autosave option is false' do
|
|
98
|
-
|
|
99
92
|
let(:options) do
|
|
100
93
|
{
|
|
101
|
-
|
|
94
|
+
autosave: false
|
|
102
95
|
}
|
|
103
96
|
end
|
|
104
97
|
|
|
@@ -109,7 +102,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
109
102
|
end
|
|
110
103
|
|
|
111
104
|
context 'when the :autosave option is not provided' do
|
|
112
|
-
|
|
113
105
|
let(:association) do
|
|
114
106
|
# Note that it is necessary to create the association directly, otherwise the
|
|
115
107
|
# setup! method will be called by the :has_one macro
|
|
@@ -124,10 +116,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
124
116
|
end
|
|
125
117
|
|
|
126
118
|
context 'when the :validate option is true' do
|
|
127
|
-
|
|
128
119
|
let(:options) do
|
|
129
120
|
{
|
|
130
|
-
|
|
121
|
+
validate: true
|
|
131
122
|
}
|
|
132
123
|
end
|
|
133
124
|
|
|
@@ -144,10 +135,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
144
135
|
end
|
|
145
136
|
|
|
146
137
|
context 'when the :validate option is false' do
|
|
147
|
-
|
|
148
138
|
let(:options) do
|
|
149
139
|
{
|
|
150
|
-
|
|
140
|
+
validate: false
|
|
151
141
|
}
|
|
152
142
|
end
|
|
153
143
|
|
|
@@ -158,7 +148,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
158
148
|
end
|
|
159
149
|
|
|
160
150
|
context 'when the :validate option is not provided' do
|
|
161
|
-
|
|
162
151
|
let(:association) do
|
|
163
152
|
# Note that it is necessary to create the association directly, otherwise the
|
|
164
153
|
# setup! method will be called by the :embeds_one macro
|
|
@@ -172,13 +161,10 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
172
161
|
end
|
|
173
162
|
|
|
174
163
|
context 'polymorphic' do
|
|
175
|
-
|
|
176
164
|
context 'when the as option is provided' do
|
|
177
|
-
|
|
178
|
-
|
|
179
165
|
let(:options) do
|
|
180
166
|
{
|
|
181
|
-
|
|
167
|
+
as: :containable
|
|
182
168
|
}
|
|
183
169
|
end
|
|
184
170
|
|
|
@@ -192,7 +178,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
192
178
|
end
|
|
193
179
|
|
|
194
180
|
context 'when the as option is not provided' do
|
|
195
|
-
|
|
196
181
|
it 'does not set the polymorphic attribute on the owner class' do
|
|
197
182
|
expect(has_one_class.polymorphic).to be(false)
|
|
198
183
|
end
|
|
@@ -200,14 +185,11 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
200
185
|
end
|
|
201
186
|
|
|
202
187
|
context 'dependent' do
|
|
203
|
-
|
|
204
188
|
context 'when the dependent option is provided' do
|
|
205
|
-
|
|
206
189
|
context 'when the dependent option is :delete_all' do
|
|
207
|
-
|
|
208
190
|
let(:options) do
|
|
209
191
|
{
|
|
210
|
-
|
|
192
|
+
dependent: :delete_all
|
|
211
193
|
}
|
|
212
194
|
end
|
|
213
195
|
|
|
@@ -224,10 +206,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
224
206
|
end
|
|
225
207
|
|
|
226
208
|
context 'when the dependent option is :destroy' do
|
|
227
|
-
|
|
228
209
|
let(:options) do
|
|
229
210
|
{
|
|
230
|
-
|
|
211
|
+
dependent: :destroy
|
|
231
212
|
}
|
|
232
213
|
end
|
|
233
214
|
|
|
@@ -244,10 +225,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
244
225
|
end
|
|
245
226
|
|
|
246
227
|
context 'when the dependent option is :nullify' do
|
|
247
|
-
|
|
248
228
|
let(:options) do
|
|
249
229
|
{
|
|
250
|
-
|
|
230
|
+
dependent: :nullify
|
|
251
231
|
}
|
|
252
232
|
end
|
|
253
233
|
|
|
@@ -264,10 +244,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
264
244
|
end
|
|
265
245
|
|
|
266
246
|
context 'when the dependent option is :restrict_with_exception' do
|
|
267
|
-
|
|
268
247
|
let(:options) do
|
|
269
248
|
{
|
|
270
|
-
|
|
249
|
+
dependent: :restrict_with_exception
|
|
271
250
|
}
|
|
272
251
|
end
|
|
273
252
|
|
|
@@ -284,10 +263,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
284
263
|
end
|
|
285
264
|
|
|
286
265
|
context 'when the dependent option is :restrict_with_error' do
|
|
287
|
-
|
|
288
266
|
let(:options) do
|
|
289
267
|
{
|
|
290
|
-
|
|
268
|
+
dependent: :restrict_with_error
|
|
291
269
|
}
|
|
292
270
|
end
|
|
293
271
|
|
|
@@ -305,7 +283,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
305
283
|
end
|
|
306
284
|
|
|
307
285
|
context 'when the dependent option is not provided' do
|
|
308
|
-
|
|
309
286
|
it 'does not set up the dependency' do
|
|
310
287
|
expect(Mongoid::Association::Depending).not_to receive(:define_dependency!)
|
|
311
288
|
association.setup!
|
|
@@ -315,9 +292,7 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
315
292
|
end
|
|
316
293
|
|
|
317
294
|
describe '#type' do
|
|
318
|
-
|
|
319
295
|
context 'when polymorphic' do
|
|
320
|
-
|
|
321
296
|
let(:options) do
|
|
322
297
|
{ as: :containable }
|
|
323
298
|
end
|
|
@@ -328,7 +303,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
328
303
|
end
|
|
329
304
|
|
|
330
305
|
context 'when not polymorphic' do
|
|
331
|
-
|
|
332
306
|
it 'returns nil' do
|
|
333
307
|
expect(association.type).to be_nil
|
|
334
308
|
end
|
|
@@ -336,9 +310,7 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
336
310
|
end
|
|
337
311
|
|
|
338
312
|
describe '#inverse_type' do
|
|
339
|
-
|
|
340
313
|
context 'when polymorphic' do
|
|
341
|
-
|
|
342
314
|
let(:options) do
|
|
343
315
|
{ as: :containable }
|
|
344
316
|
end
|
|
@@ -349,7 +321,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
349
321
|
end
|
|
350
322
|
|
|
351
323
|
context 'when not polymorphic' do
|
|
352
|
-
|
|
353
324
|
it 'returns nil' do
|
|
354
325
|
expect(association.inverse_type).to be_nil
|
|
355
326
|
end
|
|
@@ -357,9 +328,7 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
357
328
|
end
|
|
358
329
|
|
|
359
330
|
describe '#inverse_type_setter' do
|
|
360
|
-
|
|
361
331
|
context 'when polymorphic' do
|
|
362
|
-
|
|
363
332
|
let(:options) do
|
|
364
333
|
{ as: :containable }
|
|
365
334
|
end
|
|
@@ -370,7 +339,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
370
339
|
end
|
|
371
340
|
|
|
372
341
|
context 'when not polymorphic' do
|
|
373
|
-
|
|
374
342
|
it 'returns nil' do
|
|
375
343
|
expect(association.inverse_type).to be_nil
|
|
376
344
|
end
|
|
@@ -378,9 +346,7 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
378
346
|
end
|
|
379
347
|
|
|
380
348
|
describe '#foreign_key' do
|
|
381
|
-
|
|
382
349
|
context 'when options has foreign_key specified' do
|
|
383
|
-
|
|
384
350
|
let(:options) do
|
|
385
351
|
{ foreign_key: :other_object_id }
|
|
386
352
|
end
|
|
@@ -391,7 +357,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
391
357
|
end
|
|
392
358
|
|
|
393
359
|
context 'when options does not have foreign_key specified' do
|
|
394
|
-
|
|
395
360
|
it 'returns the default foreign key, the name of the inverse followed by "_id"' do
|
|
396
361
|
expect(association.foreign_key).to eq("#{association.inverse}_id")
|
|
397
362
|
end
|
|
@@ -399,19 +364,16 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
399
364
|
end
|
|
400
365
|
|
|
401
366
|
describe '#embedded?' do
|
|
402
|
-
|
|
403
367
|
it 'returns false' do
|
|
404
368
|
expect(association.embedded?).to be(false)
|
|
405
369
|
end
|
|
406
370
|
end
|
|
407
371
|
|
|
408
372
|
describe '#primary_key' do
|
|
409
|
-
|
|
410
373
|
context 'when the :primary_key option is specified' do
|
|
411
|
-
|
|
412
374
|
let(:options) do
|
|
413
375
|
{
|
|
414
|
-
|
|
376
|
+
primary_key: 'guid'
|
|
415
377
|
}
|
|
416
378
|
end
|
|
417
379
|
|
|
@@ -421,7 +383,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
421
383
|
end
|
|
422
384
|
|
|
423
385
|
context 'when the :primary_key option is not specified' do
|
|
424
|
-
|
|
425
386
|
it 'returns the primary_key default' do
|
|
426
387
|
expect(association.primary_key).to eq(Mongoid::Association::Relatable::PRIMARY_KEY_DEFAULT)
|
|
427
388
|
end
|
|
@@ -429,42 +390,36 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
429
390
|
end
|
|
430
391
|
|
|
431
392
|
describe '#indexed?' do
|
|
432
|
-
|
|
433
393
|
it 'returns false' do
|
|
434
394
|
expect(association.indexed?).to be(false)
|
|
435
395
|
end
|
|
436
396
|
end
|
|
437
397
|
|
|
438
398
|
describe '#relation' do
|
|
439
|
-
|
|
440
399
|
it 'returns Mongoid::Association::Referenced::HasOne::Proxy' do
|
|
441
400
|
expect(association.relation).to be(Mongoid::Association::Referenced::HasOne::Proxy)
|
|
442
401
|
end
|
|
443
402
|
end
|
|
444
403
|
|
|
445
404
|
describe '#validation_default' do
|
|
446
|
-
|
|
447
405
|
it 'returns true' do
|
|
448
406
|
expect(association.validation_default).to be(true)
|
|
449
407
|
end
|
|
450
408
|
end
|
|
451
409
|
|
|
452
410
|
describe '#name' do
|
|
453
|
-
|
|
454
411
|
it 'returns the name of the relation' do
|
|
455
412
|
expect(association.name).to be(name)
|
|
456
413
|
end
|
|
457
414
|
end
|
|
458
415
|
|
|
459
416
|
describe '#options' do
|
|
460
|
-
|
|
461
417
|
it 'returns the options' do
|
|
462
418
|
expect(association.options).to be(options)
|
|
463
419
|
end
|
|
464
420
|
end
|
|
465
421
|
|
|
466
422
|
describe '#merge!' do
|
|
467
|
-
|
|
468
423
|
end
|
|
469
424
|
|
|
470
425
|
describe '#store_as' do
|
|
@@ -474,23 +429,19 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
474
429
|
end
|
|
475
430
|
|
|
476
431
|
describe '#touchable?' do
|
|
477
|
-
|
|
478
432
|
it 'return false' do
|
|
479
433
|
expect(association.send(:touchable?)).to be(false)
|
|
480
434
|
end
|
|
481
435
|
end
|
|
482
436
|
|
|
483
437
|
describe '#order' do
|
|
484
|
-
|
|
485
438
|
it 'returns nil' do
|
|
486
439
|
expect(association.order).to be_nil
|
|
487
440
|
end
|
|
488
441
|
end
|
|
489
442
|
|
|
490
443
|
describe '#scope' do
|
|
491
|
-
|
|
492
444
|
context 'when scope is specified in the options' do
|
|
493
|
-
|
|
494
445
|
let(:options) do
|
|
495
446
|
{ scope: -> { unscoped.where(foo: :bar) } }
|
|
496
447
|
end
|
|
@@ -501,7 +452,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
501
452
|
end
|
|
502
453
|
|
|
503
454
|
context 'when scope is not specified in the options' do
|
|
504
|
-
|
|
505
455
|
it 'returns nil' do
|
|
506
456
|
expect(association.scope).to be_nil
|
|
507
457
|
end
|
|
@@ -509,12 +459,10 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
509
459
|
end
|
|
510
460
|
|
|
511
461
|
describe '#as' do
|
|
512
|
-
|
|
513
462
|
context 'when :as is specified in the options' do
|
|
514
|
-
|
|
515
463
|
let(:options) do
|
|
516
464
|
{
|
|
517
|
-
|
|
465
|
+
as: :containable
|
|
518
466
|
}
|
|
519
467
|
end
|
|
520
468
|
|
|
@@ -524,7 +472,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
524
472
|
end
|
|
525
473
|
|
|
526
474
|
context 'when :as is not specified in the options' do
|
|
527
|
-
|
|
528
475
|
it 'returns nil' do
|
|
529
476
|
expect(association.as).to be_nil
|
|
530
477
|
end
|
|
@@ -532,23 +479,19 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
532
479
|
end
|
|
533
480
|
|
|
534
481
|
describe '#polymorphic?' do
|
|
535
|
-
|
|
536
482
|
context 'when :as is specified in the options' do
|
|
537
|
-
|
|
538
483
|
let(:options) do
|
|
539
484
|
{
|
|
540
|
-
|
|
485
|
+
as: :containable
|
|
541
486
|
}
|
|
542
487
|
end
|
|
543
488
|
|
|
544
489
|
it 'returns true' do
|
|
545
490
|
expect(association.polymorphic?).to be(true)
|
|
546
491
|
end
|
|
547
|
-
|
|
548
492
|
end
|
|
549
493
|
|
|
550
494
|
context 'when :as is not specified in the options' do
|
|
551
|
-
|
|
552
495
|
it 'returns false' do
|
|
553
496
|
expect(association.polymorphic?).to be(false)
|
|
554
497
|
end
|
|
@@ -556,20 +499,17 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
556
499
|
end
|
|
557
500
|
|
|
558
501
|
describe '#type_setter' do
|
|
559
|
-
|
|
560
502
|
context 'when polymorphic' do
|
|
561
|
-
|
|
562
503
|
let(:options) do
|
|
563
504
|
{ as: :containable }
|
|
564
505
|
end
|
|
565
506
|
|
|
566
507
|
it 'returns the type followed by = as a String' do
|
|
567
|
-
expect(association.type_setter).to eq(
|
|
508
|
+
expect(association.type_setter).to eq('containable_type=')
|
|
568
509
|
end
|
|
569
510
|
end
|
|
570
511
|
|
|
571
512
|
context 'when not polymorphic' do
|
|
572
|
-
|
|
573
513
|
it 'returns nil' do
|
|
574
514
|
expect(association.type).to be_nil
|
|
575
515
|
end
|
|
@@ -577,14 +517,11 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
577
517
|
end
|
|
578
518
|
|
|
579
519
|
describe '#dependent' do
|
|
580
|
-
|
|
581
520
|
context 'when the dependent option is provided' do
|
|
582
|
-
|
|
583
521
|
context 'when the dependent option is :delete_all' do
|
|
584
|
-
|
|
585
522
|
let(:options) do
|
|
586
523
|
{
|
|
587
|
-
|
|
524
|
+
dependent: :delete_all
|
|
588
525
|
}
|
|
589
526
|
end
|
|
590
527
|
|
|
@@ -594,10 +531,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
594
531
|
end
|
|
595
532
|
|
|
596
533
|
context 'when the dependent option is :destroy' do
|
|
597
|
-
|
|
598
534
|
let(:options) do
|
|
599
535
|
{
|
|
600
|
-
|
|
536
|
+
dependent: :destroy
|
|
601
537
|
}
|
|
602
538
|
end
|
|
603
539
|
|
|
@@ -607,10 +543,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
607
543
|
end
|
|
608
544
|
|
|
609
545
|
context 'when the dependent option is :nullify' do
|
|
610
|
-
|
|
611
546
|
let(:options) do
|
|
612
547
|
{
|
|
613
|
-
|
|
548
|
+
dependent: :nullify
|
|
614
549
|
}
|
|
615
550
|
end
|
|
616
551
|
|
|
@@ -620,10 +555,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
620
555
|
end
|
|
621
556
|
|
|
622
557
|
context 'when the dependent option is :restrict_with_exception' do
|
|
623
|
-
|
|
624
558
|
let(:options) do
|
|
625
559
|
{
|
|
626
|
-
|
|
560
|
+
dependent: :restrict_with_exception
|
|
627
561
|
}
|
|
628
562
|
end
|
|
629
563
|
|
|
@@ -633,10 +567,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
633
567
|
end
|
|
634
568
|
|
|
635
569
|
context 'when the dependent option is :restrict_with_error' do
|
|
636
|
-
|
|
637
570
|
let(:options) do
|
|
638
571
|
{
|
|
639
|
-
|
|
572
|
+
dependent: :restrict_with_error
|
|
640
573
|
}
|
|
641
574
|
end
|
|
642
575
|
|
|
@@ -647,7 +580,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
647
580
|
end
|
|
648
581
|
|
|
649
582
|
context 'when the dependent option is not provided' do
|
|
650
|
-
|
|
651
583
|
it 'returns nil' do
|
|
652
584
|
expect(association.dependent).to be_nil
|
|
653
585
|
end
|
|
@@ -655,48 +587,41 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
655
587
|
end
|
|
656
588
|
|
|
657
589
|
describe '#inverse_type' do
|
|
658
|
-
|
|
659
590
|
it 'returns nil' do
|
|
660
591
|
expect(association.inverse_type).to be_nil
|
|
661
592
|
end
|
|
662
593
|
end
|
|
663
594
|
|
|
664
595
|
describe '#bindable?' do
|
|
665
|
-
|
|
666
596
|
it 'returns false' do
|
|
667
597
|
expect(association.bindable?(Person.new)).to be(false)
|
|
668
598
|
end
|
|
669
599
|
end
|
|
670
600
|
|
|
671
601
|
describe '#inverses' do
|
|
672
|
-
|
|
673
602
|
context 'when polymorphic' do
|
|
674
|
-
|
|
675
603
|
before do
|
|
676
604
|
BelongingObject.belongs_to :containable, polymorphic: true
|
|
677
605
|
end
|
|
678
606
|
|
|
679
607
|
let(:options) do
|
|
680
608
|
{
|
|
681
|
-
|
|
609
|
+
as: :containable
|
|
682
610
|
}
|
|
683
611
|
end
|
|
684
612
|
|
|
685
613
|
context 'when another object is passed to the method' do
|
|
686
|
-
|
|
687
614
|
let(:instance_of_other_class) do
|
|
688
615
|
BelongingObject.new
|
|
689
616
|
end
|
|
690
617
|
|
|
691
618
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
692
|
-
|
|
693
619
|
it 'returns the :as attribute of this association' do
|
|
694
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
620
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
|
|
695
621
|
end
|
|
696
622
|
end
|
|
697
623
|
|
|
698
624
|
context 'when :inverse_of is specified' do
|
|
699
|
-
|
|
700
625
|
before do
|
|
701
626
|
options.merge!(inverse_of: :inverse_name)
|
|
702
627
|
end
|
|
@@ -707,17 +632,14 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
707
632
|
end
|
|
708
633
|
|
|
709
634
|
context 'when inverse_of is not specified' do
|
|
710
|
-
|
|
711
635
|
it 'returns the :as attribute of this association' do
|
|
712
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
636
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
|
|
713
637
|
end
|
|
714
638
|
end
|
|
715
639
|
end
|
|
716
640
|
|
|
717
641
|
context 'when another object is not passed to the method' do
|
|
718
|
-
|
|
719
642
|
context 'when inverse_of is specified' do
|
|
720
|
-
|
|
721
643
|
before do
|
|
722
644
|
options.merge!(inverse_of: :inverse_name)
|
|
723
645
|
end
|
|
@@ -728,7 +650,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
728
650
|
end
|
|
729
651
|
|
|
730
652
|
context 'when inverse_of is not specified' do
|
|
731
|
-
|
|
732
653
|
it 'returns the :as attribute' do
|
|
733
654
|
expect(association.inverses).to eq([ :containable ])
|
|
734
655
|
end
|
|
@@ -737,13 +658,11 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
737
658
|
end
|
|
738
659
|
|
|
739
660
|
context 'when not polymorphic' do
|
|
740
|
-
|
|
741
661
|
before do
|
|
742
662
|
BelongingObject.belongs_to :owner_object
|
|
743
663
|
end
|
|
744
664
|
|
|
745
665
|
context 'when inverse_of is specified' do
|
|
746
|
-
|
|
747
666
|
before do
|
|
748
667
|
options.merge!(inverse_of: :inverse_name)
|
|
749
668
|
end
|
|
@@ -754,50 +673,42 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
754
673
|
end
|
|
755
674
|
|
|
756
675
|
context 'when inverse_of is not specified' do
|
|
757
|
-
|
|
758
676
|
it 'uses the inverse class to find the inverse name' do
|
|
759
677
|
expect(association.inverses).to eq([ :owner_object ])
|
|
760
678
|
end
|
|
761
679
|
end
|
|
762
680
|
|
|
763
681
|
context 'when :cyclic is specified' do
|
|
764
|
-
|
|
765
682
|
it 'returns the cyclic inverse name' do
|
|
766
|
-
|
|
767
683
|
end
|
|
768
684
|
end
|
|
769
685
|
end
|
|
770
686
|
end
|
|
771
687
|
|
|
772
688
|
describe '#inverse' do
|
|
773
|
-
|
|
774
689
|
context 'when polymorphic' do
|
|
775
|
-
|
|
776
690
|
before do
|
|
777
691
|
BelongingObject.belongs_to :containable, polymorphic: true
|
|
778
692
|
end
|
|
779
693
|
|
|
780
694
|
let(:options) do
|
|
781
695
|
{
|
|
782
|
-
|
|
696
|
+
as: :containable
|
|
783
697
|
}
|
|
784
698
|
end
|
|
785
699
|
|
|
786
700
|
context 'when another object is passed to the method' do
|
|
787
|
-
|
|
788
701
|
let(:instance_of_other_class) do
|
|
789
702
|
BelongingObject.new
|
|
790
703
|
end
|
|
791
704
|
|
|
792
705
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
793
|
-
|
|
794
706
|
it 'returns the :as attribute of this association' do
|
|
795
707
|
expect(association.inverse(instance_of_other_class)).to eq(:containable)
|
|
796
708
|
end
|
|
797
709
|
end
|
|
798
710
|
|
|
799
711
|
context 'when :inverse_of is specified' do
|
|
800
|
-
|
|
801
712
|
before do
|
|
802
713
|
options.merge!(inverse_of: :inverse_name)
|
|
803
714
|
end
|
|
@@ -808,7 +719,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
808
719
|
end
|
|
809
720
|
|
|
810
721
|
context 'when inverse_of is not specified' do
|
|
811
|
-
|
|
812
722
|
it 'returns the :as attribute of this association' do
|
|
813
723
|
expect(association.inverse(instance_of_other_class)).to eq(:containable)
|
|
814
724
|
end
|
|
@@ -816,9 +726,7 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
816
726
|
end
|
|
817
727
|
|
|
818
728
|
context 'when another object is not passed to the method' do
|
|
819
|
-
|
|
820
729
|
context 'when inverse_of is specified' do
|
|
821
|
-
|
|
822
730
|
before do
|
|
823
731
|
options.merge!(inverse_of: :inverse_name)
|
|
824
732
|
end
|
|
@@ -829,7 +737,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
829
737
|
end
|
|
830
738
|
|
|
831
739
|
context 'when inverse_of is not specified' do
|
|
832
|
-
|
|
833
740
|
it 'returns the :as attribute' do
|
|
834
741
|
expect(association.inverse).to eq(:containable)
|
|
835
742
|
end
|
|
@@ -838,13 +745,11 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
838
745
|
end
|
|
839
746
|
|
|
840
747
|
context 'when not polymorphic' do
|
|
841
|
-
|
|
842
748
|
before do
|
|
843
749
|
BelongingObject.belongs_to :owner_object
|
|
844
750
|
end
|
|
845
751
|
|
|
846
752
|
context 'when inverse_of is specified' do
|
|
847
|
-
|
|
848
753
|
before do
|
|
849
754
|
options.merge!(inverse_of: :inverse_name)
|
|
850
755
|
end
|
|
@@ -855,31 +760,24 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
855
760
|
end
|
|
856
761
|
|
|
857
762
|
context 'when inverse_of is not specified' do
|
|
858
|
-
|
|
859
763
|
it 'uses the inverse class to find the inverse name' do
|
|
860
764
|
expect(association.inverse).to eq(:owner_object)
|
|
861
765
|
end
|
|
862
766
|
end
|
|
863
767
|
|
|
864
768
|
context 'when :cyclic is specified' do
|
|
865
|
-
|
|
866
769
|
it 'returns the cyclic inverse name' do
|
|
867
|
-
|
|
868
770
|
end
|
|
869
771
|
end
|
|
870
772
|
end
|
|
871
773
|
end
|
|
872
774
|
|
|
873
775
|
describe '#inverse_association' do
|
|
874
|
-
|
|
875
776
|
end
|
|
876
777
|
|
|
877
778
|
describe '#autosave' do
|
|
878
|
-
|
|
879
779
|
context 'when the autosave option is specified' do
|
|
880
|
-
|
|
881
780
|
context 'when the autosave option is true' do
|
|
882
|
-
|
|
883
781
|
let(:options) do
|
|
884
782
|
{
|
|
885
783
|
autosave: true
|
|
@@ -892,10 +790,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
892
790
|
end
|
|
893
791
|
|
|
894
792
|
context 'when the autosave option is false' do
|
|
895
|
-
|
|
896
793
|
let(:options) do
|
|
897
794
|
{
|
|
898
|
-
|
|
795
|
+
autosave: false
|
|
899
796
|
}
|
|
900
797
|
end
|
|
901
798
|
|
|
@@ -906,7 +803,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
906
803
|
end
|
|
907
804
|
|
|
908
805
|
context 'when the autosave option is not specified' do
|
|
909
|
-
|
|
910
806
|
it 'returns false' do
|
|
911
807
|
expect(association.autosave).to be(false)
|
|
912
808
|
end
|
|
@@ -914,9 +810,7 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
914
810
|
end
|
|
915
811
|
|
|
916
812
|
describe '#relation_class_name' do
|
|
917
|
-
|
|
918
813
|
context 'when the classes are defined in a module' do
|
|
919
|
-
|
|
920
814
|
let(:define_classes) do
|
|
921
815
|
module HasOneAssociationClassName
|
|
922
816
|
class OwnedClass
|
|
@@ -937,13 +831,12 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
937
831
|
define_classes
|
|
938
832
|
|
|
939
833
|
expect(
|
|
940
|
-
|
|
834
|
+
HasOneAssociationClassName::OwnedClass.relations['owner_class'].relation_class_name
|
|
941
835
|
).to eq('OwnerClass')
|
|
942
836
|
end
|
|
943
837
|
end
|
|
944
838
|
|
|
945
839
|
context 'when the :class_name option is specified' do
|
|
946
|
-
|
|
947
840
|
let(:options) do
|
|
948
841
|
{ class_name: 'OtherBelongingObject' }
|
|
949
842
|
end
|
|
@@ -964,13 +857,12 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
964
857
|
end
|
|
965
858
|
|
|
966
859
|
context 'when the class_name option is not specified' do
|
|
967
|
-
|
|
968
860
|
it 'uses the name of the relation to deduce the class name' do
|
|
969
861
|
expect(association.relation_class_name).to eq('BelongingObject')
|
|
970
862
|
end
|
|
971
863
|
end
|
|
972
864
|
|
|
973
|
-
context
|
|
865
|
+
context 'when the class is not defined' do
|
|
974
866
|
let(:name) do
|
|
975
867
|
:undefined_class
|
|
976
868
|
end
|
|
@@ -982,9 +874,7 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
982
874
|
end
|
|
983
875
|
|
|
984
876
|
describe '#relation_class' do
|
|
985
|
-
|
|
986
877
|
context 'when the :class_name option is specified' do
|
|
987
|
-
|
|
988
878
|
let!(:_class) do
|
|
989
879
|
class OtherBelongingObject; end
|
|
990
880
|
OtherBelongingObject
|
|
@@ -1010,7 +900,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1010
900
|
end
|
|
1011
901
|
|
|
1012
902
|
context 'when the class_name option is not specified' do
|
|
1013
|
-
|
|
1014
903
|
it 'uses the name of the relation to deduce the class name' do
|
|
1015
904
|
expect(association.relation_class).to eq(BelongingObject)
|
|
1016
905
|
end
|
|
@@ -1024,7 +913,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1024
913
|
end
|
|
1025
914
|
|
|
1026
915
|
describe '#inverse_class_name' do
|
|
1027
|
-
|
|
1028
916
|
it 'returns the name of the owner class' do
|
|
1029
917
|
expect(association.inverse_class_name).to eq('OwnerObject')
|
|
1030
918
|
end
|
|
@@ -1041,7 +929,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1041
929
|
end
|
|
1042
930
|
|
|
1043
931
|
describe '#inverse_class' do
|
|
1044
|
-
|
|
1045
932
|
it 'returns the owner class' do
|
|
1046
933
|
expect(association.inverse_class).to be(OwnerObject)
|
|
1047
934
|
end
|
|
@@ -1058,9 +945,7 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1058
945
|
end
|
|
1059
946
|
|
|
1060
947
|
describe '#inverse_of' do
|
|
1061
|
-
|
|
1062
948
|
context 'when :inverse_of is specified in the options' do
|
|
1063
|
-
|
|
1064
949
|
let(:options) do
|
|
1065
950
|
{ inverse_of: :a_belonging_object }
|
|
1066
951
|
end
|
|
@@ -1071,7 +956,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1071
956
|
end
|
|
1072
957
|
|
|
1073
958
|
context 'when :inverse_of is not specified in the options' do
|
|
1074
|
-
|
|
1075
959
|
it 'returns nil' do
|
|
1076
960
|
expect(association.inverse_of).to be_nil
|
|
1077
961
|
end
|
|
@@ -1079,25 +963,20 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1079
963
|
end
|
|
1080
964
|
|
|
1081
965
|
describe '#key' do
|
|
1082
|
-
|
|
1083
966
|
it 'returns the primary key' do
|
|
1084
967
|
expect(association.key).to eq(association.primary_key)
|
|
1085
968
|
end
|
|
1086
969
|
end
|
|
1087
970
|
|
|
1088
971
|
describe '#setter' do
|
|
1089
|
-
|
|
1090
972
|
it 'returns a string of the name followed by =' do
|
|
1091
973
|
expect(association.setter).to eq("#{name}=")
|
|
1092
974
|
end
|
|
1093
975
|
end
|
|
1094
976
|
|
|
1095
977
|
describe '#validate?' do
|
|
1096
|
-
|
|
1097
978
|
context 'when :validate is specified in the options' do
|
|
1098
|
-
|
|
1099
979
|
context 'when validate is true' do
|
|
1100
|
-
|
|
1101
980
|
let(:options) do
|
|
1102
981
|
{ validate: true }
|
|
1103
982
|
end
|
|
@@ -1108,7 +987,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1108
987
|
end
|
|
1109
988
|
|
|
1110
989
|
context 'when validate is false' do
|
|
1111
|
-
|
|
1112
990
|
let(:options) do
|
|
1113
991
|
{ validate: false }
|
|
1114
992
|
end
|
|
@@ -1120,7 +998,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1120
998
|
end
|
|
1121
999
|
|
|
1122
1000
|
context 'when :validate is not specified in the options' do
|
|
1123
|
-
|
|
1124
1001
|
it 'returns the validation_default' do
|
|
1125
1002
|
expect(association.send(:validate?)).to eq(association.validation_default)
|
|
1126
1003
|
end
|
|
@@ -1128,11 +1005,8 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1128
1005
|
end
|
|
1129
1006
|
|
|
1130
1007
|
describe '#autobuilding?' do
|
|
1131
|
-
|
|
1132
1008
|
context 'when :autobuild is specified in the options' do
|
|
1133
|
-
|
|
1134
1009
|
context 'when autobuild is true' do
|
|
1135
|
-
|
|
1136
1010
|
let(:options) do
|
|
1137
1011
|
{ autobuild: true }
|
|
1138
1012
|
end
|
|
@@ -1143,7 +1017,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1143
1017
|
end
|
|
1144
1018
|
|
|
1145
1019
|
context 'when autobuild is false' do
|
|
1146
|
-
|
|
1147
1020
|
let(:options) do
|
|
1148
1021
|
{ autobuild: false }
|
|
1149
1022
|
end
|
|
@@ -1155,7 +1028,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1155
1028
|
end
|
|
1156
1029
|
|
|
1157
1030
|
context 'when :validate is not specified in the options' do
|
|
1158
|
-
|
|
1159
1031
|
it 'returns false' do
|
|
1160
1032
|
expect(association.autobuilding?).to be(false)
|
|
1161
1033
|
end
|
|
@@ -1163,23 +1035,19 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1163
1035
|
end
|
|
1164
1036
|
|
|
1165
1037
|
describe '#forced_nil_inverse?' do
|
|
1166
|
-
|
|
1167
1038
|
it 'returns false' do
|
|
1168
1039
|
expect(association.forced_nil_inverse?).to be(false)
|
|
1169
1040
|
end
|
|
1170
1041
|
end
|
|
1171
1042
|
|
|
1172
1043
|
describe '#stores_foreign_key?' do
|
|
1173
|
-
|
|
1174
1044
|
it 'returns false' do
|
|
1175
1045
|
expect(association.stores_foreign_key?).to be(false)
|
|
1176
1046
|
end
|
|
1177
1047
|
end
|
|
1178
1048
|
|
|
1179
1049
|
describe '#inverse_setter' do
|
|
1180
|
-
|
|
1181
1050
|
context 'when an inverse can be determined' do
|
|
1182
|
-
|
|
1183
1051
|
before do
|
|
1184
1052
|
BelongingObject.belongs_to :owner_object
|
|
1185
1053
|
end
|
|
@@ -1190,7 +1058,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1190
1058
|
end
|
|
1191
1059
|
|
|
1192
1060
|
context 'when an inverse cannot be determined' do
|
|
1193
|
-
|
|
1194
1061
|
it 'returns nil' do
|
|
1195
1062
|
expect(association.inverse_setter).to be_nil
|
|
1196
1063
|
end
|
|
@@ -1198,11 +1065,10 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1198
1065
|
end
|
|
1199
1066
|
|
|
1200
1067
|
describe '#extension' do
|
|
1201
|
-
|
|
1202
1068
|
context 'when a block is passed' do
|
|
1203
|
-
|
|
1204
1069
|
let(:association) do
|
|
1205
|
-
has_one_class.embeds_one name, options do
|
|
1070
|
+
has_one_class.embeds_one name, options do
|
|
1071
|
+
end
|
|
1206
1072
|
end
|
|
1207
1073
|
|
|
1208
1074
|
it 'defines an extension module' do
|
|
@@ -1211,12 +1077,12 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1211
1077
|
|
|
1212
1078
|
it 'returns the extension' do
|
|
1213
1079
|
expect(association.extension).to eq(
|
|
1214
|
-
"#{has_one_class.name}::#{has_one_class.name}#{name.to_s.camelize}RelationExtension".constantize
|
|
1080
|
+
"#{has_one_class.name}::#{has_one_class.name}#{name.to_s.camelize}RelationExtension".constantize
|
|
1081
|
+
)
|
|
1215
1082
|
end
|
|
1216
1083
|
end
|
|
1217
1084
|
|
|
1218
1085
|
context 'when an :extension is not specified in the options' do
|
|
1219
|
-
|
|
1220
1086
|
it 'returns false' do
|
|
1221
1087
|
expect(association.extension).to be_nil
|
|
1222
1088
|
end
|
|
@@ -1224,21 +1090,17 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1224
1090
|
end
|
|
1225
1091
|
|
|
1226
1092
|
describe '#foreign_key_setter' do
|
|
1227
|
-
|
|
1228
1093
|
it 'returns the foreign key followed by "="' do
|
|
1229
1094
|
expect(association.foreign_key_setter).to eq("#{association.foreign_key}=")
|
|
1230
1095
|
end
|
|
1231
1096
|
end
|
|
1232
1097
|
|
|
1233
1098
|
describe '#destructive?' do
|
|
1234
|
-
|
|
1235
1099
|
context 'when the dependent option is provided' do
|
|
1236
|
-
|
|
1237
1100
|
context 'when the dependent option is :delete_all' do
|
|
1238
|
-
|
|
1239
1101
|
let(:options) do
|
|
1240
1102
|
{
|
|
1241
|
-
|
|
1103
|
+
dependent: :delete_all
|
|
1242
1104
|
}
|
|
1243
1105
|
end
|
|
1244
1106
|
|
|
@@ -1248,10 +1110,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1248
1110
|
end
|
|
1249
1111
|
|
|
1250
1112
|
context 'when the dependent option is :destroy' do
|
|
1251
|
-
|
|
1252
1113
|
let(:options) do
|
|
1253
1114
|
{
|
|
1254
|
-
|
|
1115
|
+
dependent: :destroy
|
|
1255
1116
|
}
|
|
1256
1117
|
end
|
|
1257
1118
|
|
|
@@ -1261,10 +1122,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1261
1122
|
end
|
|
1262
1123
|
|
|
1263
1124
|
context 'when the dependent option is :nullify' do
|
|
1264
|
-
|
|
1265
1125
|
let(:options) do
|
|
1266
1126
|
{
|
|
1267
|
-
|
|
1127
|
+
dependent: :nullify
|
|
1268
1128
|
}
|
|
1269
1129
|
end
|
|
1270
1130
|
|
|
@@ -1274,10 +1134,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1274
1134
|
end
|
|
1275
1135
|
|
|
1276
1136
|
context 'when the dependent option is :restrict_with_exception' do
|
|
1277
|
-
|
|
1278
1137
|
let(:options) do
|
|
1279
1138
|
{
|
|
1280
|
-
|
|
1139
|
+
dependent: :restrict_with_exception
|
|
1281
1140
|
}
|
|
1282
1141
|
end
|
|
1283
1142
|
|
|
@@ -1287,10 +1146,9 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1287
1146
|
end
|
|
1288
1147
|
|
|
1289
1148
|
context 'when the dependent option is :restrict_with_error' do
|
|
1290
|
-
|
|
1291
1149
|
let(:options) do
|
|
1292
1150
|
{
|
|
1293
|
-
|
|
1151
|
+
dependent: :restrict_with_error
|
|
1294
1152
|
}
|
|
1295
1153
|
end
|
|
1296
1154
|
|
|
@@ -1301,7 +1159,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1301
1159
|
end
|
|
1302
1160
|
|
|
1303
1161
|
context 'when the dependent option is not provided' do
|
|
1304
|
-
|
|
1305
1162
|
it 'returns false' do
|
|
1306
1163
|
expect(association.destructive?).to be(false)
|
|
1307
1164
|
end
|
|
@@ -1309,7 +1166,6 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1309
1166
|
end
|
|
1310
1167
|
|
|
1311
1168
|
context 'when the classes are defined in a module' do
|
|
1312
|
-
|
|
1313
1169
|
let(:define_classes) do
|
|
1314
1170
|
module HasOneAssociationModuleDefinitions
|
|
1315
1171
|
class OwnedClass
|
|
@@ -1341,28 +1197,24 @@ describe Mongoid::Association::Referenced::HasOne do
|
|
|
1341
1197
|
end
|
|
1342
1198
|
|
|
1343
1199
|
describe '#nested_builder' do
|
|
1344
|
-
|
|
1345
1200
|
it 'returns an instance of Association::Nested::One' do
|
|
1346
1201
|
expect(association.nested_builder({}, {})).to be_a(Mongoid::Association::Nested::One)
|
|
1347
1202
|
end
|
|
1348
1203
|
end
|
|
1349
1204
|
|
|
1350
1205
|
describe '#path' do
|
|
1351
|
-
|
|
1352
1206
|
it 'returns an instance of Mongoid::Atomic::Paths::Root' do
|
|
1353
|
-
expect(association.path(double(
|
|
1207
|
+
expect(association.path(double(_parent: true))).to be_a(Mongoid::Atomic::Paths::Root)
|
|
1354
1208
|
end
|
|
1355
1209
|
end
|
|
1356
1210
|
|
|
1357
1211
|
describe '#foreign_key_check' do
|
|
1358
|
-
|
|
1359
1212
|
it 'returns the nil' do
|
|
1360
1213
|
expect(association.foreign_key_check).to be_nil
|
|
1361
1214
|
end
|
|
1362
1215
|
end
|
|
1363
1216
|
|
|
1364
1217
|
describe '#create_relation' do
|
|
1365
|
-
|
|
1366
1218
|
let(:owner) do
|
|
1367
1219
|
OwnerObject.new
|
|
1368
1220
|
end
|