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,55 +1,48 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
|
-
require
|
|
3
|
+
require 'spec_helper'
|
|
5
4
|
|
|
6
5
|
describe Mongoid::Clients do
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
shared_examples_for "an overridden collection at the class level" do
|
|
11
|
-
|
|
12
|
-
it "returns the collection for the model" do
|
|
6
|
+
describe '#collection' do
|
|
7
|
+
shared_examples_for 'an overridden collection at the class level' do
|
|
8
|
+
it 'returns the collection for the model' do
|
|
13
9
|
expect(instance_collection).to be_a(Mongo::Collection)
|
|
14
10
|
end
|
|
15
11
|
|
|
16
|
-
it
|
|
17
|
-
expect(instance_collection.name).to eq(
|
|
12
|
+
it 'sets the correct collection name' do
|
|
13
|
+
expect(instance_collection.name).to eq('artists')
|
|
18
14
|
end
|
|
19
15
|
|
|
20
|
-
context
|
|
21
|
-
|
|
22
|
-
it "returns the collection for the model" do
|
|
16
|
+
context 'when accessing from the class level' do
|
|
17
|
+
it 'returns the collection for the model' do
|
|
23
18
|
expect(class_collection).to be_a(Mongo::Collection)
|
|
24
19
|
end
|
|
25
20
|
|
|
26
|
-
it
|
|
27
|
-
expect(class_collection.name).to eq(
|
|
21
|
+
it 'sets the correct collection name' do
|
|
22
|
+
expect(class_collection.name).to eq('artists')
|
|
28
23
|
end
|
|
29
24
|
end
|
|
30
25
|
end
|
|
31
26
|
|
|
32
|
-
context
|
|
33
|
-
|
|
27
|
+
context 'when overriding the persistence options' do
|
|
34
28
|
let(:instance_collection) do
|
|
35
|
-
Band.with(collection:
|
|
29
|
+
Band.with(collection: 'artists') do |klass|
|
|
36
30
|
klass.new.collection
|
|
37
31
|
end
|
|
38
32
|
end
|
|
39
33
|
|
|
40
34
|
let(:class_collection) do
|
|
41
|
-
Band.with(collection:
|
|
35
|
+
Band.with(collection: 'artists') do |klass|
|
|
42
36
|
klass.collection
|
|
43
37
|
end
|
|
44
38
|
end
|
|
45
39
|
|
|
46
|
-
it_behaves_like
|
|
40
|
+
it_behaves_like 'an overridden collection at the class level'
|
|
47
41
|
end
|
|
48
42
|
|
|
49
|
-
context
|
|
50
|
-
|
|
43
|
+
context 'when overriding store_in and persistence options' do
|
|
51
44
|
before do
|
|
52
|
-
Band.store_in collection:
|
|
45
|
+
Band.store_in collection: 'foo'
|
|
53
46
|
end
|
|
54
47
|
|
|
55
48
|
after do
|
|
@@ -57,43 +50,40 @@ describe Mongoid::Clients do
|
|
|
57
50
|
end
|
|
58
51
|
|
|
59
52
|
let(:instance_collection) do
|
|
60
|
-
Band.with(collection:
|
|
53
|
+
Band.with(collection: 'artists') do |klass|
|
|
61
54
|
klass.new.collection
|
|
62
55
|
end
|
|
63
56
|
end
|
|
64
57
|
|
|
65
58
|
let(:class_collection) do
|
|
66
|
-
Band.with(collection:
|
|
59
|
+
Band.with(collection: 'artists') do |klass|
|
|
67
60
|
klass.collection
|
|
68
61
|
end
|
|
69
62
|
end
|
|
70
63
|
|
|
71
|
-
it_behaves_like
|
|
64
|
+
it_behaves_like 'an overridden collection at the class level'
|
|
72
65
|
end
|
|
73
66
|
|
|
74
|
-
context
|
|
75
|
-
|
|
67
|
+
context 'when overriding the default with store_in' do
|
|
76
68
|
after do
|
|
77
69
|
Band.reset_storage_options!
|
|
78
70
|
end
|
|
79
71
|
|
|
80
|
-
context
|
|
81
|
-
|
|
72
|
+
context 'when called multiple times with different options' do
|
|
82
73
|
before do
|
|
83
|
-
Band.store_in collection:
|
|
84
|
-
Band.store_in client:
|
|
74
|
+
Band.store_in collection: 'artists'
|
|
75
|
+
Band.store_in client: 'another'
|
|
85
76
|
end
|
|
86
77
|
|
|
87
|
-
it
|
|
88
|
-
expect(Band.storage_options[:collection]).to eq(
|
|
89
|
-
expect(Band.storage_options[:client]).to eq(
|
|
78
|
+
it 'merges the options together' do
|
|
79
|
+
expect(Band.storage_options[:collection]).to eq('artists')
|
|
80
|
+
expect(Band.storage_options[:client]).to eq('another')
|
|
90
81
|
end
|
|
91
82
|
end
|
|
92
83
|
|
|
93
|
-
context
|
|
94
|
-
|
|
84
|
+
context 'when overriding with a proc' do
|
|
95
85
|
before do
|
|
96
|
-
Band.store_in(collection: ->{
|
|
86
|
+
Band.store_in(collection: -> { 'artists' })
|
|
97
87
|
end
|
|
98
88
|
|
|
99
89
|
let(:instance_collection) do
|
|
@@ -104,13 +94,12 @@ describe Mongoid::Clients do
|
|
|
104
94
|
Band.collection
|
|
105
95
|
end
|
|
106
96
|
|
|
107
|
-
it_behaves_like
|
|
97
|
+
it_behaves_like 'an overridden collection at the class level'
|
|
108
98
|
end
|
|
109
99
|
|
|
110
|
-
context
|
|
111
|
-
|
|
100
|
+
context 'when overriding with a string' do
|
|
112
101
|
before do
|
|
113
|
-
Band.store_in(collection:
|
|
102
|
+
Band.store_in(collection: 'artists')
|
|
114
103
|
end
|
|
115
104
|
|
|
116
105
|
after do
|
|
@@ -125,11 +114,10 @@ describe Mongoid::Clients do
|
|
|
125
114
|
Band.collection
|
|
126
115
|
end
|
|
127
116
|
|
|
128
|
-
it_behaves_like
|
|
117
|
+
it_behaves_like 'an overridden collection at the class level'
|
|
129
118
|
end
|
|
130
119
|
|
|
131
|
-
context
|
|
132
|
-
|
|
120
|
+
context 'when overriding with a symbol' do
|
|
133
121
|
before do
|
|
134
122
|
Band.store_in(collection: :artists)
|
|
135
123
|
end
|
|
@@ -146,97 +134,90 @@ describe Mongoid::Clients do
|
|
|
146
134
|
Band.collection
|
|
147
135
|
end
|
|
148
136
|
|
|
149
|
-
it_behaves_like
|
|
137
|
+
it_behaves_like 'an overridden collection at the class level'
|
|
150
138
|
end
|
|
151
139
|
end
|
|
152
140
|
|
|
153
|
-
context
|
|
154
|
-
|
|
141
|
+
context 'when not overriding the default' do
|
|
155
142
|
let(:band) do
|
|
156
143
|
Band.new
|
|
157
144
|
end
|
|
158
145
|
|
|
159
|
-
it
|
|
146
|
+
it 'returns the collection for the model' do
|
|
160
147
|
expect(band.collection).to be_a(Mongo::Collection)
|
|
161
148
|
end
|
|
162
149
|
|
|
163
|
-
it
|
|
164
|
-
expect(band.collection.name.to_s).to eq(
|
|
150
|
+
it 'sets the correct collection name' do
|
|
151
|
+
expect(band.collection.name.to_s).to eq('bands')
|
|
165
152
|
end
|
|
166
153
|
|
|
167
|
-
context
|
|
168
|
-
|
|
169
|
-
it "returns the collection for the model" do
|
|
154
|
+
context 'when accessing from the class level' do
|
|
155
|
+
it 'returns the collection for the model' do
|
|
170
156
|
expect(Band.collection).to be_a(Mongo::Collection)
|
|
171
157
|
end
|
|
172
158
|
|
|
173
|
-
it
|
|
174
|
-
expect(Band.collection.name.to_s).to eq(
|
|
159
|
+
it 'sets the correct collection name' do
|
|
160
|
+
expect(Band.collection.name.to_s).to eq('bands')
|
|
175
161
|
end
|
|
176
162
|
end
|
|
177
163
|
end
|
|
178
164
|
end
|
|
179
165
|
|
|
180
|
-
describe
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
context "when accessing from the instance" do
|
|
185
|
-
|
|
186
|
-
it "returns the overridden value" do
|
|
166
|
+
describe '#collection_name' do
|
|
167
|
+
shared_examples_for 'an overridden collection name at the class level' do
|
|
168
|
+
context 'when accessing from the instance' do
|
|
169
|
+
it 'returns the overridden value' do
|
|
187
170
|
expect(instance_collection_name).to eq(:artists)
|
|
188
171
|
end
|
|
189
172
|
end
|
|
190
173
|
|
|
191
|
-
context
|
|
192
|
-
|
|
193
|
-
it "returns the overridden value" do
|
|
174
|
+
context 'when accessing from the class level' do
|
|
175
|
+
it 'returns the overridden value' do
|
|
194
176
|
expect(class_collection_name).to eq(:artists)
|
|
195
177
|
end
|
|
196
178
|
end
|
|
197
179
|
end
|
|
198
180
|
|
|
199
|
-
context
|
|
200
|
-
|
|
181
|
+
context 'when overriding the persistence options' do
|
|
201
182
|
let(:instance_collection_name) do
|
|
202
|
-
Band.with(collection:
|
|
183
|
+
Band.with(collection: 'artists') do |klass|
|
|
203
184
|
klass.new.collection_name
|
|
204
185
|
end
|
|
205
186
|
end
|
|
206
187
|
|
|
207
188
|
let(:class_collection_name) do
|
|
208
|
-
Band.with(collection:
|
|
189
|
+
Band.with(collection: 'artists') do |klass|
|
|
209
190
|
klass.collection_name
|
|
210
191
|
end
|
|
211
192
|
end
|
|
212
193
|
|
|
213
|
-
it_behaves_like
|
|
194
|
+
it_behaves_like 'an overridden collection name at the class level'
|
|
214
195
|
|
|
215
196
|
context 'when nesting #with calls' do
|
|
216
197
|
let(:instance_collection_name) do
|
|
217
|
-
Band.with(collection:
|
|
218
|
-
Band.with(collection:
|
|
198
|
+
Band.with(collection: 'ignore') do |_klass|
|
|
199
|
+
Band.with(collection: 'artists') do |klass|
|
|
219
200
|
klass.new.collection_name
|
|
220
201
|
end
|
|
221
202
|
end
|
|
222
203
|
end
|
|
223
204
|
|
|
224
205
|
let(:class_collection_name) do
|
|
225
|
-
Band.with(collection:
|
|
226
|
-
Band.with(collection:
|
|
206
|
+
Band.with(collection: 'ignore') do |_klass|
|
|
207
|
+
Band.with(collection: 'artists') do |klass|
|
|
227
208
|
klass.collection_name
|
|
228
209
|
end
|
|
229
210
|
end
|
|
230
211
|
end
|
|
231
212
|
|
|
232
|
-
it_behaves_like
|
|
213
|
+
it_behaves_like 'an overridden collection name at the class level'
|
|
233
214
|
end
|
|
234
215
|
|
|
235
216
|
context 'when outer #with call specifies the collection' do
|
|
236
217
|
use_spec_mongoid_config
|
|
237
218
|
|
|
238
219
|
let(:instance_collection_name) do
|
|
239
|
-
Band.with(collection:
|
|
220
|
+
Band.with(collection: 'artists') do |_klass|
|
|
240
221
|
Band.with(client: :reports) do |klass|
|
|
241
222
|
klass.new.collection_name
|
|
242
223
|
end
|
|
@@ -244,22 +225,22 @@ describe Mongoid::Clients do
|
|
|
244
225
|
end
|
|
245
226
|
|
|
246
227
|
let(:class_collection_name) do
|
|
247
|
-
Band.with(collection:
|
|
228
|
+
Band.with(collection: 'artists') do |_klass|
|
|
248
229
|
Band.with(client: :reports) do |klass|
|
|
249
230
|
klass.collection_name
|
|
250
231
|
end
|
|
251
232
|
end
|
|
252
233
|
end
|
|
253
234
|
|
|
254
|
-
it_behaves_like
|
|
235
|
+
it_behaves_like 'an overridden collection name at the class level'
|
|
255
236
|
end
|
|
256
237
|
|
|
257
238
|
context 'restores outer context in outer block' do
|
|
258
239
|
use_spec_mongoid_config
|
|
259
240
|
|
|
260
241
|
let(:instance_collection_name) do
|
|
261
|
-
Band.with(collection:
|
|
262
|
-
Band.with(collection:
|
|
242
|
+
Band.with(collection: 'artists') do |klass|
|
|
243
|
+
Band.with(collection: 'scratch') do |klass|
|
|
263
244
|
# nothing
|
|
264
245
|
end
|
|
265
246
|
klass.new.collection_name
|
|
@@ -267,45 +248,43 @@ describe Mongoid::Clients do
|
|
|
267
248
|
end
|
|
268
249
|
|
|
269
250
|
let(:class_collection_name) do
|
|
270
|
-
Band.with(collection:
|
|
271
|
-
Band.with(collection:
|
|
251
|
+
Band.with(collection: 'artists') do |klass|
|
|
252
|
+
Band.with(collection: 'scratch') do |klass|
|
|
272
253
|
# nothing
|
|
273
254
|
end
|
|
274
255
|
klass.collection_name
|
|
275
256
|
end
|
|
276
257
|
end
|
|
277
258
|
|
|
278
|
-
it_behaves_like
|
|
259
|
+
it_behaves_like 'an overridden collection name at the class level'
|
|
279
260
|
end
|
|
280
261
|
end
|
|
281
262
|
|
|
282
|
-
context
|
|
283
|
-
|
|
263
|
+
context 'when overriding store_in and persistence options' do
|
|
284
264
|
let(:instance_collection_name) do
|
|
285
|
-
Band.with(collection:
|
|
265
|
+
Band.with(collection: 'artists') do |klass|
|
|
286
266
|
klass.new.collection_name
|
|
287
267
|
end
|
|
288
268
|
end
|
|
289
269
|
|
|
290
270
|
let(:class_collection_name) do
|
|
291
|
-
Band.with(collection:
|
|
271
|
+
Band.with(collection: 'artists') do |klass|
|
|
292
272
|
klass.collection_name
|
|
293
273
|
end
|
|
294
274
|
end
|
|
295
275
|
|
|
296
276
|
before do
|
|
297
|
-
Band.store_in collection:
|
|
277
|
+
Band.store_in collection: 'foo'
|
|
298
278
|
end
|
|
299
279
|
|
|
300
280
|
after do
|
|
301
281
|
Band.reset_storage_options!
|
|
302
282
|
end
|
|
303
283
|
|
|
304
|
-
it_behaves_like
|
|
284
|
+
it_behaves_like 'an overridden collection name at the class level'
|
|
305
285
|
end
|
|
306
286
|
|
|
307
|
-
context
|
|
308
|
-
|
|
287
|
+
context 'when overriding the default with store_in' do
|
|
309
288
|
let(:instance_collection_name) do
|
|
310
289
|
Band.new.collection_name
|
|
311
290
|
end
|
|
@@ -318,100 +297,88 @@ describe Mongoid::Clients do
|
|
|
318
297
|
Band.reset_storage_options!
|
|
319
298
|
end
|
|
320
299
|
|
|
321
|
-
context
|
|
322
|
-
|
|
300
|
+
context 'when overriding with a proc' do
|
|
323
301
|
before do
|
|
324
|
-
Band.store_in(collection: ->{
|
|
302
|
+
Band.store_in(collection: -> { 'artists' })
|
|
325
303
|
end
|
|
326
304
|
|
|
327
|
-
it_behaves_like
|
|
305
|
+
it_behaves_like 'an overridden collection name at the class level'
|
|
328
306
|
end
|
|
329
307
|
|
|
330
|
-
context
|
|
331
|
-
|
|
308
|
+
context 'when overriding with a string' do
|
|
332
309
|
before do
|
|
333
|
-
Band.store_in(collection:
|
|
310
|
+
Band.store_in(collection: 'artists')
|
|
334
311
|
end
|
|
335
312
|
|
|
336
|
-
it_behaves_like
|
|
313
|
+
it_behaves_like 'an overridden collection name at the class level'
|
|
337
314
|
end
|
|
338
315
|
|
|
339
|
-
context
|
|
340
|
-
|
|
316
|
+
context 'when overriding with a symbol' do
|
|
341
317
|
before do
|
|
342
318
|
Band.store_in(collection: :artists)
|
|
343
319
|
end
|
|
344
320
|
|
|
345
|
-
it_behaves_like
|
|
321
|
+
it_behaves_like 'an overridden collection name at the class level'
|
|
346
322
|
end
|
|
347
323
|
end
|
|
348
324
|
|
|
349
|
-
context
|
|
350
|
-
|
|
325
|
+
context 'when not overriding the default' do
|
|
351
326
|
let(:band) do
|
|
352
327
|
Band.new
|
|
353
328
|
end
|
|
354
329
|
|
|
355
|
-
it
|
|
330
|
+
it 'returns the pluralized model name' do
|
|
356
331
|
expect(band.collection_name).to eq(:bands)
|
|
357
332
|
end
|
|
358
333
|
|
|
359
|
-
context
|
|
360
|
-
|
|
361
|
-
it "returns the pluralized model name" do
|
|
334
|
+
context 'when accessing from the class level' do
|
|
335
|
+
it 'returns the pluralized model name' do
|
|
362
336
|
expect(Band.collection_name).to eq(:bands)
|
|
363
337
|
end
|
|
364
338
|
end
|
|
365
339
|
end
|
|
366
340
|
|
|
367
|
-
context
|
|
368
|
-
|
|
341
|
+
context 'when the model is a subclass' do
|
|
369
342
|
let(:firefox) do
|
|
370
343
|
Firefox.new
|
|
371
344
|
end
|
|
372
345
|
|
|
373
|
-
it
|
|
346
|
+
it 'returns the root class pluralized model name' do
|
|
374
347
|
expect(firefox.collection_name).to eq(:canvases)
|
|
375
348
|
end
|
|
376
349
|
|
|
377
|
-
context
|
|
378
|
-
|
|
379
|
-
it "returns the root class pluralized model name" do
|
|
350
|
+
context 'when accessing from the class level' do
|
|
351
|
+
it 'returns the root class pluralized model name' do
|
|
380
352
|
expect(Firefox.collection_name).to eq(:canvases)
|
|
381
353
|
end
|
|
382
354
|
end
|
|
383
355
|
end
|
|
384
356
|
end
|
|
385
357
|
|
|
386
|
-
describe
|
|
387
|
-
|
|
388
|
-
shared_examples_for "an overridden database name" do
|
|
389
|
-
|
|
358
|
+
describe '#database_name' do
|
|
359
|
+
shared_examples_for 'an overridden database name' do
|
|
390
360
|
after do
|
|
391
361
|
class_mongo_client.close
|
|
392
362
|
end
|
|
393
363
|
|
|
394
|
-
context
|
|
395
|
-
|
|
396
|
-
it "returns the overridden value" do
|
|
364
|
+
context 'when accessing from the instance' do
|
|
365
|
+
it 'returns the overridden value' do
|
|
397
366
|
expect(instance_database.name.to_s).to eq(database_id_alt)
|
|
398
367
|
end
|
|
399
368
|
end
|
|
400
369
|
|
|
401
|
-
context
|
|
402
|
-
|
|
403
|
-
it "returns the overridden value" do
|
|
370
|
+
context 'when accessing from the class level' do
|
|
371
|
+
it 'returns the overridden value' do
|
|
404
372
|
expect(class_database.name.to_s).to eq(database_id_alt)
|
|
405
373
|
end
|
|
406
374
|
|
|
407
|
-
it
|
|
375
|
+
it 'client returns the overridden value' do
|
|
408
376
|
expect(class_mongo_client.database.name).to eq(database_id_alt)
|
|
409
377
|
end
|
|
410
378
|
end
|
|
411
379
|
end
|
|
412
380
|
|
|
413
|
-
context
|
|
414
|
-
|
|
381
|
+
context 'when overriding the persistence options' do
|
|
415
382
|
let(:instance_database) do
|
|
416
383
|
Band.with(database: database_id_alt) do |klass|
|
|
417
384
|
klass.new.mongo_client.database
|
|
@@ -430,11 +397,10 @@ describe Mongoid::Clients do
|
|
|
430
397
|
end
|
|
431
398
|
end
|
|
432
399
|
|
|
433
|
-
it_behaves_like
|
|
400
|
+
it_behaves_like 'an overridden database name'
|
|
434
401
|
end
|
|
435
402
|
|
|
436
|
-
context
|
|
437
|
-
|
|
403
|
+
context 'when overriding with store_in' do
|
|
438
404
|
let(:instance_database) do
|
|
439
405
|
Band.new.mongo_client.database
|
|
440
406
|
end
|
|
@@ -456,11 +422,10 @@ describe Mongoid::Clients do
|
|
|
456
422
|
class_mongo_client.close
|
|
457
423
|
end
|
|
458
424
|
|
|
459
|
-
it_behaves_like
|
|
425
|
+
it_behaves_like 'an overridden database name'
|
|
460
426
|
end
|
|
461
427
|
|
|
462
|
-
context
|
|
463
|
-
|
|
428
|
+
context 'when overriding store_in and persistence options' do
|
|
464
429
|
let(:instance_database) do
|
|
465
430
|
Band.with(database: database_id_alt) do |klass|
|
|
466
431
|
klass.new.mongo_client.database
|
|
@@ -480,7 +445,7 @@ describe Mongoid::Clients do
|
|
|
480
445
|
end
|
|
481
446
|
|
|
482
447
|
before do
|
|
483
|
-
Band.store_in database:
|
|
448
|
+
Band.store_in database: 'foo'
|
|
484
449
|
end
|
|
485
450
|
|
|
486
451
|
after do
|
|
@@ -488,11 +453,10 @@ describe Mongoid::Clients do
|
|
|
488
453
|
class_mongo_client.close
|
|
489
454
|
end
|
|
490
455
|
|
|
491
|
-
it_behaves_like
|
|
456
|
+
it_behaves_like 'an overridden database name'
|
|
492
457
|
end
|
|
493
458
|
|
|
494
|
-
context
|
|
495
|
-
|
|
459
|
+
context 'when overriding using the client' do
|
|
496
460
|
let(:client_name) { :alternative }
|
|
497
461
|
|
|
498
462
|
before do
|
|
@@ -503,8 +467,7 @@ describe Mongoid::Clients do
|
|
|
503
467
|
Mongoid.clients.delete(client_name)
|
|
504
468
|
end
|
|
505
469
|
|
|
506
|
-
context
|
|
507
|
-
|
|
470
|
+
context 'when overriding the persistence options' do
|
|
508
471
|
let(:instance_database) do
|
|
509
472
|
Band.with(client: :alternative) do |klass|
|
|
510
473
|
klass.new.mongo_client.database
|
|
@@ -523,11 +486,10 @@ describe Mongoid::Clients do
|
|
|
523
486
|
end
|
|
524
487
|
end
|
|
525
488
|
|
|
526
|
-
it_behaves_like
|
|
489
|
+
it_behaves_like 'an overridden database name'
|
|
527
490
|
end
|
|
528
491
|
|
|
529
|
-
context
|
|
530
|
-
|
|
492
|
+
context 'when overriding with store_in' do
|
|
531
493
|
let(:instance_database) do
|
|
532
494
|
Band.new.mongo_client.database
|
|
533
495
|
end
|
|
@@ -549,15 +511,14 @@ describe Mongoid::Clients do
|
|
|
549
511
|
class_mongo_client.close
|
|
550
512
|
end
|
|
551
513
|
|
|
552
|
-
it_behaves_like
|
|
514
|
+
it_behaves_like 'an overridden database name'
|
|
553
515
|
end
|
|
554
516
|
end
|
|
555
517
|
end
|
|
556
518
|
|
|
557
|
-
describe
|
|
558
|
-
|
|
519
|
+
describe '#mongo_client' do
|
|
559
520
|
let(:file) do
|
|
560
|
-
File.join(File.dirname(__FILE__),
|
|
521
|
+
File.join(File.dirname(__FILE__), '..', 'config', 'mongoid.yml')
|
|
561
522
|
end
|
|
562
523
|
|
|
563
524
|
before do
|
|
@@ -566,10 +527,15 @@ describe Mongoid::Clients do
|
|
|
566
527
|
Mongoid.clients[:default][:database] = database_id
|
|
567
528
|
end
|
|
568
529
|
|
|
569
|
-
context
|
|
570
|
-
|
|
530
|
+
context 'when getting the default' do
|
|
571
531
|
let(:file) do
|
|
572
|
-
File.join(File.dirname(__FILE__),
|
|
532
|
+
File.join(File.dirname(__FILE__), '..', 'config', 'mongoid.yml')
|
|
533
|
+
end
|
|
534
|
+
let!(:band) do
|
|
535
|
+
Band.new
|
|
536
|
+
end
|
|
537
|
+
let!(:mongo_client) do
|
|
538
|
+
band.mongo_client
|
|
573
539
|
end
|
|
574
540
|
|
|
575
541
|
before do
|
|
@@ -582,15 +548,7 @@ describe Mongoid::Clients do
|
|
|
582
548
|
mongo_client.close
|
|
583
549
|
end
|
|
584
550
|
|
|
585
|
-
|
|
586
|
-
Band.new
|
|
587
|
-
end
|
|
588
|
-
|
|
589
|
-
let!(:mongo_client) do
|
|
590
|
-
band.mongo_client
|
|
591
|
-
end
|
|
592
|
-
|
|
593
|
-
it "returns the default client" do
|
|
551
|
+
it 'returns the default client' do
|
|
594
552
|
expect(mongo_client.options[:database].to_s).to eq(database_id)
|
|
595
553
|
end
|
|
596
554
|
|
|
@@ -598,13 +556,12 @@ describe Mongoid::Clients do
|
|
|
598
556
|
expect(mongo_client.options[:platform]).to eq(Mongoid::PLATFORM_DETAILS)
|
|
599
557
|
end
|
|
600
558
|
|
|
601
|
-
it
|
|
559
|
+
it 'sets the app_name to the config value' do
|
|
602
560
|
expect(mongo_client.options[:app_name]).to eq('testing')
|
|
603
561
|
end
|
|
604
562
|
end
|
|
605
563
|
|
|
606
|
-
context
|
|
607
|
-
|
|
564
|
+
context 'when no client exists with the key' do
|
|
608
565
|
before(:all) do
|
|
609
566
|
Band.store_in(client: :nonexistent)
|
|
610
567
|
end
|
|
@@ -613,14 +570,14 @@ describe Mongoid::Clients do
|
|
|
613
570
|
Band.new
|
|
614
571
|
end
|
|
615
572
|
|
|
616
|
-
it
|
|
617
|
-
expect
|
|
573
|
+
it 'raises an error' do
|
|
574
|
+
expect do
|
|
618
575
|
band.mongo_client
|
|
619
|
-
|
|
576
|
+
end.to raise_error(Mongoid::Errors::NoClientConfig)
|
|
620
577
|
end
|
|
621
578
|
end
|
|
622
579
|
|
|
623
|
-
context
|
|
580
|
+
context 'when getting a client by name' do
|
|
624
581
|
use_spec_mongoid_config
|
|
625
582
|
|
|
626
583
|
before do
|
|
@@ -636,7 +593,7 @@ describe Mongoid::Clients do
|
|
|
636
593
|
Band.new.mongo_client
|
|
637
594
|
end
|
|
638
595
|
|
|
639
|
-
it
|
|
596
|
+
it 'uses the reports client' do
|
|
640
597
|
expect(mongo_client.options[:database].to_s).to eq('reports')
|
|
641
598
|
end
|
|
642
599
|
|
|
@@ -644,13 +601,12 @@ describe Mongoid::Clients do
|
|
|
644
601
|
expect(mongo_client.options[:platform]).to eq(Mongoid::PLATFORM_DETAILS)
|
|
645
602
|
end
|
|
646
603
|
|
|
647
|
-
it
|
|
604
|
+
it 'sets the app_name to the config value' do
|
|
648
605
|
expect(mongo_client.options[:app_name]).to eq('testing')
|
|
649
606
|
end
|
|
650
607
|
end
|
|
651
608
|
|
|
652
609
|
context 'when the app_name is not set in the config' do
|
|
653
|
-
|
|
654
610
|
before do
|
|
655
611
|
Mongoid::Config.reset
|
|
656
612
|
Mongoid.configure do |config|
|
|
@@ -668,10 +624,9 @@ describe Mongoid::Clients do
|
|
|
668
624
|
end
|
|
669
625
|
end
|
|
670
626
|
|
|
671
|
-
describe
|
|
672
|
-
|
|
627
|
+
describe '.mongo_client' do
|
|
673
628
|
let(:file) do
|
|
674
|
-
File.join(File.dirname(__FILE__),
|
|
629
|
+
File.join(File.dirname(__FILE__), '..', 'config', 'mongoid.yml')
|
|
675
630
|
end
|
|
676
631
|
|
|
677
632
|
before do
|
|
@@ -684,10 +639,12 @@ describe Mongoid::Clients do
|
|
|
684
639
|
Band.reset_storage_options!
|
|
685
640
|
end
|
|
686
641
|
|
|
687
|
-
context
|
|
688
|
-
|
|
642
|
+
context 'when getting the default' do
|
|
689
643
|
let(:file) do
|
|
690
|
-
File.join(File.dirname(__FILE__),
|
|
644
|
+
File.join(File.dirname(__FILE__), '..', 'config', 'mongoid.yml')
|
|
645
|
+
end
|
|
646
|
+
let!(:mongo_client) do
|
|
647
|
+
Band.mongo_client
|
|
691
648
|
end
|
|
692
649
|
|
|
693
650
|
before do
|
|
@@ -697,11 +654,7 @@ describe Mongoid::Clients do
|
|
|
697
654
|
Mongoid.clients[:default][:database] = database_id
|
|
698
655
|
end
|
|
699
656
|
|
|
700
|
-
|
|
701
|
-
Band.mongo_client
|
|
702
|
-
end
|
|
703
|
-
|
|
704
|
-
it "returns the default client" do
|
|
657
|
+
it 'returns the default client' do
|
|
705
658
|
expect(mongo_client.options[:database].to_s).to eq(database_id)
|
|
706
659
|
end
|
|
707
660
|
|
|
@@ -709,50 +662,44 @@ describe Mongoid::Clients do
|
|
|
709
662
|
expect(mongo_client.options[:platform]).to eq(Mongoid::PLATFORM_DETAILS)
|
|
710
663
|
end
|
|
711
664
|
|
|
712
|
-
it
|
|
665
|
+
it 'sets the app_name to the config value' do
|
|
713
666
|
expect(mongo_client.options[:app_name]).to eq('testing')
|
|
714
667
|
end
|
|
715
668
|
end
|
|
716
669
|
|
|
717
|
-
context
|
|
718
|
-
|
|
670
|
+
context 'when no client exists with the key' do
|
|
719
671
|
before(:all) do
|
|
720
672
|
Band.store_in(client: :nonexistent)
|
|
721
673
|
end
|
|
722
674
|
|
|
723
|
-
it
|
|
724
|
-
expect
|
|
675
|
+
it 'raises an error' do
|
|
676
|
+
expect do
|
|
725
677
|
Band.mongo_client
|
|
726
|
-
|
|
678
|
+
end.to raise_error(Mongoid::Errors::NoClientConfig)
|
|
727
679
|
end
|
|
728
680
|
end
|
|
729
681
|
end
|
|
730
682
|
|
|
731
|
-
describe
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
735
|
-
it "raises an error" do
|
|
736
|
-
expect {
|
|
683
|
+
describe '.store_in' do
|
|
684
|
+
context 'when provided a non hash' do
|
|
685
|
+
it 'raises an error' do
|
|
686
|
+
expect do
|
|
737
687
|
Band.store_in :artists
|
|
738
|
-
|
|
688
|
+
end.to raise_error(Mongoid::Errors::InvalidStorageOptions)
|
|
739
689
|
end
|
|
740
690
|
end
|
|
741
691
|
|
|
742
|
-
context
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
|
|
748
|
-
Band.store_in coll: "artists"
|
|
749
|
-
}.to raise_error(Mongoid::Errors::InvalidStorageOptions)
|
|
692
|
+
context 'when provided a hash' do
|
|
693
|
+
context 'when the hash is not valid' do
|
|
694
|
+
it 'raises an error' do
|
|
695
|
+
expect do
|
|
696
|
+
Band.store_in coll: 'artists'
|
|
697
|
+
end.to raise_error(Mongoid::Errors::InvalidStorageOptions)
|
|
750
698
|
end
|
|
751
699
|
end
|
|
752
700
|
end
|
|
753
701
|
|
|
754
|
-
context
|
|
755
|
-
|
|
702
|
+
context 'when it is called on a subclass' do
|
|
756
703
|
let(:client) { StoreParent.collection.client }
|
|
757
704
|
let(:parent) { StoreParent.create! }
|
|
758
705
|
let(:child1) { StoreChild1.create! }
|
|
@@ -776,10 +723,8 @@ describe Mongoid::Clients do
|
|
|
776
723
|
Object.send(:remove_const, :StoreChild2)
|
|
777
724
|
end
|
|
778
725
|
|
|
779
|
-
context
|
|
780
|
-
|
|
781
|
-
context "when it is called on all subclasses" do
|
|
782
|
-
|
|
726
|
+
context 'when it is not called on the parent' do
|
|
727
|
+
context 'when it is called on all subclasses' do
|
|
783
728
|
before do
|
|
784
729
|
StoreChild1.store_in collection: :store_ones
|
|
785
730
|
StoreChild2.store_in collection: :store_twos
|
|
@@ -790,21 +735,20 @@ describe Mongoid::Clients do
|
|
|
790
735
|
let(:db_child1) { client['store_ones'].find.first }
|
|
791
736
|
let(:db_child2) { client['store_twos'].find.first }
|
|
792
737
|
|
|
793
|
-
it
|
|
794
|
-
expect(db_parent).to eq({
|
|
795
|
-
expect(db_child1).to eq({
|
|
796
|
-
expect(db_child2).to eq({
|
|
738
|
+
it 'stores the documents in the correct collections' do
|
|
739
|
+
expect(db_parent).to eq({ '_id' => parent.id, '_type' => 'StoreParent' })
|
|
740
|
+
expect(db_child1).to eq({ '_id' => child1.id, '_type' => 'StoreChild1' })
|
|
741
|
+
expect(db_child2).to eq({ '_id' => child2.id, '_type' => 'StoreChild2' })
|
|
797
742
|
end
|
|
798
743
|
|
|
799
|
-
it
|
|
744
|
+
it 'only queries from its own collections' do
|
|
800
745
|
expect(StoreParent.count).to eq(1)
|
|
801
746
|
expect(StoreChild1.count).to eq(1)
|
|
802
747
|
expect(StoreChild2.count).to eq(1)
|
|
803
748
|
end
|
|
804
749
|
end
|
|
805
750
|
|
|
806
|
-
context
|
|
807
|
-
|
|
751
|
+
context 'when it is called on one of the subclasses' do
|
|
808
752
|
before do
|
|
809
753
|
StoreChild1.store_in collection: :store_ones
|
|
810
754
|
[ parent, child1, child2 ]
|
|
@@ -814,13 +758,13 @@ describe Mongoid::Clients do
|
|
|
814
758
|
let(:db_child1) { client['store_ones'].find.first }
|
|
815
759
|
let(:db_child2) { client['store_parents'].find.to_a.last }
|
|
816
760
|
|
|
817
|
-
it
|
|
818
|
-
expect(db_parent).to eq({
|
|
819
|
-
expect(db_child1).to eq({
|
|
820
|
-
expect(db_child2).to eq({
|
|
761
|
+
it 'stores the documents in the correct collections' do
|
|
762
|
+
expect(db_parent).to eq({ '_id' => parent.id, '_type' => 'StoreParent' })
|
|
763
|
+
expect(db_child1).to eq({ '_id' => child1.id, '_type' => 'StoreChild1' })
|
|
764
|
+
expect(db_child2).to eq({ '_id' => child2.id, '_type' => 'StoreChild2' })
|
|
821
765
|
end
|
|
822
766
|
|
|
823
|
-
it
|
|
767
|
+
it 'queries from its own collections' do
|
|
824
768
|
expect(StoreParent.count).to eq(2)
|
|
825
769
|
expect(StoreChild1.count).to eq(1)
|
|
826
770
|
expect(StoreChild2.count).to eq(1)
|
|
@@ -828,14 +772,12 @@ describe Mongoid::Clients do
|
|
|
828
772
|
end
|
|
829
773
|
end
|
|
830
774
|
|
|
831
|
-
context
|
|
832
|
-
|
|
775
|
+
context 'when it is called on the parent' do
|
|
833
776
|
before do
|
|
834
777
|
StoreParent.store_in collection: :st_parents
|
|
835
778
|
end
|
|
836
779
|
|
|
837
|
-
context
|
|
838
|
-
|
|
780
|
+
context 'when it is called on all subclasses' do
|
|
839
781
|
before do
|
|
840
782
|
StoreChild1.store_in collection: :store_ones
|
|
841
783
|
StoreChild2.store_in collection: :store_twos
|
|
@@ -846,15 +788,14 @@ describe Mongoid::Clients do
|
|
|
846
788
|
let(:db_child1) { client['store_ones'].find.first }
|
|
847
789
|
let(:db_child2) { client['store_twos'].find.first }
|
|
848
790
|
|
|
849
|
-
it
|
|
850
|
-
expect(db_parent).to eq({
|
|
851
|
-
expect(db_child1).to eq({
|
|
852
|
-
expect(db_child2).to eq({
|
|
791
|
+
it 'stores the documents in the correct collections' do
|
|
792
|
+
expect(db_parent).to eq({ '_id' => parent.id, '_type' => 'StoreParent' })
|
|
793
|
+
expect(db_child1).to eq({ '_id' => child1.id, '_type' => 'StoreChild1' })
|
|
794
|
+
expect(db_child2).to eq({ '_id' => child2.id, '_type' => 'StoreChild2' })
|
|
853
795
|
end
|
|
854
796
|
end
|
|
855
797
|
|
|
856
|
-
context
|
|
857
|
-
|
|
798
|
+
context 'when it is called on one of the subclasses' do
|
|
858
799
|
before do
|
|
859
800
|
StoreChild1.store_in collection: :store_ones
|
|
860
801
|
[ parent, child1, child2 ]
|
|
@@ -864,20 +805,18 @@ describe Mongoid::Clients do
|
|
|
864
805
|
let(:db_child1) { client['store_ones'].find.first }
|
|
865
806
|
let(:db_child2) { client['st_parents'].find.to_a.last }
|
|
866
807
|
|
|
867
|
-
it
|
|
868
|
-
expect(db_parent).to eq({
|
|
869
|
-
expect(db_child1).to eq({
|
|
870
|
-
expect(db_child2).to eq({
|
|
808
|
+
it 'stores the documents in the correct collections' do
|
|
809
|
+
expect(db_parent).to eq({ '_id' => parent.id, '_type' => 'StoreParent' })
|
|
810
|
+
expect(db_child1).to eq({ '_id' => child1.id, '_type' => 'StoreChild1' })
|
|
811
|
+
expect(db_child2).to eq({ '_id' => child2.id, '_type' => 'StoreChild2' })
|
|
871
812
|
end
|
|
872
813
|
end
|
|
873
814
|
end
|
|
874
815
|
end
|
|
875
816
|
end
|
|
876
817
|
|
|
877
|
-
describe
|
|
878
|
-
|
|
879
|
-
context "when changing write concern options" do
|
|
880
|
-
|
|
818
|
+
describe '.with' do
|
|
819
|
+
context 'when changing write concern options' do
|
|
881
820
|
let(:client_one) do
|
|
882
821
|
Band.with(write: { w: 2 }) do |klass|
|
|
883
822
|
klass.mongo_client
|
|
@@ -888,143 +827,130 @@ describe Mongoid::Clients do
|
|
|
888
827
|
Band.mongo_client
|
|
889
828
|
end
|
|
890
829
|
|
|
891
|
-
it
|
|
892
|
-
expect(client_one.write_concern).
|
|
830
|
+
it 'does not carry over the options' do
|
|
831
|
+
expect(client_one.write_concern).not_to eq(client_two.write_concern)
|
|
893
832
|
end
|
|
894
833
|
end
|
|
895
834
|
|
|
896
|
-
context
|
|
897
|
-
|
|
835
|
+
context 'when sending operations to a different database' do
|
|
898
836
|
after do
|
|
899
837
|
Band.with(database: database_id_alt) do |klass|
|
|
900
838
|
klass.delete_all
|
|
901
839
|
end
|
|
902
840
|
end
|
|
903
841
|
|
|
904
|
-
describe
|
|
905
|
-
|
|
842
|
+
describe '.create!' do
|
|
906
843
|
let!(:band) do
|
|
907
844
|
Band.with(database: database_id_alt) do |klass|
|
|
908
845
|
klass.create!
|
|
909
846
|
end
|
|
910
847
|
end
|
|
911
848
|
|
|
912
|
-
|
|
913
|
-
|
|
914
|
-
|
|
915
|
-
|
|
849
|
+
let(:count) do
|
|
850
|
+
Band.with(database: database_id_alt) do |klass|
|
|
851
|
+
klass.count
|
|
852
|
+
end
|
|
916
853
|
end
|
|
917
|
-
|
|
918
854
|
let(:from_db) do
|
|
919
855
|
Band.with(database: database_id_alt) do |klass|
|
|
920
856
|
klass.find(band.id)
|
|
921
857
|
end
|
|
922
858
|
end
|
|
923
859
|
|
|
924
|
-
it
|
|
925
|
-
expect
|
|
860
|
+
it 'does not persist to the default database' do
|
|
861
|
+
expect do
|
|
862
|
+
Band.find(band.id)
|
|
863
|
+
end.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
926
864
|
end
|
|
927
865
|
|
|
928
|
-
|
|
929
|
-
|
|
930
|
-
klass.count
|
|
931
|
-
end
|
|
866
|
+
it 'persists to the specified database' do
|
|
867
|
+
expect(from_db).to eq(band)
|
|
932
868
|
end
|
|
933
869
|
|
|
934
|
-
it
|
|
870
|
+
it 'persists the correct number of documents' do
|
|
935
871
|
expect(count).to eq(1)
|
|
936
872
|
end
|
|
937
873
|
end
|
|
938
874
|
end
|
|
939
875
|
|
|
940
|
-
context
|
|
941
|
-
|
|
942
|
-
describe ".create!" do
|
|
943
|
-
|
|
876
|
+
context 'when sending operations to a different collection' do
|
|
877
|
+
describe '.create!' do
|
|
944
878
|
let!(:band) do
|
|
945
|
-
Band.with(collection:
|
|
879
|
+
Band.with(collection: 'artists') do |klass|
|
|
946
880
|
klass.create!
|
|
947
881
|
end
|
|
948
882
|
end
|
|
949
883
|
|
|
950
|
-
|
|
951
|
-
|
|
952
|
-
|
|
953
|
-
|
|
884
|
+
let(:count) do
|
|
885
|
+
Band.with(collection: 'artists') do |klass|
|
|
886
|
+
klass.count
|
|
887
|
+
end
|
|
954
888
|
end
|
|
955
|
-
|
|
956
889
|
let(:from_db) do
|
|
957
|
-
Band.with(collection:
|
|
890
|
+
Band.with(collection: 'artists') do |klass|
|
|
958
891
|
klass.find(band.id)
|
|
959
892
|
end
|
|
960
893
|
end
|
|
961
894
|
|
|
962
|
-
it
|
|
963
|
-
expect
|
|
895
|
+
it 'does not persist to the default database' do
|
|
896
|
+
expect do
|
|
897
|
+
Band.find(band.id)
|
|
898
|
+
end.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
964
899
|
end
|
|
965
900
|
|
|
966
|
-
|
|
967
|
-
|
|
968
|
-
klass.count
|
|
969
|
-
end
|
|
901
|
+
it 'persists to the specified database' do
|
|
902
|
+
expect(from_db).to eq(band)
|
|
970
903
|
end
|
|
971
904
|
|
|
972
|
-
it
|
|
905
|
+
it 'persists the correct number of documents' do
|
|
973
906
|
expect(count).to eq(1)
|
|
974
907
|
end
|
|
975
908
|
end
|
|
976
909
|
end
|
|
977
910
|
|
|
978
|
-
context
|
|
979
|
-
|
|
980
|
-
describe ".create" do
|
|
981
|
-
|
|
911
|
+
context 'when sending operations with safe mode' do
|
|
912
|
+
describe '.create' do
|
|
982
913
|
before do
|
|
983
914
|
Person.index({ ssn: 1 }, { unique: true })
|
|
984
915
|
Person.create_indexes
|
|
985
|
-
Person.create(ssn:
|
|
916
|
+
Person.create(ssn: '432-97-1111')
|
|
986
917
|
end
|
|
987
918
|
|
|
988
919
|
after do
|
|
989
920
|
Person.collection.drop
|
|
990
921
|
end
|
|
991
922
|
|
|
992
|
-
context
|
|
993
|
-
|
|
994
|
-
it "inserts the document" do
|
|
923
|
+
context 'when no error occurs' do
|
|
924
|
+
it 'inserts the document' do
|
|
995
925
|
expect(Person.count).to eq(1)
|
|
996
926
|
end
|
|
997
927
|
end
|
|
998
928
|
|
|
999
|
-
context
|
|
1000
|
-
|
|
1001
|
-
|
|
1002
|
-
|
|
1003
|
-
|
|
1004
|
-
}.to raise_error(Mongo::Error::OperationFailure)
|
|
929
|
+
context 'when a mongodb error occurs' do
|
|
930
|
+
it 'bubbles up to the caller' do
|
|
931
|
+
expect do
|
|
932
|
+
Person.create(ssn: '432-97-1111')
|
|
933
|
+
end.to raise_error(Mongo::Error::OperationFailure)
|
|
1005
934
|
end
|
|
1006
935
|
end
|
|
1007
936
|
end
|
|
1008
937
|
|
|
1009
|
-
describe
|
|
1010
|
-
|
|
938
|
+
describe '.create!' do
|
|
1011
939
|
before do
|
|
1012
|
-
Person.create!(ssn:
|
|
940
|
+
Person.create!(ssn: '432-97-1112')
|
|
1013
941
|
end
|
|
1014
942
|
|
|
1015
943
|
after do
|
|
1016
944
|
Person.collection.drop
|
|
1017
945
|
end
|
|
1018
946
|
|
|
1019
|
-
context
|
|
1020
|
-
|
|
1021
|
-
it "inserts the document" do
|
|
947
|
+
context 'when no error occurs' do
|
|
948
|
+
it 'inserts the document' do
|
|
1022
949
|
expect(Person.count).to eq(1)
|
|
1023
950
|
end
|
|
1024
951
|
end
|
|
1025
952
|
|
|
1026
|
-
context
|
|
1027
|
-
|
|
953
|
+
context 'when a mongodb error occurs' do
|
|
1028
954
|
before do
|
|
1029
955
|
Person.index({ ssn: 1 }, { unique: true })
|
|
1030
956
|
Person.create_indexes
|
|
@@ -1034,33 +960,30 @@ describe Mongoid::Clients do
|
|
|
1034
960
|
Person.collection.drop
|
|
1035
961
|
end
|
|
1036
962
|
|
|
1037
|
-
it
|
|
1038
|
-
expect
|
|
1039
|
-
Person.create!(ssn:
|
|
1040
|
-
|
|
963
|
+
it 'bubbles up to the caller' do
|
|
964
|
+
expect do
|
|
965
|
+
Person.create!(ssn: '432-97-1112')
|
|
966
|
+
end.to raise_error(Mongo::Error::OperationFailure)
|
|
1041
967
|
end
|
|
1042
968
|
end
|
|
1043
969
|
|
|
1044
|
-
context
|
|
1045
|
-
|
|
1046
|
-
|
|
1047
|
-
|
|
1048
|
-
|
|
1049
|
-
}.to raise_error(Mongoid::Errors::Validations)
|
|
970
|
+
context 'when a validation error occurs' do
|
|
971
|
+
it 'raises the validation error' do
|
|
972
|
+
expect do
|
|
973
|
+
Account.create!(name: 'this name is way too long')
|
|
974
|
+
end.to raise_error(Mongoid::Errors::Validations)
|
|
1050
975
|
end
|
|
1051
976
|
end
|
|
1052
977
|
end
|
|
1053
978
|
|
|
1054
|
-
describe
|
|
1055
|
-
|
|
979
|
+
describe '.save' do
|
|
1056
980
|
before do
|
|
1057
|
-
Person.create!(ssn:
|
|
981
|
+
Person.create!(ssn: '432-97-1113')
|
|
1058
982
|
end
|
|
1059
983
|
|
|
1060
|
-
context
|
|
1061
|
-
|
|
984
|
+
context 'when a mongodb error occurs' do
|
|
1062
985
|
let(:person) do
|
|
1063
|
-
Person.new(ssn:
|
|
986
|
+
Person.new(ssn: '432-97-1113')
|
|
1064
987
|
end
|
|
1065
988
|
|
|
1066
989
|
before do
|
|
@@ -1072,24 +995,22 @@ describe Mongoid::Clients do
|
|
|
1072
995
|
Person.collection.drop
|
|
1073
996
|
end
|
|
1074
997
|
|
|
1075
|
-
it
|
|
1076
|
-
expect
|
|
998
|
+
it 'bubbles up to the caller' do
|
|
999
|
+
expect do
|
|
1077
1000
|
person.save
|
|
1078
|
-
|
|
1001
|
+
end.to raise_error(Mongo::Error::OperationFailure)
|
|
1079
1002
|
end
|
|
1080
1003
|
end
|
|
1081
1004
|
end
|
|
1082
1005
|
|
|
1083
|
-
describe
|
|
1084
|
-
|
|
1006
|
+
describe '.save!' do
|
|
1085
1007
|
before do
|
|
1086
|
-
Person.create!(ssn:
|
|
1008
|
+
Person.create!(ssn: '432-97-1114')
|
|
1087
1009
|
end
|
|
1088
1010
|
|
|
1089
|
-
context
|
|
1090
|
-
|
|
1011
|
+
context 'when a mongodb error occurs' do
|
|
1091
1012
|
let(:person) do
|
|
1092
|
-
Person.new(ssn:
|
|
1013
|
+
Person.new(ssn: '432-97-1114')
|
|
1093
1014
|
end
|
|
1094
1015
|
|
|
1095
1016
|
before do
|
|
@@ -1101,23 +1022,22 @@ describe Mongoid::Clients do
|
|
|
1101
1022
|
Person.collection.drop
|
|
1102
1023
|
end
|
|
1103
1024
|
|
|
1104
|
-
it
|
|
1105
|
-
expect
|
|
1025
|
+
it 'bubbles up to the caller' do
|
|
1026
|
+
expect do
|
|
1106
1027
|
person.save!
|
|
1107
|
-
|
|
1028
|
+
end.to raise_error(Mongo::Error::OperationFailure)
|
|
1108
1029
|
end
|
|
1109
1030
|
end
|
|
1110
1031
|
|
|
1111
|
-
context
|
|
1112
|
-
|
|
1032
|
+
context 'when a validation error occurs' do
|
|
1113
1033
|
let(:account) do
|
|
1114
|
-
Account.new(name:
|
|
1034
|
+
Account.new(name: 'this name is way too long')
|
|
1115
1035
|
end
|
|
1116
1036
|
|
|
1117
|
-
it
|
|
1118
|
-
expect
|
|
1037
|
+
it 'raises the validation error' do
|
|
1038
|
+
expect do
|
|
1119
1039
|
account.save!
|
|
1120
|
-
|
|
1040
|
+
end.to raise_error(Mongoid::Errors::Validations)
|
|
1121
1041
|
end
|
|
1122
1042
|
end
|
|
1123
1043
|
end
|
|
@@ -1126,7 +1046,7 @@ describe Mongoid::Clients do
|
|
|
1126
1046
|
context 'when requesting named client' do
|
|
1127
1047
|
let(:secondary_client) do
|
|
1128
1048
|
double(Mongo::Client).tap do |client|
|
|
1129
|
-
allow(client).to receive(:cluster).and_return(double(
|
|
1049
|
+
allow(client).to receive(:cluster).and_return(double('cluster'))
|
|
1130
1050
|
end
|
|
1131
1051
|
end
|
|
1132
1052
|
|
|
@@ -1157,7 +1077,7 @@ describe Mongoid::Clients do
|
|
|
1157
1077
|
require_mri
|
|
1158
1078
|
|
|
1159
1079
|
let(:first_band) do
|
|
1160
|
-
Band.create!(name:
|
|
1080
|
+
Band.create!(name: 'The Beatles')
|
|
1161
1081
|
end
|
|
1162
1082
|
|
|
1163
1083
|
let(:second_band) do
|
|
@@ -1174,23 +1094,19 @@ describe Mongoid::Clients do
|
|
|
1174
1094
|
end
|
|
1175
1095
|
expect(Symbol.all_symbols.size).to be <= initial_symbols_count
|
|
1176
1096
|
end
|
|
1177
|
-
|
|
1178
1097
|
end
|
|
1179
|
-
|
|
1180
1098
|
end
|
|
1181
1099
|
|
|
1182
|
-
context
|
|
1183
|
-
|
|
1100
|
+
context 'when overriding the default database' do
|
|
1184
1101
|
let(:file) do
|
|
1185
|
-
File.join(File.dirname(__FILE__),
|
|
1102
|
+
File.join(File.dirname(__FILE__), '..', 'config', 'mongoid.yml')
|
|
1186
1103
|
end
|
|
1187
1104
|
|
|
1188
1105
|
before do
|
|
1189
1106
|
Mongoid::Config.load!(file, :test)
|
|
1190
1107
|
end
|
|
1191
1108
|
|
|
1192
|
-
context
|
|
1193
|
-
|
|
1109
|
+
context 'when the override is global' do
|
|
1194
1110
|
before do
|
|
1195
1111
|
Mongoid.override_database(:mongoid_optional)
|
|
1196
1112
|
end
|
|
@@ -1202,12 +1118,12 @@ describe Mongoid::Clients do
|
|
|
1202
1118
|
end
|
|
1203
1119
|
|
|
1204
1120
|
let!(:band) do
|
|
1205
|
-
Band.create!(name:
|
|
1121
|
+
Band.create!(name: 'Tool')
|
|
1206
1122
|
end
|
|
1207
1123
|
|
|
1208
|
-
it
|
|
1124
|
+
it 'persists to the overridden database' do
|
|
1209
1125
|
Band.mongo_client.with(database: :mongoid_optional) do |sess|
|
|
1210
|
-
expect(sess[:bands].find(name:
|
|
1126
|
+
expect(sess[:bands].find(name: 'Tool')).not_to be_nil
|
|
1211
1127
|
end
|
|
1212
1128
|
end
|
|
1213
1129
|
|
|
@@ -1217,8 +1133,7 @@ describe Mongoid::Clients do
|
|
|
1217
1133
|
end
|
|
1218
1134
|
end
|
|
1219
1135
|
|
|
1220
|
-
|
|
1221
|
-
|
|
1136
|
+
describe '#disconnect' do
|
|
1222
1137
|
let(:clients) do
|
|
1223
1138
|
Mongoid::Clients.clients.values
|
|
1224
1139
|
end
|
|
@@ -1227,20 +1142,17 @@ describe Mongoid::Clients do
|
|
|
1227
1142
|
Band.all.entries
|
|
1228
1143
|
end
|
|
1229
1144
|
|
|
1230
|
-
it
|
|
1231
|
-
clients.
|
|
1232
|
-
expect(client).to receive(:close).and_call_original
|
|
1233
|
-
end
|
|
1145
|
+
it 'disconnects from all active clients' do
|
|
1146
|
+
expect(clients).to all(receive(:close).and_call_original)
|
|
1234
1147
|
Mongoid::Clients.disconnect
|
|
1235
1148
|
end
|
|
1236
1149
|
|
|
1237
|
-
it
|
|
1150
|
+
it 'returns true' do
|
|
1238
1151
|
expect(Mongoid::Clients.disconnect).to eq(true)
|
|
1239
1152
|
end
|
|
1240
1153
|
end
|
|
1241
1154
|
|
|
1242
|
-
|
|
1243
|
-
|
|
1155
|
+
describe '#reconnect' do
|
|
1244
1156
|
let(:clients) do
|
|
1245
1157
|
Mongoid::Clients.clients.values
|
|
1246
1158
|
end
|
|
@@ -1249,14 +1161,12 @@ describe Mongoid::Clients do
|
|
|
1249
1161
|
Band.all.entries
|
|
1250
1162
|
end
|
|
1251
1163
|
|
|
1252
|
-
it
|
|
1253
|
-
clients.
|
|
1254
|
-
expect(client).to receive(:reconnect).and_call_original
|
|
1255
|
-
end
|
|
1164
|
+
it 'reconnects all active clients' do
|
|
1165
|
+
expect(clients).to all(receive(:reconnect).and_call_original)
|
|
1256
1166
|
Mongoid::Clients.reconnect
|
|
1257
1167
|
end
|
|
1258
1168
|
|
|
1259
|
-
it
|
|
1169
|
+
it 'returns true' do
|
|
1260
1170
|
expect(Mongoid::Clients.reconnect).to eq(true)
|
|
1261
1171
|
end
|
|
1262
1172
|
end
|