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_many_models'
|
|
6
5
|
|
|
7
6
|
describe Mongoid::Association::Referenced::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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_many macro
|
|
@@ -124,10 +116,9 @@ describe Mongoid::Association::Referenced::HasMany 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::HasMany 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::HasMany 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 :has_many macro
|
|
@@ -172,13 +161,10 @@ describe Mongoid::Association::Referenced::HasMany 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::HasMany 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_many_class.polymorphic).to be(false)
|
|
198
183
|
end
|
|
@@ -200,14 +185,11 @@ describe Mongoid::Association::Referenced::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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::HasMany 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,35 +390,30 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
429
390
|
end
|
|
430
391
|
|
|
431
392
|
describe '#relation' do
|
|
432
|
-
|
|
433
393
|
it 'returns Mongoid::Association::Referenced::HasMany::Proxy' do
|
|
434
394
|
expect(association.relation).to be(Mongoid::Association::Referenced::HasMany::Proxy)
|
|
435
395
|
end
|
|
436
396
|
end
|
|
437
397
|
|
|
438
398
|
describe '#validation_default' do
|
|
439
|
-
|
|
440
399
|
it 'returns true' do
|
|
441
400
|
expect(association.validation_default).to be(true)
|
|
442
401
|
end
|
|
443
402
|
end
|
|
444
403
|
|
|
445
404
|
describe '#name' do
|
|
446
|
-
|
|
447
405
|
it 'returns the name of the relation' do
|
|
448
406
|
expect(association.name).to be(name)
|
|
449
407
|
end
|
|
450
408
|
end
|
|
451
409
|
|
|
452
410
|
describe '#options' do
|
|
453
|
-
|
|
454
411
|
it 'returns the options' do
|
|
455
412
|
expect(association.options).to be(options)
|
|
456
413
|
end
|
|
457
414
|
end
|
|
458
415
|
|
|
459
416
|
describe '#merge!' do
|
|
460
|
-
|
|
461
417
|
end
|
|
462
418
|
|
|
463
419
|
describe '#store_as' do
|
|
@@ -467,19 +423,16 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
467
423
|
end
|
|
468
424
|
|
|
469
425
|
describe '#touchable?' do
|
|
470
|
-
|
|
471
426
|
it 'return false' do
|
|
472
427
|
expect(association.send(:touchable?)).to be(false)
|
|
473
428
|
end
|
|
474
429
|
end
|
|
475
430
|
|
|
476
431
|
describe '#order' do
|
|
477
|
-
|
|
478
432
|
context 'when order is specified in the options' do
|
|
479
|
-
|
|
480
433
|
let(:options) do
|
|
481
434
|
{
|
|
482
|
-
|
|
435
|
+
order: :rating.desc
|
|
483
436
|
}
|
|
484
437
|
end
|
|
485
438
|
|
|
@@ -489,7 +442,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
489
442
|
end
|
|
490
443
|
|
|
491
444
|
context 'when order is not specified in the options' do
|
|
492
|
-
|
|
493
445
|
it 'returns nil' do
|
|
494
446
|
expect(association.order).to be_nil
|
|
495
447
|
end
|
|
@@ -497,9 +449,7 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
497
449
|
end
|
|
498
450
|
|
|
499
451
|
describe '#scope' do
|
|
500
|
-
|
|
501
452
|
context 'when scope is specified in the options' do
|
|
502
|
-
|
|
503
453
|
let(:options) do
|
|
504
454
|
{ scope: -> { unscoped.where(foo: :bar) } }
|
|
505
455
|
end
|
|
@@ -510,7 +460,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
510
460
|
end
|
|
511
461
|
|
|
512
462
|
context 'when scope is not specified in the options' do
|
|
513
|
-
|
|
514
463
|
it 'returns nil' do
|
|
515
464
|
expect(association.scope).to be_nil
|
|
516
465
|
end
|
|
@@ -518,12 +467,10 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
518
467
|
end
|
|
519
468
|
|
|
520
469
|
describe '#as' do
|
|
521
|
-
|
|
522
470
|
context 'when :as is specified in the options' do
|
|
523
|
-
|
|
524
471
|
let(:options) do
|
|
525
472
|
{
|
|
526
|
-
|
|
473
|
+
as: :containable
|
|
527
474
|
}
|
|
528
475
|
end
|
|
529
476
|
|
|
@@ -533,7 +480,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
533
480
|
end
|
|
534
481
|
|
|
535
482
|
context 'when :as is not specified in the options' do
|
|
536
|
-
|
|
537
483
|
it 'returns nil' do
|
|
538
484
|
expect(association.as).to be_nil
|
|
539
485
|
end
|
|
@@ -541,23 +487,19 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
541
487
|
end
|
|
542
488
|
|
|
543
489
|
describe '#polymorphic?' do
|
|
544
|
-
|
|
545
490
|
context 'when :as is specified in the options' do
|
|
546
|
-
|
|
547
491
|
let(:options) do
|
|
548
492
|
{
|
|
549
|
-
|
|
493
|
+
as: :containable
|
|
550
494
|
}
|
|
551
495
|
end
|
|
552
496
|
|
|
553
497
|
it 'returns true' do
|
|
554
498
|
expect(association.polymorphic?).to be(true)
|
|
555
499
|
end
|
|
556
|
-
|
|
557
500
|
end
|
|
558
501
|
|
|
559
502
|
context 'when :as is not specified in the options' do
|
|
560
|
-
|
|
561
503
|
it 'returns false' do
|
|
562
504
|
expect(association.polymorphic?).to be(false)
|
|
563
505
|
end
|
|
@@ -565,20 +507,17 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
565
507
|
end
|
|
566
508
|
|
|
567
509
|
describe '#type_setter' do
|
|
568
|
-
|
|
569
510
|
context 'when polymorphic' do
|
|
570
|
-
|
|
571
511
|
let(:options) do
|
|
572
512
|
{ as: :containable }
|
|
573
513
|
end
|
|
574
514
|
|
|
575
515
|
it 'returns the type followed by = as a String' do
|
|
576
|
-
expect(association.type_setter).to eq(
|
|
516
|
+
expect(association.type_setter).to eq('containable_type=')
|
|
577
517
|
end
|
|
578
518
|
end
|
|
579
519
|
|
|
580
520
|
context 'when not polymorphic' do
|
|
581
|
-
|
|
582
521
|
it 'returns nil' do
|
|
583
522
|
expect(association.type).to be_nil
|
|
584
523
|
end
|
|
@@ -586,14 +525,11 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
586
525
|
end
|
|
587
526
|
|
|
588
527
|
describe '#dependent' do
|
|
589
|
-
|
|
590
528
|
context 'when the dependent option is provided' do
|
|
591
|
-
|
|
592
529
|
context 'when the dependent option is :delete_all' do
|
|
593
|
-
|
|
594
530
|
let(:options) do
|
|
595
531
|
{
|
|
596
|
-
|
|
532
|
+
dependent: :delete_all
|
|
597
533
|
}
|
|
598
534
|
end
|
|
599
535
|
|
|
@@ -603,10 +539,9 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
603
539
|
end
|
|
604
540
|
|
|
605
541
|
context 'when the dependent option is :destroy' do
|
|
606
|
-
|
|
607
542
|
let(:options) do
|
|
608
543
|
{
|
|
609
|
-
|
|
544
|
+
dependent: :destroy
|
|
610
545
|
}
|
|
611
546
|
end
|
|
612
547
|
|
|
@@ -616,10 +551,9 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
616
551
|
end
|
|
617
552
|
|
|
618
553
|
context 'when the dependent option is :nullify' do
|
|
619
|
-
|
|
620
554
|
let(:options) do
|
|
621
555
|
{
|
|
622
|
-
|
|
556
|
+
dependent: :nullify
|
|
623
557
|
}
|
|
624
558
|
end
|
|
625
559
|
|
|
@@ -629,10 +563,9 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
629
563
|
end
|
|
630
564
|
|
|
631
565
|
context 'when the dependent option is :restrict_with_exception' do
|
|
632
|
-
|
|
633
566
|
let(:options) do
|
|
634
567
|
{
|
|
635
|
-
|
|
568
|
+
dependent: :restrict_with_exception
|
|
636
569
|
}
|
|
637
570
|
end
|
|
638
571
|
|
|
@@ -642,10 +575,9 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
642
575
|
end
|
|
643
576
|
|
|
644
577
|
context 'when the dependent option is :restrict_with_error' do
|
|
645
|
-
|
|
646
578
|
let(:options) do
|
|
647
579
|
{
|
|
648
|
-
|
|
580
|
+
dependent: :restrict_with_error
|
|
649
581
|
}
|
|
650
582
|
end
|
|
651
583
|
|
|
@@ -656,7 +588,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
656
588
|
end
|
|
657
589
|
|
|
658
590
|
context 'when the dependent option is not provided' do
|
|
659
|
-
|
|
660
591
|
it 'returns nil' do
|
|
661
592
|
expect(association.dependent).to be_nil
|
|
662
593
|
end
|
|
@@ -664,48 +595,41 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
664
595
|
end
|
|
665
596
|
|
|
666
597
|
describe '#inverse_type' do
|
|
667
|
-
|
|
668
598
|
it 'returns nil' do
|
|
669
599
|
expect(association.inverse_type).to be_nil
|
|
670
600
|
end
|
|
671
601
|
end
|
|
672
602
|
|
|
673
603
|
describe '#bindable?' do
|
|
674
|
-
|
|
675
604
|
it 'returns false' do
|
|
676
605
|
expect(association.bindable?(Person.new)).to be(false)
|
|
677
606
|
end
|
|
678
607
|
end
|
|
679
608
|
|
|
680
609
|
describe '#inverses' do
|
|
681
|
-
|
|
682
610
|
context 'when polymorphic' do
|
|
683
|
-
|
|
684
611
|
before do
|
|
685
612
|
BelongingObject.belongs_to :containable, polymorphic: true
|
|
686
613
|
end
|
|
687
614
|
|
|
688
615
|
let(:options) do
|
|
689
616
|
{
|
|
690
|
-
|
|
617
|
+
as: :containable
|
|
691
618
|
}
|
|
692
619
|
end
|
|
693
620
|
|
|
694
621
|
context 'when another object is passed to the method' do
|
|
695
|
-
|
|
696
622
|
let(:instance_of_other_class) do
|
|
697
623
|
BelongingObject.new
|
|
698
624
|
end
|
|
699
625
|
|
|
700
626
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
701
|
-
|
|
702
627
|
it 'returns the :as attribute of this association' do
|
|
703
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
628
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
|
|
704
629
|
end
|
|
705
630
|
end
|
|
706
631
|
|
|
707
632
|
context 'when :inverse_of is specified' do
|
|
708
|
-
|
|
709
633
|
before do
|
|
710
634
|
options.merge!(inverse_of: :inverse_name)
|
|
711
635
|
end
|
|
@@ -716,17 +640,14 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
716
640
|
end
|
|
717
641
|
|
|
718
642
|
context 'when inverse_of is not specified' do
|
|
719
|
-
|
|
720
643
|
it 'returns the :as attribute of this association' do
|
|
721
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
644
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
|
|
722
645
|
end
|
|
723
646
|
end
|
|
724
647
|
end
|
|
725
648
|
|
|
726
649
|
context 'when another object is not passed to the method' do
|
|
727
|
-
|
|
728
650
|
context 'when inverse_of is specified' do
|
|
729
|
-
|
|
730
651
|
before do
|
|
731
652
|
options.merge!(inverse_of: :inverse_name)
|
|
732
653
|
end
|
|
@@ -737,7 +658,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
737
658
|
end
|
|
738
659
|
|
|
739
660
|
context 'when inverse_of is not specified' do
|
|
740
|
-
|
|
741
661
|
it 'returns the :as attribute' do
|
|
742
662
|
expect(association.inverses).to eq([ :containable ])
|
|
743
663
|
end
|
|
@@ -746,13 +666,11 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
746
666
|
end
|
|
747
667
|
|
|
748
668
|
context 'when not polymorphic' do
|
|
749
|
-
|
|
750
669
|
before do
|
|
751
670
|
BelongingObject.belongs_to :owner_object
|
|
752
671
|
end
|
|
753
672
|
|
|
754
673
|
context 'when inverse_of is specified' do
|
|
755
|
-
|
|
756
674
|
before do
|
|
757
675
|
options.merge!(inverse_of: :inverse_name)
|
|
758
676
|
end
|
|
@@ -763,50 +681,42 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
763
681
|
end
|
|
764
682
|
|
|
765
683
|
context 'when inverse_of is not specified' do
|
|
766
|
-
|
|
767
684
|
it 'uses the inverse class to find the inverse name' do
|
|
768
685
|
expect(association.inverses).to eq([ :owner_object ])
|
|
769
686
|
end
|
|
770
687
|
end
|
|
771
688
|
|
|
772
689
|
context 'when :cyclic is specified' do
|
|
773
|
-
|
|
774
690
|
it 'returns the cyclic inverse name' do
|
|
775
|
-
|
|
776
691
|
end
|
|
777
692
|
end
|
|
778
693
|
end
|
|
779
694
|
end
|
|
780
695
|
|
|
781
696
|
describe '##inverse' do
|
|
782
|
-
|
|
783
697
|
context 'when polymorphic' do
|
|
784
|
-
|
|
785
698
|
before do
|
|
786
699
|
BelongingObject.belongs_to :containable, polymorphic: true
|
|
787
700
|
end
|
|
788
701
|
|
|
789
702
|
let(:options) do
|
|
790
703
|
{
|
|
791
|
-
|
|
704
|
+
as: :containable
|
|
792
705
|
}
|
|
793
706
|
end
|
|
794
707
|
|
|
795
708
|
context 'when another object is passed to the method' do
|
|
796
|
-
|
|
797
709
|
let(:instance_of_other_class) do
|
|
798
710
|
BelongingObject.new
|
|
799
711
|
end
|
|
800
712
|
|
|
801
713
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
802
|
-
|
|
803
714
|
it 'returns the :as attribute of this association' do
|
|
804
715
|
expect(association.inverse(instance_of_other_class)).to eq(:containable)
|
|
805
716
|
end
|
|
806
717
|
end
|
|
807
718
|
|
|
808
719
|
context 'when :inverse_of is specified' do
|
|
809
|
-
|
|
810
720
|
before do
|
|
811
721
|
options.merge!(inverse_of: :inverse_name)
|
|
812
722
|
end
|
|
@@ -817,7 +727,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
817
727
|
end
|
|
818
728
|
|
|
819
729
|
context 'when inverse_of is not specified' do
|
|
820
|
-
|
|
821
730
|
it 'returns the :as attribute of this association' do
|
|
822
731
|
expect(association.inverse(instance_of_other_class)).to eq(:containable)
|
|
823
732
|
end
|
|
@@ -825,9 +734,7 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
825
734
|
end
|
|
826
735
|
|
|
827
736
|
context 'when another object is not passed to the method' do
|
|
828
|
-
|
|
829
737
|
context 'when inverse_of is specified' do
|
|
830
|
-
|
|
831
738
|
before do
|
|
832
739
|
options.merge!(inverse_of: :inverse_name)
|
|
833
740
|
end
|
|
@@ -838,7 +745,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
838
745
|
end
|
|
839
746
|
|
|
840
747
|
context 'when inverse_of is not specified' do
|
|
841
|
-
|
|
842
748
|
it 'returns the :as attribute' do
|
|
843
749
|
expect(association.inverse).to eq(:containable)
|
|
844
750
|
end
|
|
@@ -847,13 +753,11 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
847
753
|
end
|
|
848
754
|
|
|
849
755
|
context 'when not polymorphic' do
|
|
850
|
-
|
|
851
756
|
before do
|
|
852
757
|
BelongingObject.belongs_to :owner_object
|
|
853
758
|
end
|
|
854
759
|
|
|
855
760
|
context 'when inverse_of is specified' do
|
|
856
|
-
|
|
857
761
|
before do
|
|
858
762
|
options.merge!(inverse_of: :inverse_name)
|
|
859
763
|
end
|
|
@@ -864,34 +768,27 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
864
768
|
end
|
|
865
769
|
|
|
866
770
|
context 'when inverse_of is not specified' do
|
|
867
|
-
|
|
868
771
|
it 'uses the inverse class to find the inverse name' do
|
|
869
772
|
expect(association.inverse).to eq(:owner_object)
|
|
870
773
|
end
|
|
871
774
|
end
|
|
872
775
|
|
|
873
776
|
context 'when :cyclic is specified' do
|
|
874
|
-
|
|
875
777
|
it 'returns the cyclic inverse name' do
|
|
876
|
-
|
|
877
778
|
end
|
|
878
779
|
end
|
|
879
780
|
end
|
|
880
781
|
end
|
|
881
782
|
|
|
882
783
|
describe '#inverse_association' do
|
|
883
|
-
|
|
884
784
|
end
|
|
885
785
|
|
|
886
786
|
describe '#autosave' do
|
|
887
|
-
|
|
888
787
|
context 'when the autosave option is specified' do
|
|
889
|
-
|
|
890
788
|
context 'when the autosave option is true' do
|
|
891
|
-
|
|
892
789
|
let(:options) do
|
|
893
790
|
{
|
|
894
|
-
|
|
791
|
+
autosave: true
|
|
895
792
|
}
|
|
896
793
|
end
|
|
897
794
|
|
|
@@ -901,10 +798,9 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
901
798
|
end
|
|
902
799
|
|
|
903
800
|
context 'when the autosave option is false' do
|
|
904
|
-
|
|
905
801
|
let(:options) do
|
|
906
802
|
{
|
|
907
|
-
|
|
803
|
+
autosave: false
|
|
908
804
|
}
|
|
909
805
|
end
|
|
910
806
|
|
|
@@ -915,7 +811,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
915
811
|
end
|
|
916
812
|
|
|
917
813
|
context 'when the autosave option is not specified' do
|
|
918
|
-
|
|
919
814
|
it 'returns false' do
|
|
920
815
|
expect(association.autosave).to be(false)
|
|
921
816
|
end
|
|
@@ -923,9 +818,7 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
923
818
|
end
|
|
924
819
|
|
|
925
820
|
describe '#relation_class_name' do
|
|
926
|
-
|
|
927
821
|
context 'when the :class_name option is specified' do
|
|
928
|
-
|
|
929
822
|
let(:options) do
|
|
930
823
|
{ class_name: 'OtherBelongingObject' }
|
|
931
824
|
end
|
|
@@ -936,7 +829,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
936
829
|
end
|
|
937
830
|
|
|
938
831
|
context 'when the class_name option is not specified' do
|
|
939
|
-
|
|
940
832
|
it 'uses the name of the relation to deduce the class name' do
|
|
941
833
|
expect(association.relation_class_name).to eq('BelongingObject')
|
|
942
834
|
end
|
|
@@ -944,9 +836,7 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
944
836
|
end
|
|
945
837
|
|
|
946
838
|
describe '#relation_class' do
|
|
947
|
-
|
|
948
839
|
context 'when the :class_name option is specified' do
|
|
949
|
-
|
|
950
840
|
let!(:_class) do
|
|
951
841
|
class OtherBelongingObject; end
|
|
952
842
|
OtherBelongingObject
|
|
@@ -962,7 +852,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
962
852
|
end
|
|
963
853
|
|
|
964
854
|
context 'when the class_name option is not specified' do
|
|
965
|
-
|
|
966
855
|
it 'uses the name of the relation to deduce the class name' do
|
|
967
856
|
expect(association.relation_class).to eq(BelongingObject)
|
|
968
857
|
end
|
|
@@ -970,23 +859,19 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
970
859
|
end
|
|
971
860
|
|
|
972
861
|
describe '#inverse_class_name' do
|
|
973
|
-
|
|
974
862
|
it 'returns the name of the owner class' do
|
|
975
863
|
expect(association.inverse_class_name).to eq(OwnerObject.name)
|
|
976
864
|
end
|
|
977
865
|
end
|
|
978
866
|
|
|
979
867
|
describe '#inverse_class' do
|
|
980
|
-
|
|
981
868
|
it 'returns the owner class' do
|
|
982
869
|
expect(association.inverse_class).to be(OwnerObject)
|
|
983
870
|
end
|
|
984
871
|
end
|
|
985
872
|
|
|
986
873
|
describe '#inverse_of' do
|
|
987
|
-
|
|
988
874
|
context 'when :inverse_of is specified in the options' do
|
|
989
|
-
|
|
990
875
|
let(:options) do
|
|
991
876
|
{ inverse_of: :a_belonging_object }
|
|
992
877
|
end
|
|
@@ -997,7 +882,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
997
882
|
end
|
|
998
883
|
|
|
999
884
|
context 'when :inverse_of is not specified in the options' do
|
|
1000
|
-
|
|
1001
885
|
it 'returns nil' do
|
|
1002
886
|
expect(association.inverse_of).to be_nil
|
|
1003
887
|
end
|
|
@@ -1005,25 +889,20 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1005
889
|
end
|
|
1006
890
|
|
|
1007
891
|
describe '#key' do
|
|
1008
|
-
|
|
1009
892
|
it 'returns the primary key' do
|
|
1010
893
|
expect(association.key).to eq(association.primary_key)
|
|
1011
894
|
end
|
|
1012
895
|
end
|
|
1013
896
|
|
|
1014
897
|
describe '#setter' do
|
|
1015
|
-
|
|
1016
898
|
it 'returns a string of the name followed by =' do
|
|
1017
899
|
expect(association.setter).to eq("#{name}=")
|
|
1018
900
|
end
|
|
1019
901
|
end
|
|
1020
902
|
|
|
1021
903
|
describe '#validate?' do
|
|
1022
|
-
|
|
1023
904
|
context 'when :validate is specified in the options' do
|
|
1024
|
-
|
|
1025
905
|
context 'when validate is true' do
|
|
1026
|
-
|
|
1027
906
|
let(:options) do
|
|
1028
907
|
{ validate: true }
|
|
1029
908
|
end
|
|
@@ -1034,7 +913,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1034
913
|
end
|
|
1035
914
|
|
|
1036
915
|
context 'when validate is false' do
|
|
1037
|
-
|
|
1038
916
|
let(:options) do
|
|
1039
917
|
{ validate: false }
|
|
1040
918
|
end
|
|
@@ -1046,7 +924,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1046
924
|
end
|
|
1047
925
|
|
|
1048
926
|
context 'when :validate is not specified in the options' do
|
|
1049
|
-
|
|
1050
927
|
it 'returns the validation_default' do
|
|
1051
928
|
expect(association.send(:validate?)).to eq(association.validation_default)
|
|
1052
929
|
end
|
|
@@ -1054,23 +931,19 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1054
931
|
end
|
|
1055
932
|
|
|
1056
933
|
describe '#forced_nil_inverse?' do
|
|
1057
|
-
|
|
1058
934
|
it 'returns false' do
|
|
1059
935
|
expect(association.forced_nil_inverse?).to be(false)
|
|
1060
936
|
end
|
|
1061
937
|
end
|
|
1062
938
|
|
|
1063
939
|
describe '#stores_foreign_key?' do
|
|
1064
|
-
|
|
1065
940
|
it 'returns false' do
|
|
1066
941
|
expect(association.stores_foreign_key?).to be(false)
|
|
1067
942
|
end
|
|
1068
943
|
end
|
|
1069
944
|
|
|
1070
945
|
describe '#inverse_setter' do
|
|
1071
|
-
|
|
1072
946
|
context 'when an inverse can be determined' do
|
|
1073
|
-
|
|
1074
947
|
before do
|
|
1075
948
|
BelongingObject.belongs_to :owner_object
|
|
1076
949
|
end
|
|
@@ -1081,7 +954,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1081
954
|
end
|
|
1082
955
|
|
|
1083
956
|
context 'when an inverse cannot be determined' do
|
|
1084
|
-
|
|
1085
957
|
it 'returns nil' do
|
|
1086
958
|
expect(association.inverse_setter).to be_nil
|
|
1087
959
|
end
|
|
@@ -1089,11 +961,10 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1089
961
|
end
|
|
1090
962
|
|
|
1091
963
|
describe '#extension' do
|
|
1092
|
-
|
|
1093
964
|
context 'when a block is passed' do
|
|
1094
|
-
|
|
1095
965
|
let(:association) do
|
|
1096
|
-
has_many_class.embeds_one name, options do
|
|
966
|
+
has_many_class.embeds_one name, options do
|
|
967
|
+
end
|
|
1097
968
|
end
|
|
1098
969
|
|
|
1099
970
|
it 'defines an extension module' do
|
|
@@ -1102,12 +973,12 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1102
973
|
|
|
1103
974
|
it 'returns the extension' do
|
|
1104
975
|
expect(association.extension).to eq(
|
|
1105
|
-
"#{has_many_class.name}::#{has_many_class.name}#{name.to_s.camelize}RelationExtension".constantize
|
|
976
|
+
"#{has_many_class.name}::#{has_many_class.name}#{name.to_s.camelize}RelationExtension".constantize
|
|
977
|
+
)
|
|
1106
978
|
end
|
|
1107
979
|
end
|
|
1108
980
|
|
|
1109
981
|
context 'when an :extension is not specified in the options' do
|
|
1110
|
-
|
|
1111
982
|
it 'returns false' do
|
|
1112
983
|
expect(association.extension).to be_nil
|
|
1113
984
|
end
|
|
@@ -1115,28 +986,23 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1115
986
|
end
|
|
1116
987
|
|
|
1117
988
|
describe '#foreign_key_setter' do
|
|
1118
|
-
|
|
1119
989
|
it 'returns the foreign key followed by "="' do
|
|
1120
990
|
expect(association.foreign_key_setter).to eq("#{association.foreign_key}=")
|
|
1121
991
|
end
|
|
1122
992
|
end
|
|
1123
993
|
|
|
1124
994
|
describe '#criteria' do
|
|
1125
|
-
|
|
1126
995
|
it 'returns a criteria object' do
|
|
1127
996
|
expect(association.criteria(OwnerObject.new)).to be_a(Mongoid::Criteria)
|
|
1128
997
|
end
|
|
1129
998
|
end
|
|
1130
999
|
|
|
1131
1000
|
describe '#destructive?' do
|
|
1132
|
-
|
|
1133
1001
|
context 'when the dependent option is provided' do
|
|
1134
|
-
|
|
1135
1002
|
context 'when the dependent option is :delete_all' do
|
|
1136
|
-
|
|
1137
1003
|
let(:options) do
|
|
1138
1004
|
{
|
|
1139
|
-
|
|
1005
|
+
dependent: :delete_all
|
|
1140
1006
|
}
|
|
1141
1007
|
end
|
|
1142
1008
|
|
|
@@ -1146,10 +1012,9 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1146
1012
|
end
|
|
1147
1013
|
|
|
1148
1014
|
context 'when the dependent option is :destroy' do
|
|
1149
|
-
|
|
1150
1015
|
let(:options) do
|
|
1151
1016
|
{
|
|
1152
|
-
|
|
1017
|
+
dependent: :destroy
|
|
1153
1018
|
}
|
|
1154
1019
|
end
|
|
1155
1020
|
|
|
@@ -1159,10 +1024,9 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1159
1024
|
end
|
|
1160
1025
|
|
|
1161
1026
|
context 'when the dependent option is :nullify' do
|
|
1162
|
-
|
|
1163
1027
|
let(:options) do
|
|
1164
1028
|
{
|
|
1165
|
-
|
|
1029
|
+
dependent: :nullify
|
|
1166
1030
|
}
|
|
1167
1031
|
end
|
|
1168
1032
|
|
|
@@ -1172,10 +1036,9 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1172
1036
|
end
|
|
1173
1037
|
|
|
1174
1038
|
context 'when the dependent option is :restrict_with_exception' do
|
|
1175
|
-
|
|
1176
1039
|
let(:options) do
|
|
1177
1040
|
{
|
|
1178
|
-
|
|
1041
|
+
dependent: :restrict_with_exception
|
|
1179
1042
|
}
|
|
1180
1043
|
end
|
|
1181
1044
|
|
|
@@ -1185,10 +1048,9 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1185
1048
|
end
|
|
1186
1049
|
|
|
1187
1050
|
context 'when the dependent option is :restrict_with_error' do
|
|
1188
|
-
|
|
1189
1051
|
let(:options) do
|
|
1190
1052
|
{
|
|
1191
|
-
|
|
1053
|
+
dependent: :restrict_with_error
|
|
1192
1054
|
}
|
|
1193
1055
|
end
|
|
1194
1056
|
|
|
@@ -1199,7 +1061,6 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1199
1061
|
end
|
|
1200
1062
|
|
|
1201
1063
|
context 'when the dependent option is not provided' do
|
|
1202
|
-
|
|
1203
1064
|
it 'returns false' do
|
|
1204
1065
|
expect(association.destructive?).to be(false)
|
|
1205
1066
|
end
|
|
@@ -1207,28 +1068,24 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1207
1068
|
end
|
|
1208
1069
|
|
|
1209
1070
|
describe '#nested_builder' do
|
|
1210
|
-
|
|
1211
1071
|
it 'returns an instance of Association::Nested::Many' do
|
|
1212
1072
|
expect(association.nested_builder({}, {})).to be_a(Mongoid::Association::Nested::Many)
|
|
1213
1073
|
end
|
|
1214
1074
|
end
|
|
1215
1075
|
|
|
1216
1076
|
describe '#path' do
|
|
1217
|
-
|
|
1218
1077
|
it 'returns an instance of Mongoid::Atomic::Paths::Root' do
|
|
1219
|
-
expect(association.path(double(
|
|
1078
|
+
expect(association.path(double(_parent: true))).to be_a(Mongoid::Atomic::Paths::Root)
|
|
1220
1079
|
end
|
|
1221
1080
|
end
|
|
1222
1081
|
|
|
1223
1082
|
describe '#foreign_key_check' do
|
|
1224
|
-
|
|
1225
1083
|
it 'returns the nil' do
|
|
1226
1084
|
expect(association.foreign_key_check).to be_nil
|
|
1227
1085
|
end
|
|
1228
1086
|
end
|
|
1229
1087
|
|
|
1230
1088
|
describe '#create_relation' do
|
|
1231
|
-
|
|
1232
1089
|
let(:owner) do
|
|
1233
1090
|
OwnerObject.new
|
|
1234
1091
|
end
|
|
@@ -1248,8 +1105,10 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1248
1105
|
end
|
|
1249
1106
|
end
|
|
1250
1107
|
|
|
1251
|
-
context
|
|
1108
|
+
context 'when adding an object to the association' do
|
|
1252
1109
|
let!(:start_time) { Timecop.freeze(Time.at(Time.now.to_i)) }
|
|
1110
|
+
let!(:school) { HmmSchool.create! }
|
|
1111
|
+
let!(:student) { HmmStudent.create! }
|
|
1253
1112
|
|
|
1254
1113
|
let(:update_time) do
|
|
1255
1114
|
Timecop.freeze(Time.at(Time.now.to_i) + 2)
|
|
@@ -1259,15 +1118,12 @@ describe Mongoid::Association::Referenced::HasMany do
|
|
|
1259
1118
|
Timecop.return
|
|
1260
1119
|
end
|
|
1261
1120
|
|
|
1262
|
-
let!(:school) { HmmSchool.create! }
|
|
1263
|
-
let!(:student) { HmmStudent.create! }
|
|
1264
|
-
|
|
1265
1121
|
before do
|
|
1266
1122
|
update_time
|
|
1267
1123
|
student.update(school: school)
|
|
1268
1124
|
end
|
|
1269
1125
|
|
|
1270
|
-
it
|
|
1126
|
+
it 'updates the updated_at' do
|
|
1271
1127
|
expect(student.updated_at).to eq(update_time)
|
|
1272
1128
|
end
|
|
1273
1129
|
end
|