mongoid 8.1.6 → 9.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +1 -0
- data/LICENSE +1 -1
- data/README.md +4 -9
- data/Rakefile +63 -45
- data/lib/config/locales/en.yml +66 -5
- data/lib/mongoid/association/accessors.rb +16 -20
- data/lib/mongoid/association/bindable.rb +27 -8
- data/lib/mongoid/association/builders.rb +3 -2
- data/lib/mongoid/association/constrainable.rb +1 -0
- data/lib/mongoid/association/depending.rb +16 -1
- data/lib/mongoid/association/eager.rb +160 -0
- data/lib/mongoid/association/eager_loadable.rb +15 -4
- data/lib/mongoid/association/embedded/batchable.rb +6 -7
- data/lib/mongoid/association/embedded/cyclic.rb +1 -0
- data/lib/mongoid/association/embedded/eager.rb +23 -0
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +5 -4
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +1 -0
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +21 -7
- data/lib/mongoid/association/embedded/embedded_in.rb +7 -0
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +134 -144
- data/lib/mongoid/association/embedded/embeds_many.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +112 -54
- data/lib/mongoid/association/embedded/embeds_one.rb +1 -0
- data/lib/mongoid/association/embedded.rb +2 -0
- data/lib/mongoid/association/macros.rb +17 -14
- data/lib/mongoid/association/many.rb +1 -0
- data/lib/mongoid/association/marshalable.rb +4 -0
- data/lib/mongoid/association/nested/many.rb +8 -3
- data/lib/mongoid/association/nested/nested_buildable.rb +32 -0
- data/lib/mongoid/association/nested/one.rb +6 -3
- data/lib/mongoid/association/nested.rb +1 -0
- data/lib/mongoid/association/one.rb +1 -0
- data/lib/mongoid/association/options.rb +9 -2
- data/lib/mongoid/association/proxy.rb +30 -18
- data/lib/mongoid/association/referenced/auto_save.rb +6 -2
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +2 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +19 -14
- data/lib/mongoid/association/referenced/belongs_to.rb +2 -1
- data/lib/mongoid/association/referenced/counter_cache.rb +7 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +15 -3
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +1 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +132 -94
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +8 -3
- data/lib/mongoid/association/referenced/has_many/binding.rb +1 -0
- data/lib/mongoid/association/referenced/has_many/buildable.rb +1 -0
- data/lib/mongoid/association/referenced/has_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +39 -6
- data/lib/mongoid/association/referenced/has_many/proxy.rb +131 -104
- data/lib/mongoid/association/referenced/has_many.rb +2 -1
- data/lib/mongoid/association/referenced/has_one/binding.rb +1 -0
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -0
- data/lib/mongoid/association/referenced/has_one/eager.rb +3 -3
- data/lib/mongoid/association/referenced/has_one/proxy.rb +37 -28
- data/lib/mongoid/association/referenced/has_one.rb +5 -1
- data/lib/mongoid/association/referenced/syncable.rb +7 -6
- data/lib/mongoid/association/referenced.rb +1 -0
- data/lib/mongoid/association/reflections.rb +5 -4
- data/lib/mongoid/association/relatable.rb +10 -4
- data/lib/mongoid/association.rb +5 -0
- data/lib/mongoid/atomic/modifiers.rb +1 -0
- data/lib/mongoid/atomic/paths/embedded/many.rb +2 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -0
- data/lib/mongoid/atomic/paths/embedded.rb +1 -0
- data/lib/mongoid/atomic/paths/root.rb +1 -0
- data/lib/mongoid/atomic/paths.rb +1 -0
- data/lib/mongoid/atomic.rb +23 -62
- data/lib/mongoid/atomic_update_preparer.rb +88 -0
- data/lib/mongoid/attributes/dynamic.rb +1 -0
- data/lib/mongoid/attributes/embedded.rb +34 -0
- data/lib/mongoid/attributes/nested.rb +3 -2
- data/lib/mongoid/attributes/processing.rb +11 -10
- data/lib/mongoid/attributes/projector.rb +1 -0
- data/lib/mongoid/attributes/readonly.rb +1 -0
- data/lib/mongoid/attributes.rb +6 -4
- data/lib/mongoid/cacheable.rb +2 -1
- data/lib/mongoid/changeable.rb +58 -49
- data/lib/mongoid/clients/factory.rb +37 -1
- data/lib/mongoid/clients/options.rb +113 -3
- data/lib/mongoid/clients/sessions.rb +245 -64
- data/lib/mongoid/clients/storage_options.rb +37 -1
- data/lib/mongoid/clients/validators/storage.rb +1 -0
- data/lib/mongoid/clients/validators.rb +1 -0
- data/lib/mongoid/clients.rb +36 -4
- data/lib/mongoid/collection_configurable.rb +1 -0
- data/lib/mongoid/composable.rb +5 -0
- data/lib/mongoid/config/defaults.rb +16 -36
- data/lib/mongoid/config/encryption.rb +213 -0
- data/lib/mongoid/config/environment.rb +2 -5
- data/lib/mongoid/config/introspection.rb +152 -0
- data/lib/mongoid/config/options.rb +8 -3
- data/lib/mongoid/config/validators/async_query_executor.rb +12 -2
- data/lib/mongoid/config/validators/client.rb +1 -0
- data/lib/mongoid/config/validators/option.rb +1 -0
- data/lib/mongoid/config/validators.rb +1 -0
- data/lib/mongoid/config.rb +57 -91
- data/lib/mongoid/contextual/aggregable/memory.rb +1 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +2 -5
- data/lib/mongoid/contextual/aggregable/none.rb +1 -0
- data/lib/mongoid/contextual/aggregable.rb +1 -0
- data/lib/mongoid/contextual/atomic.rb +98 -11
- data/lib/mongoid/contextual/command.rb +3 -0
- data/lib/mongoid/contextual/map_reduce.rb +6 -0
- data/lib/mongoid/contextual/memory.rb +45 -42
- data/lib/mongoid/contextual/mongo/documents_loader.rb +3 -2
- data/lib/mongoid/contextual/mongo.rb +32 -60
- data/lib/mongoid/contextual/none.rb +15 -32
- data/lib/mongoid/contextual/queryable.rb +4 -0
- data/lib/mongoid/contextual.rb +4 -0
- data/lib/mongoid/copyable.rb +3 -2
- data/lib/mongoid/criteria/findable.rb +44 -4
- data/lib/mongoid/criteria/includable.rb +5 -4
- data/lib/mongoid/criteria/inspectable.rb +4 -0
- data/lib/mongoid/criteria/marshalable.rb +4 -0
- data/lib/mongoid/criteria/modifiable.rb +5 -0
- data/lib/mongoid/criteria/options.rb +1 -0
- data/lib/mongoid/criteria/permission.rb +5 -0
- data/lib/mongoid/criteria/queryable/aggregable.rb +1 -0
- data/lib/mongoid/criteria/queryable/expandable.rb +1 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -5
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/date.rb +4 -3
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +3 -16
- data/lib/mongoid/criteria/queryable/extensions/object.rb +4 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +7 -1
- data/lib/mongoid/criteria/queryable/extensions/set.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/string.rb +15 -3
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/time.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -0
- data/lib/mongoid/criteria/queryable/key.rb +10 -0
- data/lib/mongoid/criteria/queryable/macroable.rb +1 -0
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -0
- data/lib/mongoid/criteria/queryable/optional.rb +1 -0
- data/lib/mongoid/criteria/queryable/options.rb +1 -0
- data/lib/mongoid/criteria/queryable/pipeline.rb +1 -0
- data/lib/mongoid/criteria/queryable/selectable.rb +11 -26
- data/lib/mongoid/criteria/queryable/selector.rb +5 -2
- data/lib/mongoid/criteria/queryable/smash.rb +1 -0
- data/lib/mongoid/criteria/queryable/storable.rb +4 -3
- data/lib/mongoid/criteria/queryable.rb +1 -0
- data/lib/mongoid/criteria/scopable.rb +5 -0
- data/lib/mongoid/criteria/translator.rb +1 -0
- data/lib/mongoid/criteria.rb +37 -10
- data/lib/mongoid/deprecable.rb +1 -0
- data/lib/mongoid/deprecation.rb +8 -4
- data/lib/mongoid/document.rb +170 -117
- data/lib/mongoid/encryptable.rb +53 -0
- data/lib/mongoid/equality.rb +2 -21
- data/lib/mongoid/errors/ambiguous_relationship.rb +1 -0
- data/lib/mongoid/errors/attribute_not_loaded.rb +34 -0
- data/lib/mongoid/errors/callback.rb +1 -0
- data/lib/mongoid/errors/create_collection_failure.rb +1 -0
- data/lib/mongoid/errors/criteria_argument_required.rb +1 -0
- data/lib/mongoid/errors/delete_restriction.rb +1 -0
- data/lib/mongoid/errors/document_not_destroyed.rb +1 -0
- data/lib/mongoid/errors/document_not_found.rb +1 -0
- data/lib/mongoid/errors/drop_collection_failure.rb +1 -0
- data/lib/mongoid/errors/empty_config_file.rb +1 -0
- data/lib/mongoid/errors/immutable_attribute.rb +1 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +1 -0
- data/lib/mongoid/errors/invalid_async_query_executor.rb +1 -0
- data/lib/mongoid/errors/invalid_auto_encryption_configuration.rb +33 -0
- data/lib/mongoid/errors/invalid_collection.rb +1 -0
- data/lib/mongoid/errors/invalid_config_file.rb +1 -0
- data/lib/mongoid/errors/invalid_config_option.rb +1 -0
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -0
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +1 -0
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +1 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +1 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +6 -4
- data/lib/mongoid/errors/invalid_estimated_count_scoping.rb +27 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +1 -0
- data/lib/mongoid/errors/invalid_field.rb +1 -0
- data/lib/mongoid/errors/invalid_field_operator.rb +1 -0
- data/lib/mongoid/errors/invalid_field_option.rb +1 -0
- data/lib/mongoid/errors/invalid_field_type.rb +1 -0
- data/lib/mongoid/errors/invalid_find.rb +1 -0
- data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +1 -0
- data/lib/mongoid/errors/invalid_includes.rb +1 -0
- data/lib/mongoid/errors/invalid_index.rb +1 -0
- data/lib/mongoid/errors/invalid_options.rb +1 -0
- data/lib/mongoid/errors/invalid_path.rb +1 -0
- data/lib/mongoid/errors/invalid_persistence_option.rb +1 -0
- data/lib/mongoid/errors/invalid_query.rb +1 -0
- data/lib/mongoid/errors/invalid_relation.rb +1 -0
- data/lib/mongoid/errors/invalid_relation_option.rb +1 -0
- data/lib/mongoid/errors/invalid_scope.rb +1 -0
- data/lib/mongoid/errors/invalid_session_nesting.rb +17 -0
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -0
- data/lib/mongoid/errors/invalid_time.rb +1 -0
- data/lib/mongoid/errors/invalid_transaction_nesting.rb +17 -0
- data/lib/mongoid/errors/inverse_not_found.rb +1 -0
- data/lib/mongoid/errors/mixed_client_configuration.rb +1 -0
- data/lib/mongoid/errors/mixed_relations.rb +1 -0
- data/lib/mongoid/errors/mongoid_error.rb +4 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -0
- data/lib/mongoid/errors/no_client_config.rb +1 -0
- data/lib/mongoid/errors/no_client_database.rb +1 -0
- data/lib/mongoid/errors/no_client_hosts.rb +1 -0
- data/lib/mongoid/errors/no_clients_config.rb +1 -0
- data/lib/mongoid/errors/no_default_client.rb +1 -0
- data/lib/mongoid/errors/no_environment.rb +1 -0
- data/lib/mongoid/errors/no_map_reduce_output.rb +1 -0
- data/lib/mongoid/errors/no_metadata.rb +1 -0
- data/lib/mongoid/errors/no_parent.rb +1 -0
- data/lib/mongoid/errors/readonly_attribute.rb +1 -0
- data/lib/mongoid/errors/readonly_document.rb +1 -0
- data/lib/mongoid/errors/rollback.rb +15 -0
- data/lib/mongoid/errors/scope_overwrite.rb +1 -0
- data/lib/mongoid/errors/sessions_not_supported.rb +17 -0
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -0
- data/lib/mongoid/errors/transaction_error.rb +25 -0
- data/lib/mongoid/errors/transactions_not_supported.rb +17 -0
- data/lib/mongoid/errors/unknown_attribute.rb +1 -0
- data/lib/mongoid/errors/unknown_model.rb +1 -0
- data/lib/mongoid/errors/unsaved_document.rb +1 -0
- data/lib/mongoid/errors/unsupported_javascript.rb +1 -0
- data/lib/mongoid/errors/validations.rb +1 -0
- data/lib/mongoid/errors.rb +10 -1
- data/lib/mongoid/evolvable.rb +1 -0
- data/lib/mongoid/extensions/array.rb +10 -24
- data/lib/mongoid/extensions/big_decimal.rb +14 -6
- data/lib/mongoid/extensions/binary.rb +3 -0
- data/lib/mongoid/extensions/boolean.rb +3 -0
- data/lib/mongoid/extensions/date.rb +7 -2
- data/lib/mongoid/extensions/date_time.rb +4 -6
- data/lib/mongoid/extensions/decimal128.rb +3 -0
- data/lib/mongoid/extensions/false_class.rb +5 -2
- data/lib/mongoid/extensions/float.rb +4 -1
- data/lib/mongoid/extensions/hash.rb +21 -143
- data/lib/mongoid/extensions/integer.rb +6 -1
- data/lib/mongoid/extensions/module.rb +4 -1
- data/lib/mongoid/extensions/nil_class.rb +5 -2
- data/lib/mongoid/extensions/object.rb +23 -35
- data/lib/mongoid/extensions/object_id.rb +3 -0
- data/lib/mongoid/extensions/range.rb +9 -6
- data/lib/mongoid/extensions/raw_value.rb +34 -0
- data/lib/mongoid/extensions/regexp.rb +3 -0
- data/lib/mongoid/extensions/set.rb +13 -2
- data/lib/mongoid/extensions/string.rb +18 -10
- data/lib/mongoid/extensions/symbol.rb +5 -0
- data/lib/mongoid/extensions/time.rb +7 -19
- data/lib/mongoid/extensions/time_with_zone.rb +6 -2
- data/lib/mongoid/extensions/true_class.rb +5 -2
- data/lib/mongoid/extensions.rb +2 -32
- data/lib/mongoid/factory.rb +134 -40
- data/lib/mongoid/fields/encrypted.rb +48 -0
- data/lib/mongoid/fields/foreign_key.rb +29 -3
- data/lib/mongoid/fields/localized.rb +6 -0
- data/lib/mongoid/fields/standard.rb +5 -0
- data/lib/mongoid/fields/validators/macro.rb +3 -1
- data/lib/mongoid/fields/validators.rb +1 -0
- data/lib/mongoid/fields.rb +41 -46
- data/lib/mongoid/findable.rb +2 -2
- data/lib/mongoid/indexable/specification.rb +55 -19
- data/lib/mongoid/indexable/validators/options.rb +1 -0
- data/lib/mongoid/indexable.rb +1 -0
- data/lib/mongoid/inspectable.rb +32 -0
- data/lib/mongoid/interceptable.rb +13 -2
- data/lib/mongoid/loadable.rb +83 -0
- data/lib/mongoid/loggable.rb +1 -0
- data/lib/mongoid/matchable.rb +1 -0
- data/lib/mongoid/matcher/all.rb +15 -0
- data/lib/mongoid/matcher/and.rb +14 -0
- data/lib/mongoid/matcher/bits.rb +19 -0
- data/lib/mongoid/matcher/bits_all_clear.rb +21 -0
- data/lib/mongoid/matcher/bits_all_set.rb +21 -0
- data/lib/mongoid/matcher/bits_any_clear.rb +21 -0
- data/lib/mongoid/matcher/bits_any_set.rb +21 -0
- data/lib/mongoid/matcher/elem_match.rb +15 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +14 -2
- data/lib/mongoid/matcher/eq.rb +15 -0
- data/lib/mongoid/matcher/eq_impl.rb +33 -16
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +14 -2
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +13 -0
- data/lib/mongoid/matcher/expression_operator.rb +14 -0
- data/lib/mongoid/matcher/field_expression.rb +15 -0
- data/lib/mongoid/matcher/field_operator.rb +24 -0
- data/lib/mongoid/matcher/gt.rb +15 -0
- data/lib/mongoid/matcher/gte.rb +15 -0
- data/lib/mongoid/matcher/in.rb +15 -0
- data/lib/mongoid/matcher/lt.rb +15 -0
- data/lib/mongoid/matcher/lte.rb +15 -0
- data/lib/mongoid/matcher/mod.rb +16 -0
- data/lib/mongoid/matcher/ne.rb +15 -0
- data/lib/mongoid/matcher/nin.rb +15 -0
- data/lib/mongoid/matcher/nor.rb +14 -0
- data/lib/mongoid/matcher/not.rb +16 -0
- data/lib/mongoid/matcher/or.rb +14 -0
- data/lib/mongoid/matcher/regex.rb +24 -0
- data/lib/mongoid/matcher/size.rb +16 -0
- data/lib/mongoid/matcher/type.rb +25 -0
- data/lib/mongoid/matcher.rb +4 -0
- data/lib/mongoid/persistable/creatable.rb +14 -9
- data/lib/mongoid/persistable/deletable.rb +7 -2
- data/lib/mongoid/persistable/destroyable.rb +34 -7
- data/lib/mongoid/persistable/incrementable.rb +2 -1
- data/lib/mongoid/persistable/logical.rb +1 -0
- data/lib/mongoid/persistable/maxable.rb +37 -0
- data/lib/mongoid/persistable/minable.rb +37 -0
- data/lib/mongoid/persistable/multipliable.rb +36 -0
- data/lib/mongoid/persistable/poppable.rb +1 -0
- data/lib/mongoid/persistable/pullable.rb +1 -0
- data/lib/mongoid/persistable/pushable.rb +1 -0
- data/lib/mongoid/persistable/renamable.rb +1 -0
- data/lib/mongoid/persistable/savable.rb +1 -0
- data/lib/mongoid/persistable/settable.rb +1 -0
- data/lib/mongoid/persistable/unsettable.rb +1 -0
- data/lib/mongoid/persistable/updatable.rb +37 -18
- data/lib/mongoid/persistable/upsertable.rb +20 -7
- data/lib/mongoid/persistable.rb +11 -1
- data/lib/mongoid/persistence_context.rb +46 -6
- data/lib/mongoid/positional.rb +1 -0
- data/lib/mongoid/railtie.rb +24 -1
- data/lib/mongoid/railties/bson_object_id_serializer.rb +39 -0
- data/lib/mongoid/railties/console_sandbox.rb +42 -0
- data/lib/mongoid/railties/controller_runtime.rb +20 -4
- data/lib/mongoid/railties/database.rake +12 -0
- data/lib/mongoid/reloadable.rb +38 -30
- data/lib/mongoid/scopable.rb +19 -23
- data/lib/mongoid/search_indexable.rb +167 -0
- data/lib/mongoid/selectable.rb +1 -0
- data/lib/mongoid/serializable.rb +1 -0
- data/lib/mongoid/shardable.rb +1 -0
- data/lib/mongoid/stateful.rb +9 -3
- data/lib/mongoid/stringified_symbol.rb +19 -6
- data/lib/mongoid/tasks/database.rake +13 -0
- data/lib/mongoid/tasks/database.rb +63 -0
- data/lib/mongoid/tasks/encryption.rake +59 -0
- data/lib/mongoid/tasks/encryption.rb +108 -0
- data/lib/mongoid/threaded/lifecycle.rb +1 -0
- data/lib/mongoid/threaded.rb +94 -30
- data/lib/mongoid/timestamps/created/short.rb +1 -0
- data/lib/mongoid/timestamps/created.rb +4 -3
- data/lib/mongoid/timestamps/short.rb +1 -0
- data/lib/mongoid/timestamps/timeless.rb +29 -0
- data/lib/mongoid/timestamps/updated/short.rb +1 -0
- data/lib/mongoid/timestamps/updated.rb +2 -1
- data/lib/mongoid/timestamps.rb +1 -0
- data/lib/mongoid/touchable.rb +154 -49
- data/lib/mongoid/traversable.rb +128 -88
- data/lib/mongoid/utils.rb +32 -2
- data/lib/mongoid/validatable/associated.rb +1 -0
- data/lib/mongoid/validatable/format.rb +1 -0
- data/lib/mongoid/validatable/length.rb +1 -0
- data/lib/mongoid/validatable/localizable.rb +1 -0
- data/lib/mongoid/validatable/macros.rb +5 -0
- data/lib/mongoid/validatable/presence.rb +1 -0
- data/lib/mongoid/validatable/queryable.rb +9 -0
- data/lib/mongoid/validatable/uniqueness.rb +2 -1
- data/lib/mongoid/validatable.rb +3 -2
- data/lib/mongoid/version.rb +2 -1
- data/lib/mongoid/warnings.rb +9 -16
- data/lib/mongoid.rb +38 -5
- data/lib/rails/generators/mongoid/config/config_generator.rb +17 -3
- data/lib/rails/generators/mongoid/config/templates/mongoid.rb +25 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +36 -62
- data/lib/rails/generators/mongoid/model/model_generator.rb +4 -0
- data/lib/rails/generators/mongoid_generator.rb +13 -0
- data/lib/rails/mongoid.rb +4 -29
- data/spec/config/mongoid.yml +0 -1
- data/spec/integration/active_job_spec.rb +32 -0
- data/spec/integration/app_spec.rb +71 -39
- data/spec/integration/associations/belongs_to_spec.rb +1 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +1 -0
- data/spec/integration/associations/embedded_spec.rb +75 -6
- data/spec/integration/associations/embeds_many_spec.rb +1 -0
- data/spec/integration/associations/embeds_one_spec.rb +1 -0
- data/spec/integration/associations/foreign_key_spec.rb +1 -0
- data/spec/integration/associations/foreign_key_spec_models.rb +1 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +1 -0
- data/spec/integration/associations/has_many_spec.rb +1 -0
- data/spec/integration/associations/has_one_spec.rb +1 -0
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +1 -0
- data/spec/integration/associations/reverse_population_spec.rb +1 -0
- data/spec/integration/associations/reverse_population_spec_models.rb +1 -0
- data/spec/integration/associations/scope_option_spec.rb +1 -0
- data/spec/integration/atomic/modifiers_spec.rb +1 -0
- data/spec/integration/bson_regexp_raw_spec.rb +1 -0
- data/spec/integration/callbacks_models.rb +3 -2
- data/spec/integration/callbacks_spec.rb +2 -1
- data/spec/integration/contextual/empty_spec.rb +1 -0
- data/spec/integration/criteria/alias_query_spec.rb +25 -88
- data/spec/integration/criteria/date_field_spec.rb +1 -0
- data/spec/integration/criteria/default_scope_spec.rb +1 -0
- data/spec/integration/criteria/logical_spec.rb +10 -28
- data/spec/integration/criteria/range_spec.rb +1 -2
- data/spec/integration/criteria/raw_value_spec.rb +525 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +1 -0
- data/spec/integration/discriminator_key_spec.rb +1 -0
- data/spec/integration/discriminator_value_spec.rb +1 -0
- data/spec/integration/document_spec.rb +1 -0
- data/spec/integration/dots_and_dollars_spec.rb +1 -0
- data/spec/integration/encryption_spec.rb +100 -0
- data/spec/integration/i18n_fallbacks_spec.rb +7 -33
- data/spec/integration/matcher_examples_spec.rb +1 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +0 -15
- data/spec/integration/matcher_operator_data/bits_all_set.yml +0 -15
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +0 -15
- data/spec/integration/matcher_operator_data/bits_any_set.yml +0 -15
- data/spec/integration/matcher_operator_data/size.yml +0 -3
- data/spec/integration/matcher_operator_data/type.yml +0 -6
- data/spec/integration/matcher_operator_data/type_array.yml +0 -1
- data/spec/integration/matcher_operator_data/type_decimal.yml +0 -4
- data/spec/integration/matcher_operator_spec.rb +1 -0
- data/spec/integration/matcher_spec.rb +21 -66
- data/spec/integration/persistence/range_field_spec.rb +1 -0
- data/spec/integration/server_query_spec.rb +1 -0
- data/spec/integration/shardable_spec.rb +1 -0
- data/spec/integration/stringified_symbol_field_spec.rb +1 -0
- data/spec/lite_spec_helper.rb +36 -10
- data/spec/mongoid/association/accessors_spec.rb +11 -28
- data/spec/mongoid/association/auto_save_spec.rb +1 -0
- data/spec/mongoid/association/builders_spec.rb +1 -0
- data/spec/mongoid/association/constrainable_spec.rb +1 -0
- data/spec/mongoid/association/counter_cache_spec.rb +1 -0
- data/spec/mongoid/association/depending_spec.rb +1 -0
- data/spec/mongoid/association/eager_spec.rb +50 -0
- data/spec/mongoid/association/embedded/cyclic_spec.rb +1 -0
- data/spec/mongoid/association/embedded/dirty_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +19 -7
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_many_models.rb +17 -2
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +4 -7
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +6 -1
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +1 -0
- data/spec/mongoid/association/macros_spec.rb +1 -0
- data/spec/mongoid/association/nested/many_spec.rb +1 -0
- data/spec/mongoid/association/nested/one_spec.rb +1 -0
- data/spec/mongoid/association/options_spec.rb +1 -0
- data/spec/mongoid/association/polymorphic_spec.rb +1 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +1 -0
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +1 -0
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +1 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +1 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +1 -0
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +2 -1
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +2 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +1 -3
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +1 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +2 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +1085 -2002
- data/spec/mongoid/association/referenced/has_many_models.rb +1 -0
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +2 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +1 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +1 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +2 -1
- data/spec/mongoid/association/referenced/has_one_spec.rb +1 -0
- data/spec/mongoid/association/reflections_spec.rb +1 -0
- data/spec/mongoid/association/syncable_spec.rb +1 -0
- data/spec/mongoid/association_spec.rb +1 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +1 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +1 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +1 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +1 -0
- data/spec/mongoid/atomic/paths_spec.rb +1 -0
- data/spec/mongoid/atomic_spec.rb +1 -0
- data/spec/mongoid/atomic_update_preparer_spec.rb +83 -0
- data/spec/mongoid/attributes/dynamic_spec.rb +1 -0
- data/spec/mongoid/attributes/embedded_spec.rb +118 -0
- data/spec/mongoid/attributes/nested_spec.rb +1 -0
- data/spec/mongoid/attributes/nested_spec_models.rb +1 -0
- data/spec/mongoid/attributes/projector_spec.rb +1 -0
- data/spec/mongoid/attributes/readonly_spec.rb +1 -0
- data/spec/mongoid/attributes_spec.rb +18 -35
- data/spec/mongoid/cacheable_spec.rb +1 -0
- data/spec/mongoid/changeable_spec.rb +4 -3
- data/spec/mongoid/clients/factory_spec.rb +77 -0
- data/spec/mongoid/clients/options_spec.rb +9 -5
- data/spec/mongoid/clients/sessions_spec.rb +27 -10
- data/spec/mongoid/clients/transactions_spec.rb +958 -185
- data/spec/mongoid/clients/transactions_spec_models.rb +159 -0
- data/spec/mongoid/clients_spec.rb +47 -2
- data/spec/mongoid/collection_configurable_spec.rb +1 -0
- data/spec/mongoid/composable_spec.rb +1 -0
- data/spec/mongoid/config/defaults_spec.rb +31 -92
- data/spec/mongoid/config/encryption_spec.rb +152 -0
- data/spec/mongoid/config/environment_spec.rb +13 -41
- data/spec/mongoid/config/introspection_spec.rb +114 -0
- data/spec/mongoid/config/options_spec.rb +1 -0
- data/spec/mongoid/config_spec.rb +20 -133
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +1 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +1 -0
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +5 -29
- data/spec/mongoid/contextual/aggregable/none_spec.rb +3 -14
- data/spec/mongoid/contextual/atomic_spec.rb +203 -12
- data/spec/mongoid/contextual/map_reduce_spec.rb +1 -0
- data/spec/mongoid/contextual/memory_spec.rb +364 -534
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +10 -3
- data/spec/mongoid/contextual/mongo_spec.rb +101 -277
- data/spec/mongoid/contextual/none_spec.rb +1 -0
- data/spec/mongoid/copyable_spec.rb +1 -0
- data/spec/mongoid/copyable_spec_models.rb +1 -0
- data/spec/mongoid/criteria/findable_spec.rb +191 -0
- data/spec/mongoid/criteria/includable_spec.rb +1 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +1 -0
- data/spec/mongoid/criteria/inspectable_spec.rb +1 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +3 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1 -0
- data/spec/mongoid/criteria/options_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +8 -7
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +21 -11
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +1 -11
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +1 -11
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +48 -66
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +5 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/options_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +4 -3
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +1 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +51 -185
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +96 -0
- data/spec/mongoid/criteria/queryable/smash_spec.rb +1 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +10 -32
- data/spec/mongoid/criteria/scopable_spec.rb +1 -0
- data/spec/mongoid/criteria/translator_spec.rb +1 -0
- data/spec/mongoid/criteria_projection_spec.rb +6 -5
- data/spec/mongoid/criteria_spec.rb +221 -359
- data/spec/mongoid/document_fields_spec.rb +1 -0
- data/spec/mongoid/document_persistence_context_spec.rb +77 -0
- data/spec/mongoid/document_query_spec.rb +5 -4
- data/spec/mongoid/document_spec.rb +3 -121
- data/spec/mongoid/equality_spec.rb +41 -143
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +1 -0
- data/spec/mongoid/errors/attribute_not_loaded_spec.rb +32 -0
- data/spec/mongoid/errors/callback_spec.rb +1 -0
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -0
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +1 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_config_file_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_field_option_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_field_type_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_includes_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_index_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_options_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_path_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_relation_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_scope_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +1 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +1 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +1 -0
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +1 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +1 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +9 -22
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +1 -0
- data/spec/mongoid/errors/no_client_config_spec.rb +1 -0
- data/spec/mongoid/errors/no_client_database_spec.rb +1 -0
- data/spec/mongoid/errors/no_client_hosts_spec.rb +1 -0
- data/spec/mongoid/errors/no_clients_config_spec.rb +1 -0
- data/spec/mongoid/errors/no_environment_spec.rb +1 -0
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +1 -0
- data/spec/mongoid/errors/no_metadata_spec.rb +1 -0
- data/spec/mongoid/errors/no_parent_spec.rb +1 -0
- data/spec/mongoid/errors/readonly_attribute_spec.rb +1 -0
- data/spec/mongoid/errors/readonly_document_spec.rb +1 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +1 -0
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -0
- data/spec/mongoid/errors/unknown_attribute_spec.rb +1 -0
- data/spec/mongoid/errors/unsaved_document_spec.rb +1 -0
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +1 -0
- data/spec/mongoid/errors/validations_spec.rb +1 -0
- data/spec/mongoid/extensions/array_spec.rb +3 -262
- data/spec/mongoid/extensions/big_decimal_spec.rb +5 -4
- data/spec/mongoid/extensions/binary_spec.rb +1 -0
- data/spec/mongoid/extensions/boolean_spec.rb +1 -0
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +8 -7
- data/spec/mongoid/extensions/date_spec.rb +3 -20
- data/spec/mongoid/extensions/date_time_spec.rb +3 -9
- data/spec/mongoid/extensions/decimal128_spec.rb +1 -0
- data/spec/mongoid/extensions/false_class_spec.rb +1 -7
- data/spec/mongoid/extensions/float_spec.rb +3 -9
- data/spec/mongoid/extensions/hash_spec.rb +19 -222
- data/spec/mongoid/extensions/integer_spec.rb +3 -8
- data/spec/mongoid/extensions/module_spec.rb +1 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -0
- data/spec/mongoid/extensions/object_id_spec.rb +1 -0
- data/spec/mongoid/extensions/object_spec.rb +1 -176
- data/spec/mongoid/extensions/range_spec.rb +1 -11
- data/spec/mongoid/extensions/raw_value_spec.rb +67 -0
- data/spec/mongoid/extensions/regexp_spec.rb +1 -0
- data/spec/mongoid/extensions/set_spec.rb +2 -3
- data/spec/mongoid/extensions/string_spec.rb +3 -113
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +1 -0
- data/spec/mongoid/extensions/symbol_spec.rb +1 -31
- data/spec/mongoid/extensions/time_spec.rb +32 -350
- data/spec/mongoid/extensions/time_with_zone_spec.rb +17 -30
- data/spec/mongoid/extensions/true_class_spec.rb +1 -7
- data/spec/mongoid/factory_spec.rb +1 -0
- data/spec/mongoid/fields/foreign_key_spec.rb +282 -119
- data/spec/mongoid/fields/localized_spec.rb +1 -0
- data/spec/mongoid/fields/standard_spec.rb +1 -0
- data/spec/mongoid/fields_spec.rb +60 -66
- data/spec/mongoid/findable_spec.rb +2 -61
- data/spec/mongoid/indexable/specification_spec.rb +132 -13
- data/spec/mongoid/indexable_spec.rb +323 -9
- data/spec/mongoid/inspectable_spec.rb +81 -0
- data/spec/mongoid/interceptable_spec.rb +3 -2
- data/spec/mongoid/interceptable_spec_models.rb +1 -0
- data/spec/mongoid/loading_spec.rb +110 -0
- data/spec/mongoid/loggable_spec.rb +1 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -0
- data/spec/mongoid/mongoizable_spec.rb +1 -0
- data/spec/mongoid/monkey_patches_spec.rb +211 -0
- data/spec/mongoid/persistable/creatable_spec.rb +1 -0
- data/spec/mongoid/persistable/deletable_spec.rb +78 -31
- data/spec/mongoid/persistable/destroyable_spec.rb +230 -52
- data/spec/mongoid/persistable/incrementable_spec.rb +1 -0
- data/spec/mongoid/persistable/logical_spec.rb +1 -0
- data/spec/mongoid/persistable/maxable_spec.rb +147 -0
- data/spec/mongoid/persistable/minable_spec.rb +147 -0
- data/spec/mongoid/persistable/multipliable_spec.rb +227 -0
- data/spec/mongoid/persistable/poppable_spec.rb +1 -0
- data/spec/mongoid/persistable/pullable_spec.rb +1 -0
- data/spec/mongoid/persistable/pushable_spec.rb +1 -0
- data/spec/mongoid/persistable/renamable_spec.rb +1 -0
- data/spec/mongoid/persistable/savable_spec.rb +2 -6
- data/spec/mongoid/persistable/settable_spec.rb +5 -4
- data/spec/mongoid/persistable/unsettable_spec.rb +1 -0
- data/spec/mongoid/persistable/updatable_spec.rb +3 -2
- data/spec/mongoid/persistable/upsertable_spec.rb +34 -1
- data/spec/mongoid/persistable_spec.rb +1 -0
- data/spec/mongoid/persistence_context_spec.rb +1 -0
- data/spec/mongoid/positional_spec.rb +1 -0
- data/spec/mongoid/railties/bson_object_id_serializer_spec.rb +24 -0
- data/spec/mongoid/railties/console_sandbox_spec.rb +44 -0
- data/spec/mongoid/relations/proxy_spec.rb +1 -0
- data/spec/mongoid/reloadable_spec.rb +28 -83
- data/spec/mongoid/scopable_spec.rb +39 -50
- data/spec/mongoid/search_indexable_spec.rb +147 -0
- data/spec/mongoid/selectable_spec.rb +1 -0
- data/spec/mongoid/serializable_spec.rb +10 -16
- data/spec/mongoid/shardable_models.rb +1 -0
- data/spec/mongoid/shardable_spec.rb +1 -0
- data/spec/mongoid/stateful_spec.rb +1 -0
- data/spec/mongoid/tasks/database_rake_spec.rb +127 -49
- data/spec/mongoid/tasks/database_spec.rb +48 -1
- data/spec/mongoid/tasks/encryption_spec.rb +187 -0
- data/spec/mongoid/threaded_spec.rb +38 -0
- data/spec/mongoid/timestamps/created/short_spec.rb +1 -0
- data/spec/mongoid/timestamps/created_spec.rb +1 -0
- data/spec/mongoid/timestamps/timeless_spec.rb +1 -0
- data/spec/mongoid/timestamps/updated/short_spec.rb +1 -0
- data/spec/mongoid/timestamps/updated_spec.rb +1 -0
- data/spec/mongoid/timestamps_spec.rb +1 -0
- data/spec/mongoid/timestamps_spec_models.rb +1 -0
- data/spec/mongoid/touchable_spec.rb +490 -62
- data/spec/mongoid/touchable_spec_models.rb +96 -1
- data/spec/mongoid/traversable_spec.rb +1 -0
- data/spec/mongoid/validatable/associated_spec.rb +1 -0
- data/spec/mongoid/validatable/format_spec.rb +1 -0
- data/spec/mongoid/validatable/length_spec.rb +1 -0
- data/spec/mongoid/validatable/numericality_spec.rb +1 -0
- data/spec/mongoid/validatable/presence_spec.rb +1 -0
- data/spec/mongoid/validatable/uniqueness_spec.rb +48 -3
- data/spec/mongoid/validatable_spec.rb +1 -0
- data/spec/mongoid/warnings_spec.rb +1 -0
- data/spec/mongoid_spec.rb +27 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +1 -0
- data/spec/rails/mongoid_spec.rb +26 -117
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +378 -0
- data/spec/shared/lib/mrss/docker_runner.rb +298 -0
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +238 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +113 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +37 -0
- data/spec/shared/share/Dockerfile.erb +281 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +417 -0
- data/spec/shared/shlib/set_env.sh +146 -0
- data/spec/spec_helper.rb +26 -28
- data/spec/support/authorization.rb +1 -0
- data/spec/support/client_registry.rb +1 -0
- data/spec/support/constraints.rb +1 -0
- data/spec/support/crypt/models.rb +50 -0
- data/spec/support/crypt.rb +80 -0
- data/spec/support/expectations.rb +1 -0
- data/spec/support/feature_sandbox.rb +72 -0
- data/spec/support/helpers.rb +1 -0
- data/spec/support/immutable_ids.rb +22 -21
- data/spec/support/macros.rb +4 -6
- data/spec/support/models/account.rb +1 -0
- data/spec/support/models/acolyte.rb +1 -0
- data/spec/support/models/actor.rb +1 -0
- data/spec/support/models/actress.rb +1 -0
- data/spec/support/models/address.rb +3 -0
- data/spec/support/models/address_component.rb +1 -0
- data/spec/support/models/address_number.rb +1 -0
- data/spec/support/models/agency.rb +1 -0
- data/spec/support/models/agent.rb +1 -0
- data/spec/support/models/album.rb +1 -0
- data/spec/support/models/alert.rb +1 -0
- data/spec/support/models/animal.rb +1 -0
- data/spec/support/models/answer.rb +1 -0
- data/spec/support/models/appointment.rb +1 -0
- data/spec/support/models/armrest.rb +1 -0
- data/spec/support/models/array_field.rb +1 -0
- data/spec/support/models/article.rb +1 -0
- data/spec/support/models/artist.rb +1 -0
- data/spec/support/models/artwork.rb +1 -0
- data/spec/support/models/audible_sound.rb +1 -0
- data/spec/support/models/audio.rb +1 -0
- data/spec/support/models/augmentation.rb +1 -0
- data/spec/support/models/author.rb +1 -0
- data/spec/support/models/baby.rb +1 -0
- data/spec/support/models/band.rb +5 -1
- data/spec/support/models/bar.rb +1 -0
- data/spec/support/models/basic.rb +1 -0
- data/spec/support/models/bed.rb +1 -0
- data/spec/support/models/big_palette.rb +1 -0
- data/spec/support/models/birthday.rb +1 -0
- data/spec/support/models/bolt.rb +1 -0
- data/spec/support/models/bomb.rb +1 -0
- data/spec/support/models/book.rb +1 -0
- data/spec/support/models/breed.rb +1 -0
- data/spec/support/models/browser.rb +1 -0
- data/spec/support/models/building.rb +1 -0
- data/spec/support/models/building_address.rb +1 -0
- data/spec/support/models/bus.rb +1 -0
- data/spec/support/models/business.rb +1 -0
- data/spec/support/models/callback_test.rb +1 -0
- data/spec/support/models/canvas.rb +1 -0
- data/spec/support/models/car.rb +1 -0
- data/spec/support/models/cat.rb +1 -0
- data/spec/support/models/catalog.rb +1 -0
- data/spec/support/models/category.rb +1 -0
- data/spec/support/models/child.rb +1 -0
- data/spec/support/models/child_doc.rb +1 -0
- data/spec/support/models/church.rb +1 -0
- data/spec/support/models/circle.rb +1 -0
- data/spec/support/models/circuit.rb +1 -0
- data/spec/support/models/circus.rb +1 -0
- data/spec/support/models/code.rb +1 -0
- data/spec/support/models/coding/pull_request.rb +1 -0
- data/spec/support/models/coding.rb +1 -0
- data/spec/support/models/comment.rb +1 -0
- data/spec/support/models/company.rb +1 -0
- data/spec/support/models/consumption_period.rb +1 -0
- data/spec/support/models/contextable_item.rb +1 -0
- data/spec/support/models/contractor.rb +1 -0
- data/spec/support/models/cookie.rb +1 -0
- data/spec/support/models/country_code.rb +1 -0
- data/spec/support/models/courier_job.rb +1 -0
- data/spec/support/models/cover.rb +1 -0
- data/spec/support/models/crate.rb +1 -0
- data/spec/support/models/customer.rb +1 -0
- data/spec/support/models/customer_address.rb +1 -0
- data/spec/support/models/deed.rb +1 -0
- data/spec/support/models/definition.rb +1 -0
- data/spec/support/models/delegating_patient.rb +1 -0
- data/spec/support/models/description.rb +1 -0
- data/spec/support/models/dictionary.rb +1 -0
- data/spec/support/models/division.rb +1 -0
- data/spec/support/models/doctor.rb +1 -0
- data/spec/support/models/dog.rb +1 -0
- data/spec/support/models/dokument.rb +1 -0
- data/spec/support/models/draft.rb +1 -0
- data/spec/support/models/dragon.rb +1 -0
- data/spec/support/models/driver.rb +1 -0
- data/spec/support/models/drug.rb +1 -0
- data/spec/support/models/dungeon.rb +1 -0
- data/spec/support/models/edit.rb +1 -0
- data/spec/support/models/email.rb +1 -0
- data/spec/support/models/employer.rb +1 -0
- data/spec/support/models/entry.rb +1 -0
- data/spec/support/models/eraser.rb +1 -0
- data/spec/support/models/even.rb +1 -0
- data/spec/support/models/event.rb +1 -0
- data/spec/support/models/exhibition.rb +1 -0
- data/spec/support/models/exhibitor.rb +1 -0
- data/spec/support/models/explosion.rb +1 -0
- data/spec/support/models/eye.rb +1 -0
- data/spec/support/models/eye_bowl.rb +1 -0
- data/spec/support/models/face.rb +1 -0
- data/spec/support/models/fanatic.rb +1 -0
- data/spec/support/models/favorite.rb +8 -1
- data/spec/support/models/filesystem.rb +1 -0
- data/spec/support/models/fire_hydrant.rb +1 -0
- data/spec/support/models/firefox.rb +1 -0
- data/spec/support/models/fish.rb +1 -0
- data/spec/support/models/folder.rb +1 -0
- data/spec/support/models/folder_item.rb +1 -0
- data/spec/support/models/fruits.rb +1 -0
- data/spec/support/models/game.rb +1 -0
- data/spec/support/models/ghost.rb +1 -0
- data/spec/support/models/guitar.rb +1 -0
- data/spec/support/models/hole.rb +1 -0
- data/spec/support/models/home.rb +1 -0
- data/spec/support/models/house.rb +1 -0
- data/spec/support/models/html_writer.rb +1 -0
- data/spec/support/models/id_key.rb +1 -0
- data/spec/support/models/idnodef.rb +1 -0
- data/spec/support/models/image.rb +1 -0
- data/spec/support/models/implant.rb +1 -0
- data/spec/support/models/instrument.rb +1 -0
- data/spec/support/models/item.rb +1 -0
- data/spec/support/models/jar.rb +1 -0
- data/spec/support/models/kaleidoscope.rb +1 -0
- data/spec/support/models/kangaroo.rb +1 -0
- data/spec/support/models/label.rb +1 -0
- data/spec/support/models/language.rb +1 -0
- data/spec/support/models/lat_lng.rb +1 -6
- data/spec/support/models/league.rb +1 -0
- data/spec/support/models/learner.rb +1 -0
- data/spec/support/models/line_item.rb +1 -0
- data/spec/support/models/location.rb +1 -0
- data/spec/support/models/login.rb +1 -0
- data/spec/support/models/manufacturer.rb +1 -0
- data/spec/support/models/meat.rb +1 -0
- data/spec/support/models/membership.rb +1 -0
- data/spec/support/models/message.rb +1 -0
- data/spec/support/models/minim.rb +1 -0
- data/spec/support/models/mixed_drink.rb +1 -0
- data/spec/support/models/mop.rb +1 -0
- data/spec/support/models/movie.rb +1 -0
- data/spec/support/models/my_hash.rb +1 -0
- data/spec/support/models/name.rb +1 -0
- data/spec/support/models/name_only.rb +1 -0
- data/spec/support/models/node.rb +1 -0
- data/spec/support/models/note.rb +1 -0
- data/spec/support/models/nut.rb +1 -0
- data/spec/support/models/odd.rb +1 -0
- data/spec/support/models/order.rb +1 -0
- data/spec/support/models/ordered_post.rb +1 -0
- data/spec/support/models/ordered_preference.rb +1 -0
- data/spec/support/models/oscar.rb +1 -0
- data/spec/support/models/other_owner_object.rb +1 -0
- data/spec/support/models/override.rb +1 -0
- data/spec/support/models/ownable.rb +1 -0
- data/spec/support/models/owner.rb +1 -0
- data/spec/support/models/pack.rb +1 -0
- data/spec/support/models/page.rb +1 -0
- data/spec/support/models/page_question.rb +1 -0
- data/spec/support/models/palette.rb +1 -0
- data/spec/support/models/parent.rb +1 -0
- data/spec/support/models/parent_doc.rb +1 -0
- data/spec/support/models/passport.rb +1 -0
- data/spec/support/models/patient.rb +1 -0
- data/spec/support/models/pdf_writer.rb +1 -0
- data/spec/support/models/pencil.rb +1 -0
- data/spec/support/models/person.rb +1 -0
- data/spec/support/models/pet.rb +1 -0
- data/spec/support/models/pet_owner.rb +1 -0
- data/spec/support/models/phone.rb +1 -0
- data/spec/support/models/piano.rb +1 -0
- data/spec/support/models/pizza.rb +1 -0
- data/spec/support/models/player.rb +1 -0
- data/spec/support/models/post.rb +1 -0
- data/spec/support/models/post_genre.rb +1 -0
- data/spec/support/models/powerup.rb +1 -0
- data/spec/support/models/preference.rb +1 -0
- data/spec/support/models/princess.rb +1 -0
- data/spec/support/models/product.rb +1 -0
- data/spec/support/models/profile.rb +1 -0
- data/spec/support/models/pronunciation.rb +1 -0
- data/spec/support/models/pub.rb +1 -0
- data/spec/support/models/publication/encyclopedia.rb +1 -0
- data/spec/support/models/publication/review.rb +1 -0
- data/spec/support/models/publication.rb +1 -0
- data/spec/support/models/purchase.rb +1 -0
- data/spec/support/models/purchased_item.rb +1 -0
- data/spec/support/models/question.rb +1 -0
- data/spec/support/models/quiz.rb +1 -0
- data/spec/support/models/rating.rb +1 -0
- data/spec/support/models/record.rb +1 -0
- data/spec/support/models/registry.rb +1 -0
- data/spec/support/models/role.rb +1 -0
- data/spec/support/models/root_category.rb +1 -0
- data/spec/support/models/sandbox/app/models/app_models_message.rb +4 -0
- data/spec/support/models/sandbox/lib/models/lib_models_message.rb +4 -0
- data/spec/support/models/sandbox/sandbox_message.rb +4 -0
- data/spec/support/models/sandbox/sandbox_user.rb +4 -0
- data/spec/support/models/sandbox/subdir/sandbox_comment.rb +4 -0
- data/spec/support/models/sandwich.rb +1 -0
- data/spec/support/models/scheduler.rb +1 -0
- data/spec/support/models/school.rb +1 -0
- data/spec/support/models/scribe.rb +1 -0
- data/spec/support/models/sealer.rb +1 -0
- data/spec/support/models/seat.rb +1 -0
- data/spec/support/models/seo.rb +1 -0
- data/spec/support/models/series.rb +1 -0
- data/spec/support/models/server.rb +1 -0
- data/spec/support/models/service.rb +1 -0
- data/spec/support/models/shape.rb +1 -0
- data/spec/support/models/shelf.rb +1 -0
- data/spec/support/models/shield.rb +1 -0
- data/spec/support/models/shipment_address.rb +1 -0
- data/spec/support/models/shipping_container.rb +1 -0
- data/spec/support/models/shipping_pack.rb +1 -0
- data/spec/support/models/shirt.rb +1 -0
- data/spec/support/models/shop.rb +1 -0
- data/spec/support/models/short_agent.rb +1 -0
- data/spec/support/models/short_quiz.rb +1 -0
- data/spec/support/models/simple.rb +1 -0
- data/spec/support/models/slave.rb +1 -0
- data/spec/support/models/song.rb +1 -0
- data/spec/support/models/sound.rb +1 -0
- data/spec/support/models/spacer.rb +1 -0
- data/spec/support/models/square.rb +1 -0
- data/spec/support/models/staff.rb +1 -0
- data/spec/support/models/store_as_dup_test1.rb +1 -0
- data/spec/support/models/store_as_dup_test2.rb +1 -0
- data/spec/support/models/store_as_dup_test3.rb +1 -0
- data/spec/support/models/store_as_dup_test4.rb +1 -0
- data/spec/support/models/strategy.rb +1 -0
- data/spec/support/models/student.rb +1 -0
- data/spec/support/models/sub_item.rb +1 -0
- data/spec/support/models/subscription.rb +1 -0
- data/spec/support/models/survey.rb +1 -0
- data/spec/support/models/symptom.rb +1 -0
- data/spec/support/models/system_role.rb +1 -0
- data/spec/support/models/tag.rb +1 -0
- data/spec/support/models/target.rb +1 -0
- data/spec/support/models/template.rb +1 -0
- data/spec/support/models/thing.rb +1 -0
- data/spec/support/models/threadlocker.rb +1 -0
- data/spec/support/models/title.rb +1 -0
- data/spec/support/models/tool.rb +1 -0
- data/spec/support/models/topping.rb +1 -0
- data/spec/support/models/toy.rb +1 -0
- data/spec/support/models/track.rb +1 -0
- data/spec/support/models/translation.rb +1 -0
- data/spec/support/models/tree.rb +1 -0
- data/spec/support/models/truck.rb +1 -0
- data/spec/support/models/updatable.rb +1 -0
- data/spec/support/models/user.rb +1 -0
- data/spec/support/models/user_account.rb +1 -0
- data/spec/support/models/validation_callback.rb +1 -0
- data/spec/support/models/vehicle.rb +1 -0
- data/spec/support/models/version.rb +1 -0
- data/spec/support/models/vertex.rb +1 -0
- data/spec/support/models/vet_visit.rb +1 -0
- data/spec/support/models/video.rb +1 -0
- data/spec/support/models/video_game.rb +1 -0
- data/spec/support/models/washer.rb +1 -0
- data/spec/support/models/weapon.rb +1 -0
- data/spec/support/models/wiki_page.rb +1 -0
- data/spec/support/models/word.rb +1 -0
- data/spec/support/models/word_origin.rb +1 -0
- data/spec/support/models/writer.rb +1 -0
- data/spec/support/rails_mock.rb +32 -0
- data/spec/support/shared/time.rb +3 -21
- data/spec/support/sinatra_mock.rb +7 -0
- data/spec/support/spec_config.rb +30 -9
- data.tar.gz.sig +0 -0
- metadata +171 -40
- metadata.gz.sig +1 -0
- data/lib/mongoid/association/referenced/eager.rb +0 -163
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -113
- data/lib/mongoid/contextual/geo_near.rb +0 -236
- data/lib/mongoid/errors/invalid_session_use.rb +0 -21
- data/lib/mongoid/errors/invalid_storage_parent.rb +0 -27
- data/lib/mongoid/query_cache.rb +0 -68
- data/spec/mongoid/contextual/geo_near_spec.rb +0 -471
- data/spec/mongoid/extensions_spec.rb +0 -43
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -50
- data/spec/mongoid/query_cache_spec.rb +0 -865
@@ -1,4 +1,5 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
|
+
# rubocop:todo all
|
2
3
|
|
3
4
|
require "spec_helper"
|
4
5
|
|
@@ -287,23 +288,8 @@ describe Mongoid::Criteria do
|
|
287
288
|
Band.where(name: "Depeche Mode")
|
288
289
|
end
|
289
290
|
|
290
|
-
|
291
|
-
|
292
|
-
|
293
|
-
context 'rails < 6' do
|
294
|
-
max_rails_version '5.2'
|
295
|
-
|
296
|
-
it "returns the criteria as a json hash" do
|
297
|
-
expect(criteria.as_json).to eq([ band.serializable_hash ])
|
298
|
-
end
|
299
|
-
end
|
300
|
-
|
301
|
-
context 'rails >= 6' do
|
302
|
-
min_rails_version '6.0'
|
303
|
-
|
304
|
-
it "returns the criteria as a json hash" do
|
305
|
-
expect(criteria.as_json).to eq([ band.serializable_hash.as_json ])
|
306
|
-
end
|
291
|
+
it "returns the criteria as a json hash" do
|
292
|
+
expect(criteria.as_json).to eq([ band.serializable_hash.as_json ])
|
307
293
|
end
|
308
294
|
end
|
309
295
|
|
@@ -1044,26 +1030,6 @@ describe Mongoid::Criteria do
|
|
1044
1030
|
end
|
1045
1031
|
end
|
1046
1032
|
|
1047
|
-
describe "#geo_near" do
|
1048
|
-
max_server_version '4.0'
|
1049
|
-
|
1050
|
-
before do
|
1051
|
-
Bar.create_indexes
|
1052
|
-
end
|
1053
|
-
|
1054
|
-
let!(:match) do
|
1055
|
-
Bar.create!(location: [ 52.30, 13.25 ])
|
1056
|
-
end
|
1057
|
-
|
1058
|
-
let(:criteria) do
|
1059
|
-
Bar.geo_near([ 52, 13 ]).max_distance(10).spherical
|
1060
|
-
end
|
1061
|
-
|
1062
|
-
it "returns the matching documents" do
|
1063
|
-
expect(criteria).to eq([ match ])
|
1064
|
-
end
|
1065
|
-
end
|
1066
|
-
|
1067
1033
|
describe "#eq" do
|
1068
1034
|
|
1069
1035
|
let!(:match) do
|
@@ -1460,52 +1426,68 @@ describe Mongoid::Criteria do
|
|
1460
1426
|
end
|
1461
1427
|
end
|
1462
1428
|
|
1463
|
-
describe
|
1429
|
+
describe '#merge!' do
|
1430
|
+
let(:band) { Band.new }
|
1431
|
+
let(:criteria) { Band.scoped.where(name: 'Depeche Mode').asc(:name) }
|
1432
|
+
let(:association) { Band.relations['records'] }
|
1433
|
+
subject(:merged) { criteria.merge!(other) }
|
1464
1434
|
|
1465
|
-
|
1466
|
-
|
1467
|
-
|
1435
|
+
context 'when merging a Criteria' do
|
1436
|
+
let(:other) do
|
1437
|
+
{ klass: Band, includes: [:records] }
|
1438
|
+
end
|
1468
1439
|
|
1469
|
-
|
1470
|
-
|
1471
|
-
|
1440
|
+
it 'merges the selector' do
|
1441
|
+
expect(merged.selector).to eq({ 'name' => 'Depeche Mode' })
|
1442
|
+
end
|
1472
1443
|
|
1473
|
-
|
1474
|
-
|
1475
|
-
crit.documents = [ band ]
|
1444
|
+
it 'merges the options' do
|
1445
|
+
expect(merged.options).to eq({ sort: { 'name' => 1 }})
|
1476
1446
|
end
|
1477
|
-
end
|
1478
1447
|
|
1479
|
-
|
1480
|
-
|
1481
|
-
|
1448
|
+
it 'merges the scoping options' do
|
1449
|
+
expect(merged.scoping_options).to eq([ nil, nil ])
|
1450
|
+
end
|
1482
1451
|
|
1483
|
-
|
1484
|
-
|
1485
|
-
|
1452
|
+
it 'merges the inclusions' do
|
1453
|
+
expect(merged.inclusions).to eq([ association ])
|
1454
|
+
end
|
1486
1455
|
|
1487
|
-
|
1488
|
-
|
1456
|
+
it 'returns the same criteria' do
|
1457
|
+
expect(merged).to equal(criteria)
|
1458
|
+
end
|
1489
1459
|
end
|
1490
1460
|
|
1491
|
-
|
1492
|
-
|
1493
|
-
|
1461
|
+
context 'when merging a Hash' do
|
1462
|
+
let(:other) do
|
1463
|
+
Band.includes(:records).tap do |crit|
|
1464
|
+
crit.documents = [ band ]
|
1465
|
+
end
|
1466
|
+
end
|
1494
1467
|
|
1495
|
-
|
1496
|
-
|
1497
|
-
|
1468
|
+
it 'merges the selector' do
|
1469
|
+
expect(merged.selector).to eq({ 'name' => 'Depeche Mode' })
|
1470
|
+
end
|
1498
1471
|
|
1499
|
-
|
1500
|
-
|
1501
|
-
|
1472
|
+
it 'merges the options' do
|
1473
|
+
expect(merged.options).to eq({ sort: { 'name' => 1 }})
|
1474
|
+
end
|
1502
1475
|
|
1503
|
-
|
1504
|
-
|
1505
|
-
|
1476
|
+
it 'merges the documents' do
|
1477
|
+
expect(merged.documents).to eq([ band ])
|
1478
|
+
end
|
1479
|
+
|
1480
|
+
it 'merges the scoping options' do
|
1481
|
+
expect(merged.scoping_options).to eq([ nil, nil ])
|
1482
|
+
end
|
1483
|
+
|
1484
|
+
it 'merges the inclusions' do
|
1485
|
+
expect(merged.inclusions).to eq([ association ])
|
1486
|
+
end
|
1506
1487
|
|
1507
|
-
|
1508
|
-
|
1488
|
+
it 'returns the same criteria' do
|
1489
|
+
expect(merged).to equal(criteria)
|
1490
|
+
end
|
1509
1491
|
end
|
1510
1492
|
end
|
1511
1493
|
|
@@ -1735,10 +1717,8 @@ describe Mongoid::Criteria do
|
|
1735
1717
|
Product.pluck(:price)
|
1736
1718
|
end
|
1737
1719
|
|
1738
|
-
|
1739
|
-
|
1740
|
-
expect(plucked).to eq([ 100000, 1 ])
|
1741
|
-
end
|
1720
|
+
it "uses the aliases" do
|
1721
|
+
expect(plucked).to eq([ 100000, 1 ])
|
1742
1722
|
end
|
1743
1723
|
end
|
1744
1724
|
end
|
@@ -1755,18 +1735,13 @@ describe Mongoid::Criteria do
|
|
1755
1735
|
criteria.pluck(:name)
|
1756
1736
|
end
|
1757
1737
|
|
1758
|
-
|
1759
|
-
|
1760
|
-
expect(plucked).to contain_exactly("Depeche Mode", "Tool", "Photek")
|
1761
|
-
end
|
1738
|
+
it "returns the values" do
|
1739
|
+
expect(plucked).to contain_exactly("Depeche Mode", "Tool", "Photek")
|
1762
1740
|
end
|
1763
1741
|
|
1764
1742
|
context "when subsequently executing the criteria without a pluck" do
|
1765
|
-
|
1766
|
-
|
1767
|
-
it "does not limit the fields" do
|
1768
|
-
expect(criteria.first.likes).to eq(3)
|
1769
|
-
end
|
1743
|
+
it "does not limit the fields" do
|
1744
|
+
expect(criteria.first.likes).to eq(3)
|
1770
1745
|
end
|
1771
1746
|
end
|
1772
1747
|
|
@@ -1786,32 +1761,15 @@ describe Mongoid::Criteria do
|
|
1786
1761
|
criteria.pluck(:name, 'records.name')
|
1787
1762
|
end
|
1788
1763
|
|
1789
|
-
|
1790
|
-
|
1791
|
-
|
1792
|
-
[
|
1793
|
-
|
1794
|
-
['FKA Twigs', [{ "name" => "LP1" }]]
|
1795
|
-
]
|
1796
|
-
end
|
1797
|
-
|
1798
|
-
it 'returns the list of top-level field and subdocument values' do
|
1799
|
-
expect(embedded_pluck).to eq(expected)
|
1800
|
-
end
|
1764
|
+
let(:expected) do
|
1765
|
+
[
|
1766
|
+
["FKA Twigs", nil],
|
1767
|
+
['FKA Twigs', ["LP1"]]
|
1768
|
+
]
|
1801
1769
|
end
|
1802
1770
|
|
1803
|
-
|
1804
|
-
|
1805
|
-
let(:expected) do
|
1806
|
-
[
|
1807
|
-
["FKA Twigs", nil],
|
1808
|
-
['FKA Twigs', ["LP1"]]
|
1809
|
-
]
|
1810
|
-
end
|
1811
|
-
|
1812
|
-
it 'returns the list of top-level field and subdocument values' do
|
1813
|
-
expect(embedded_pluck).to eq(expected)
|
1814
|
-
end
|
1771
|
+
it 'returns the list of top-level field and subdocument values' do
|
1772
|
+
expect(embedded_pluck).to eq(expected)
|
1815
1773
|
end
|
1816
1774
|
end
|
1817
1775
|
|
@@ -1826,32 +1784,15 @@ describe Mongoid::Criteria do
|
|
1826
1784
|
criteria.pluck('records.name')
|
1827
1785
|
end
|
1828
1786
|
|
1829
|
-
|
1830
|
-
|
1831
|
-
|
1832
|
-
[
|
1833
|
-
|
1834
|
-
[{ "name" => "LP1" }]
|
1835
|
-
]
|
1836
|
-
end
|
1837
|
-
|
1838
|
-
it 'returns the list of subdocument values' do
|
1839
|
-
expect(embedded_pluck).to eq(expected)
|
1840
|
-
end
|
1787
|
+
let(:expected) do
|
1788
|
+
[
|
1789
|
+
nil,
|
1790
|
+
["LP1"]
|
1791
|
+
]
|
1841
1792
|
end
|
1842
1793
|
|
1843
|
-
|
1844
|
-
|
1845
|
-
let(:expected) do
|
1846
|
-
[
|
1847
|
-
nil,
|
1848
|
-
["LP1"]
|
1849
|
-
]
|
1850
|
-
end
|
1851
|
-
|
1852
|
-
it 'returns the list of subdocument values' do
|
1853
|
-
expect(embedded_pluck).to eq(expected)
|
1854
|
-
end
|
1794
|
+
it 'returns the list of subdocument values' do
|
1795
|
+
expect(embedded_pluck).to eq(expected)
|
1855
1796
|
end
|
1856
1797
|
end
|
1857
1798
|
end
|
@@ -1863,10 +1804,8 @@ describe Mongoid::Criteria do
|
|
1863
1804
|
Band.where(:name.exists => true).pluck(:name, :likes)
|
1864
1805
|
end
|
1865
1806
|
|
1866
|
-
|
1867
|
-
|
1868
|
-
expect(plucked).to contain_exactly(["Depeche Mode", 3], ["Tool", 3], ["Photek", 1])
|
1869
|
-
end
|
1807
|
+
it "returns the values" do
|
1808
|
+
expect(plucked).to contain_exactly(["Depeche Mode", 3], ["Tool", 3], ["Photek", 1])
|
1870
1809
|
end
|
1871
1810
|
end
|
1872
1811
|
|
@@ -1876,10 +1815,8 @@ describe Mongoid::Criteria do
|
|
1876
1815
|
Band.where(:name.exists => true).pluck(:likes)
|
1877
1816
|
end
|
1878
1817
|
|
1879
|
-
|
1880
|
-
|
1881
|
-
expect(plucked).to contain_exactly(3, 3, 1)
|
1882
|
-
end
|
1818
|
+
it "returns the duplicates" do
|
1819
|
+
expect(plucked).to contain_exactly(3, 3, 1)
|
1883
1820
|
end
|
1884
1821
|
end
|
1885
1822
|
end
|
@@ -1890,10 +1827,8 @@ describe Mongoid::Criteria do
|
|
1890
1827
|
Band.where(name: "New Order").pluck(:_id)
|
1891
1828
|
end
|
1892
1829
|
|
1893
|
-
|
1894
|
-
|
1895
|
-
expect(plucked).to be_empty
|
1896
|
-
end
|
1830
|
+
it "returns an empty array" do
|
1831
|
+
expect(plucked).to be_empty
|
1897
1832
|
end
|
1898
1833
|
end
|
1899
1834
|
|
@@ -1903,10 +1838,8 @@ describe Mongoid::Criteria do
|
|
1903
1838
|
Band.all.pluck(:id)
|
1904
1839
|
end
|
1905
1840
|
|
1906
|
-
|
1907
|
-
|
1908
|
-
expect(plucked).to eq([ depeche.id, tool.id, photek.id ])
|
1909
|
-
end
|
1841
|
+
it "returns the field values" do
|
1842
|
+
expect(plucked).to eq([ depeche.id, tool.id, photek.id ])
|
1910
1843
|
end
|
1911
1844
|
end
|
1912
1845
|
|
@@ -1916,10 +1849,8 @@ describe Mongoid::Criteria do
|
|
1916
1849
|
Band.all.pluck(:id, :fooz)
|
1917
1850
|
end
|
1918
1851
|
|
1919
|
-
|
1920
|
-
|
1921
|
-
expect(plucked).to eq([[depeche.id, nil], [tool.id, nil], [photek.id, nil] ])
|
1922
|
-
end
|
1852
|
+
it "returns nil for the field that doesnt exist" do
|
1853
|
+
expect(plucked).to eq([[depeche.id, nil], [tool.id, nil], [photek.id, nil] ])
|
1923
1854
|
end
|
1924
1855
|
end
|
1925
1856
|
|
@@ -1931,10 +1862,8 @@ describe Mongoid::Criteria do
|
|
1931
1862
|
Band.all.pluck(:foo)
|
1932
1863
|
end
|
1933
1864
|
|
1934
|
-
|
1935
|
-
|
1936
|
-
expect(plucked).to eq([nil, nil, nil])
|
1937
|
-
end
|
1865
|
+
it "returns an array with nil values" do
|
1866
|
+
expect(plucked).to eq([nil, nil, nil])
|
1938
1867
|
end
|
1939
1868
|
end
|
1940
1869
|
|
@@ -1944,10 +1873,8 @@ describe Mongoid::Criteria do
|
|
1944
1873
|
Band.all.pluck(:foo, :bar)
|
1945
1874
|
end
|
1946
1875
|
|
1947
|
-
|
1948
|
-
|
1949
|
-
expect(plucked).to eq([[nil, nil], [nil, nil], [nil, nil]])
|
1950
|
-
end
|
1876
|
+
it "returns an array of arrays with nil values" do
|
1877
|
+
expect(plucked).to eq([[nil, nil], [nil, nil], [nil, nil]])
|
1951
1878
|
end
|
1952
1879
|
end
|
1953
1880
|
end
|
@@ -1976,36 +1903,16 @@ describe Mongoid::Criteria do
|
|
1976
1903
|
Dictionary.all.pluck(:description_translations, :description)
|
1977
1904
|
end
|
1978
1905
|
|
1979
|
-
|
1980
|
-
|
1981
|
-
|
1982
|
-
it 'returns the non-demongoized translations' do
|
1983
|
-
expect(plucked.first).to eq({"de"=>"deutsch-text", "en"=>"english-text"})
|
1984
|
-
end
|
1985
|
-
|
1986
|
-
it 'returns nil' do
|
1987
|
-
expect(plucked_translations.first).to eq(nil)
|
1988
|
-
end
|
1989
|
-
|
1990
|
-
it 'returns nil for _translations' do
|
1991
|
-
expect(plucked_translations_both.first).to eq([nil, {"de"=>"deutsch-text", "en"=>"english-text"}])
|
1992
|
-
end
|
1906
|
+
it 'returns the demongoized translations' do
|
1907
|
+
expect(plucked.first).to eq('deutsch-text')
|
1993
1908
|
end
|
1994
1909
|
|
1995
|
-
|
1996
|
-
|
1997
|
-
|
1998
|
-
it 'returns the demongoized translations' do
|
1999
|
-
expect(plucked.first).to eq('deutsch-text')
|
2000
|
-
end
|
2001
|
-
|
2002
|
-
it 'returns the full translations hash to _translations' do
|
2003
|
-
expect(plucked_translations.first).to eq({"de"=>"deutsch-text", "en"=>"english-text"})
|
2004
|
-
end
|
1910
|
+
it 'returns the full translations hash to _translations' do
|
1911
|
+
expect(plucked_translations.first).to eq({"de"=>"deutsch-text", "en"=>"english-text"})
|
1912
|
+
end
|
2005
1913
|
|
2006
|
-
|
2007
|
-
|
2008
|
-
end
|
1914
|
+
it 'returns both' do
|
1915
|
+
expect(plucked_translations_both.first).to eq([{"de"=>"deutsch-text", "en"=>"english-text"}, "deutsch-text"])
|
2009
1916
|
end
|
2010
1917
|
end
|
2011
1918
|
|
@@ -2015,20 +1922,8 @@ describe Mongoid::Criteria do
|
|
2015
1922
|
Dictionary.all.pluck(:'description.de')
|
2016
1923
|
end
|
2017
1924
|
|
2018
|
-
|
2019
|
-
|
2020
|
-
|
2021
|
-
it 'returns the specific translations' do
|
2022
|
-
expect(plucked.first).to eq({'de' => 'deutsch-text'})
|
2023
|
-
end
|
2024
|
-
end
|
2025
|
-
|
2026
|
-
context "when legacy_pluck_distinct is not set" do
|
2027
|
-
config_override :legacy_pluck_distinct, false
|
2028
|
-
|
2029
|
-
it 'returns the specific translations' do
|
2030
|
-
expect(plucked.first).to eq('deutsch-text')
|
2031
|
-
end
|
1925
|
+
it 'returns the specific translations' do
|
1926
|
+
expect(plucked.first).to eq('deutsch-text')
|
2032
1927
|
end
|
2033
1928
|
end
|
2034
1929
|
|
@@ -2038,20 +1933,8 @@ describe Mongoid::Criteria do
|
|
2038
1933
|
Dictionary.all.pluck(:'description_translations.de')
|
2039
1934
|
end
|
2040
1935
|
|
2041
|
-
|
2042
|
-
|
2043
|
-
|
2044
|
-
it 'returns the specific translations' do
|
2045
|
-
expect(plucked.first).to eq(nil)
|
2046
|
-
end
|
2047
|
-
end
|
2048
|
-
|
2049
|
-
context "when legacy_pluck_distinct is not set" do
|
2050
|
-
config_override :legacy_pluck_distinct, false
|
2051
|
-
|
2052
|
-
it 'returns the specific translations' do
|
2053
|
-
expect(plucked.first).to eq('deutsch-text')
|
2054
|
-
end
|
1936
|
+
it 'returns the specific translations' do
|
1937
|
+
expect(plucked.first).to eq('deutsch-text')
|
2055
1938
|
end
|
2056
1939
|
end
|
2057
1940
|
|
@@ -2066,23 +1949,11 @@ describe Mongoid::Criteria do
|
|
2066
1949
|
Dictionary.all.pluck(:description).first
|
2067
1950
|
end
|
2068
1951
|
|
2069
|
-
|
2070
|
-
|
2071
|
-
|
2072
|
-
|
2073
|
-
|
2074
|
-
end
|
2075
|
-
end
|
2076
|
-
|
2077
|
-
context "when legacy_pluck_distinct is not set" do
|
2078
|
-
config_override :legacy_pluck_distinct, false
|
2079
|
-
|
2080
|
-
it "correctly uses the fallback" do
|
2081
|
-
I18n.locale = :en
|
2082
|
-
d = Dictionary.create!(description: 'english-text')
|
2083
|
-
I18n.locale = :he
|
2084
|
-
plucked.should == "english-text"
|
2085
|
-
end
|
1952
|
+
it "correctly uses the fallback" do
|
1953
|
+
I18n.locale = :en
|
1954
|
+
d = Dictionary.create!(description: 'english-text')
|
1955
|
+
I18n.locale = :he
|
1956
|
+
plucked.should == "english-text"
|
2086
1957
|
end
|
2087
1958
|
end
|
2088
1959
|
|
@@ -2111,36 +1982,16 @@ describe Mongoid::Criteria do
|
|
2111
1982
|
Person.where(employer_id: 12345).pluck("pass.name_translations.en").first
|
2112
1983
|
end
|
2113
1984
|
|
2114
|
-
|
2115
|
-
|
2116
|
-
|
2117
|
-
it "returns the full hash embedded" do
|
2118
|
-
expect(plucked).to eq({ "name" => { "en" => "Neil", "he" => "Nissim" } })
|
2119
|
-
end
|
2120
|
-
|
2121
|
-
it "returns the empty hash" do
|
2122
|
-
expect(plucked_translations).to eq({})
|
2123
|
-
end
|
2124
|
-
|
2125
|
-
it "returns the empty hash" do
|
2126
|
-
expect(plucked_translations_field).to eq({})
|
2127
|
-
end
|
1985
|
+
it "returns the translation for the current locale" do
|
1986
|
+
expect(plucked).to eq("Nissim")
|
2128
1987
|
end
|
2129
1988
|
|
2130
|
-
|
2131
|
-
|
2132
|
-
|
2133
|
-
it "returns the translation for the current locale" do
|
2134
|
-
expect(plucked).to eq("Nissim")
|
2135
|
-
end
|
2136
|
-
|
2137
|
-
it "returns the full _translation hash" do
|
2138
|
-
expect(plucked_translations).to eq({ "en" => "Neil", "he" => "Nissim" })
|
2139
|
-
end
|
1989
|
+
it "returns the full _translation hash" do
|
1990
|
+
expect(plucked_translations).to eq({ "en" => "Neil", "he" => "Nissim" })
|
1991
|
+
end
|
2140
1992
|
|
2141
|
-
|
2142
|
-
|
2143
|
-
end
|
1993
|
+
it "returns the translation for the requested locale" do
|
1994
|
+
expect(plucked_translations_field).to eq("Neil")
|
2144
1995
|
end
|
2145
1996
|
end
|
2146
1997
|
end
|
@@ -2151,48 +2002,21 @@ describe Mongoid::Criteria do
|
|
2151
2002
|
Band.where(name: maniacs.name).pluck(:sales)
|
2152
2003
|
end
|
2153
2004
|
|
2154
|
-
context
|
2155
|
-
config_override :
|
2156
|
-
|
2157
|
-
context 'when value is stored as string' do
|
2158
|
-
config_override :map_big_decimal_to_decimal128, false
|
2159
|
-
|
2160
|
-
it "does not demongoize the field" do
|
2161
|
-
expect(plucked.first).to be_a(String)
|
2162
|
-
expect(plucked.first).to eq("1E2")
|
2163
|
-
end
|
2164
|
-
end
|
2005
|
+
context 'when value is stored as string' do
|
2006
|
+
config_override :map_big_decimal_to_decimal128, false
|
2165
2007
|
|
2166
|
-
|
2167
|
-
|
2168
|
-
|
2169
|
-
|
2170
|
-
it "does not demongoize the field" do
|
2171
|
-
expect(plucked.first).to be_a(BSON::Decimal128)
|
2172
|
-
expect(plucked.first).to eq(BSON::Decimal128.new("1E2"))
|
2173
|
-
end
|
2008
|
+
it "demongoizes the field" do
|
2009
|
+
expect(plucked.first).to be_a(BigDecimal)
|
2010
|
+
expect(plucked.first).to eq(BigDecimal("1E2"))
|
2174
2011
|
end
|
2175
2012
|
end
|
2176
2013
|
|
2177
|
-
context
|
2178
|
-
config_override :
|
2179
|
-
|
2180
|
-
context 'when value is stored as string' do
|
2181
|
-
config_override :map_big_decimal_to_decimal128, false
|
2182
|
-
|
2183
|
-
it "demongoizes the field" do
|
2184
|
-
expect(plucked.first).to be_a(BigDecimal)
|
2185
|
-
expect(plucked.first).to eq(BigDecimal("1E2"))
|
2186
|
-
end
|
2187
|
-
end
|
2188
|
-
|
2189
|
-
context 'when value is stored as decimal128' do
|
2190
|
-
config_override :map_big_decimal_to_decimal128, true
|
2014
|
+
context 'when value is stored as decimal128' do
|
2015
|
+
config_override :map_big_decimal_to_decimal128, true
|
2191
2016
|
|
2192
|
-
|
2193
|
-
|
2194
|
-
|
2195
|
-
end
|
2017
|
+
it "demongoizes the field" do
|
2018
|
+
expect(plucked.first).to be_a(BigDecimal)
|
2019
|
+
expect(plucked.first).to eq(BigDecimal("1E2"))
|
2196
2020
|
end
|
2197
2021
|
end
|
2198
2022
|
end
|
@@ -2203,22 +2027,8 @@ describe Mongoid::Criteria do
|
|
2203
2027
|
|
2204
2028
|
let(:plucked) { Band.where(_id: band.id).pluck("label.sales") }
|
2205
2029
|
|
2206
|
-
|
2207
|
-
|
2208
|
-
config_override :map_big_decimal_to_decimal128, true
|
2209
|
-
max_bson_version '4.99.99'
|
2210
|
-
|
2211
|
-
it "returns a hash with a non-demongoized field" do
|
2212
|
-
expect(plucked.first).to eq({ 'sales' => BSON::Decimal128.new('1E+2') })
|
2213
|
-
end
|
2214
|
-
end
|
2215
|
-
|
2216
|
-
context "when legacy_pluck_distinct is not set" do
|
2217
|
-
config_override :legacy_pluck_distinct, false
|
2218
|
-
|
2219
|
-
it "demongoizes the field" do
|
2220
|
-
expect(plucked).to eq([ BigDecimal("1E2") ])
|
2221
|
-
end
|
2030
|
+
it "demongoizes the field" do
|
2031
|
+
expect(plucked).to eq([ BigDecimal("1E2") ])
|
2222
2032
|
end
|
2223
2033
|
end
|
2224
2034
|
|
@@ -2228,22 +2038,8 @@ describe Mongoid::Criteria do
|
|
2228
2038
|
|
2229
2039
|
let(:plucked) { Band.where(_id: band.id).pluck("labels.sales") }
|
2230
2040
|
|
2231
|
-
|
2232
|
-
|
2233
|
-
config_override :map_big_decimal_to_decimal128, true
|
2234
|
-
max_bson_version '4.99.99'
|
2235
|
-
|
2236
|
-
it "returns a hash with a non-demongoized field" do
|
2237
|
-
expect(plucked.first).to eq([{ 'sales' => BSON::Decimal128.new('1E+2') }])
|
2238
|
-
end
|
2239
|
-
end
|
2240
|
-
|
2241
|
-
context "when legacy_pluck_distinct is not set" do
|
2242
|
-
config_override :legacy_pluck_distinct, false
|
2243
|
-
|
2244
|
-
it "demongoizes the field" do
|
2245
|
-
expect(plucked.first).to eq([ BigDecimal("1E2") ])
|
2246
|
-
end
|
2041
|
+
it "demongoizes the field" do
|
2042
|
+
expect(plucked.first).to eq([ BigDecimal("1E2") ])
|
2247
2043
|
end
|
2248
2044
|
end
|
2249
2045
|
|
@@ -2253,20 +2049,8 @@ describe Mongoid::Criteria do
|
|
2253
2049
|
|
2254
2050
|
let(:plucked) { Band.where(_id: band.id).pluck("label.qwerty") }
|
2255
2051
|
|
2256
|
-
|
2257
|
-
|
2258
|
-
|
2259
|
-
it "returns an empty hash" do
|
2260
|
-
expect(plucked.first).to eq({})
|
2261
|
-
end
|
2262
|
-
end
|
2263
|
-
|
2264
|
-
context "when legacy_pluck_distinct is not set" do
|
2265
|
-
config_override :legacy_pluck_distinct, false
|
2266
|
-
|
2267
|
-
it "returns nil" do
|
2268
|
-
expect(plucked.first).to eq(nil)
|
2269
|
-
end
|
2052
|
+
it "returns nil" do
|
2053
|
+
expect(plucked.first).to eq(nil)
|
2270
2054
|
end
|
2271
2055
|
end
|
2272
2056
|
|
@@ -2505,17 +2289,6 @@ describe Mongoid::Criteria do
|
|
2505
2289
|
end
|
2506
2290
|
end
|
2507
2291
|
|
2508
|
-
describe "#to_criteria" do
|
2509
|
-
|
2510
|
-
let(:criteria) do
|
2511
|
-
Band.all
|
2512
|
-
end
|
2513
|
-
|
2514
|
-
it "returns self" do
|
2515
|
-
expect(criteria.to_criteria).to eq(criteria)
|
2516
|
-
end
|
2517
|
-
end
|
2518
|
-
|
2519
2292
|
describe "#to_proc" do
|
2520
2293
|
|
2521
2294
|
let(:criteria) do
|
@@ -2756,13 +2529,33 @@ describe Mongoid::Criteria do
|
|
2756
2529
|
Band.create!(name: "Boards of Canada", sales: sales)
|
2757
2530
|
end
|
2758
2531
|
|
2759
|
-
|
2532
|
+
it "cannot find values when querying using a BigDecimal value" do
|
2760
2533
|
Mongoid.map_big_decimal_to_decimal128 = true
|
2761
|
-
Band.where(sales: sales
|
2534
|
+
from_db = Band.where(sales: sales).first
|
2535
|
+
expect(from_db).to eq(nil)
|
2762
2536
|
end
|
2763
2537
|
|
2764
|
-
it "
|
2765
|
-
|
2538
|
+
it "cannot find values when querying using a string value" do
|
2539
|
+
Mongoid.map_big_decimal_to_decimal128 = true
|
2540
|
+
from_db = Band.where(sales: sales.to_s).first
|
2541
|
+
expect(from_db).to eq(nil)
|
2542
|
+
end
|
2543
|
+
|
2544
|
+
context "after converting value" do
|
2545
|
+
before do
|
2546
|
+
Mongoid.map_big_decimal_to_decimal128 = true
|
2547
|
+
band.set(sales: band.sales)
|
2548
|
+
end
|
2549
|
+
|
2550
|
+
it "can find values when querying using a BigDecimal value" do
|
2551
|
+
from_db = Band.where(sales: sales).first
|
2552
|
+
expect(from_db).to eq(band)
|
2553
|
+
end
|
2554
|
+
|
2555
|
+
it "can find values when querying using a string value" do
|
2556
|
+
from_db = Band.where(sales: sales.to_s).first
|
2557
|
+
expect(from_db).to eq(band)
|
2558
|
+
end
|
2766
2559
|
end
|
2767
2560
|
end
|
2768
2561
|
end
|
@@ -2811,7 +2604,6 @@ describe Mongoid::Criteria do
|
|
2811
2604
|
end
|
2812
2605
|
|
2813
2606
|
context "when querying on a BSON::Decimal128" do
|
2814
|
-
min_server_version '3.4'
|
2815
2607
|
|
2816
2608
|
let(:decimal) do
|
2817
2609
|
BSON::Decimal128.new("0.0005")
|
@@ -2844,6 +2636,17 @@ describe Mongoid::Criteria do
|
|
2844
2636
|
expect(selector['ratable_id']).to eq(movie.id)
|
2845
2637
|
end
|
2846
2638
|
end
|
2639
|
+
|
2640
|
+
context "when querying an embedded document with aliases" do
|
2641
|
+
|
2642
|
+
let(:criteria) do
|
2643
|
+
Person.where("phones.extension" => "123")
|
2644
|
+
end
|
2645
|
+
|
2646
|
+
it "expands the aliases" do
|
2647
|
+
expect(criteria.selector).to eq("mobile_phones.ext" => "123")
|
2648
|
+
end
|
2649
|
+
end
|
2847
2650
|
end
|
2848
2651
|
|
2849
2652
|
context 'when given multiple keys in separate calls' do
|
@@ -3122,6 +2925,19 @@ describe Mongoid::Criteria do
|
|
3122
2925
|
end
|
3123
2926
|
end
|
3124
2927
|
end
|
2928
|
+
|
2929
|
+
context "when searching for a regex on a symbol field" do
|
2930
|
+
let!(:person) { Person.create!(species: :hello)}
|
2931
|
+
let(:criteria) { Person.where(species: /ell/) }
|
2932
|
+
|
2933
|
+
it "creates the correct criteria" do
|
2934
|
+
expect(criteria.selector).to eq({ "species" => /ell/ })
|
2935
|
+
end
|
2936
|
+
|
2937
|
+
it "finds the document" do
|
2938
|
+
expect(criteria.first).to eq(person)
|
2939
|
+
end
|
2940
|
+
end
|
3125
2941
|
end
|
3126
2942
|
|
3127
2943
|
describe "#for_js" do
|
@@ -3130,6 +2946,12 @@ describe Mongoid::Criteria do
|
|
3130
2946
|
Band.create!(name: "Depeche Mode")
|
3131
2947
|
end
|
3132
2948
|
|
2949
|
+
it 'is deprecated' do
|
2950
|
+
expect(Mongoid.logger).to receive(:warn).with(/for_js is deprecated/).and_call_original
|
2951
|
+
|
2952
|
+
Band.for_js("this.name == 'Depeche Mode'")
|
2953
|
+
end
|
2954
|
+
|
3133
2955
|
context "when the code has no scope" do
|
3134
2956
|
|
3135
2957
|
let(:criteria) do
|
@@ -3178,11 +3000,11 @@ describe Mongoid::Criteria do
|
|
3178
3000
|
context "when the method exists on the criteria" do
|
3179
3001
|
|
3180
3002
|
before do
|
3181
|
-
expect(criteria).to receive(:
|
3003
|
+
expect(criteria).to receive(:only).and_call_original
|
3182
3004
|
end
|
3183
3005
|
|
3184
3006
|
it "calls the method on the criteria" do
|
3185
|
-
expect(criteria.
|
3007
|
+
expect(criteria.only).to eq(criteria)
|
3186
3008
|
end
|
3187
3009
|
end
|
3188
3010
|
|
@@ -3389,4 +3211,44 @@ describe Mongoid::Criteria do
|
|
3389
3211
|
end
|
3390
3212
|
end
|
3391
3213
|
end
|
3214
|
+
|
3215
|
+
describe '.from_hash' do
|
3216
|
+
subject(:criteria) { described_class.from_hash(hash) }
|
3217
|
+
|
3218
|
+
context 'when klass is specified' do
|
3219
|
+
let(:hash) do
|
3220
|
+
{ klass: Band, where: { name: 'Songs Ohia' } }
|
3221
|
+
end
|
3222
|
+
|
3223
|
+
it 'returns a criteria' do
|
3224
|
+
expect(criteria).to be_a(Mongoid::Criteria)
|
3225
|
+
end
|
3226
|
+
|
3227
|
+
it 'sets the klass' do
|
3228
|
+
expect(criteria.klass).to eq(Band)
|
3229
|
+
end
|
3230
|
+
|
3231
|
+
it 'sets the selector' do
|
3232
|
+
expect(criteria.selector).to eq({ 'name' => 'Songs Ohia' })
|
3233
|
+
end
|
3234
|
+
end
|
3235
|
+
|
3236
|
+
context 'when klass is missing' do
|
3237
|
+
let(:hash) do
|
3238
|
+
{ where: { name: 'Songs Ohia' } }
|
3239
|
+
end
|
3240
|
+
|
3241
|
+
it 'returns a criteria' do
|
3242
|
+
expect(criteria).to be_a(Mongoid::Criteria)
|
3243
|
+
end
|
3244
|
+
|
3245
|
+
it 'has klass nil' do
|
3246
|
+
expect(criteria.klass).to be_nil
|
3247
|
+
end
|
3248
|
+
|
3249
|
+
it 'sets the selector' do
|
3250
|
+
expect(criteria.selector).to eq({ 'name' => 'Songs Ohia' })
|
3251
|
+
end
|
3252
|
+
end
|
3253
|
+
end
|
3392
3254
|
end
|