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,46 +1,39 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# rubocop:todo all
|
|
3
2
|
|
|
4
|
-
require
|
|
3
|
+
require 'spec_helper'
|
|
5
4
|
|
|
6
5
|
describe Mongoid::Extensions::ObjectId do
|
|
7
|
-
|
|
8
6
|
let(:object_id) do
|
|
9
7
|
BSON::ObjectId.new
|
|
10
8
|
end
|
|
11
9
|
|
|
12
10
|
let(:composite_key) do
|
|
13
|
-
|
|
11
|
+
'21-jump-street'
|
|
14
12
|
end
|
|
15
13
|
|
|
16
|
-
describe
|
|
17
|
-
|
|
18
|
-
it "returns self" do
|
|
14
|
+
describe '#__evolve_object_id__' do
|
|
15
|
+
it 'returns self' do
|
|
19
16
|
expect(object_id.__evolve_object_id__).to eq(object_id)
|
|
20
17
|
end
|
|
21
18
|
|
|
22
|
-
it
|
|
19
|
+
it 'returns the same instance' do
|
|
23
20
|
expect(object_id.__evolve_object_id__).to equal(object_id)
|
|
24
21
|
end
|
|
25
22
|
end
|
|
26
23
|
|
|
27
|
-
describe
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
context "when provided a single object id" do
|
|
32
|
-
|
|
24
|
+
describe '.evolve' do
|
|
25
|
+
context 'when the class is using object ids' do
|
|
26
|
+
context 'when provided a single object id' do
|
|
33
27
|
let(:evolved) do
|
|
34
28
|
BSON::ObjectId.evolve(object_id)
|
|
35
29
|
end
|
|
36
30
|
|
|
37
|
-
it
|
|
31
|
+
it 'returns the object id' do
|
|
38
32
|
expect(evolved).to eq(object_id)
|
|
39
33
|
end
|
|
40
34
|
end
|
|
41
35
|
|
|
42
|
-
context
|
|
43
|
-
|
|
36
|
+
context 'when provided an array of object ids' do
|
|
44
37
|
let(:other_id) do
|
|
45
38
|
BSON::ObjectId.new
|
|
46
39
|
end
|
|
@@ -49,73 +42,64 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
49
42
|
BSON::ObjectId.evolve([ object_id, other_id ])
|
|
50
43
|
end
|
|
51
44
|
|
|
52
|
-
it
|
|
45
|
+
it 'returns the array of object ids' do
|
|
53
46
|
expect(evolved).to eq([ object_id, other_id ])
|
|
54
47
|
end
|
|
55
48
|
end
|
|
56
49
|
|
|
57
|
-
context
|
|
58
|
-
|
|
59
|
-
context "when the string is a valid object id" do
|
|
60
|
-
|
|
50
|
+
context 'when provided a single string' do
|
|
51
|
+
context 'when the string is a valid object id' do
|
|
61
52
|
let(:evolved) do
|
|
62
53
|
BSON::ObjectId.evolve(object_id.to_s)
|
|
63
54
|
end
|
|
64
55
|
|
|
65
|
-
it
|
|
56
|
+
it 'evolves to an object id' do
|
|
66
57
|
expect(evolved).to eq(object_id)
|
|
67
58
|
end
|
|
68
59
|
end
|
|
69
60
|
|
|
70
|
-
context
|
|
71
|
-
|
|
72
|
-
it "returns the key" do
|
|
61
|
+
context 'when the string is not a valid object id' do
|
|
62
|
+
it 'returns the key' do
|
|
73
63
|
expect(BSON::ObjectId.evolve(composite_key)).to eq(
|
|
74
64
|
composite_key
|
|
75
65
|
)
|
|
76
66
|
end
|
|
77
67
|
end
|
|
78
68
|
|
|
79
|
-
context
|
|
80
|
-
|
|
69
|
+
context 'when the string is empty' do
|
|
81
70
|
let(:evolved) do
|
|
82
|
-
BSON::ObjectId.evolve(
|
|
71
|
+
BSON::ObjectId.evolve('')
|
|
83
72
|
end
|
|
84
73
|
|
|
85
|
-
it
|
|
74
|
+
it 'evolves to an empty string' do
|
|
86
75
|
expect(evolved).to be_empty
|
|
87
76
|
end
|
|
88
77
|
end
|
|
89
78
|
end
|
|
90
79
|
|
|
91
|
-
context
|
|
92
|
-
|
|
93
|
-
context "when array key of nils" do
|
|
94
|
-
|
|
80
|
+
context 'when provided an array' do
|
|
81
|
+
context 'when array key of nils' do
|
|
95
82
|
let(:evolved) do
|
|
96
83
|
BSON::ObjectId.evolve([ nil, nil ])
|
|
97
84
|
end
|
|
98
85
|
|
|
99
|
-
it
|
|
86
|
+
it 'returns the array with nils' do
|
|
100
87
|
expect(evolved).to eq([ nil, nil ])
|
|
101
88
|
end
|
|
102
89
|
end
|
|
103
90
|
|
|
104
|
-
context
|
|
105
|
-
|
|
91
|
+
context 'when the array key is empty strings' do
|
|
106
92
|
let(:evolved) do
|
|
107
|
-
BSON::ObjectId.evolve([
|
|
93
|
+
BSON::ObjectId.evolve([ '', '' ])
|
|
108
94
|
end
|
|
109
95
|
|
|
110
|
-
it
|
|
111
|
-
expect(evolved).to eq([
|
|
96
|
+
it 'returns the array with empty strings' do
|
|
97
|
+
expect(evolved).to eq([ '', '' ])
|
|
112
98
|
end
|
|
113
99
|
end
|
|
114
100
|
|
|
115
|
-
context
|
|
116
|
-
|
|
117
|
-
context "when the strings are valid object ids" do
|
|
118
|
-
|
|
101
|
+
context 'when the array key is full of strings' do
|
|
102
|
+
context 'when the strings are valid object ids' do
|
|
119
103
|
let(:other_id) do
|
|
120
104
|
BSON::ObjectId.new
|
|
121
105
|
end
|
|
@@ -124,22 +108,21 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
124
108
|
BSON::ObjectId.evolve([ object_id.to_s, other_id.to_s ])
|
|
125
109
|
end
|
|
126
110
|
|
|
127
|
-
it
|
|
111
|
+
it 'evolves to an array of object ids' do
|
|
128
112
|
expect(evolved).to eq([ object_id, other_id ])
|
|
129
113
|
end
|
|
130
114
|
end
|
|
131
115
|
|
|
132
|
-
context
|
|
133
|
-
|
|
116
|
+
context 'when the strings are not valid object ids' do
|
|
134
117
|
let(:other_key) do
|
|
135
|
-
|
|
118
|
+
'hawaii-five-o'
|
|
136
119
|
end
|
|
137
120
|
|
|
138
121
|
let(:evolved) do
|
|
139
122
|
BSON::ObjectId.evolve([ composite_key, other_key ])
|
|
140
123
|
end
|
|
141
124
|
|
|
142
|
-
it
|
|
125
|
+
it 'returns the key' do
|
|
143
126
|
expect(BSON::ObjectId.evolve(composite_key)).to eq(
|
|
144
127
|
composite_key
|
|
145
128
|
)
|
|
@@ -148,12 +131,9 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
148
131
|
end
|
|
149
132
|
end
|
|
150
133
|
|
|
151
|
-
context
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
context "when the value is an object id" do
|
|
156
|
-
|
|
134
|
+
context 'when provided a hash' do
|
|
135
|
+
context 'when the hash key is _id' do
|
|
136
|
+
context 'when the value is an object id' do
|
|
157
137
|
let(:hash) do
|
|
158
138
|
{ _id: object_id }
|
|
159
139
|
end
|
|
@@ -162,13 +142,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
162
142
|
BSON::ObjectId.evolve(hash)
|
|
163
143
|
end
|
|
164
144
|
|
|
165
|
-
it
|
|
145
|
+
it 'returns the hash' do
|
|
166
146
|
expect(evolved).to eq(hash)
|
|
167
147
|
end
|
|
168
148
|
end
|
|
169
149
|
|
|
170
|
-
context
|
|
171
|
-
|
|
150
|
+
context 'when the value is an array of object ids' do
|
|
172
151
|
let(:other_id) do
|
|
173
152
|
BSON::ObjectId.new
|
|
174
153
|
end
|
|
@@ -181,13 +160,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
181
160
|
BSON::ObjectId.evolve(hash)
|
|
182
161
|
end
|
|
183
162
|
|
|
184
|
-
it
|
|
163
|
+
it 'returns the hash' do
|
|
185
164
|
expect(evolved).to eq(hash)
|
|
186
165
|
end
|
|
187
166
|
end
|
|
188
167
|
|
|
189
|
-
context
|
|
190
|
-
|
|
168
|
+
context 'when the value is a string' do
|
|
191
169
|
let(:hash) do
|
|
192
170
|
{ _id: object_id.to_s }
|
|
193
171
|
end
|
|
@@ -196,13 +174,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
196
174
|
BSON::ObjectId.evolve(hash)
|
|
197
175
|
end
|
|
198
176
|
|
|
199
|
-
it
|
|
177
|
+
it 'returns the hash with evolved value' do
|
|
200
178
|
expect(evolved).to eq({ _id: object_id })
|
|
201
179
|
end
|
|
202
180
|
end
|
|
203
181
|
|
|
204
|
-
context
|
|
205
|
-
|
|
182
|
+
context 'when the value is an array of strings' do
|
|
206
183
|
let(:other_id) do
|
|
207
184
|
BSON::ObjectId.new
|
|
208
185
|
end
|
|
@@ -215,16 +192,14 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
215
192
|
BSON::ObjectId.evolve(hash)
|
|
216
193
|
end
|
|
217
194
|
|
|
218
|
-
it
|
|
195
|
+
it 'returns the hash with evolved values' do
|
|
219
196
|
expect(evolved).to eq({ _id: [ object_id, other_id ] })
|
|
220
197
|
end
|
|
221
198
|
end
|
|
222
199
|
end
|
|
223
200
|
|
|
224
|
-
context
|
|
225
|
-
|
|
226
|
-
context "when the value is an object id" do
|
|
227
|
-
|
|
201
|
+
context 'when the hash key is id' do
|
|
202
|
+
context 'when the value is an object id' do
|
|
228
203
|
let(:hash) do
|
|
229
204
|
{ id: object_id }
|
|
230
205
|
end
|
|
@@ -233,13 +208,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
233
208
|
BSON::ObjectId.evolve(hash)
|
|
234
209
|
end
|
|
235
210
|
|
|
236
|
-
it
|
|
211
|
+
it 'returns the hash' do
|
|
237
212
|
expect(evolved).to eq(hash)
|
|
238
213
|
end
|
|
239
214
|
end
|
|
240
215
|
|
|
241
|
-
context
|
|
242
|
-
|
|
216
|
+
context 'when the value is an array of object ids' do
|
|
243
217
|
let(:other_id) do
|
|
244
218
|
BSON::ObjectId.new
|
|
245
219
|
end
|
|
@@ -252,13 +226,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
252
226
|
BSON::ObjectId.evolve(hash)
|
|
253
227
|
end
|
|
254
228
|
|
|
255
|
-
it
|
|
229
|
+
it 'returns the hash' do
|
|
256
230
|
expect(evolved).to eq(hash)
|
|
257
231
|
end
|
|
258
232
|
end
|
|
259
233
|
|
|
260
|
-
context
|
|
261
|
-
|
|
234
|
+
context 'when the value is a string' do
|
|
262
235
|
let(:hash) do
|
|
263
236
|
{ id: object_id.to_s }
|
|
264
237
|
end
|
|
@@ -267,13 +240,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
267
240
|
BSON::ObjectId.evolve(hash)
|
|
268
241
|
end
|
|
269
242
|
|
|
270
|
-
it
|
|
243
|
+
it 'returns the hash with evolved value' do
|
|
271
244
|
expect(evolved).to eq({ id: object_id })
|
|
272
245
|
end
|
|
273
246
|
end
|
|
274
247
|
|
|
275
|
-
context
|
|
276
|
-
|
|
248
|
+
context 'when the value is an array of strings' do
|
|
277
249
|
let(:other_id) do
|
|
278
250
|
BSON::ObjectId.new
|
|
279
251
|
end
|
|
@@ -286,16 +258,14 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
286
258
|
BSON::ObjectId.evolve(hash)
|
|
287
259
|
end
|
|
288
260
|
|
|
289
|
-
it
|
|
261
|
+
it 'returns the hash with evolved values' do
|
|
290
262
|
expect(evolved).to eq({ id: [ object_id, other_id ] })
|
|
291
263
|
end
|
|
292
264
|
end
|
|
293
265
|
end
|
|
294
266
|
|
|
295
|
-
context
|
|
296
|
-
|
|
297
|
-
context "when the value is a string" do
|
|
298
|
-
|
|
267
|
+
context 'when the hash key is not an id' do
|
|
268
|
+
context 'when the value is a string' do
|
|
299
269
|
let(:hash) do
|
|
300
270
|
{ key: composite_key }
|
|
301
271
|
end
|
|
@@ -304,13 +274,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
304
274
|
BSON::ObjectId.evolve(hash)
|
|
305
275
|
end
|
|
306
276
|
|
|
307
|
-
it
|
|
277
|
+
it 'returns the hash' do
|
|
308
278
|
expect(evolved).to eq(hash)
|
|
309
279
|
end
|
|
310
280
|
end
|
|
311
281
|
|
|
312
|
-
context
|
|
313
|
-
|
|
282
|
+
context 'when the value is an array of strings' do
|
|
314
283
|
let(:hash) do
|
|
315
284
|
{ key: [ composite_key ] }
|
|
316
285
|
end
|
|
@@ -319,7 +288,7 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
319
288
|
BSON::ObjectId.evolve(hash)
|
|
320
289
|
end
|
|
321
290
|
|
|
322
|
-
it
|
|
291
|
+
it 'returns the hash' do
|
|
323
292
|
expect(evolved).to eq(hash)
|
|
324
293
|
end
|
|
325
294
|
end
|
|
@@ -328,23 +297,19 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
328
297
|
end
|
|
329
298
|
end
|
|
330
299
|
|
|
331
|
-
describe
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
context "when provided a single object id" do
|
|
336
|
-
|
|
300
|
+
describe '.mongoize' do
|
|
301
|
+
context 'when the class is using object ids' do
|
|
302
|
+
context 'when provided a single object id' do
|
|
337
303
|
let(:mongoized) do
|
|
338
304
|
BSON::ObjectId.mongoize(object_id)
|
|
339
305
|
end
|
|
340
306
|
|
|
341
|
-
it
|
|
307
|
+
it 'returns the object id' do
|
|
342
308
|
expect(mongoized).to eq(object_id)
|
|
343
309
|
end
|
|
344
310
|
end
|
|
345
311
|
|
|
346
|
-
context
|
|
347
|
-
|
|
312
|
+
context 'when provided an array of object ids' do
|
|
348
313
|
let(:other_id) do
|
|
349
314
|
BSON::ObjectId.new
|
|
350
315
|
end
|
|
@@ -353,73 +318,64 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
353
318
|
BSON::ObjectId.mongoize([ object_id, other_id ])
|
|
354
319
|
end
|
|
355
320
|
|
|
356
|
-
it
|
|
321
|
+
it 'returns the array of object ids' do
|
|
357
322
|
expect(mongoized).to eq([ object_id, other_id ])
|
|
358
323
|
end
|
|
359
324
|
end
|
|
360
325
|
|
|
361
|
-
context
|
|
362
|
-
|
|
363
|
-
context "when the string is a valid object id" do
|
|
364
|
-
|
|
326
|
+
context 'when provided a single string' do
|
|
327
|
+
context 'when the string is a valid object id' do
|
|
365
328
|
let(:mongoized) do
|
|
366
329
|
BSON::ObjectId.mongoize(object_id.to_s)
|
|
367
330
|
end
|
|
368
331
|
|
|
369
|
-
it
|
|
332
|
+
it 'mongoizes to an object id' do
|
|
370
333
|
expect(mongoized).to eq(object_id)
|
|
371
334
|
end
|
|
372
335
|
end
|
|
373
336
|
|
|
374
|
-
context
|
|
375
|
-
|
|
376
|
-
it "returns the key" do
|
|
337
|
+
context 'when the string is not a valid object id' do
|
|
338
|
+
it 'returns the key' do
|
|
377
339
|
expect(BSON::ObjectId.mongoize(composite_key)).to eq(
|
|
378
340
|
composite_key
|
|
379
341
|
)
|
|
380
342
|
end
|
|
381
343
|
end
|
|
382
344
|
|
|
383
|
-
context
|
|
384
|
-
|
|
345
|
+
context 'when the string is empty' do
|
|
385
346
|
let(:mongoized) do
|
|
386
|
-
BSON::ObjectId.mongoize(
|
|
347
|
+
BSON::ObjectId.mongoize('')
|
|
387
348
|
end
|
|
388
349
|
|
|
389
|
-
it
|
|
350
|
+
it 'mongoizes to nil' do
|
|
390
351
|
expect(mongoized).to be_nil
|
|
391
352
|
end
|
|
392
353
|
end
|
|
393
354
|
end
|
|
394
355
|
|
|
395
|
-
context
|
|
396
|
-
|
|
397
|
-
context "when array key of nils" do
|
|
398
|
-
|
|
356
|
+
context 'when provided an array' do
|
|
357
|
+
context 'when array key of nils' do
|
|
399
358
|
let(:mongoized) do
|
|
400
359
|
BSON::ObjectId.mongoize([ nil, nil ])
|
|
401
360
|
end
|
|
402
361
|
|
|
403
|
-
it
|
|
362
|
+
it 'returns an empty array' do
|
|
404
363
|
expect(mongoized).to be_empty
|
|
405
364
|
end
|
|
406
365
|
end
|
|
407
366
|
|
|
408
|
-
context
|
|
409
|
-
|
|
367
|
+
context 'when the array key is empty strings' do
|
|
410
368
|
let(:mongoized) do
|
|
411
|
-
BSON::ObjectId.mongoize([
|
|
369
|
+
BSON::ObjectId.mongoize([ '', '' ])
|
|
412
370
|
end
|
|
413
371
|
|
|
414
|
-
it
|
|
372
|
+
it 'returns an empty array' do
|
|
415
373
|
expect(mongoized).to be_empty
|
|
416
374
|
end
|
|
417
375
|
end
|
|
418
376
|
|
|
419
|
-
context
|
|
420
|
-
|
|
421
|
-
context "when the strings are valid object ids" do
|
|
422
|
-
|
|
377
|
+
context 'when the array key is full of strings' do
|
|
378
|
+
context 'when the strings are valid object ids' do
|
|
423
379
|
let(:other_id) do
|
|
424
380
|
BSON::ObjectId.new
|
|
425
381
|
end
|
|
@@ -428,22 +384,21 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
428
384
|
BSON::ObjectId.mongoize([ object_id.to_s, other_id.to_s ])
|
|
429
385
|
end
|
|
430
386
|
|
|
431
|
-
it
|
|
387
|
+
it 'mongoizes to an array of object ids' do
|
|
432
388
|
expect(mongoized).to eq([ object_id, other_id ])
|
|
433
389
|
end
|
|
434
390
|
end
|
|
435
391
|
|
|
436
|
-
context
|
|
437
|
-
|
|
392
|
+
context 'when the strings are not valid object ids' do
|
|
438
393
|
let(:other_key) do
|
|
439
|
-
|
|
394
|
+
'hawaii-five-o'
|
|
440
395
|
end
|
|
441
396
|
|
|
442
397
|
let(:mongoized) do
|
|
443
398
|
BSON::ObjectId.mongoize([ composite_key, other_key ])
|
|
444
399
|
end
|
|
445
400
|
|
|
446
|
-
it
|
|
401
|
+
it 'returns the key' do
|
|
447
402
|
expect(BSON::ObjectId.mongoize(composite_key)).to eq(
|
|
448
403
|
composite_key
|
|
449
404
|
)
|
|
@@ -452,12 +407,9 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
452
407
|
end
|
|
453
408
|
end
|
|
454
409
|
|
|
455
|
-
context
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
context "when the value is an object id" do
|
|
460
|
-
|
|
410
|
+
context 'when provided a hash' do
|
|
411
|
+
context 'when the hash key is _id' do
|
|
412
|
+
context 'when the value is an object id' do
|
|
461
413
|
let(:hash) do
|
|
462
414
|
{ _id: object_id }
|
|
463
415
|
end
|
|
@@ -466,13 +418,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
466
418
|
BSON::ObjectId.mongoize(hash)
|
|
467
419
|
end
|
|
468
420
|
|
|
469
|
-
it
|
|
421
|
+
it 'returns the hash' do
|
|
470
422
|
expect(mongoized).to eq(hash)
|
|
471
423
|
end
|
|
472
424
|
end
|
|
473
425
|
|
|
474
|
-
context
|
|
475
|
-
|
|
426
|
+
context 'when the value is an array of object ids' do
|
|
476
427
|
let(:other_id) do
|
|
477
428
|
BSON::ObjectId.new
|
|
478
429
|
end
|
|
@@ -485,13 +436,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
485
436
|
BSON::ObjectId.mongoize(hash)
|
|
486
437
|
end
|
|
487
438
|
|
|
488
|
-
it
|
|
439
|
+
it 'returns the hash' do
|
|
489
440
|
expect(mongoized).to eq(hash)
|
|
490
441
|
end
|
|
491
442
|
end
|
|
492
443
|
|
|
493
|
-
context
|
|
494
|
-
|
|
444
|
+
context 'when the value is a string' do
|
|
495
445
|
let(:hash) do
|
|
496
446
|
{ _id: object_id.to_s }
|
|
497
447
|
end
|
|
@@ -500,13 +450,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
500
450
|
BSON::ObjectId.mongoize(hash)
|
|
501
451
|
end
|
|
502
452
|
|
|
503
|
-
it
|
|
453
|
+
it 'returns the hash with mongoized value' do
|
|
504
454
|
expect(mongoized).to eq({ _id: object_id })
|
|
505
455
|
end
|
|
506
456
|
end
|
|
507
457
|
|
|
508
|
-
context
|
|
509
|
-
|
|
458
|
+
context 'when the value is an array of strings' do
|
|
510
459
|
let(:other_id) do
|
|
511
460
|
BSON::ObjectId.new
|
|
512
461
|
end
|
|
@@ -519,16 +468,14 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
519
468
|
BSON::ObjectId.mongoize(hash)
|
|
520
469
|
end
|
|
521
470
|
|
|
522
|
-
it
|
|
471
|
+
it 'returns the hash with mongoized values' do
|
|
523
472
|
expect(mongoized).to eq({ _id: [ object_id, other_id ] })
|
|
524
473
|
end
|
|
525
474
|
end
|
|
526
475
|
end
|
|
527
476
|
|
|
528
|
-
context
|
|
529
|
-
|
|
530
|
-
context "when the value is an object id" do
|
|
531
|
-
|
|
477
|
+
context 'when the hash key is id' do
|
|
478
|
+
context 'when the value is an object id' do
|
|
532
479
|
let(:hash) do
|
|
533
480
|
{ id: object_id }
|
|
534
481
|
end
|
|
@@ -537,13 +484,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
537
484
|
BSON::ObjectId.mongoize(hash)
|
|
538
485
|
end
|
|
539
486
|
|
|
540
|
-
it
|
|
487
|
+
it 'returns the hash' do
|
|
541
488
|
expect(mongoized).to eq(hash)
|
|
542
489
|
end
|
|
543
490
|
end
|
|
544
491
|
|
|
545
|
-
context
|
|
546
|
-
|
|
492
|
+
context 'when the value is an array of object ids' do
|
|
547
493
|
let(:other_id) do
|
|
548
494
|
BSON::ObjectId.new
|
|
549
495
|
end
|
|
@@ -556,13 +502,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
556
502
|
BSON::ObjectId.mongoize(hash)
|
|
557
503
|
end
|
|
558
504
|
|
|
559
|
-
it
|
|
505
|
+
it 'returns the hash' do
|
|
560
506
|
expect(mongoized).to eq(hash)
|
|
561
507
|
end
|
|
562
508
|
end
|
|
563
509
|
|
|
564
|
-
context
|
|
565
|
-
|
|
510
|
+
context 'when the value is a string' do
|
|
566
511
|
let(:hash) do
|
|
567
512
|
{ id: object_id.to_s }
|
|
568
513
|
end
|
|
@@ -571,13 +516,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
571
516
|
BSON::ObjectId.mongoize(hash)
|
|
572
517
|
end
|
|
573
518
|
|
|
574
|
-
it
|
|
519
|
+
it 'returns the hash with mongoized value' do
|
|
575
520
|
expect(mongoized).to eq({ id: object_id })
|
|
576
521
|
end
|
|
577
522
|
end
|
|
578
523
|
|
|
579
|
-
context
|
|
580
|
-
|
|
524
|
+
context 'when the value is an array of strings' do
|
|
581
525
|
let(:other_id) do
|
|
582
526
|
BSON::ObjectId.new
|
|
583
527
|
end
|
|
@@ -590,16 +534,14 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
590
534
|
BSON::ObjectId.mongoize(hash)
|
|
591
535
|
end
|
|
592
536
|
|
|
593
|
-
it
|
|
537
|
+
it 'returns the hash with mongoized values' do
|
|
594
538
|
expect(mongoized).to eq({ id: [ object_id, other_id ] })
|
|
595
539
|
end
|
|
596
540
|
end
|
|
597
541
|
end
|
|
598
542
|
|
|
599
|
-
context
|
|
600
|
-
|
|
601
|
-
context "when the value is a string" do
|
|
602
|
-
|
|
543
|
+
context 'when the hash key is not an id' do
|
|
544
|
+
context 'when the value is a string' do
|
|
603
545
|
let(:hash) do
|
|
604
546
|
{ key: composite_key }
|
|
605
547
|
end
|
|
@@ -608,13 +550,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
608
550
|
BSON::ObjectId.mongoize(hash)
|
|
609
551
|
end
|
|
610
552
|
|
|
611
|
-
it
|
|
553
|
+
it 'returns the hash' do
|
|
612
554
|
expect(mongoized).to eq(hash)
|
|
613
555
|
end
|
|
614
556
|
end
|
|
615
557
|
|
|
616
|
-
context
|
|
617
|
-
|
|
558
|
+
context 'when the value is an array of strings' do
|
|
618
559
|
let(:hash) do
|
|
619
560
|
{ key: [ composite_key ] }
|
|
620
561
|
end
|
|
@@ -623,7 +564,7 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
623
564
|
BSON::ObjectId.mongoize(hash)
|
|
624
565
|
end
|
|
625
566
|
|
|
626
|
-
it
|
|
567
|
+
it 'returns the hash' do
|
|
627
568
|
expect(mongoized).to eq(hash)
|
|
628
569
|
end
|
|
629
570
|
end
|
|
@@ -632,23 +573,19 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
632
573
|
end
|
|
633
574
|
end
|
|
634
575
|
|
|
635
|
-
describe
|
|
636
|
-
|
|
637
|
-
|
|
638
|
-
|
|
639
|
-
context "when provided a single object id" do
|
|
640
|
-
|
|
576
|
+
describe '.mongoize' do
|
|
577
|
+
context 'when the class is using object ids' do
|
|
578
|
+
context 'when provided a single object id' do
|
|
641
579
|
let(:mongoized) do
|
|
642
580
|
BSON::ObjectId.mongoize(object_id)
|
|
643
581
|
end
|
|
644
582
|
|
|
645
|
-
it
|
|
583
|
+
it 'returns the object id' do
|
|
646
584
|
expect(mongoized).to eq(object_id)
|
|
647
585
|
end
|
|
648
586
|
end
|
|
649
587
|
|
|
650
|
-
context
|
|
651
|
-
|
|
588
|
+
context 'when provided an array of object ids' do
|
|
652
589
|
let(:other_id) do
|
|
653
590
|
BSON::ObjectId.new
|
|
654
591
|
end
|
|
@@ -657,73 +594,64 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
657
594
|
BSON::ObjectId.mongoize([ object_id, other_id ])
|
|
658
595
|
end
|
|
659
596
|
|
|
660
|
-
it
|
|
597
|
+
it 'returns the array of object ids' do
|
|
661
598
|
expect(mongoized).to eq([ object_id, other_id ])
|
|
662
599
|
end
|
|
663
600
|
end
|
|
664
601
|
|
|
665
|
-
context
|
|
666
|
-
|
|
667
|
-
context "when the string is a valid object id" do
|
|
668
|
-
|
|
602
|
+
context 'when provided a single string' do
|
|
603
|
+
context 'when the string is a valid object id' do
|
|
669
604
|
let(:mongoized) do
|
|
670
605
|
BSON::ObjectId.mongoize(object_id.to_s)
|
|
671
606
|
end
|
|
672
607
|
|
|
673
|
-
it
|
|
608
|
+
it 'mongoizes to an object id' do
|
|
674
609
|
expect(mongoized).to eq(object_id)
|
|
675
610
|
end
|
|
676
611
|
end
|
|
677
612
|
|
|
678
|
-
context
|
|
679
|
-
|
|
680
|
-
it "returns the key" do
|
|
613
|
+
context 'when the string is not a valid object id' do
|
|
614
|
+
it 'returns the key' do
|
|
681
615
|
expect(BSON::ObjectId.mongoize(composite_key)).to eq(
|
|
682
616
|
composite_key
|
|
683
617
|
)
|
|
684
618
|
end
|
|
685
619
|
end
|
|
686
620
|
|
|
687
|
-
context
|
|
688
|
-
|
|
621
|
+
context 'when the string is empty' do
|
|
689
622
|
let(:mongoized) do
|
|
690
|
-
BSON::ObjectId.mongoize(
|
|
623
|
+
BSON::ObjectId.mongoize('')
|
|
691
624
|
end
|
|
692
625
|
|
|
693
|
-
it
|
|
626
|
+
it 'mongoizes to nil' do
|
|
694
627
|
expect(mongoized).to be_nil
|
|
695
628
|
end
|
|
696
629
|
end
|
|
697
630
|
end
|
|
698
631
|
|
|
699
|
-
context
|
|
700
|
-
|
|
701
|
-
context "when array key of nils" do
|
|
702
|
-
|
|
632
|
+
context 'when provided an array' do
|
|
633
|
+
context 'when array key of nils' do
|
|
703
634
|
let(:mongoized) do
|
|
704
635
|
BSON::ObjectId.mongoize([ nil, nil ])
|
|
705
636
|
end
|
|
706
637
|
|
|
707
|
-
it
|
|
638
|
+
it 'returns an empty array' do
|
|
708
639
|
expect(mongoized).to be_empty
|
|
709
640
|
end
|
|
710
641
|
end
|
|
711
642
|
|
|
712
|
-
context
|
|
713
|
-
|
|
643
|
+
context 'when the array key is empty strings' do
|
|
714
644
|
let(:mongoized) do
|
|
715
|
-
BSON::ObjectId.mongoize([
|
|
645
|
+
BSON::ObjectId.mongoize([ '', '' ])
|
|
716
646
|
end
|
|
717
647
|
|
|
718
|
-
it
|
|
648
|
+
it 'returns an empty array' do
|
|
719
649
|
expect(mongoized).to be_empty
|
|
720
650
|
end
|
|
721
651
|
end
|
|
722
652
|
|
|
723
|
-
context
|
|
724
|
-
|
|
725
|
-
context "when the strings are valid object ids" do
|
|
726
|
-
|
|
653
|
+
context 'when the array key is full of strings' do
|
|
654
|
+
context 'when the strings are valid object ids' do
|
|
727
655
|
let(:other_id) do
|
|
728
656
|
BSON::ObjectId.new
|
|
729
657
|
end
|
|
@@ -732,22 +660,21 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
732
660
|
BSON::ObjectId.mongoize([ object_id.to_s, other_id.to_s ])
|
|
733
661
|
end
|
|
734
662
|
|
|
735
|
-
it
|
|
663
|
+
it 'mongoizes to an array of object ids' do
|
|
736
664
|
expect(mongoized).to eq([ object_id, other_id ])
|
|
737
665
|
end
|
|
738
666
|
end
|
|
739
667
|
|
|
740
|
-
context
|
|
741
|
-
|
|
668
|
+
context 'when the strings are not valid object ids' do
|
|
742
669
|
let(:other_key) do
|
|
743
|
-
|
|
670
|
+
'hawaii-five-o'
|
|
744
671
|
end
|
|
745
672
|
|
|
746
673
|
let(:mongoized) do
|
|
747
674
|
BSON::ObjectId.mongoize([ composite_key, other_key ])
|
|
748
675
|
end
|
|
749
676
|
|
|
750
|
-
it
|
|
677
|
+
it 'returns the key' do
|
|
751
678
|
expect(BSON::ObjectId.mongoize(composite_key)).to eq(
|
|
752
679
|
composite_key
|
|
753
680
|
)
|
|
@@ -756,12 +683,9 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
756
683
|
end
|
|
757
684
|
end
|
|
758
685
|
|
|
759
|
-
context
|
|
760
|
-
|
|
761
|
-
|
|
762
|
-
|
|
763
|
-
context "when the value is an object id" do
|
|
764
|
-
|
|
686
|
+
context 'when provided a hash' do
|
|
687
|
+
context 'when the hash key is _id' do
|
|
688
|
+
context 'when the value is an object id' do
|
|
765
689
|
let(:hash) do
|
|
766
690
|
{ _id: object_id }
|
|
767
691
|
end
|
|
@@ -770,13 +694,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
770
694
|
BSON::ObjectId.mongoize(hash)
|
|
771
695
|
end
|
|
772
696
|
|
|
773
|
-
it
|
|
697
|
+
it 'returns the hash' do
|
|
774
698
|
expect(mongoized).to eq(hash)
|
|
775
699
|
end
|
|
776
700
|
end
|
|
777
701
|
|
|
778
|
-
context
|
|
779
|
-
|
|
702
|
+
context 'when the value is an array of object ids' do
|
|
780
703
|
let(:other_id) do
|
|
781
704
|
BSON::ObjectId.new
|
|
782
705
|
end
|
|
@@ -789,13 +712,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
789
712
|
BSON::ObjectId.mongoize(hash)
|
|
790
713
|
end
|
|
791
714
|
|
|
792
|
-
it
|
|
715
|
+
it 'returns the hash' do
|
|
793
716
|
expect(mongoized).to eq(hash)
|
|
794
717
|
end
|
|
795
718
|
end
|
|
796
719
|
|
|
797
|
-
context
|
|
798
|
-
|
|
720
|
+
context 'when the value is a string' do
|
|
799
721
|
let(:hash) do
|
|
800
722
|
{ _id: object_id.to_s }
|
|
801
723
|
end
|
|
@@ -804,13 +726,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
804
726
|
BSON::ObjectId.mongoize(hash)
|
|
805
727
|
end
|
|
806
728
|
|
|
807
|
-
it
|
|
729
|
+
it 'returns the hash with mongoized value' do
|
|
808
730
|
expect(mongoized).to eq({ _id: object_id })
|
|
809
731
|
end
|
|
810
732
|
end
|
|
811
733
|
|
|
812
|
-
context
|
|
813
|
-
|
|
734
|
+
context 'when the value is an array of strings' do
|
|
814
735
|
let(:other_id) do
|
|
815
736
|
BSON::ObjectId.new
|
|
816
737
|
end
|
|
@@ -823,16 +744,14 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
823
744
|
BSON::ObjectId.mongoize(hash)
|
|
824
745
|
end
|
|
825
746
|
|
|
826
|
-
it
|
|
747
|
+
it 'returns the hash with mongoized values' do
|
|
827
748
|
expect(mongoized).to eq({ _id: [ object_id, other_id ] })
|
|
828
749
|
end
|
|
829
750
|
end
|
|
830
751
|
end
|
|
831
752
|
|
|
832
|
-
context
|
|
833
|
-
|
|
834
|
-
context "when the value is an object id" do
|
|
835
|
-
|
|
753
|
+
context 'when the hash key is id' do
|
|
754
|
+
context 'when the value is an object id' do
|
|
836
755
|
let(:hash) do
|
|
837
756
|
{ id: object_id }
|
|
838
757
|
end
|
|
@@ -841,13 +760,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
841
760
|
BSON::ObjectId.mongoize(hash)
|
|
842
761
|
end
|
|
843
762
|
|
|
844
|
-
it
|
|
763
|
+
it 'returns the hash' do
|
|
845
764
|
expect(mongoized).to eq(hash)
|
|
846
765
|
end
|
|
847
766
|
end
|
|
848
767
|
|
|
849
|
-
context
|
|
850
|
-
|
|
768
|
+
context 'when the value is an array of object ids' do
|
|
851
769
|
let(:other_id) do
|
|
852
770
|
BSON::ObjectId.new
|
|
853
771
|
end
|
|
@@ -860,13 +778,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
860
778
|
BSON::ObjectId.mongoize(hash)
|
|
861
779
|
end
|
|
862
780
|
|
|
863
|
-
it
|
|
781
|
+
it 'returns the hash' do
|
|
864
782
|
expect(mongoized).to eq(hash)
|
|
865
783
|
end
|
|
866
784
|
end
|
|
867
785
|
|
|
868
|
-
context
|
|
869
|
-
|
|
786
|
+
context 'when the value is a string' do
|
|
870
787
|
let(:hash) do
|
|
871
788
|
{ id: object_id.to_s }
|
|
872
789
|
end
|
|
@@ -875,13 +792,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
875
792
|
BSON::ObjectId.mongoize(hash)
|
|
876
793
|
end
|
|
877
794
|
|
|
878
|
-
it
|
|
795
|
+
it 'returns the hash with mongoized value' do
|
|
879
796
|
expect(mongoized).to eq({ id: object_id })
|
|
880
797
|
end
|
|
881
798
|
end
|
|
882
799
|
|
|
883
|
-
context
|
|
884
|
-
|
|
800
|
+
context 'when the value is an array of strings' do
|
|
885
801
|
let(:other_id) do
|
|
886
802
|
BSON::ObjectId.new
|
|
887
803
|
end
|
|
@@ -894,16 +810,14 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
894
810
|
BSON::ObjectId.mongoize(hash)
|
|
895
811
|
end
|
|
896
812
|
|
|
897
|
-
it
|
|
813
|
+
it 'returns the hash with mongoized values' do
|
|
898
814
|
expect(mongoized).to eq({ id: [ object_id, other_id ] })
|
|
899
815
|
end
|
|
900
816
|
end
|
|
901
817
|
end
|
|
902
818
|
|
|
903
|
-
context
|
|
904
|
-
|
|
905
|
-
context "when the value is a string" do
|
|
906
|
-
|
|
819
|
+
context 'when the hash key is not an id' do
|
|
820
|
+
context 'when the value is a string' do
|
|
907
821
|
let(:hash) do
|
|
908
822
|
{ key: composite_key }
|
|
909
823
|
end
|
|
@@ -912,13 +826,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
912
826
|
BSON::ObjectId.mongoize(hash)
|
|
913
827
|
end
|
|
914
828
|
|
|
915
|
-
it
|
|
829
|
+
it 'returns the hash' do
|
|
916
830
|
expect(mongoized).to eq(hash)
|
|
917
831
|
end
|
|
918
832
|
end
|
|
919
833
|
|
|
920
|
-
context
|
|
921
|
-
|
|
834
|
+
context 'when the value is an array of strings' do
|
|
922
835
|
let(:hash) do
|
|
923
836
|
{ key: [ composite_key ] }
|
|
924
837
|
end
|
|
@@ -927,7 +840,7 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
927
840
|
BSON::ObjectId.mongoize(hash)
|
|
928
841
|
end
|
|
929
842
|
|
|
930
|
-
it
|
|
843
|
+
it 'returns the hash' do
|
|
931
844
|
expect(mongoized).to eq(hash)
|
|
932
845
|
end
|
|
933
846
|
end
|
|
@@ -936,13 +849,12 @@ describe Mongoid::Extensions::ObjectId do
|
|
|
936
849
|
end
|
|
937
850
|
end
|
|
938
851
|
|
|
939
|
-
describe
|
|
940
|
-
|
|
941
|
-
it "returns self" do
|
|
852
|
+
describe '#__mongoize_object_id__' do
|
|
853
|
+
it 'returns self' do
|
|
942
854
|
expect(object_id.__mongoize_object_id__).to eq(object_id)
|
|
943
855
|
end
|
|
944
856
|
|
|
945
|
-
it
|
|
857
|
+
it 'returns the same instance' do
|
|
946
858
|
expect(object_id.__mongoize_object_id__).to equal(object_id)
|
|
947
859
|
end
|
|
948
860
|
end
|