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
|
|
3
|
+
require 'spec_helper'
|
|
5
4
|
require_relative 'embeds_many_models'
|
|
6
5
|
|
|
7
6
|
describe Mongoid::Association::Embedded::EmbedsMany do
|
|
8
|
-
|
|
9
7
|
before do
|
|
10
8
|
class Container; include Mongoid::Document; end
|
|
11
9
|
class EmbeddedObject; include Mongoid::Document; end
|
|
@@ -29,14 +27,13 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
29
27
|
end
|
|
30
28
|
|
|
31
29
|
let(:options) do
|
|
32
|
-
{
|
|
30
|
+
{}
|
|
33
31
|
end
|
|
34
32
|
|
|
35
33
|
describe '#relation_complements' do
|
|
36
|
-
|
|
37
34
|
let(:expected_complements) do
|
|
38
35
|
[
|
|
39
|
-
Mongoid::Association::Embedded::EmbeddedIn
|
|
36
|
+
Mongoid::Association::Embedded::EmbeddedIn
|
|
40
37
|
]
|
|
41
38
|
end
|
|
42
39
|
|
|
@@ -46,7 +43,6 @@ describe Mongoid::Association::Embedded::EmbedsMany 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,7 +69,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
73
69
|
end
|
|
74
70
|
|
|
75
71
|
context 'when the :validate option is true' do
|
|
76
|
-
|
|
77
72
|
let(:options) do
|
|
78
73
|
{
|
|
79
74
|
validate: true
|
|
@@ -93,7 +88,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
93
88
|
end
|
|
94
89
|
|
|
95
90
|
context 'when the :validate option is false' do
|
|
96
|
-
|
|
97
91
|
let(:options) do
|
|
98
92
|
{
|
|
99
93
|
validate: false
|
|
@@ -107,7 +101,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
107
101
|
end
|
|
108
102
|
|
|
109
103
|
context 'when the :validate option is not provided' do
|
|
110
|
-
|
|
111
104
|
let(:association) do
|
|
112
105
|
# Note that it is necessary to create the association directly, otherwise the
|
|
113
106
|
# setup! method will be called by the :embeds_many macro
|
|
@@ -122,9 +115,7 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
122
115
|
end
|
|
123
116
|
|
|
124
117
|
describe '#type' do
|
|
125
|
-
|
|
126
118
|
context 'when polymorphic' do
|
|
127
|
-
|
|
128
119
|
let(:options) do
|
|
129
120
|
{ as: :containable }
|
|
130
121
|
end
|
|
@@ -135,7 +126,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
135
126
|
end
|
|
136
127
|
|
|
137
128
|
context 'when not polymorphic' do
|
|
138
|
-
|
|
139
129
|
it 'returns nil' do
|
|
140
130
|
expect(association.type).to be_nil
|
|
141
131
|
end
|
|
@@ -143,9 +133,7 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
143
133
|
end
|
|
144
134
|
|
|
145
135
|
describe '#inverse_type' do
|
|
146
|
-
|
|
147
136
|
context 'when polymorphic' do
|
|
148
|
-
|
|
149
137
|
let(:options) do
|
|
150
138
|
{ as: :containable }
|
|
151
139
|
end
|
|
@@ -156,7 +144,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
156
144
|
end
|
|
157
145
|
|
|
158
146
|
context 'when not polymorphic' do
|
|
159
|
-
|
|
160
147
|
it 'returns nil' do
|
|
161
148
|
expect(association.inverse_type).to be_nil
|
|
162
149
|
end
|
|
@@ -164,9 +151,7 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
164
151
|
end
|
|
165
152
|
|
|
166
153
|
describe '#inverse_type_setter' do
|
|
167
|
-
|
|
168
154
|
context 'when polymorphic' do
|
|
169
|
-
|
|
170
155
|
let(:options) do
|
|
171
156
|
{ as: :containable }
|
|
172
157
|
end
|
|
@@ -177,7 +162,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
177
162
|
end
|
|
178
163
|
|
|
179
164
|
context 'when not polymorphic' do
|
|
180
|
-
|
|
181
165
|
it 'returns nil' do
|
|
182
166
|
expect(association.inverse_type).to be_nil
|
|
183
167
|
end
|
|
@@ -185,58 +169,49 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
185
169
|
end
|
|
186
170
|
|
|
187
171
|
describe '#embedded?' do
|
|
188
|
-
|
|
189
172
|
it 'returns true' do
|
|
190
173
|
expect(association.embedded?).to be(true)
|
|
191
174
|
end
|
|
192
175
|
end
|
|
193
176
|
|
|
194
177
|
describe '#primary_key' do
|
|
195
|
-
|
|
196
178
|
it 'returns nil' do
|
|
197
179
|
expect(association.primary_key).to be_nil
|
|
198
180
|
end
|
|
199
181
|
end
|
|
200
182
|
|
|
201
183
|
describe '#indexed?' do
|
|
202
|
-
|
|
203
184
|
it 'returns false' do
|
|
204
185
|
expect(association.indexed?).to be(false)
|
|
205
186
|
end
|
|
206
187
|
end
|
|
207
188
|
|
|
208
189
|
describe '#relation' do
|
|
209
|
-
|
|
210
190
|
it 'returns Mongoid::Association::Embedded::EmbedsMany::Proxy' do
|
|
211
191
|
expect(association.relation).to be(Mongoid::Association::Embedded::EmbedsMany::Proxy)
|
|
212
192
|
end
|
|
213
193
|
end
|
|
214
194
|
|
|
215
195
|
describe '#validation_default' do
|
|
216
|
-
|
|
217
196
|
it 'returns true' do
|
|
218
197
|
expect(association.validation_default).to be(true)
|
|
219
198
|
end
|
|
220
199
|
end
|
|
221
200
|
|
|
222
201
|
describe '#name' do
|
|
223
|
-
|
|
224
202
|
it 'returns the name of the relation' do
|
|
225
203
|
expect(association.name).to be(name)
|
|
226
204
|
end
|
|
227
205
|
end
|
|
228
206
|
|
|
229
207
|
describe '#options' do
|
|
230
|
-
|
|
231
208
|
it 'returns the options' do
|
|
232
209
|
expect(association.options).to be(options)
|
|
233
210
|
end
|
|
234
211
|
end
|
|
235
212
|
|
|
236
213
|
describe '#cyclic?' do
|
|
237
|
-
|
|
238
214
|
context 'when :cyclic is specified in the options' do
|
|
239
|
-
|
|
240
215
|
let(:options) do
|
|
241
216
|
{ cyclic: true }
|
|
242
217
|
end
|
|
@@ -247,7 +222,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
247
222
|
end
|
|
248
223
|
|
|
249
224
|
context 'when :cyclic is not specified in the options' do
|
|
250
|
-
|
|
251
225
|
it 'returns false' do
|
|
252
226
|
expect(association.cyclic?).to be(false)
|
|
253
227
|
end
|
|
@@ -255,13 +229,10 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
255
229
|
end
|
|
256
230
|
|
|
257
231
|
describe '#merge!' do
|
|
258
|
-
|
|
259
232
|
end
|
|
260
233
|
|
|
261
234
|
describe '#store_as' do
|
|
262
|
-
|
|
263
235
|
context 'when :store_as is specified in the options' do
|
|
264
|
-
|
|
265
236
|
let(:options) do
|
|
266
237
|
{
|
|
267
238
|
store_as: :baby_kangaroos
|
|
@@ -274,7 +245,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
274
245
|
end
|
|
275
246
|
|
|
276
247
|
context 'when :store_as is not specified in the options' do
|
|
277
|
-
|
|
278
248
|
it 'returns name as a String' do
|
|
279
249
|
expect(association.store_as).to eq(name.to_s)
|
|
280
250
|
end
|
|
@@ -282,16 +252,13 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
282
252
|
end
|
|
283
253
|
|
|
284
254
|
describe '#touchable?' do
|
|
285
|
-
|
|
286
255
|
it 'return false' do
|
|
287
256
|
expect(association.send(:touchable?)).to be(false)
|
|
288
257
|
end
|
|
289
258
|
end
|
|
290
259
|
|
|
291
260
|
describe '#order' do
|
|
292
|
-
|
|
293
261
|
context 'when order is specified in the options' do
|
|
294
|
-
|
|
295
262
|
let(:options) do
|
|
296
263
|
{
|
|
297
264
|
order: :rating.desc
|
|
@@ -304,7 +271,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
304
271
|
end
|
|
305
272
|
|
|
306
273
|
context 'when order is not specified in the options' do
|
|
307
|
-
|
|
308
274
|
it 'returns nil' do
|
|
309
275
|
expect(association.order).to be_nil
|
|
310
276
|
end
|
|
@@ -312,9 +278,7 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
312
278
|
end
|
|
313
279
|
|
|
314
280
|
describe '#as' do
|
|
315
|
-
|
|
316
281
|
context 'when :as is specified in the options' do
|
|
317
|
-
|
|
318
282
|
let(:options) do
|
|
319
283
|
{
|
|
320
284
|
as: :containable
|
|
@@ -327,7 +291,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
327
291
|
end
|
|
328
292
|
|
|
329
293
|
context 'when :as is not specified in the options' do
|
|
330
|
-
|
|
331
294
|
it 'returns nil' do
|
|
332
295
|
expect(association.as).to be_nil
|
|
333
296
|
end
|
|
@@ -335,9 +298,7 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
335
298
|
end
|
|
336
299
|
|
|
337
300
|
describe '#polymorphic?' do
|
|
338
|
-
|
|
339
301
|
context 'when :as is specified in the options' do
|
|
340
|
-
|
|
341
302
|
let(:options) do
|
|
342
303
|
{
|
|
343
304
|
as: :containable
|
|
@@ -347,11 +308,9 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
347
308
|
it 'returns true' do
|
|
348
309
|
expect(association.polymorphic?).to be(true)
|
|
349
310
|
end
|
|
350
|
-
|
|
351
311
|
end
|
|
352
312
|
|
|
353
313
|
context 'when :as is not specified in the options' do
|
|
354
|
-
|
|
355
314
|
it 'returns false' do
|
|
356
315
|
expect(association.polymorphic?).to be(false)
|
|
357
316
|
end
|
|
@@ -359,20 +318,17 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
359
318
|
end
|
|
360
319
|
|
|
361
320
|
describe '#type_setter' do
|
|
362
|
-
|
|
363
321
|
context 'when polymorphic' do
|
|
364
|
-
|
|
365
322
|
let(:options) do
|
|
366
323
|
{ as: :containable }
|
|
367
324
|
end
|
|
368
325
|
|
|
369
326
|
it 'returns the type followed by = as a String' do
|
|
370
|
-
expect(association.type_setter).to eq(
|
|
327
|
+
expect(association.type_setter).to eq('containable_type=')
|
|
371
328
|
end
|
|
372
329
|
end
|
|
373
330
|
|
|
374
331
|
context 'when not polymorphic' do
|
|
375
|
-
|
|
376
332
|
it 'returns nil' do
|
|
377
333
|
expect(association.type).to be_nil
|
|
378
334
|
end
|
|
@@ -380,30 +336,25 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
380
336
|
end
|
|
381
337
|
|
|
382
338
|
describe '#dependent' do
|
|
383
|
-
|
|
384
339
|
it 'returns nil' do
|
|
385
340
|
expect(association.dependent).to be_nil
|
|
386
341
|
end
|
|
387
342
|
end
|
|
388
343
|
|
|
389
344
|
describe '#inverse_type' do
|
|
390
|
-
|
|
391
345
|
it 'returns nil' do
|
|
392
346
|
expect(association.inverse_type).to be_nil
|
|
393
347
|
end
|
|
394
348
|
end
|
|
395
349
|
|
|
396
350
|
describe '#bindable?' do
|
|
397
|
-
|
|
398
351
|
it 'returns false' do
|
|
399
352
|
expect(association.bindable?(Person.new)).to be(false)
|
|
400
353
|
end
|
|
401
354
|
end
|
|
402
355
|
|
|
403
356
|
describe '#inverses' do
|
|
404
|
-
|
|
405
357
|
context 'when polymorphic' do
|
|
406
|
-
|
|
407
358
|
before do
|
|
408
359
|
EmbeddedObject.embedded_in :containable, polymorphic: true
|
|
409
360
|
end
|
|
@@ -415,20 +366,17 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
415
366
|
end
|
|
416
367
|
|
|
417
368
|
context 'when another object is passed to the method' do
|
|
418
|
-
|
|
419
369
|
let(:instance_of_other_class) do
|
|
420
370
|
EmbeddedObject.new
|
|
421
371
|
end
|
|
422
372
|
|
|
423
373
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
424
|
-
|
|
425
374
|
it 'returns the :as attribute of this association' do
|
|
426
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
375
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
|
|
427
376
|
end
|
|
428
377
|
end
|
|
429
378
|
|
|
430
379
|
context 'when :inverse_of is specified' do
|
|
431
|
-
|
|
432
380
|
before do
|
|
433
381
|
options.merge!(inverse_of: :inverse_name)
|
|
434
382
|
end
|
|
@@ -439,17 +387,14 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
439
387
|
end
|
|
440
388
|
|
|
441
389
|
context 'when inverse_of is not specified' do
|
|
442
|
-
|
|
443
390
|
it 'returns the :as attribute of this association' do
|
|
444
|
-
expect(association.inverses(instance_of_other_class)).to
|
|
391
|
+
expect(association.inverses(instance_of_other_class)).to contain_exactly(:containable)
|
|
445
392
|
end
|
|
446
393
|
end
|
|
447
394
|
end
|
|
448
395
|
|
|
449
396
|
context 'when another object is not passed to the method' do
|
|
450
|
-
|
|
451
397
|
context 'when inverse_of is specified' do
|
|
452
|
-
|
|
453
398
|
before do
|
|
454
399
|
options.merge!(inverse_of: :inverse_name)
|
|
455
400
|
end
|
|
@@ -460,7 +405,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
460
405
|
end
|
|
461
406
|
|
|
462
407
|
context 'when inverse_of is not specified' do
|
|
463
|
-
|
|
464
408
|
it 'returns the :as attribute' do
|
|
465
409
|
expect(association.inverses).to eq([ :containable ])
|
|
466
410
|
end
|
|
@@ -469,13 +413,11 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
469
413
|
end
|
|
470
414
|
|
|
471
415
|
context 'when not polymorphic' do
|
|
472
|
-
|
|
473
416
|
before do
|
|
474
417
|
EmbeddedObject.embedded_in :container
|
|
475
418
|
end
|
|
476
419
|
|
|
477
420
|
context 'when inverse_of is specified' do
|
|
478
|
-
|
|
479
421
|
before do
|
|
480
422
|
options.merge!(inverse_of: :inverse_name)
|
|
481
423
|
end
|
|
@@ -486,25 +428,20 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
486
428
|
end
|
|
487
429
|
|
|
488
430
|
context 'when inverse_of is not specified' do
|
|
489
|
-
|
|
490
431
|
it 'uses the inverse class to find the inverse name' do
|
|
491
432
|
expect(association.inverses).to eq([ :container ])
|
|
492
433
|
end
|
|
493
434
|
end
|
|
494
435
|
|
|
495
436
|
context 'when :cyclic is specified' do
|
|
496
|
-
|
|
497
437
|
it 'returns the cyclic inverse name' do
|
|
498
|
-
|
|
499
438
|
end
|
|
500
439
|
end
|
|
501
440
|
end
|
|
502
441
|
end
|
|
503
442
|
|
|
504
443
|
describe '##inverse' do
|
|
505
|
-
|
|
506
444
|
context 'when polymorphic' do
|
|
507
|
-
|
|
508
445
|
before do
|
|
509
446
|
EmbeddedObject.embedded_in :containable, polymorphic: true
|
|
510
447
|
end
|
|
@@ -516,20 +453,17 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
516
453
|
end
|
|
517
454
|
|
|
518
455
|
context 'when another object is passed to the method' do
|
|
519
|
-
|
|
520
456
|
let(:instance_of_other_class) do
|
|
521
457
|
EmbeddedObject.new
|
|
522
458
|
end
|
|
523
459
|
|
|
524
460
|
context 'when the relation class has only one relation whose class matches the owning class' do
|
|
525
|
-
|
|
526
461
|
it 'returns the :as attribute of this association' do
|
|
527
462
|
expect(association.inverse(instance_of_other_class)).to eq(:containable)
|
|
528
463
|
end
|
|
529
464
|
end
|
|
530
465
|
|
|
531
466
|
context 'when :inverse_of is specified' do
|
|
532
|
-
|
|
533
467
|
before do
|
|
534
468
|
options.merge!(inverse_of: :inverse_name)
|
|
535
469
|
end
|
|
@@ -540,7 +474,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
540
474
|
end
|
|
541
475
|
|
|
542
476
|
context 'when inverse_of is not specified' do
|
|
543
|
-
|
|
544
477
|
it 'returns the :as attribute of this association' do
|
|
545
478
|
expect(association.inverse(instance_of_other_class)).to eq(:containable)
|
|
546
479
|
end
|
|
@@ -548,9 +481,7 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
548
481
|
end
|
|
549
482
|
|
|
550
483
|
context 'when another object is not passed to the method' do
|
|
551
|
-
|
|
552
484
|
context 'when inverse_of is specified' do
|
|
553
|
-
|
|
554
485
|
before do
|
|
555
486
|
options.merge!(inverse_of: :inverse_name)
|
|
556
487
|
end
|
|
@@ -561,7 +492,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
561
492
|
end
|
|
562
493
|
|
|
563
494
|
context 'when inverse_of is not specified' do
|
|
564
|
-
|
|
565
495
|
it 'returns the :as attribute' do
|
|
566
496
|
expect(association.inverse).to eq(:containable)
|
|
567
497
|
end
|
|
@@ -570,13 +500,11 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
570
500
|
end
|
|
571
501
|
|
|
572
502
|
context 'when not polymorphic' do
|
|
573
|
-
|
|
574
503
|
before do
|
|
575
504
|
EmbeddedObject.embedded_in :container
|
|
576
505
|
end
|
|
577
506
|
|
|
578
507
|
context 'when inverse_of is specified' do
|
|
579
|
-
|
|
580
508
|
before do
|
|
581
509
|
options.merge!(inverse_of: :inverse_name)
|
|
582
510
|
end
|
|
@@ -587,36 +515,29 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
587
515
|
end
|
|
588
516
|
|
|
589
517
|
context 'when inverse_of is not specified' do
|
|
590
|
-
|
|
591
518
|
it 'uses the inverse class to find the inverse name' do
|
|
592
519
|
expect(association.inverse).to eq(:container)
|
|
593
520
|
end
|
|
594
521
|
end
|
|
595
522
|
|
|
596
523
|
context 'when :cyclic is specified' do
|
|
597
|
-
|
|
598
524
|
it 'returns the cyclic inverse name' do
|
|
599
|
-
|
|
600
525
|
end
|
|
601
526
|
end
|
|
602
527
|
end
|
|
603
528
|
end
|
|
604
529
|
|
|
605
530
|
describe '#inverse_association' do
|
|
606
|
-
|
|
607
531
|
end
|
|
608
532
|
|
|
609
533
|
describe '#autosave' do
|
|
610
|
-
|
|
611
534
|
it 'returns false' do
|
|
612
535
|
expect(association.autosave).to be(false)
|
|
613
536
|
end
|
|
614
537
|
end
|
|
615
538
|
|
|
616
539
|
describe '#relation_class_name' do
|
|
617
|
-
|
|
618
540
|
context 'when the :class_name option is specified' do
|
|
619
|
-
|
|
620
541
|
let(:options) do
|
|
621
542
|
{ class_name: 'OtherEmbeddedObject' }
|
|
622
543
|
end
|
|
@@ -627,7 +548,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
627
548
|
end
|
|
628
549
|
|
|
629
550
|
context 'when the class_name option is not specified' do
|
|
630
|
-
|
|
631
551
|
it 'uses the name of the relation to deduce the class name' do
|
|
632
552
|
expect(association.relation_class_name).to eq('EmbeddedObject')
|
|
633
553
|
end
|
|
@@ -635,9 +555,7 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
635
555
|
end
|
|
636
556
|
|
|
637
557
|
describe '#klass' do
|
|
638
|
-
|
|
639
558
|
context 'when the :class_name option is specified' do
|
|
640
|
-
|
|
641
559
|
let!(:_class) do
|
|
642
560
|
class OtherEmbeddedObject; end
|
|
643
561
|
OtherEmbeddedObject
|
|
@@ -663,7 +581,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
663
581
|
end
|
|
664
582
|
|
|
665
583
|
context 'when the class_name option is not specified' do
|
|
666
|
-
|
|
667
584
|
it 'uses the name of the relation to deduce the class name' do
|
|
668
585
|
expect(association.klass).to eq(EmbeddedObject)
|
|
669
586
|
end
|
|
@@ -671,23 +588,19 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
671
588
|
end
|
|
672
589
|
|
|
673
590
|
describe '#inverse_class_name' do
|
|
674
|
-
|
|
675
591
|
it 'returns the name of the owner class' do
|
|
676
592
|
expect(association.inverse_class_name).to eq(Container.name)
|
|
677
593
|
end
|
|
678
594
|
end
|
|
679
595
|
|
|
680
596
|
describe '#inverse_class' do
|
|
681
|
-
|
|
682
597
|
it 'returns the owner class' do
|
|
683
598
|
expect(association.inverse_class).to be(Container)
|
|
684
599
|
end
|
|
685
600
|
end
|
|
686
601
|
|
|
687
602
|
describe '#inverse_of' do
|
|
688
|
-
|
|
689
603
|
context 'when :inverse_of is specified in the options' do
|
|
690
|
-
|
|
691
604
|
let(:options) do
|
|
692
605
|
{ inverse_of: :objects_list }
|
|
693
606
|
end
|
|
@@ -698,7 +611,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
698
611
|
end
|
|
699
612
|
|
|
700
613
|
context 'when :inverse_of is not specified in the options' do
|
|
701
|
-
|
|
702
614
|
it 'returns nil' do
|
|
703
615
|
expect(association.inverse_of).to be_nil
|
|
704
616
|
end
|
|
@@ -706,25 +618,20 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
706
618
|
end
|
|
707
619
|
|
|
708
620
|
describe '#key' do
|
|
709
|
-
|
|
710
621
|
it 'returns the name of the relation as a string' do
|
|
711
622
|
expect(association.key).to eq(name.to_s)
|
|
712
623
|
end
|
|
713
624
|
end
|
|
714
625
|
|
|
715
626
|
describe '#setter' do
|
|
716
|
-
|
|
717
627
|
it 'returns a string of the name followed by =' do
|
|
718
628
|
expect(association.setter).to eq("#{name}=")
|
|
719
629
|
end
|
|
720
630
|
end
|
|
721
631
|
|
|
722
632
|
describe '#validate?' do
|
|
723
|
-
|
|
724
633
|
context 'when :validate is specified in the options' do
|
|
725
|
-
|
|
726
634
|
context 'when validate is true' do
|
|
727
|
-
|
|
728
635
|
let(:options) do
|
|
729
636
|
{ validate: true }
|
|
730
637
|
end
|
|
@@ -735,7 +642,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
735
642
|
end
|
|
736
643
|
|
|
737
644
|
context 'when validate is false' do
|
|
738
|
-
|
|
739
645
|
let(:options) do
|
|
740
646
|
{ validate: false }
|
|
741
647
|
end
|
|
@@ -747,7 +653,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
747
653
|
end
|
|
748
654
|
|
|
749
655
|
context 'when :validate is not specified in the options' do
|
|
750
|
-
|
|
751
656
|
it 'returns the validation_default' do
|
|
752
657
|
expect(association.send(:validate?)).to eq(association.validation_default)
|
|
753
658
|
end
|
|
@@ -755,16 +660,13 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
755
660
|
end
|
|
756
661
|
|
|
757
662
|
describe '#forced_nil_inverse?' do
|
|
758
|
-
|
|
759
663
|
it 'returns false' do
|
|
760
664
|
expect(association.forced_nil_inverse?).to be(false)
|
|
761
665
|
end
|
|
762
666
|
end
|
|
763
667
|
|
|
764
668
|
describe '#inverse_setter' do
|
|
765
|
-
|
|
766
669
|
context 'when an inverse can be determined' do
|
|
767
|
-
|
|
768
670
|
before do
|
|
769
671
|
EmbeddedObject.embedded_in :container
|
|
770
672
|
end
|
|
@@ -775,7 +677,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
775
677
|
end
|
|
776
678
|
|
|
777
679
|
context 'when an inverse cannot be determined' do
|
|
778
|
-
|
|
779
680
|
it 'returns nil' do
|
|
780
681
|
expect(association.inverse_setter).to be_nil
|
|
781
682
|
end
|
|
@@ -783,11 +684,10 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
783
684
|
end
|
|
784
685
|
|
|
785
686
|
describe '#extension' do
|
|
786
|
-
|
|
787
687
|
context 'when a block is passed' do
|
|
788
|
-
|
|
789
688
|
let(:association) do
|
|
790
|
-
embeds_many_class.embeds_one name, options do
|
|
689
|
+
embeds_many_class.embeds_one name, options do
|
|
690
|
+
end
|
|
791
691
|
end
|
|
792
692
|
|
|
793
693
|
it 'defines an extension module' do
|
|
@@ -796,12 +696,12 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
796
696
|
|
|
797
697
|
it 'returns the extension' do
|
|
798
698
|
expect(association.extension).to eq(
|
|
799
|
-
"#{embeds_many_class.name}::#{embeds_many_class.name}#{name.to_s.camelize}RelationExtension".constantize
|
|
699
|
+
"#{embeds_many_class.name}::#{embeds_many_class.name}#{name.to_s.camelize}RelationExtension".constantize
|
|
700
|
+
)
|
|
800
701
|
end
|
|
801
702
|
end
|
|
802
703
|
|
|
803
704
|
context 'when an :extension is not specified in the options' do
|
|
804
|
-
|
|
805
705
|
it 'returns false' do
|
|
806
706
|
expect(association.extension).to be_nil
|
|
807
707
|
end
|
|
@@ -809,25 +709,20 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
809
709
|
end
|
|
810
710
|
|
|
811
711
|
describe '#destructive?' do
|
|
812
|
-
|
|
813
712
|
it 'returns false' do
|
|
814
713
|
expect(association.destructive?).to be(false)
|
|
815
714
|
end
|
|
816
715
|
end
|
|
817
716
|
|
|
818
717
|
describe '#nested_builder' do
|
|
819
|
-
|
|
820
718
|
it 'returns an instance of Association::Nested::One' do
|
|
821
719
|
expect(association.nested_builder({}, {})).to be_a(Mongoid::Association::Nested::Many)
|
|
822
720
|
end
|
|
823
721
|
end
|
|
824
722
|
|
|
825
723
|
describe '#cascading_callbacks?' do
|
|
826
|
-
|
|
827
724
|
context 'when cascade_callbacks is specified in the options' do
|
|
828
|
-
|
|
829
725
|
context 'when :cascade_callbacks is true' do
|
|
830
|
-
|
|
831
726
|
let(:options) do
|
|
832
727
|
{ cascade_callbacks: true }
|
|
833
728
|
end
|
|
@@ -838,7 +733,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
838
733
|
end
|
|
839
734
|
|
|
840
735
|
context 'when :cascade_callbacks is false' do
|
|
841
|
-
|
|
842
736
|
let(:options) do
|
|
843
737
|
{ cascade_callbacks: false }
|
|
844
738
|
end
|
|
@@ -850,7 +744,6 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
850
744
|
end
|
|
851
745
|
|
|
852
746
|
context 'when cascade_callbacks is not specified in the options' do
|
|
853
|
-
|
|
854
747
|
it 'returns false' do
|
|
855
748
|
expect(association.cascading_callbacks?).to be(false)
|
|
856
749
|
end
|
|
@@ -858,75 +751,69 @@ describe Mongoid::Association::Embedded::EmbedsMany do
|
|
|
858
751
|
end
|
|
859
752
|
|
|
860
753
|
describe '#path' do
|
|
861
|
-
|
|
862
754
|
it 'returns an instance of Mongoid::Atomic::Paths::Root' do
|
|
863
|
-
expect(association.path(double(
|
|
755
|
+
expect(association.path(double(_parent: true))).to be_a(Mongoid::Atomic::Paths::Embedded::Many)
|
|
864
756
|
end
|
|
865
757
|
end
|
|
866
758
|
|
|
867
759
|
context "when the document and embedded document's klass is in a submodule" do
|
|
868
|
-
|
|
869
760
|
let(:tank) { EmmSpec::Tank.create! }
|
|
870
761
|
let(:gun) { tank.guns.create! }
|
|
871
762
|
|
|
872
763
|
let(:inverse_assoc) { gun._association.inverse_association }
|
|
873
764
|
|
|
874
|
-
it
|
|
765
|
+
it 'has the correct inverses' do
|
|
875
766
|
pending 'MONGOID-5080'
|
|
876
767
|
|
|
877
768
|
inverse_assoc.should be_a(Mongoid::Association::Embedded::EmbeddedIn)
|
|
878
|
-
inverse_assoc.name.should
|
|
769
|
+
inverse_assoc.name.should eq :tank
|
|
879
770
|
end
|
|
880
771
|
|
|
881
|
-
context
|
|
882
|
-
|
|
772
|
+
context 'when embedded association is not namespaced but has class_name' do
|
|
883
773
|
let(:turret) { tank.emm_turrets.create! }
|
|
884
774
|
|
|
885
775
|
let(:inverse_assoc) { turret._association.inverse_association }
|
|
886
776
|
|
|
887
|
-
it
|
|
777
|
+
it 'has the correct inverses' do
|
|
888
778
|
inverse_assoc.should be_a(Mongoid::Association::Embedded::EmbeddedIn)
|
|
889
|
-
inverse_assoc.name.should
|
|
779
|
+
inverse_assoc.name.should eq :tank
|
|
890
780
|
end
|
|
891
781
|
end
|
|
892
782
|
|
|
893
|
-
context
|
|
894
|
-
|
|
783
|
+
context 'when embedded association is not namespaced and lacks class_name' do
|
|
895
784
|
let(:hatch) { tank.emm_hatches.create! }
|
|
896
785
|
|
|
897
786
|
let(:inverse_assoc) { hatch._association.inverse_association }
|
|
898
787
|
|
|
899
|
-
it
|
|
900
|
-
inverse_assoc.should
|
|
788
|
+
it 'does not find the inverse' do
|
|
789
|
+
inverse_assoc.should be_nil
|
|
901
790
|
end
|
|
902
791
|
end
|
|
903
792
|
|
|
904
|
-
context
|
|
905
|
-
|
|
793
|
+
context 'when the class names exist on top level and namespaced' do
|
|
906
794
|
let(:car) { EmmSpec::Car.create! }
|
|
907
795
|
let(:door) { car.doors.create! }
|
|
908
796
|
|
|
909
797
|
let(:inverse_assoc) { door._association.inverse_association }
|
|
910
798
|
|
|
911
|
-
it
|
|
799
|
+
it 'has the correct inverses' do
|
|
912
800
|
pending 'MONGOID-5080'
|
|
913
801
|
|
|
914
802
|
inverse_assoc.should be_a(Mongoid::Association::Embedded::EmbeddedIn)
|
|
915
|
-
inverse_assoc.name.should
|
|
803
|
+
inverse_assoc.name.should eq :car
|
|
916
804
|
end
|
|
917
805
|
end
|
|
918
806
|
|
|
919
|
-
context
|
|
920
|
-
|
|
807
|
+
context 'when the association has an unqualified class_name in same module' do
|
|
921
808
|
let(:launcher) { tank.launchers.create! }
|
|
922
809
|
|
|
923
810
|
let(:inverse_assoc) { launcher._association.inverse_association }
|
|
924
811
|
|
|
925
|
-
it
|
|
812
|
+
it 'has the correct inverses' do
|
|
926
813
|
pending 'unqualified class_name arguments do not work per MONGOID-5080'
|
|
927
814
|
|
|
928
815
|
inverse_assoc.should be_a(Mongoid::Association::Embedded::EmbeddedIn)
|
|
929
|
-
inverse_assoc.name.should
|
|
816
|
+
inverse_assoc.name.should eq :tank
|
|
930
817
|
end
|
|
931
818
|
end
|
|
932
819
|
end
|