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,10 +1,8 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
|
-
require
|
|
3
|
+
require 'spec_helper'
|
|
5
4
|
|
|
6
5
|
describe Mongoid::Association::Options do
|
|
7
|
-
|
|
8
6
|
STORES_FOREIGN_KEY =
|
|
9
7
|
[
|
|
10
8
|
Mongoid::Association::Referenced::HasAndBelongsToMany,
|
|
@@ -20,9 +18,7 @@ describe Mongoid::Association::Options do
|
|
|
20
18
|
Mongoid::Association::Referenced::HasOne,
|
|
21
19
|
Mongoid::Association::Referenced::HasAndBelongsToMany
|
|
22
20
|
].each do |association_class|
|
|
23
|
-
|
|
24
21
|
context "when the association type is #{association_class}" do
|
|
25
|
-
|
|
26
22
|
let(:class_left) do
|
|
27
23
|
class ClassLeft; include Mongoid::Document; end
|
|
28
24
|
ClassLeft
|
|
@@ -42,14 +38,12 @@ describe Mongoid::Association::Options do
|
|
|
42
38
|
end
|
|
43
39
|
|
|
44
40
|
describe 'the :as option' do
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
41
|
+
context 'when the option is supported by the association type',
|
|
42
|
+
if: association_class::VALID_OPTIONS.include?(:as) do
|
|
48
43
|
context 'when :as is in the options' do
|
|
49
|
-
|
|
50
44
|
let(:options) do
|
|
51
45
|
{
|
|
52
|
-
|
|
46
|
+
as: :nameable
|
|
53
47
|
}
|
|
54
48
|
end
|
|
55
49
|
|
|
@@ -59,47 +53,42 @@ describe Mongoid::Association::Options do
|
|
|
59
53
|
end
|
|
60
54
|
|
|
61
55
|
context 'when :as is not in the options' do
|
|
62
|
-
|
|
63
56
|
it 'returns nil' do
|
|
64
57
|
expect(association.as).to be_nil
|
|
65
58
|
end
|
|
66
59
|
end
|
|
67
60
|
end
|
|
68
61
|
|
|
69
|
-
context 'when the option is not supported by the association type',
|
|
70
|
-
|
|
62
|
+
context 'when the option is not supported by the association type',
|
|
63
|
+
if: !association_class::VALID_OPTIONS.include?(:as) do
|
|
71
64
|
it 'returns nil' do
|
|
72
65
|
expect(association.as).to be_nil
|
|
73
66
|
end
|
|
74
67
|
|
|
75
68
|
context 'when the option is provided' do
|
|
76
|
-
|
|
77
69
|
let(:options) do
|
|
78
70
|
{
|
|
79
|
-
|
|
71
|
+
as: :nameable
|
|
80
72
|
}
|
|
81
73
|
end
|
|
82
74
|
|
|
83
75
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
84
|
-
expect
|
|
76
|
+
expect do
|
|
85
77
|
association
|
|
86
|
-
|
|
78
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
87
79
|
end
|
|
88
80
|
end
|
|
89
81
|
end
|
|
90
82
|
end
|
|
91
83
|
|
|
92
84
|
describe '#autobuilding?' do
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
85
|
+
context 'when the option is supported by the association type',
|
|
86
|
+
if: association_class::VALID_OPTIONS.include?(:autobuild) do
|
|
96
87
|
context 'when :autobuild is in the options' do
|
|
97
|
-
|
|
98
88
|
context 'when :autobuild is true' do
|
|
99
|
-
|
|
100
89
|
let(:options) do
|
|
101
90
|
{
|
|
102
|
-
|
|
91
|
+
autobuild: true
|
|
103
92
|
}
|
|
104
93
|
end
|
|
105
94
|
|
|
@@ -109,10 +98,9 @@ describe Mongoid::Association::Options do
|
|
|
109
98
|
end
|
|
110
99
|
|
|
111
100
|
context 'when :autobuild is false' do
|
|
112
|
-
|
|
113
101
|
let(:options) do
|
|
114
102
|
{
|
|
115
|
-
|
|
103
|
+
autobuild: false
|
|
116
104
|
}
|
|
117
105
|
end
|
|
118
106
|
|
|
@@ -122,10 +110,9 @@ describe Mongoid::Association::Options do
|
|
|
122
110
|
end
|
|
123
111
|
|
|
124
112
|
context 'when :autobuild is nil' do
|
|
125
|
-
|
|
126
113
|
let(:options) do
|
|
127
114
|
{
|
|
128
|
-
|
|
115
|
+
autobuild: nil
|
|
129
116
|
}
|
|
130
117
|
end
|
|
131
118
|
|
|
@@ -136,47 +123,42 @@ describe Mongoid::Association::Options do
|
|
|
136
123
|
end
|
|
137
124
|
|
|
138
125
|
context 'when :autobuild is not in the options' do
|
|
139
|
-
|
|
140
126
|
it 'returns false' do
|
|
141
127
|
expect(association.autobuilding?).to be(false)
|
|
142
128
|
end
|
|
143
129
|
end
|
|
144
130
|
end
|
|
145
131
|
|
|
146
|
-
context 'when the option is not supported by the association type',
|
|
147
|
-
|
|
132
|
+
context 'when the option is not supported by the association type',
|
|
133
|
+
if: !association_class::VALID_OPTIONS.include?(:autobuild) do
|
|
148
134
|
it 'returns false' do
|
|
149
135
|
expect(association.autobuilding?).to be(false)
|
|
150
136
|
end
|
|
151
137
|
|
|
152
138
|
context 'when the option is provided' do
|
|
153
|
-
|
|
154
139
|
let(:options) do
|
|
155
140
|
{
|
|
156
|
-
|
|
141
|
+
autobuild: false
|
|
157
142
|
}
|
|
158
143
|
end
|
|
159
144
|
|
|
160
145
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
161
|
-
expect
|
|
146
|
+
expect do
|
|
162
147
|
association
|
|
163
|
-
|
|
148
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
164
149
|
end
|
|
165
150
|
end
|
|
166
151
|
end
|
|
167
152
|
end
|
|
168
153
|
|
|
169
154
|
describe '#autosave?' do
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
155
|
+
context 'when the option is supported by the association type',
|
|
156
|
+
if: association_class::VALID_OPTIONS.include?(:autosave) do
|
|
173
157
|
context 'when :autosave is in the options' do
|
|
174
|
-
|
|
175
158
|
context 'when :autosave is true' do
|
|
176
|
-
|
|
177
159
|
let(:options) do
|
|
178
160
|
{
|
|
179
|
-
|
|
161
|
+
autosave: true
|
|
180
162
|
}
|
|
181
163
|
end
|
|
182
164
|
|
|
@@ -186,10 +168,9 @@ describe Mongoid::Association::Options do
|
|
|
186
168
|
end
|
|
187
169
|
|
|
188
170
|
context 'when :autosave is false' do
|
|
189
|
-
|
|
190
171
|
let(:options) do
|
|
191
172
|
{
|
|
192
|
-
|
|
173
|
+
autosave: false
|
|
193
174
|
}
|
|
194
175
|
end
|
|
195
176
|
|
|
@@ -199,10 +180,9 @@ describe Mongoid::Association::Options do
|
|
|
199
180
|
end
|
|
200
181
|
|
|
201
182
|
context 'when :autosave is nil' do
|
|
202
|
-
|
|
203
183
|
let(:options) do
|
|
204
184
|
{
|
|
205
|
-
|
|
185
|
+
autosave: nil
|
|
206
186
|
}
|
|
207
187
|
end
|
|
208
188
|
|
|
@@ -213,45 +193,41 @@ describe Mongoid::Association::Options do
|
|
|
213
193
|
end
|
|
214
194
|
|
|
215
195
|
context 'when :autosave is not in the options' do
|
|
216
|
-
|
|
217
196
|
it 'returns false' do
|
|
218
197
|
expect(association.autosave?).to be(false)
|
|
219
198
|
end
|
|
220
199
|
end
|
|
221
200
|
end
|
|
222
201
|
|
|
223
|
-
context 'when the option is not supported by the association type',
|
|
224
|
-
|
|
202
|
+
context 'when the option is not supported by the association type',
|
|
203
|
+
if: !association_class::VALID_OPTIONS.include?(:autosave) do
|
|
225
204
|
it 'returns false' do
|
|
226
205
|
expect(association.autosave?).to be(false)
|
|
227
206
|
end
|
|
228
207
|
|
|
229
208
|
context 'when the option is provided' do
|
|
230
|
-
|
|
231
209
|
let(:options) do
|
|
232
210
|
{
|
|
233
|
-
|
|
211
|
+
autosave: false
|
|
234
212
|
}
|
|
235
213
|
end
|
|
236
214
|
|
|
237
215
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
238
|
-
expect
|
|
216
|
+
expect do
|
|
239
217
|
association
|
|
240
|
-
|
|
218
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
241
219
|
end
|
|
242
220
|
end
|
|
243
221
|
end
|
|
244
222
|
end
|
|
245
223
|
|
|
246
224
|
describe 'the :dependent option' do
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
225
|
+
context 'when the option is supported by the association type',
|
|
226
|
+
if: association_class::VALID_OPTIONS.include?(:dependent) do
|
|
250
227
|
context 'when :dependent is in the options' do
|
|
251
|
-
|
|
252
228
|
let(:options) do
|
|
253
229
|
{
|
|
254
|
-
|
|
230
|
+
dependent: :delete_all
|
|
255
231
|
}
|
|
256
232
|
end
|
|
257
233
|
|
|
@@ -261,45 +237,41 @@ describe Mongoid::Association::Options do
|
|
|
261
237
|
end
|
|
262
238
|
|
|
263
239
|
context 'when :dependent is not in the options' do
|
|
264
|
-
|
|
265
240
|
it 'returns nil' do
|
|
266
241
|
expect(association.dependent).to be_nil
|
|
267
242
|
end
|
|
268
243
|
end
|
|
269
244
|
end
|
|
270
245
|
|
|
271
|
-
context 'when the option is not supported by the association type',
|
|
272
|
-
|
|
246
|
+
context 'when the option is not supported by the association type',
|
|
247
|
+
if: !association_class::VALID_OPTIONS.include?(:dependent) do
|
|
273
248
|
it 'returns nil' do
|
|
274
249
|
expect(association.dependent).to be_nil
|
|
275
250
|
end
|
|
276
251
|
|
|
277
252
|
context 'when the option is provided' do
|
|
278
|
-
|
|
279
253
|
let(:options) do
|
|
280
254
|
{
|
|
281
|
-
|
|
255
|
+
dependent: :delete_all
|
|
282
256
|
}
|
|
283
257
|
end
|
|
284
258
|
|
|
285
259
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
286
|
-
expect
|
|
260
|
+
expect do
|
|
287
261
|
association
|
|
288
|
-
|
|
262
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
289
263
|
end
|
|
290
264
|
end
|
|
291
265
|
end
|
|
292
266
|
end
|
|
293
267
|
|
|
294
268
|
describe 'the :foreign_key option' do
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
269
|
+
context 'when the option is supported by the association type',
|
|
270
|
+
if: association_class::VALID_OPTIONS.include?(:foreign_key) do
|
|
298
271
|
context 'when the :foreign_key option is specified' do
|
|
299
|
-
|
|
300
272
|
let(:options) do
|
|
301
273
|
{
|
|
302
|
-
|
|
274
|
+
foreign_key: :some_field
|
|
303
275
|
}
|
|
304
276
|
end
|
|
305
277
|
|
|
@@ -310,9 +282,7 @@ describe Mongoid::Association::Options do
|
|
|
310
282
|
|
|
311
283
|
context 'when the association stores the foreign key', if: association_class::VALID_OPTIONS.include?(:foreign_key) &&
|
|
312
284
|
STORES_FOREIGN_KEY.include?(association_class) do
|
|
313
|
-
|
|
314
285
|
context 'when :foreign_key option is not specified' do
|
|
315
|
-
|
|
316
286
|
it 'returns the name followed by the foreign_key_suffix' do
|
|
317
287
|
expect(association.foreign_key).to eq("name#{association.class::FOREIGN_KEY_SUFFIX}")
|
|
318
288
|
end
|
|
@@ -321,9 +291,7 @@ describe Mongoid::Association::Options do
|
|
|
321
291
|
|
|
322
292
|
context 'when the association does not store the foreign key', if: association_class::VALID_OPTIONS.include?(:foreign_key) &&
|
|
323
293
|
!STORES_FOREIGN_KEY.include?(association_class) do
|
|
324
|
-
|
|
325
294
|
context 'when :foreign_key option is not specified' do
|
|
326
|
-
|
|
327
295
|
before do
|
|
328
296
|
allow(association).to receive(:inverse).and_return(:other)
|
|
329
297
|
end
|
|
@@ -335,38 +303,35 @@ describe Mongoid::Association::Options do
|
|
|
335
303
|
end
|
|
336
304
|
end
|
|
337
305
|
|
|
338
|
-
context 'when the option is not supported by the association type',
|
|
339
|
-
|
|
306
|
+
context 'when the option is not supported by the association type',
|
|
307
|
+
if: !association_class::VALID_OPTIONS.include?(:foreign_key) do
|
|
340
308
|
it 'returns nil' do
|
|
341
309
|
expect(association.dependent).to be_nil
|
|
342
310
|
end
|
|
343
311
|
|
|
344
312
|
context 'when the option is provided' do
|
|
345
|
-
|
|
346
313
|
let(:options) do
|
|
347
314
|
{
|
|
348
|
-
|
|
315
|
+
foreign_key: :some_field
|
|
349
316
|
}
|
|
350
317
|
end
|
|
351
318
|
|
|
352
319
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
353
|
-
expect
|
|
320
|
+
expect do
|
|
354
321
|
association
|
|
355
|
-
|
|
322
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
356
323
|
end
|
|
357
324
|
end
|
|
358
325
|
end
|
|
359
326
|
end
|
|
360
327
|
|
|
361
328
|
describe 'the :primary_key option' do
|
|
362
|
-
|
|
363
|
-
|
|
364
|
-
|
|
329
|
+
context 'when the option is supported by the association type',
|
|
330
|
+
if: association_class::VALID_OPTIONS.include?(:primary_key) do
|
|
365
331
|
context 'when the option is specified' do
|
|
366
|
-
|
|
367
332
|
let(:options) do
|
|
368
333
|
{
|
|
369
|
-
|
|
334
|
+
primary_key: :other_id
|
|
370
335
|
}
|
|
371
336
|
end
|
|
372
337
|
|
|
@@ -376,45 +341,41 @@ describe Mongoid::Association::Options do
|
|
|
376
341
|
end
|
|
377
342
|
|
|
378
343
|
context 'when the option is not specified' do
|
|
379
|
-
|
|
380
344
|
it 'returns the default primary key' do
|
|
381
345
|
expect(association.primary_key).to eq(Mongoid::Association::Relatable::PRIMARY_KEY_DEFAULT)
|
|
382
346
|
end
|
|
383
347
|
end
|
|
384
348
|
end
|
|
385
349
|
|
|
386
|
-
context 'when the option is not supported by the association type',
|
|
387
|
-
|
|
350
|
+
context 'when the option is not supported by the association type',
|
|
351
|
+
if: !association_class::VALID_OPTIONS.include?(:primary_key) do
|
|
388
352
|
it 'returns nil' do
|
|
389
353
|
expect(association.primary_key).to be_nil
|
|
390
354
|
end
|
|
391
355
|
|
|
392
356
|
context 'when the option is provided' do
|
|
393
|
-
|
|
394
357
|
let(:options) do
|
|
395
358
|
{
|
|
396
|
-
|
|
359
|
+
primary_key: :other_id
|
|
397
360
|
}
|
|
398
361
|
end
|
|
399
362
|
|
|
400
363
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
401
|
-
expect
|
|
364
|
+
expect do
|
|
402
365
|
association
|
|
403
|
-
|
|
366
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
404
367
|
end
|
|
405
368
|
end
|
|
406
369
|
end
|
|
407
370
|
end
|
|
408
371
|
|
|
409
372
|
describe 'the :after_add option' do
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
|
|
373
|
+
context 'when the option is supported by the association type',
|
|
374
|
+
if: association_class::VALID_OPTIONS.include?(:after_add) do
|
|
413
375
|
context 'when the :after_add option is specified' do
|
|
414
|
-
|
|
415
376
|
let(:options) do
|
|
416
377
|
{
|
|
417
|
-
|
|
378
|
+
after_add: :method_name
|
|
418
379
|
}
|
|
419
380
|
end
|
|
420
381
|
|
|
@@ -424,46 +385,41 @@ describe Mongoid::Association::Options do
|
|
|
424
385
|
end
|
|
425
386
|
|
|
426
387
|
context 'when the :after_add option is not specified' do
|
|
427
|
-
|
|
428
388
|
it 'returns nil' do
|
|
429
389
|
expect(association.get_callbacks(:after_add)).to be_empty
|
|
430
390
|
end
|
|
431
391
|
end
|
|
432
392
|
end
|
|
433
393
|
|
|
434
|
-
context 'when the option is not supported by the association type',
|
|
435
|
-
|
|
436
|
-
|
|
394
|
+
context 'when the option is not supported by the association type',
|
|
395
|
+
if: !association_class::VALID_OPTIONS.include?(:after_add) do
|
|
437
396
|
it 'returns nil' do
|
|
438
397
|
expect(association.get_callbacks(:after_add)).to be_empty
|
|
439
398
|
end
|
|
440
399
|
|
|
441
400
|
context 'when the option is provided' do
|
|
442
|
-
|
|
443
401
|
let(:options) do
|
|
444
402
|
{
|
|
445
|
-
|
|
403
|
+
after_add: :method_name
|
|
446
404
|
}
|
|
447
405
|
end
|
|
448
406
|
|
|
449
407
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
450
|
-
expect
|
|
408
|
+
expect do
|
|
451
409
|
association
|
|
452
|
-
|
|
410
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
453
411
|
end
|
|
454
412
|
end
|
|
455
413
|
end
|
|
456
414
|
end
|
|
457
415
|
|
|
458
416
|
describe 'the :after_remove option' do
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
417
|
+
context 'when the option is supported by the association type',
|
|
418
|
+
if: association_class::VALID_OPTIONS.include?(:after_remove) do
|
|
462
419
|
context 'when the :after_remove option is specified' do
|
|
463
|
-
|
|
464
420
|
let(:options) do
|
|
465
421
|
{
|
|
466
|
-
|
|
422
|
+
after_remove: :method_name
|
|
467
423
|
}
|
|
468
424
|
end
|
|
469
425
|
|
|
@@ -473,46 +429,41 @@ describe Mongoid::Association::Options do
|
|
|
473
429
|
end
|
|
474
430
|
|
|
475
431
|
context 'when the :after_remove option is not specified' do
|
|
476
|
-
|
|
477
432
|
it 'returns nil' do
|
|
478
433
|
expect(association.get_callbacks(:after_remove)).to be_empty
|
|
479
434
|
end
|
|
480
435
|
end
|
|
481
436
|
end
|
|
482
437
|
|
|
483
|
-
context 'when the option is not supported by the association type',
|
|
484
|
-
|
|
485
|
-
|
|
438
|
+
context 'when the option is not supported by the association type',
|
|
439
|
+
if: !association_class::VALID_OPTIONS.include?(:after_remove) do
|
|
486
440
|
it 'returns nil' do
|
|
487
441
|
expect(association.get_callbacks(:after_remove)).to be_empty
|
|
488
442
|
end
|
|
489
443
|
|
|
490
444
|
context 'when the option is provided' do
|
|
491
|
-
|
|
492
445
|
let(:options) do
|
|
493
446
|
{
|
|
494
|
-
|
|
447
|
+
after_remove: :method_name
|
|
495
448
|
}
|
|
496
449
|
end
|
|
497
450
|
|
|
498
451
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
499
|
-
expect
|
|
452
|
+
expect do
|
|
500
453
|
association
|
|
501
|
-
|
|
454
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
502
455
|
end
|
|
503
456
|
end
|
|
504
457
|
end
|
|
505
458
|
end
|
|
506
459
|
|
|
507
460
|
describe 'the :before_add option' do
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
461
|
+
context 'when the option is supported by the association type',
|
|
462
|
+
if: association_class::VALID_OPTIONS.include?(:before_add) do
|
|
511
463
|
context 'when the :before_add option is specified' do
|
|
512
|
-
|
|
513
464
|
let(:options) do
|
|
514
465
|
{
|
|
515
|
-
|
|
466
|
+
before_add: :method_name
|
|
516
467
|
}
|
|
517
468
|
end
|
|
518
469
|
|
|
@@ -522,46 +473,41 @@ describe Mongoid::Association::Options do
|
|
|
522
473
|
end
|
|
523
474
|
|
|
524
475
|
context 'when the :before_add option is not specified' do
|
|
525
|
-
|
|
526
476
|
it 'returns nil' do
|
|
527
477
|
expect(association.get_callbacks(:before_add)).to be_empty
|
|
528
478
|
end
|
|
529
479
|
end
|
|
530
480
|
end
|
|
531
481
|
|
|
532
|
-
context 'when the option is not supported by the association type',
|
|
533
|
-
|
|
534
|
-
|
|
482
|
+
context 'when the option is not supported by the association type',
|
|
483
|
+
if: !association_class::VALID_OPTIONS.include?(:before_add) do
|
|
535
484
|
it 'returns nil' do
|
|
536
485
|
expect(association.get_callbacks(:before_add)).to be_empty
|
|
537
486
|
end
|
|
538
487
|
|
|
539
488
|
context 'when the option is provided' do
|
|
540
|
-
|
|
541
489
|
let(:options) do
|
|
542
490
|
{
|
|
543
|
-
|
|
491
|
+
before_add: :method_name
|
|
544
492
|
}
|
|
545
493
|
end
|
|
546
494
|
|
|
547
495
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
548
|
-
expect
|
|
496
|
+
expect do
|
|
549
497
|
association
|
|
550
|
-
|
|
498
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
551
499
|
end
|
|
552
500
|
end
|
|
553
501
|
end
|
|
554
502
|
end
|
|
555
503
|
|
|
556
504
|
describe 'the :before_remove option' do
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
505
|
+
context 'when the option is supported by the association type',
|
|
506
|
+
if: association_class::VALID_OPTIONS.include?(:before_remove) do
|
|
560
507
|
context 'when the :before_remove option is specified' do
|
|
561
|
-
|
|
562
508
|
let(:options) do
|
|
563
509
|
{
|
|
564
|
-
|
|
510
|
+
before_remove: :method_name
|
|
565
511
|
}
|
|
566
512
|
end
|
|
567
513
|
|
|
@@ -571,49 +517,42 @@ describe Mongoid::Association::Options do
|
|
|
571
517
|
end
|
|
572
518
|
|
|
573
519
|
context 'when the :before_remove option is not specified' do
|
|
574
|
-
|
|
575
520
|
it 'returns nil' do
|
|
576
521
|
expect(association.get_callbacks(:before_remove)).to be_empty
|
|
577
522
|
end
|
|
578
523
|
end
|
|
579
524
|
end
|
|
580
525
|
|
|
581
|
-
context 'when the option is not supported by the association type',
|
|
582
|
-
|
|
583
|
-
|
|
526
|
+
context 'when the option is not supported by the association type',
|
|
527
|
+
if: !association_class::VALID_OPTIONS.include?(:before_remove) do
|
|
584
528
|
it 'returns nil' do
|
|
585
529
|
expect(association.get_callbacks(:before_remove)).to be_empty
|
|
586
530
|
end
|
|
587
531
|
|
|
588
532
|
context 'when the option is provided' do
|
|
589
|
-
|
|
590
533
|
let(:options) do
|
|
591
534
|
{
|
|
592
|
-
|
|
535
|
+
before_remove: :method_name
|
|
593
536
|
}
|
|
594
537
|
end
|
|
595
538
|
|
|
596
539
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
597
|
-
expect
|
|
540
|
+
expect do
|
|
598
541
|
association
|
|
599
|
-
|
|
542
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
600
543
|
end
|
|
601
544
|
end
|
|
602
545
|
end
|
|
603
546
|
end
|
|
604
547
|
|
|
605
|
-
|
|
606
548
|
describe '#indexed?' do
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
549
|
+
context 'when the option is supported by the association type',
|
|
550
|
+
if: association_class::VALID_OPTIONS.include?(:index) do
|
|
610
551
|
context 'when :index is in the options' do
|
|
611
|
-
|
|
612
552
|
context 'when :index is true' do
|
|
613
|
-
|
|
614
553
|
let(:options) do
|
|
615
554
|
{
|
|
616
|
-
|
|
555
|
+
index: true
|
|
617
556
|
}
|
|
618
557
|
end
|
|
619
558
|
|
|
@@ -623,10 +562,9 @@ describe Mongoid::Association::Options do
|
|
|
623
562
|
end
|
|
624
563
|
|
|
625
564
|
context 'when :index is false' do
|
|
626
|
-
|
|
627
565
|
let(:options) do
|
|
628
566
|
{
|
|
629
|
-
|
|
567
|
+
index: false
|
|
630
568
|
}
|
|
631
569
|
end
|
|
632
570
|
|
|
@@ -636,10 +574,9 @@ describe Mongoid::Association::Options do
|
|
|
636
574
|
end
|
|
637
575
|
|
|
638
576
|
context 'when :index is nil' do
|
|
639
|
-
|
|
640
577
|
let(:options) do
|
|
641
578
|
{
|
|
642
|
-
|
|
579
|
+
index: nil
|
|
643
580
|
}
|
|
644
581
|
end
|
|
645
582
|
|
|
@@ -650,45 +587,41 @@ describe Mongoid::Association::Options do
|
|
|
650
587
|
end
|
|
651
588
|
|
|
652
589
|
context 'when :index is not in the options' do
|
|
653
|
-
|
|
654
590
|
it 'returns false' do
|
|
655
591
|
expect(association.indexed?).to be(false)
|
|
656
592
|
end
|
|
657
593
|
end
|
|
658
594
|
end
|
|
659
595
|
|
|
660
|
-
context 'when the option is not supported by the association type',
|
|
661
|
-
|
|
596
|
+
context 'when the option is not supported by the association type',
|
|
597
|
+
if: !association_class::VALID_OPTIONS.include?(:index) do
|
|
662
598
|
it 'returns false' do
|
|
663
599
|
expect(association.indexed?).to be(false)
|
|
664
600
|
end
|
|
665
601
|
|
|
666
602
|
context 'when the option is provided' do
|
|
667
|
-
|
|
668
603
|
let(:options) do
|
|
669
604
|
{
|
|
670
|
-
|
|
605
|
+
index: true
|
|
671
606
|
}
|
|
672
607
|
end
|
|
673
608
|
|
|
674
609
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
675
|
-
expect
|
|
610
|
+
expect do
|
|
676
611
|
association
|
|
677
|
-
|
|
612
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
678
613
|
end
|
|
679
614
|
end
|
|
680
615
|
end
|
|
681
616
|
end
|
|
682
617
|
|
|
683
618
|
describe 'the :order option' do
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
619
|
+
context 'when the option is supported by the association type',
|
|
620
|
+
if: association_class::VALID_OPTIONS.include?(:order) do
|
|
687
621
|
context 'when :order is in the options' do
|
|
688
|
-
|
|
689
622
|
let(:options) do
|
|
690
623
|
{
|
|
691
|
-
|
|
624
|
+
order: :rating.desc
|
|
692
625
|
}
|
|
693
626
|
end
|
|
694
627
|
|
|
@@ -698,47 +631,42 @@ describe Mongoid::Association::Options do
|
|
|
698
631
|
end
|
|
699
632
|
|
|
700
633
|
context 'when :order is not in the options' do
|
|
701
|
-
|
|
702
634
|
it 'returns nil' do
|
|
703
635
|
expect(association.order).to be_nil
|
|
704
636
|
end
|
|
705
637
|
end
|
|
706
638
|
end
|
|
707
639
|
|
|
708
|
-
context 'when the option is not supported by the association type',
|
|
709
|
-
|
|
640
|
+
context 'when the option is not supported by the association type',
|
|
641
|
+
if: !association_class::VALID_OPTIONS.include?(:order) do
|
|
710
642
|
it 'returns nil' do
|
|
711
643
|
expect(association.order).to be_nil
|
|
712
644
|
end
|
|
713
645
|
|
|
714
646
|
context 'when the option is provided' do
|
|
715
|
-
|
|
716
647
|
let(:options) do
|
|
717
648
|
{
|
|
718
|
-
|
|
649
|
+
order: :rating.desc
|
|
719
650
|
}
|
|
720
651
|
end
|
|
721
652
|
|
|
722
653
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
723
|
-
expect
|
|
654
|
+
expect do
|
|
724
655
|
association
|
|
725
|
-
|
|
656
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
726
657
|
end
|
|
727
658
|
end
|
|
728
659
|
end
|
|
729
660
|
end
|
|
730
661
|
|
|
731
662
|
describe '#polymorphic' do
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
663
|
+
context 'when the option is supported by the association type',
|
|
664
|
+
if: association_class::VALID_OPTIONS.include?(:polymorphic) do
|
|
735
665
|
context 'when :polymorphic is in the options' do
|
|
736
|
-
|
|
737
666
|
context 'when :polymorphic is true' do
|
|
738
|
-
|
|
739
667
|
let(:options) do
|
|
740
668
|
{
|
|
741
|
-
|
|
669
|
+
polymorphic: true
|
|
742
670
|
}
|
|
743
671
|
end
|
|
744
672
|
|
|
@@ -748,10 +676,9 @@ describe Mongoid::Association::Options do
|
|
|
748
676
|
end
|
|
749
677
|
|
|
750
678
|
context 'when :polymorphic is false' do
|
|
751
|
-
|
|
752
679
|
let(:options) do
|
|
753
680
|
{
|
|
754
|
-
|
|
681
|
+
polymorphic: false
|
|
755
682
|
}
|
|
756
683
|
end
|
|
757
684
|
|
|
@@ -761,10 +688,9 @@ describe Mongoid::Association::Options do
|
|
|
761
688
|
end
|
|
762
689
|
|
|
763
690
|
context 'when :polymorphic is nil' do
|
|
764
|
-
|
|
765
691
|
let(:options) do
|
|
766
692
|
{
|
|
767
|
-
|
|
693
|
+
polymorphic: nil
|
|
768
694
|
}
|
|
769
695
|
end
|
|
770
696
|
|
|
@@ -775,47 +701,42 @@ describe Mongoid::Association::Options do
|
|
|
775
701
|
end
|
|
776
702
|
|
|
777
703
|
context 'when :polymorphic is not in the options' do
|
|
778
|
-
|
|
779
704
|
it 'returns false' do
|
|
780
705
|
expect(association.polymorphic?).to be(false)
|
|
781
706
|
end
|
|
782
707
|
end
|
|
783
708
|
end
|
|
784
709
|
|
|
785
|
-
context 'when the option is not supported by the association type',
|
|
786
|
-
|
|
710
|
+
context 'when the option is not supported by the association type',
|
|
711
|
+
if: !association_class::VALID_OPTIONS.include?(:polymorphic) do
|
|
787
712
|
it 'returns false' do
|
|
788
713
|
expect(association.polymorphic?).to be(false)
|
|
789
714
|
end
|
|
790
715
|
|
|
791
716
|
context 'when the option is provided' do
|
|
792
|
-
|
|
793
717
|
let(:options) do
|
|
794
718
|
{
|
|
795
|
-
|
|
719
|
+
polymorphic: true
|
|
796
720
|
}
|
|
797
721
|
end
|
|
798
722
|
|
|
799
723
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
800
|
-
expect
|
|
724
|
+
expect do
|
|
801
725
|
association
|
|
802
|
-
|
|
726
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
803
727
|
end
|
|
804
728
|
end
|
|
805
729
|
end
|
|
806
730
|
end
|
|
807
731
|
|
|
808
732
|
describe '#cascading_callbacks?' do
|
|
809
|
-
|
|
810
|
-
|
|
811
|
-
|
|
733
|
+
context 'when the option is supported by the association type',
|
|
734
|
+
if: association_class::VALID_OPTIONS.include?(:cascade_callbacks) do
|
|
812
735
|
context 'when :cascade_callbacks is in the options' do
|
|
813
|
-
|
|
814
736
|
context 'when :cascade_callbacks is true' do
|
|
815
|
-
|
|
816
737
|
let(:options) do
|
|
817
738
|
{
|
|
818
|
-
|
|
739
|
+
cascade_callbacks: true
|
|
819
740
|
}
|
|
820
741
|
end
|
|
821
742
|
|
|
@@ -825,10 +746,9 @@ describe Mongoid::Association::Options do
|
|
|
825
746
|
end
|
|
826
747
|
|
|
827
748
|
context 'when :cascade_callbacks is false' do
|
|
828
|
-
|
|
829
749
|
let(:options) do
|
|
830
750
|
{
|
|
831
|
-
|
|
751
|
+
cascade_callbacks: false
|
|
832
752
|
}
|
|
833
753
|
end
|
|
834
754
|
|
|
@@ -838,10 +758,9 @@ describe Mongoid::Association::Options do
|
|
|
838
758
|
end
|
|
839
759
|
|
|
840
760
|
context 'when :cascade_callbacks is nil' do
|
|
841
|
-
|
|
842
761
|
let(:options) do
|
|
843
762
|
{
|
|
844
|
-
|
|
763
|
+
cascade_callbacks: nil
|
|
845
764
|
}
|
|
846
765
|
end
|
|
847
766
|
|
|
@@ -852,47 +771,42 @@ describe Mongoid::Association::Options do
|
|
|
852
771
|
end
|
|
853
772
|
|
|
854
773
|
context 'when :cascade_callbacks is not in the options' do
|
|
855
|
-
|
|
856
774
|
it 'returns false' do
|
|
857
775
|
expect(association.cascading_callbacks?).to be(false)
|
|
858
776
|
end
|
|
859
777
|
end
|
|
860
778
|
end
|
|
861
779
|
|
|
862
|
-
context 'when the option is not supported by the association type',
|
|
863
|
-
|
|
780
|
+
context 'when the option is not supported by the association type',
|
|
781
|
+
if: !association_class::VALID_OPTIONS.include?(:cascade_callbacks) do
|
|
864
782
|
it 'returns false' do
|
|
865
783
|
expect(association.cascading_callbacks?).to be(false)
|
|
866
784
|
end
|
|
867
785
|
|
|
868
786
|
context 'when the option is provided' do
|
|
869
|
-
|
|
870
787
|
let(:options) do
|
|
871
788
|
{
|
|
872
|
-
|
|
789
|
+
cascade_callbacks: true
|
|
873
790
|
}
|
|
874
791
|
end
|
|
875
792
|
|
|
876
793
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
877
|
-
expect
|
|
794
|
+
expect do
|
|
878
795
|
association
|
|
879
|
-
|
|
796
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
880
797
|
end
|
|
881
798
|
end
|
|
882
799
|
end
|
|
883
800
|
end
|
|
884
801
|
|
|
885
802
|
describe '#cyclic?' do
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
803
|
+
context 'when the option is supported by the association type',
|
|
804
|
+
if: association_class::VALID_OPTIONS.include?(:cyclic) do
|
|
889
805
|
context 'when :cyclic is in the options' do
|
|
890
|
-
|
|
891
806
|
context 'when :cyclic is true' do
|
|
892
|
-
|
|
893
807
|
let(:options) do
|
|
894
808
|
{
|
|
895
|
-
|
|
809
|
+
cyclic: true
|
|
896
810
|
}
|
|
897
811
|
end
|
|
898
812
|
|
|
@@ -902,10 +816,9 @@ describe Mongoid::Association::Options do
|
|
|
902
816
|
end
|
|
903
817
|
|
|
904
818
|
context 'when :cyclic is false' do
|
|
905
|
-
|
|
906
819
|
let(:options) do
|
|
907
820
|
{
|
|
908
|
-
|
|
821
|
+
cyclic: false
|
|
909
822
|
}
|
|
910
823
|
end
|
|
911
824
|
|
|
@@ -915,10 +828,9 @@ describe Mongoid::Association::Options do
|
|
|
915
828
|
end
|
|
916
829
|
|
|
917
830
|
context 'when :cyclic is nil' do
|
|
918
|
-
|
|
919
831
|
let(:options) do
|
|
920
832
|
{
|
|
921
|
-
|
|
833
|
+
cyclic: nil
|
|
922
834
|
}
|
|
923
835
|
end
|
|
924
836
|
|
|
@@ -929,45 +841,41 @@ describe Mongoid::Association::Options do
|
|
|
929
841
|
end
|
|
930
842
|
|
|
931
843
|
context 'when :cyclic is not in the options' do
|
|
932
|
-
|
|
933
844
|
it 'returns false' do
|
|
934
845
|
expect(association.cyclic?).to be(false)
|
|
935
846
|
end
|
|
936
847
|
end
|
|
937
848
|
end
|
|
938
849
|
|
|
939
|
-
context 'when the option is not supported by the association type',
|
|
940
|
-
|
|
850
|
+
context 'when the option is not supported by the association type',
|
|
851
|
+
if: !association_class::VALID_OPTIONS.include?(:cyclic) do
|
|
941
852
|
it 'returns false' do
|
|
942
853
|
expect(association.cyclic?).to be(false)
|
|
943
854
|
end
|
|
944
855
|
|
|
945
856
|
context 'when the option is provided' do
|
|
946
|
-
|
|
947
857
|
let(:options) do
|
|
948
858
|
{
|
|
949
|
-
|
|
859
|
+
cyclic: true
|
|
950
860
|
}
|
|
951
861
|
end
|
|
952
862
|
|
|
953
863
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
954
|
-
expect
|
|
864
|
+
expect do
|
|
955
865
|
association
|
|
956
|
-
|
|
866
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
957
867
|
end
|
|
958
868
|
end
|
|
959
869
|
end
|
|
960
870
|
end
|
|
961
871
|
|
|
962
872
|
describe 'the :store_as option' do
|
|
963
|
-
|
|
964
|
-
|
|
965
|
-
|
|
873
|
+
context 'when the option is supported by the association type',
|
|
874
|
+
if: association_class::VALID_OPTIONS.include?(:store_as) do
|
|
966
875
|
context 'when :store_as is in the options' do
|
|
967
|
-
|
|
968
876
|
let(:options) do
|
|
969
877
|
{
|
|
970
|
-
|
|
878
|
+
store_as: :another_name
|
|
971
879
|
}
|
|
972
880
|
end
|
|
973
881
|
|
|
@@ -977,45 +885,41 @@ describe Mongoid::Association::Options do
|
|
|
977
885
|
end
|
|
978
886
|
|
|
979
887
|
context 'when :store_as is not in the options' do
|
|
980
|
-
|
|
981
888
|
it 'returns the name as a string' do
|
|
982
|
-
expect(association.store_as).to eq(
|
|
889
|
+
expect(association.store_as).to eq('name')
|
|
983
890
|
end
|
|
984
891
|
end
|
|
985
892
|
end
|
|
986
893
|
|
|
987
|
-
context 'when the option is not supported by the association type',
|
|
988
|
-
|
|
894
|
+
context 'when the option is not supported by the association type',
|
|
895
|
+
if: !association_class::VALID_OPTIONS.include?(:store_as) do
|
|
989
896
|
it 'returns nil' do
|
|
990
897
|
expect(association.store_as).to be_nil
|
|
991
898
|
end
|
|
992
899
|
|
|
993
900
|
context 'when the option is provided' do
|
|
994
|
-
|
|
995
901
|
let(:options) do
|
|
996
902
|
{
|
|
997
|
-
|
|
903
|
+
store_as: :another_name
|
|
998
904
|
}
|
|
999
905
|
end
|
|
1000
906
|
|
|
1001
907
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
1002
|
-
expect
|
|
908
|
+
expect do
|
|
1003
909
|
association
|
|
1004
|
-
|
|
910
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
1005
911
|
end
|
|
1006
912
|
end
|
|
1007
913
|
end
|
|
1008
914
|
end
|
|
1009
915
|
|
|
1010
916
|
describe 'the :class_name option' do
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
917
|
+
context 'when the option is supported by the association type',
|
|
918
|
+
if: association_class::VALID_OPTIONS.include?(:class_name) do
|
|
1014
919
|
context 'when :class_name is in the options' do
|
|
1015
|
-
|
|
1016
920
|
let(:options) do
|
|
1017
921
|
{
|
|
1018
|
-
|
|
922
|
+
class_name: :a_class
|
|
1019
923
|
}
|
|
1020
924
|
end
|
|
1021
925
|
|
|
@@ -1025,45 +929,40 @@ describe Mongoid::Association::Options do
|
|
|
1025
929
|
end
|
|
1026
930
|
|
|
1027
931
|
context 'when :class_name is not in the options' do
|
|
1028
|
-
|
|
1029
932
|
it 'returns the name deduced from the association name' do
|
|
1030
933
|
expect(association.class_name).to eq(ActiveSupport::Inflector.classify(:name))
|
|
1031
934
|
end
|
|
1032
935
|
end
|
|
1033
936
|
end
|
|
1034
937
|
|
|
1035
|
-
context 'when the option is not supported by the association type',
|
|
1036
|
-
|
|
938
|
+
context 'when the option is not supported by the association type',
|
|
939
|
+
if: !association_class::VALID_OPTIONS.include?(:class_name) do
|
|
1037
940
|
it 'returns the name deduced from the association name' do
|
|
1038
941
|
expect(association.class_name).to eq(ActiveSupport::Inflector.classify(:name))
|
|
1039
942
|
end
|
|
1040
943
|
|
|
1041
944
|
context 'when the option is provided' do
|
|
1042
|
-
|
|
1043
945
|
let(:options) do
|
|
1044
946
|
{
|
|
1045
|
-
|
|
947
|
+
class_name: :a_class
|
|
1046
948
|
}
|
|
1047
949
|
end
|
|
1048
950
|
|
|
1049
|
-
it '
|
|
1050
|
-
|
|
951
|
+
it 'supports the option' do
|
|
952
|
+
raise('All association types should support this option')
|
|
1051
953
|
end
|
|
1052
954
|
end
|
|
1053
955
|
end
|
|
1054
956
|
end
|
|
1055
957
|
|
|
1056
958
|
describe '#counter_cached?' do
|
|
1057
|
-
|
|
1058
|
-
|
|
1059
|
-
|
|
959
|
+
context 'when the option is supported by the association type',
|
|
960
|
+
if: association_class::VALID_OPTIONS.include?(:counter_cache) do
|
|
1060
961
|
context 'when :counter_cache is in the options' do
|
|
1061
|
-
|
|
1062
962
|
context 'when :counter_cache is true' do
|
|
1063
|
-
|
|
1064
963
|
let(:options) do
|
|
1065
964
|
{
|
|
1066
|
-
|
|
965
|
+
counter_cache: true
|
|
1067
966
|
}
|
|
1068
967
|
end
|
|
1069
968
|
|
|
@@ -1073,10 +972,9 @@ describe Mongoid::Association::Options do
|
|
|
1073
972
|
end
|
|
1074
973
|
|
|
1075
974
|
context 'when :counter_cache is false' do
|
|
1076
|
-
|
|
1077
975
|
let(:options) do
|
|
1078
976
|
{
|
|
1079
|
-
|
|
977
|
+
counter_cache: false
|
|
1080
978
|
}
|
|
1081
979
|
end
|
|
1082
980
|
|
|
@@ -1086,10 +984,9 @@ describe Mongoid::Association::Options do
|
|
|
1086
984
|
end
|
|
1087
985
|
|
|
1088
986
|
context 'when :counter_cache is nil' do
|
|
1089
|
-
|
|
1090
987
|
let(:options) do
|
|
1091
988
|
{
|
|
1092
|
-
|
|
989
|
+
counter_cache: nil
|
|
1093
990
|
}
|
|
1094
991
|
end
|
|
1095
992
|
|
|
@@ -1100,44 +997,41 @@ describe Mongoid::Association::Options do
|
|
|
1100
997
|
end
|
|
1101
998
|
|
|
1102
999
|
context 'when :counter_cache is not in the options' do
|
|
1103
|
-
|
|
1104
1000
|
it 'returns false' do
|
|
1105
1001
|
expect(association.counter_cached?).to be(false)
|
|
1106
1002
|
end
|
|
1107
1003
|
end
|
|
1108
1004
|
end
|
|
1109
1005
|
|
|
1110
|
-
context 'when the option is not supported by the association type',
|
|
1111
|
-
|
|
1006
|
+
context 'when the option is not supported by the association type',
|
|
1007
|
+
if: !association_class::VALID_OPTIONS.include?(:counter_cache) do
|
|
1112
1008
|
it 'returns false' do
|
|
1113
1009
|
expect(association.counter_cached?).to be(false)
|
|
1114
1010
|
end
|
|
1115
1011
|
|
|
1116
1012
|
context 'when the option is provided' do
|
|
1117
|
-
|
|
1118
1013
|
let(:options) do
|
|
1119
1014
|
{
|
|
1120
|
-
|
|
1015
|
+
counter_cache: :column_name
|
|
1121
1016
|
}
|
|
1122
1017
|
end
|
|
1123
1018
|
|
|
1124
1019
|
it 'raises a Mongoid::Errors::InvalidRelationOption error' do
|
|
1125
|
-
expect
|
|
1020
|
+
expect do
|
|
1126
1021
|
association
|
|
1127
|
-
|
|
1022
|
+
end.to raise_exception(Mongoid::Errors::InvalidRelationOption)
|
|
1128
1023
|
end
|
|
1129
1024
|
end
|
|
1130
1025
|
end
|
|
1131
1026
|
end
|
|
1132
1027
|
|
|
1133
1028
|
describe '#extension' do
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1029
|
+
context 'when the option is supported by the association type',
|
|
1030
|
+
if: association_class::VALID_OPTIONS.include?(:extend) do
|
|
1137
1031
|
context 'when a block is passed' do
|
|
1138
|
-
|
|
1139
1032
|
let!(:association) do
|
|
1140
|
-
association_class.new(class_left, :name, options) do
|
|
1033
|
+
association_class.new(class_left, :name, options) do
|
|
1034
|
+
end
|
|
1141
1035
|
end
|
|
1142
1036
|
|
|
1143
1037
|
after do
|
|
@@ -1154,7 +1048,6 @@ describe Mongoid::Association::Options do
|
|
|
1154
1048
|
end
|
|
1155
1049
|
|
|
1156
1050
|
context 'when a module name is passed' do
|
|
1157
|
-
|
|
1158
1051
|
before do
|
|
1159
1052
|
class ClassLeft; end
|
|
1160
1053
|
module ClassLeft::Handle; end
|
|
@@ -1162,7 +1055,7 @@ describe Mongoid::Association::Options do
|
|
|
1162
1055
|
|
|
1163
1056
|
let(:options) do
|
|
1164
1057
|
{
|
|
1165
|
-
|
|
1058
|
+
extend: ClassLeft::Handle
|
|
1166
1059
|
}
|
|
1167
1060
|
end
|
|
1168
1061
|
|
|
@@ -1176,7 +1069,6 @@ describe Mongoid::Association::Options do
|
|
|
1176
1069
|
end
|
|
1177
1070
|
|
|
1178
1071
|
context 'when a block is not passed' do
|
|
1179
|
-
|
|
1180
1072
|
it 'does not define an extension module' do
|
|
1181
1073
|
expect(defined?(ClassLeft::ClassLeftNameRelationExtension)).to be_nil
|
|
1182
1074
|
end
|
|
@@ -1185,27 +1077,23 @@ describe Mongoid::Association::Options do
|
|
|
1185
1077
|
expect(association.extension).to be_nil
|
|
1186
1078
|
end
|
|
1187
1079
|
end
|
|
1188
|
-
|
|
1189
|
-
|
|
1190
1080
|
end
|
|
1191
1081
|
|
|
1192
|
-
context 'when the option is not supported by the association type',
|
|
1193
|
-
|
|
1194
|
-
it '
|
|
1195
|
-
|
|
1082
|
+
context 'when the option is not supported by the association type',
|
|
1083
|
+
if: !association_class::VALID_OPTIONS.include?(:extend) do
|
|
1084
|
+
it 'supports the option' do
|
|
1085
|
+
raise('All association types should support this option')
|
|
1196
1086
|
end
|
|
1197
1087
|
end
|
|
1198
1088
|
end
|
|
1199
1089
|
|
|
1200
1090
|
describe 'the :inverse_of option' do
|
|
1201
|
-
|
|
1202
|
-
|
|
1203
|
-
|
|
1091
|
+
context 'when the option is supported by the association type',
|
|
1092
|
+
if: association_class::VALID_OPTIONS.include?(:inverse_of) do
|
|
1204
1093
|
context 'when :inverse_of is in the options' do
|
|
1205
|
-
|
|
1206
1094
|
let(:options) do
|
|
1207
1095
|
{
|
|
1208
|
-
|
|
1096
|
+
inverse_of: :inverse_name
|
|
1209
1097
|
}
|
|
1210
1098
|
end
|
|
1211
1099
|
|
|
@@ -1215,46 +1103,40 @@ describe Mongoid::Association::Options do
|
|
|
1215
1103
|
end
|
|
1216
1104
|
|
|
1217
1105
|
context 'when :inverse_of is not in the options' do
|
|
1218
|
-
|
|
1219
1106
|
it 'returns nil' do
|
|
1220
1107
|
expect(association.inverse_of).to be_nil
|
|
1221
1108
|
end
|
|
1222
1109
|
end
|
|
1223
1110
|
end
|
|
1224
1111
|
|
|
1225
|
-
context 'when the option is not supported by the association type',
|
|
1226
|
-
|
|
1112
|
+
context 'when the option is not supported by the association type',
|
|
1113
|
+
if: !association_class::VALID_OPTIONS.include?(:inverse_of) do
|
|
1227
1114
|
it 'returns nil' do
|
|
1228
1115
|
expect(association.inverse_of).to be_nil
|
|
1229
1116
|
end
|
|
1230
1117
|
|
|
1231
|
-
|
|
1232
1118
|
context 'when the option is provided' do
|
|
1233
|
-
|
|
1234
1119
|
let(:options) do
|
|
1235
1120
|
{
|
|
1236
|
-
|
|
1121
|
+
inverse_of: :inverse_name
|
|
1237
1122
|
}
|
|
1238
1123
|
end
|
|
1239
1124
|
|
|
1240
|
-
it '
|
|
1241
|
-
|
|
1125
|
+
it 'supports the option' do
|
|
1126
|
+
raise('All association types should support this option')
|
|
1242
1127
|
end
|
|
1243
1128
|
end
|
|
1244
1129
|
end
|
|
1245
1130
|
end
|
|
1246
1131
|
|
|
1247
1132
|
describe '#validate?' do
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1133
|
+
context 'when the option is supported by the association type',
|
|
1134
|
+
if: association_class::VALID_OPTIONS.include?(:validate) do
|
|
1251
1135
|
context 'when :validate is in the options' do
|
|
1252
|
-
|
|
1253
1136
|
context 'when :validate is true' do
|
|
1254
|
-
|
|
1255
1137
|
let(:options) do
|
|
1256
1138
|
{
|
|
1257
|
-
|
|
1139
|
+
validate: true
|
|
1258
1140
|
}
|
|
1259
1141
|
end
|
|
1260
1142
|
|
|
@@ -1264,10 +1146,9 @@ describe Mongoid::Association::Options do
|
|
|
1264
1146
|
end
|
|
1265
1147
|
|
|
1266
1148
|
context 'when :validate is false' do
|
|
1267
|
-
|
|
1268
1149
|
let(:options) do
|
|
1269
1150
|
{
|
|
1270
|
-
|
|
1151
|
+
validate: false
|
|
1271
1152
|
}
|
|
1272
1153
|
end
|
|
1273
1154
|
|
|
@@ -1277,10 +1158,9 @@ describe Mongoid::Association::Options do
|
|
|
1277
1158
|
end
|
|
1278
1159
|
|
|
1279
1160
|
context 'when :validate is nil' do
|
|
1280
|
-
|
|
1281
1161
|
let(:options) do
|
|
1282
1162
|
{
|
|
1283
|
-
|
|
1163
|
+
validate: nil
|
|
1284
1164
|
}
|
|
1285
1165
|
end
|
|
1286
1166
|
|
|
@@ -1291,30 +1171,27 @@ describe Mongoid::Association::Options do
|
|
|
1291
1171
|
end
|
|
1292
1172
|
|
|
1293
1173
|
context 'when :validate is not in the options' do
|
|
1294
|
-
|
|
1295
1174
|
it 'returns the validation default' do
|
|
1296
1175
|
expect(association.send(:validate?)).to be(association.validation_default)
|
|
1297
1176
|
end
|
|
1298
1177
|
end
|
|
1299
1178
|
end
|
|
1300
1179
|
|
|
1301
|
-
context 'when the option is not supported by the association type',
|
|
1302
|
-
|
|
1180
|
+
context 'when the option is not supported by the association type',
|
|
1181
|
+
if: !association_class::VALID_OPTIONS.include?(:validate) do
|
|
1303
1182
|
it 'returns false' do
|
|
1304
1183
|
expect(association.send(:validate?)).to be(false)
|
|
1305
1184
|
end
|
|
1306
1185
|
|
|
1307
|
-
|
|
1308
1186
|
context 'when the option is provided' do
|
|
1309
|
-
|
|
1310
1187
|
let(:options) do
|
|
1311
1188
|
{
|
|
1312
|
-
|
|
1189
|
+
validate: true
|
|
1313
1190
|
}
|
|
1314
1191
|
end
|
|
1315
1192
|
|
|
1316
|
-
it '
|
|
1317
|
-
|
|
1193
|
+
it 'supports the option' do
|
|
1194
|
+
raise('All association types should support this option')
|
|
1318
1195
|
end
|
|
1319
1196
|
end
|
|
1320
1197
|
end
|