mongoid 7.3.2 → 7.4.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
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +17 -17
- data/README.md +2 -2
- data/lib/config/locales/en.yml +30 -16
- data/lib/mongoid/association/accessors.rb +0 -27
- data/lib/mongoid/association/bindable.rb +0 -21
- data/lib/mongoid/association/builders.rb +0 -9
- data/lib/mongoid/association/constrainable.rb +0 -3
- data/lib/mongoid/association/depending.rb +0 -7
- data/lib/mongoid/association/eager_loadable.rb +0 -3
- data/lib/mongoid/association/embedded/batchable.rb +11 -39
- data/lib/mongoid/association/embedded/cyclic.rb +2 -11
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +0 -13
- data/lib/mongoid/association/embedded/embedded_in.rb +0 -23
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +31 -44
- data/lib/mongoid/association/embedded/embeds_many.rb +0 -31
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +0 -7
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +0 -3
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +26 -14
- data/lib/mongoid/association/embedded/embeds_one.rb +0 -27
- data/lib/mongoid/association/embedded.rb +0 -1
- data/lib/mongoid/association/macros.rb +6 -5
- data/lib/mongoid/association/many.rb +0 -17
- data/lib/mongoid/association/marshalable.rb +0 -5
- data/lib/mongoid/association/nested/many.rb +0 -11
- data/lib/mongoid/association/nested/nested_buildable.rb +0 -9
- data/lib/mongoid/association/nested/one.rb +1 -16
- data/lib/mongoid/association/nested.rb +0 -3
- data/lib/mongoid/association/one.rb +1 -10
- data/lib/mongoid/association/options.rb +0 -33
- data/lib/mongoid/association/proxy.rb +0 -21
- data/lib/mongoid/association/referenced/auto_save.rb +0 -9
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +0 -7
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +4 -5
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +0 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +0 -13
- data/lib/mongoid/association/referenced/belongs_to.rb +9 -34
- data/lib/mongoid/association/referenced/counter_cache.rb +2 -15
- data/lib/mongoid/association/referenced/eager.rb +3 -24
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +12 -39
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +11 -38
- data/lib/mongoid/association/referenced/has_many/binding.rb +0 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +0 -3
- data/lib/mongoid/association/referenced/has_many/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +11 -63
- data/lib/mongoid/association/referenced/has_many/proxy.rb +18 -61
- data/lib/mongoid/association/referenced/has_many.rb +12 -39
- data/lib/mongoid/association/referenced/has_one/binding.rb +0 -7
- data/lib/mongoid/association/referenced/has_one/buildable.rb +3 -4
- data/lib/mongoid/association/referenced/has_one/eager.rb +0 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -15
- data/lib/mongoid/association/referenced/has_one/proxy.rb +0 -9
- data/lib/mongoid/association/referenced/has_one.rb +9 -32
- data/lib/mongoid/association/referenced/syncable.rb +0 -17
- data/lib/mongoid/association/referenced.rb +0 -1
- data/lib/mongoid/association/reflections.rb +0 -1
- data/lib/mongoid/association/relatable.rb +2 -61
- data/lib/mongoid/association.rb +0 -17
- data/lib/mongoid/atomic/modifiers.rb +4 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded/one.rb +0 -5
- data/lib/mongoid/atomic/paths/embedded.rb +0 -3
- data/lib/mongoid/atomic/paths/root.rb +0 -5
- data/lib/mongoid/atomic/paths.rb +0 -1
- data/lib/mongoid/atomic.rb +27 -44
- data/lib/mongoid/attributes/dynamic.rb +0 -17
- data/lib/mongoid/attributes/nested.rb +0 -5
- data/lib/mongoid/attributes/processing.rb +1 -18
- data/lib/mongoid/attributes/projector.rb +0 -1
- data/lib/mongoid/attributes/readonly.rb +0 -5
- data/lib/mongoid/attributes.rb +0 -33
- data/lib/mongoid/cacheable.rb +1 -6
- data/lib/mongoid/changeable.rb +3 -59
- data/lib/mongoid/clients/factory.rb +0 -7
- data/lib/mongoid/clients/options.rb +0 -5
- data/lib/mongoid/clients/sessions.rb +0 -7
- data/lib/mongoid/clients/storage_options.rb +0 -7
- data/lib/mongoid/clients/validators/storage.rb +0 -9
- data/lib/mongoid/clients/validators.rb +0 -1
- data/lib/mongoid/clients.rb +0 -9
- data/lib/mongoid/composable.rb +0 -7
- data/lib/mongoid/config/environment.rb +13 -6
- data/lib/mongoid/config/options.rb +0 -11
- data/lib/mongoid/config/validators/client.rb +0 -17
- data/lib/mongoid/config/validators/option.rb +0 -3
- data/lib/mongoid/config/validators.rb +0 -1
- data/lib/mongoid/config.rb +37 -29
- data/lib/mongoid/contextual/aggregable/memory.rb +14 -11
- data/lib/mongoid/contextual/aggregable/mongo.rb +15 -20
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +7 -27
- data/lib/mongoid/contextual/command.rb +0 -5
- data/lib/mongoid/contextual/geo_near.rb +1 -34
- data/lib/mongoid/contextual/map_reduce.rb +0 -31
- data/lib/mongoid/contextual/memory.rb +4 -59
- data/lib/mongoid/contextual/mongo.rb +132 -78
- data/lib/mongoid/contextual/none.rb +42 -28
- data/lib/mongoid/contextual/queryable.rb +0 -3
- data/lib/mongoid/contextual.rb +0 -5
- data/lib/mongoid/copyable.rb +0 -5
- data/lib/mongoid/criteria/findable.rb +0 -13
- data/lib/mongoid/criteria/includable.rb +0 -9
- data/lib/mongoid/criteria/inspectable.rb +0 -3
- data/lib/mongoid/criteria/marshalable.rb +0 -5
- data/lib/mongoid/criteria/modifiable.rb +0 -19
- data/lib/mongoid/criteria/options.rb +0 -3
- data/lib/mongoid/criteria/permission.rb +0 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +0 -13
- data/lib/mongoid/criteria/queryable/expandable.rb +0 -1
- data/lib/mongoid/criteria/queryable/extensions/array.rb +1 -26
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/date.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +0 -5
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -25
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +0 -13
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +0 -11
- data/lib/mongoid/criteria/queryable/extensions/object.rb +1 -28
- data/lib/mongoid/criteria/queryable/extensions/range.rb +38 -16
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/set.rb +0 -3
- data/lib/mongoid/criteria/queryable/extensions/string.rb +0 -17
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +0 -9
- data/lib/mongoid/criteria/queryable/extensions/time.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +0 -7
- data/lib/mongoid/criteria/queryable/extensions.rb +0 -1
- data/lib/mongoid/criteria/queryable/key.rb +1 -14
- data/lib/mongoid/criteria/queryable/macroable.rb +0 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -30
- data/lib/mongoid/criteria/queryable/optional.rb +0 -45
- data/lib/mongoid/criteria/queryable/options.rb +0 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +0 -13
- data/lib/mongoid/criteria/queryable/selectable.rb +22 -69
- data/lib/mongoid/criteria/queryable/selector.rb +0 -17
- data/lib/mongoid/criteria/queryable/smash.rb +0 -11
- data/lib/mongoid/criteria/queryable/storable.rb +11 -7
- data/lib/mongoid/criteria/queryable.rb +0 -7
- data/lib/mongoid/criteria/scopable.rb +25 -19
- data/lib/mongoid/criteria.rb +0 -57
- data/lib/mongoid/document.rb +3 -53
- data/lib/mongoid/equality.rb +26 -10
- data/lib/mongoid/errors/ambiguous_relationship.rb +2 -5
- data/lib/mongoid/errors/callback.rb +0 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +0 -1
- data/lib/mongoid/errors/delete_restriction.rb +0 -3
- data/lib/mongoid/errors/document_not_destroyed.rb +2 -7
- data/lib/mongoid/errors/document_not_found.rb +0 -9
- data/lib/mongoid/errors/eager_load.rb +0 -3
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -3
- data/lib/mongoid/errors/invalid_collection.rb +0 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +0 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +0 -3
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +0 -1
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +0 -1
- data/lib/mongoid/errors/invalid_expression_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field.rb +0 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +0 -1
- data/lib/mongoid/errors/invalid_field_option.rb +0 -3
- data/lib/mongoid/errors/invalid_find.rb +0 -3
- data/lib/mongoid/errors/invalid_includes.rb +0 -3
- data/lib/mongoid/errors/invalid_index.rb +0 -3
- data/lib/mongoid/errors/invalid_options.rb +0 -3
- data/lib/mongoid/errors/invalid_path.rb +0 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +0 -5
- data/lib/mongoid/errors/invalid_query.rb +0 -1
- data/lib/mongoid/errors/invalid_relation.rb +0 -7
- data/lib/mongoid/errors/invalid_relation_option.rb +0 -3
- data/lib/mongoid/errors/invalid_scope.rb +0 -3
- data/lib/mongoid/errors/invalid_session_use.rb +1 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +0 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +0 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +0 -3
- data/lib/mongoid/errors/invalid_time.rb +0 -3
- data/lib/mongoid/errors/invalid_value.rb +0 -1
- data/lib/mongoid/errors/inverse_not_found.rb +0 -3
- data/lib/mongoid/errors/mixed_client_configuration.rb +0 -3
- data/lib/mongoid/errors/mixed_relations.rb +0 -3
- data/lib/mongoid/errors/mongoid_error.rb +0 -9
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +0 -3
- data/lib/mongoid/errors/no_client_config.rb +0 -3
- data/lib/mongoid/errors/no_client_database.rb +0 -3
- data/lib/mongoid/errors/no_client_hosts.rb +0 -3
- data/lib/mongoid/errors/no_clients_config.rb +0 -3
- data/lib/mongoid/errors/no_default_client.rb +0 -3
- data/lib/mongoid/errors/no_environment.rb +0 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +0 -3
- data/lib/mongoid/errors/no_metadata.rb +0 -3
- data/lib/mongoid/errors/no_parent.rb +0 -3
- data/lib/mongoid/errors/readonly_attribute.rb +0 -3
- data/lib/mongoid/errors/readonly_document.rb +1 -6
- data/lib/mongoid/errors/scope_overwrite.rb +0 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +0 -1
- data/lib/mongoid/errors/unknown_attribute.rb +0 -3
- data/lib/mongoid/errors/unknown_model.rb +0 -3
- data/lib/mongoid/errors/unsaved_document.rb +1 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +0 -3
- data/lib/mongoid/errors/validations.rb +0 -1
- data/lib/mongoid/errors.rb +2 -1
- data/lib/mongoid/evolvable.rb +0 -3
- data/lib/mongoid/extensions/array.rb +3 -29
- data/lib/mongoid/extensions/big_decimal.rb +0 -11
- data/lib/mongoid/extensions/boolean.rb +0 -3
- data/lib/mongoid/extensions/date.rb +0 -9
- data/lib/mongoid/extensions/date_time.rb +0 -9
- data/lib/mongoid/extensions/decimal128.rb +0 -5
- data/lib/mongoid/extensions/false_class.rb +1 -6
- data/lib/mongoid/extensions/float.rb +0 -7
- data/lib/mongoid/extensions/hash.rb +0 -27
- data/lib/mongoid/extensions/integer.rb +0 -9
- data/lib/mongoid/extensions/module.rb +0 -3
- data/lib/mongoid/extensions/nil_class.rb +0 -5
- data/lib/mongoid/extensions/object.rb +1 -40
- data/lib/mongoid/extensions/object_id.rb +0 -7
- data/lib/mongoid/extensions/range.rb +0 -11
- data/lib/mongoid/extensions/regexp.rb +0 -3
- data/lib/mongoid/extensions/set.rb +0 -7
- data/lib/mongoid/extensions/string.rb +1 -30
- data/lib/mongoid/extensions/symbol.rb +0 -7
- data/lib/mongoid/extensions/time.rb +0 -11
- data/lib/mongoid/extensions/time_with_zone.rb +13 -9
- data/lib/mongoid/extensions/true_class.rb +1 -6
- data/lib/mongoid/extensions.rb +15 -3
- data/lib/mongoid/factory.rb +1 -2
- data/lib/mongoid/fields/foreign_key.rb +0 -21
- data/lib/mongoid/fields/localized.rb +0 -11
- data/lib/mongoid/fields/standard.rb +0 -33
- data/lib/mongoid/fields/validators/macro.rb +0 -9
- data/lib/mongoid/fields/validators.rb +0 -1
- data/lib/mongoid/fields.rb +64 -57
- data/lib/mongoid/findable.rb +0 -5
- data/lib/mongoid/indexable/specification.rb +0 -15
- data/lib/mongoid/indexable/validators/options.rb +0 -7
- data/lib/mongoid/indexable.rb +1 -18
- data/lib/mongoid/inspectable.rb +1 -10
- data/lib/mongoid/interceptable.rb +0 -25
- data/lib/mongoid/loggable.rb +0 -9
- data/lib/mongoid/matchable.rb +0 -5
- data/lib/mongoid/matcher/eq_impl.rb +37 -2
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +6 -1
- data/lib/mongoid/persistable/creatable.rb +1 -20
- data/lib/mongoid/persistable/deletable.rb +0 -17
- data/lib/mongoid/persistable/destroyable.rb +0 -7
- data/lib/mongoid/persistable/incrementable.rb +0 -5
- data/lib/mongoid/persistable/logical.rb +0 -5
- data/lib/mongoid/persistable/poppable.rb +0 -5
- data/lib/mongoid/persistable/pullable.rb +0 -7
- data/lib/mongoid/persistable/pushable.rb +0 -7
- data/lib/mongoid/persistable/renamable.rb +0 -5
- data/lib/mongoid/persistable/savable.rb +0 -7
- data/lib/mongoid/persistable/settable.rb +0 -5
- data/lib/mongoid/persistable/unsettable.rb +0 -5
- data/lib/mongoid/persistable/updatable.rb +2 -17
- data/lib/mongoid/persistable/upsertable.rb +0 -7
- data/lib/mongoid/persistable.rb +0 -23
- data/lib/mongoid/persistence_context.rb +3 -28
- data/lib/mongoid/positional.rb +0 -5
- data/lib/mongoid/query_cache.rb +11 -34
- data/lib/mongoid/railtie.rb +0 -15
- data/lib/mongoid/railties/controller_runtime.rb +0 -1
- data/lib/mongoid/reloadable.rb +4 -16
- data/lib/mongoid/scopable.rb +6 -34
- data/lib/mongoid/selectable.rb +0 -9
- data/lib/mongoid/serializable.rb +0 -15
- data/lib/mongoid/shardable.rb +0 -7
- data/lib/mongoid/stateful.rb +0 -9
- data/lib/mongoid/stringified_symbol.rb +2 -3
- data/lib/mongoid/tasks/database.rb +1 -6
- data/lib/mongoid/threaded/lifecycle.rb +0 -21
- data/lib/mongoid/threaded.rb +0 -55
- data/lib/mongoid/timestamps/created/short.rb +0 -1
- data/lib/mongoid/timestamps/created.rb +0 -1
- data/lib/mongoid/timestamps/short.rb +0 -1
- data/lib/mongoid/timestamps/timeless.rb +0 -7
- data/lib/mongoid/timestamps/updated/short.rb +0 -1
- data/lib/mongoid/timestamps/updated.rb +0 -3
- data/lib/mongoid/timestamps.rb +0 -1
- data/lib/mongoid/touchable.rb +10 -7
- data/lib/mongoid/traversable.rb +64 -53
- data/lib/mongoid/validatable/associated.rb +0 -3
- data/lib/mongoid/validatable/format.rb +0 -1
- data/lib/mongoid/validatable/length.rb +0 -1
- data/lib/mongoid/validatable/localizable.rb +0 -3
- data/lib/mongoid/validatable/macros.rb +0 -7
- data/lib/mongoid/validatable/presence.rb +1 -8
- data/lib/mongoid/validatable/queryable.rb +0 -3
- data/lib/mongoid/validatable/uniqueness.rb +15 -30
- data/lib/mongoid/validatable.rb +1 -22
- data/lib/mongoid/version.rb +1 -2
- data/lib/mongoid.rb +0 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid_generator.rb +0 -1
- data/lib/rails/mongoid.rb +0 -3
- data/spec/integration/app_spec.rb +0 -1
- data/spec/integration/associations/belongs_to_spec.rb +0 -1
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +0 -1
- data/spec/integration/associations/embeds_many_spec.rb +139 -1
- data/spec/integration/associations/embeds_one_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec.rb +0 -1
- data/spec/integration/associations/foreign_key_spec_models.rb +0 -1
- data/spec/integration/associations/has_many_spec.rb +0 -1
- data/spec/integration/associations/has_one_spec.rb +0 -1
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec.rb +0 -1
- data/spec/integration/associations/reverse_population_spec_models.rb +0 -1
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +0 -1
- data/spec/integration/bson_regexp_raw_spec.rb +0 -1
- data/spec/integration/callbacks_models.rb +12 -0
- data/spec/integration/callbacks_spec.rb +18 -6
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +0 -1
- data/spec/integration/criteria/default_scope_spec.rb +51 -0
- data/spec/integration/criteria/logical_spec.rb +30 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
- data/spec/integration/discriminator_key_spec.rb +0 -1
- data/spec/integration/discriminator_value_spec.rb +0 -1
- data/spec/integration/document_spec.rb +0 -1
- data/spec/integration/i18n_fallbacks_spec.rb +0 -1
- data/spec/integration/matcher_examples_spec.rb +0 -1
- data/spec/integration/matcher_operator_spec.rb +27 -3
- data/spec/integration/matcher_spec.rb +95 -1
- data/spec/integration/server_query_spec.rb +0 -1
- data/spec/integration/shardable_spec.rb +0 -1
- data/spec/integration/stringified_symbol_field_spec.rb +16 -3
- data/spec/lite_spec_helper.rb +8 -2
- data/spec/mongoid/association/accessors_spec.rb +44 -15
- data/spec/mongoid/association/auto_save_spec.rb +72 -34
- data/spec/mongoid/association/builders_spec.rb +1 -2
- data/spec/mongoid/association/constrainable_spec.rb +0 -1
- data/spec/mongoid/association/counter_cache_spec.rb +32 -33
- data/spec/mongoid/association/depending_spec.rb +12 -13
- data/spec/mongoid/association/eager_spec.rb +4 -5
- data/spec/mongoid/association/embedded/cyclic_spec.rb +2 -3
- data/spec/mongoid/association/embedded/dirty_spec.rb +2 -3
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +13 -14
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +384 -135
- data/spec/mongoid/association/embedded/embeds_many_models.rb +16 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +0 -1
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +21 -22
- 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 +0 -1
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -1
- data/spec/mongoid/association/macros_spec.rb +9 -10
- data/spec/mongoid/association/nested/many_spec.rb +0 -1
- data/spec/mongoid/association/nested/one_spec.rb +0 -1
- data/spec/mongoid/association/options_spec.rb +0 -1
- data/spec/mongoid/association/polymorphic_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +55 -17
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +50 -15
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +57 -53
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +20 -1
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +22 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +26 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +31 -3
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +179 -154
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +23 -7
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +303 -125
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +227 -164
- data/spec/mongoid/association/referenced/has_many_models.rb +35 -1
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +21 -1
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +51 -8
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +17 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +26 -27
- data/spec/mongoid/association/referenced/has_one_models.rb +18 -1
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +0 -1
- data/spec/mongoid/association/referenced/has_one_spec.rb +21 -1
- data/spec/mongoid/association/reflections_spec.rb +0 -1
- data/spec/mongoid/association/syncable_spec.rb +31 -32
- data/spec/mongoid/association_spec.rb +0 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +0 -1
- data/spec/mongoid/atomic/paths/root_spec.rb +0 -1
- data/spec/mongoid/atomic/paths_spec.rb +0 -1
- data/spec/mongoid/atomic_spec.rb +6 -7
- data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
- data/spec/mongoid/attributes/nested_spec.rb +66 -67
- data/spec/mongoid/attributes/projector_spec.rb +5 -2
- data/spec/mongoid/attributes/readonly_spec.rb +22 -23
- data/spec/mongoid/attributes_spec.rb +32 -33
- data/spec/mongoid/cacheable_spec.rb +1 -2
- data/spec/mongoid/changeable_spec.rb +35 -36
- data/spec/mongoid/clients/factory_spec.rb +9 -4
- data/spec/mongoid/clients/options_spec.rb +15 -10
- data/spec/mongoid/clients/sessions_spec.rb +22 -23
- data/spec/mongoid/clients/transactions_spec.rb +49 -27
- data/spec/mongoid/clients_spec.rb +6 -7
- data/spec/mongoid/composable_spec.rb +0 -1
- data/spec/mongoid/config/environment_spec.rb +86 -9
- data/spec/mongoid/config/options_spec.rb +0 -1
- data/spec/mongoid/config_spec.rb +194 -17
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +51 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +120 -21
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +109 -71
- data/spec/mongoid/contextual/geo_near_spec.rb +18 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -3
- data/spec/mongoid/contextual/memory_spec.rb +23 -24
- data/spec/mongoid/contextual/mongo_spec.rb +339 -77
- data/spec/mongoid/contextual/none_spec.rb +7 -82
- data/spec/mongoid/copyable_spec.rb +11 -12
- data/spec/mongoid/copyable_spec_models.rb +0 -1
- data/spec/mongoid/criteria/findable_spec.rb +23 -24
- data/spec/mongoid/criteria/inspectable_spec.rb +0 -1
- data/spec/mongoid/criteria/marshalable_spec.rb +0 -1
- data/spec/mongoid/criteria/modifiable_spec.rb +36 -37
- data/spec/mongoid/criteria/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +237 -179
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/options_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +0 -1
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +15 -16
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/selector_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/smash_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/storable_spec.rb +37 -1
- data/spec/mongoid/criteria/scopable_spec.rb +127 -1
- data/spec/mongoid/criteria_projection_spec.rb +3 -4
- data/spec/mongoid/criteria_spec.rb +546 -186
- data/spec/mongoid/document_fields_spec.rb +0 -1
- data/spec/mongoid/document_persistence_context_spec.rb +0 -1
- data/spec/mongoid/document_query_spec.rb +0 -1
- data/spec/mongoid/document_spec.rb +32 -34
- data/spec/mongoid/equality_spec.rb +142 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +0 -1
- data/spec/mongoid/errors/callback_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +0 -1
- data/spec/mongoid/errors/document_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/eager_load_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_collection_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_option_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_field_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_find_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_includes_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_index_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_path_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_scope_spec.rb +1 -2
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +0 -1
- data/spec/mongoid/errors/invalid_time_spec.rb +0 -1
- data/spec/mongoid/errors/inverse_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +0 -1
- data/spec/mongoid/errors/mixed_relations_spec.rb +0 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +0 -1
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_database_spec.rb +0 -1
- data/spec/mongoid/errors/no_client_hosts_spec.rb +0 -1
- data/spec/mongoid/errors/no_clients_config_spec.rb +0 -1
- data/spec/mongoid/errors/no_environment_spec.rb +0 -1
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +0 -1
- data/spec/mongoid/errors/no_metadata_spec.rb +0 -1
- data/spec/mongoid/errors/no_parent_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +0 -1
- data/spec/mongoid/errors/readonly_document_spec.rb +0 -1
- data/spec/mongoid/errors/scope_overwrite_spec.rb +0 -1
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +0 -1
- data/spec/mongoid/errors/unknown_attribute_spec.rb +2 -3
- data/spec/mongoid/errors/unsaved_document_spec.rb +0 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +0 -1
- data/spec/mongoid/errors/validations_spec.rb +0 -1
- data/spec/mongoid/extensions/array_spec.rb +0 -1
- data/spec/mongoid/extensions/big_decimal_spec.rb +0 -1
- data/spec/mongoid/extensions/binary_spec.rb +0 -1
- data/spec/mongoid/extensions/boolean_spec.rb +0 -1
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +0 -1
- data/spec/mongoid/extensions/date_spec.rb +0 -1
- data/spec/mongoid/extensions/date_time_spec.rb +0 -1
- data/spec/mongoid/extensions/decimal128_spec.rb +0 -1
- data/spec/mongoid/extensions/false_class_spec.rb +0 -1
- data/spec/mongoid/extensions/float_spec.rb +0 -1
- data/spec/mongoid/extensions/hash_spec.rb +0 -1
- data/spec/mongoid/extensions/integer_spec.rb +0 -1
- data/spec/mongoid/extensions/module_spec.rb +0 -1
- data/spec/mongoid/extensions/nil_class_spec.rb +0 -1
- data/spec/mongoid/extensions/object_id_spec.rb +0 -1
- data/spec/mongoid/extensions/object_spec.rb +0 -1
- data/spec/mongoid/extensions/range_spec.rb +0 -1
- data/spec/mongoid/extensions/regexp_spec.rb +0 -1
- data/spec/mongoid/extensions/set_spec.rb +0 -1
- data/spec/mongoid/extensions/string_spec.rb +2 -3
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/symbol_spec.rb +0 -1
- data/spec/mongoid/extensions/time_spec.rb +0 -1
- data/spec/mongoid/extensions/time_with_zone_spec.rb +0 -1
- data/spec/mongoid/extensions/true_class_spec.rb +0 -1
- data/spec/mongoid/extensions_spec.rb +14 -3
- data/spec/mongoid/factory_spec.rb +1 -1
- data/spec/mongoid/fields/foreign_key_spec.rb +0 -1
- data/spec/mongoid/fields/localized_spec.rb +0 -1
- data/spec/mongoid/fields/standard_spec.rb +0 -1
- data/spec/mongoid/fields_spec.rb +326 -31
- data/spec/mongoid/findable_spec.rb +21 -22
- data/spec/mongoid/indexable/specification_spec.rb +0 -1
- data/spec/mongoid/indexable_spec.rb +0 -1
- data/spec/mongoid/inspectable_spec.rb +0 -1
- data/spec/mongoid/interceptable_spec.rb +102 -95
- data/spec/mongoid/loggable_spec.rb +0 -1
- data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -2
- data/spec/mongoid/persistable/creatable_spec.rb +2 -3
- data/spec/mongoid/persistable/deletable_spec.rb +18 -19
- data/spec/mongoid/persistable/destroyable_spec.rb +8 -9
- data/spec/mongoid/persistable/incrementable_spec.rb +8 -9
- data/spec/mongoid/persistable/logical_spec.rb +4 -5
- data/spec/mongoid/persistable/poppable_spec.rb +4 -5
- data/spec/mongoid/persistable/pullable_spec.rb +8 -9
- data/spec/mongoid/persistable/pushable_spec.rb +8 -9
- data/spec/mongoid/persistable/renamable_spec.rb +3 -4
- data/spec/mongoid/persistable/savable_spec.rb +15 -11
- data/spec/mongoid/persistable/settable_spec.rb +9 -10
- data/spec/mongoid/persistable/unsettable_spec.rb +4 -5
- data/spec/mongoid/persistable/updatable_spec.rb +43 -24
- data/spec/mongoid/persistable/upsertable_spec.rb +1 -2
- data/spec/mongoid/persistable_spec.rb +1 -2
- data/spec/mongoid/persistence_context_spec.rb +0 -1
- data/spec/mongoid/positional_spec.rb +0 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +1 -2
- data/spec/mongoid/query_cache_spec.rb +56 -10
- data/spec/mongoid/relations/proxy_spec.rb +6 -7
- data/spec/mongoid/reloadable_spec.rb +209 -23
- data/spec/mongoid/scopable_spec.rb +65 -22
- data/spec/mongoid/selectable_spec.rb +6 -7
- data/spec/mongoid/serializable_spec.rb +9 -10
- data/spec/mongoid/shardable_spec.rb +2 -3
- data/spec/mongoid/stateful_spec.rb +1 -2
- data/spec/mongoid/tasks/database_rake_spec.rb +0 -1
- data/spec/mongoid/tasks/database_spec.rb +0 -1
- data/spec/mongoid/threaded_spec.rb +2 -3
- data/spec/mongoid/timestamps/created/short_spec.rb +1 -2
- data/spec/mongoid/timestamps/created_spec.rb +1 -2
- data/spec/mongoid/timestamps/timeless_spec.rb +2 -3
- data/spec/mongoid/timestamps/updated/short_spec.rb +3 -4
- data/spec/mongoid/timestamps/updated_spec.rb +3 -4
- data/spec/mongoid/timestamps_spec.rb +6 -7
- data/spec/mongoid/touchable_spec.rb +33 -20
- data/spec/mongoid/touchable_spec_models.rb +2 -1
- data/spec/mongoid/traversable_spec.rb +65 -2
- data/spec/mongoid/validatable/associated_spec.rb +0 -1
- data/spec/mongoid/validatable/format_spec.rb +0 -1
- data/spec/mongoid/validatable/length_spec.rb +0 -1
- data/spec/mongoid/validatable/numericality_spec.rb +0 -1
- data/spec/mongoid/validatable/presence_spec.rb +26 -23
- data/spec/mongoid/validatable/uniqueness_spec.rb +67 -68
- data/spec/mongoid/validatable_spec.rb +2 -3
- data/spec/mongoid_spec.rb +0 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -1
- data/spec/rails/mongoid_spec.rb +0 -1
- data/spec/shared/lib/mrss/cluster_config.rb +6 -1
- data/spec/shared/lib/mrss/constraints.rb +23 -5
- data/spec/shared/lib/mrss/docker_runner.rb +1 -1
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +8 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +17 -12
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/share/Dockerfile.erb +27 -10
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +85 -23
- data/spec/shared/shlib/set_env.sh +6 -5
- data/spec/spec_helper.rb +12 -22
- data/spec/support/authorization.rb +0 -1
- data/spec/support/constraints.rb +0 -1
- data/spec/support/expectations.rb +0 -1
- data/spec/support/macros.rb +22 -1
- data/spec/support/models/account.rb +1 -2
- data/spec/support/models/acolyte.rb +0 -1
- data/spec/support/models/actor.rb +0 -1
- data/spec/support/models/actress.rb +0 -1
- data/spec/support/models/address.rb +0 -1
- data/spec/support/models/address_component.rb +0 -1
- data/spec/support/models/address_number.rb +0 -1
- data/spec/support/models/agency.rb +0 -1
- data/spec/support/models/agent.rb +0 -1
- data/spec/support/models/album.rb +0 -1
- data/spec/support/models/alert.rb +0 -1
- data/spec/support/models/animal.rb +0 -1
- data/spec/support/models/answer.rb +0 -1
- data/spec/support/models/appointment.rb +0 -1
- 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 +2 -1
- data/spec/support/models/artwork.rb +0 -1
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/support/models/audio.rb +0 -1
- data/spec/support/models/augmentation.rb +0 -1
- data/spec/support/models/author.rb +0 -1
- data/spec/support/models/baby.rb +0 -1
- data/spec/support/models/band.rb +4 -1
- data/spec/support/models/bar.rb +0 -1
- 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 +0 -1
- data/spec/support/models/bolt.rb +0 -1
- data/spec/support/models/bomb.rb +0 -1
- data/spec/support/models/book.rb +0 -1
- data/spec/support/models/breed.rb +0 -1
- data/spec/support/models/browser.rb +0 -1
- data/spec/support/models/building.rb +0 -1
- data/spec/support/models/building_address.rb +0 -1
- data/spec/support/models/bus.rb +0 -1
- data/spec/support/models/business.rb +0 -1
- data/spec/support/models/callback_test.rb +0 -1
- data/spec/support/models/canvas.rb +0 -1
- data/spec/support/models/car.rb +0 -1
- data/spec/support/models/cat.rb +0 -1
- data/spec/support/models/category.rb +0 -1
- data/spec/support/models/child.rb +0 -1
- data/spec/support/models/child_doc.rb +3 -4
- data/spec/support/models/church.rb +0 -1
- data/spec/support/models/circle.rb +0 -1
- data/spec/support/models/circuit.rb +0 -1
- data/spec/support/models/circus.rb +0 -1
- data/spec/support/models/code.rb +0 -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 +0 -1
- data/spec/support/models/contractor.rb +0 -1
- data/spec/support/models/cookie.rb +0 -1
- data/spec/support/models/country_code.rb +2 -1
- data/spec/support/models/courier_job.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 +0 -1
- data/spec/support/models/definition.rb +0 -1
- data/spec/support/models/delegating_patient.rb +0 -1
- data/spec/support/models/description.rb +0 -1
- data/spec/support/models/dictionary.rb +0 -1
- data/spec/support/models/division.rb +0 -1
- data/spec/support/models/doctor.rb +0 -1
- data/spec/support/models/dog.rb +0 -1
- data/spec/support/models/dokument.rb +0 -1
- data/spec/support/models/draft.rb +0 -1
- data/spec/support/models/dragon.rb +0 -1
- data/spec/support/models/driver.rb +0 -1
- data/spec/support/models/drug.rb +0 -1
- data/spec/support/models/dungeon.rb +0 -1
- data/spec/support/models/edit.rb +0 -1
- data/spec/support/models/email.rb +0 -1
- data/spec/support/models/employer.rb +0 -1
- data/spec/support/models/entry.rb +0 -1
- data/spec/support/models/eraser.rb +0 -1
- data/spec/support/models/even.rb +0 -1
- data/spec/support/models/event.rb +0 -1
- data/spec/support/models/exhibition.rb +0 -1
- data/spec/support/models/exhibitor.rb +0 -1
- data/spec/support/models/explosion.rb +0 -1
- data/spec/support/models/eye.rb +0 -1
- data/spec/support/models/eye_bowl.rb +0 -1
- data/spec/support/models/face.rb +0 -1
- data/spec/support/models/favorite.rb +0 -1
- data/spec/support/models/filesystem.rb +0 -1
- data/spec/support/models/fire_hydrant.rb +0 -1
- data/spec/support/models/firefox.rb +0 -1
- data/spec/support/models/fish.rb +0 -1
- data/spec/support/models/folder.rb +0 -1
- data/spec/support/models/folder_item.rb +0 -1
- data/spec/support/models/fruits.rb +0 -1
- data/spec/support/models/game.rb +0 -1
- 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 +0 -1
- data/spec/support/models/house.rb +0 -1
- data/spec/support/models/html_writer.rb +0 -1
- data/spec/support/models/id_key.rb +0 -1
- data/spec/support/models/idnodef.rb +0 -1
- data/spec/support/models/image.rb +0 -1
- data/spec/support/models/implant.rb +0 -1
- data/spec/support/models/instrument.rb +0 -1
- data/spec/support/models/item.rb +0 -1
- data/spec/support/models/jar.rb +0 -1
- data/spec/support/models/kaleidoscope.rb +0 -1
- data/spec/support/models/kangaroo.rb +0 -1
- data/spec/support/models/label.rb +2 -2
- data/spec/support/models/language.rb +0 -1
- data/spec/support/models/lat_lng.rb +0 -1
- data/spec/support/models/league.rb +0 -1
- data/spec/support/models/learner.rb +0 -1
- data/spec/support/models/line_item.rb +0 -1
- data/spec/support/models/location.rb +0 -1
- data/spec/support/models/login.rb +0 -1
- data/spec/support/models/manufacturer.rb +0 -1
- data/spec/support/models/meat.rb +0 -1
- data/spec/support/models/membership.rb +0 -1
- data/spec/support/models/message.rb +0 -1
- data/spec/support/models/minim.rb +0 -1
- data/spec/support/models/mixed_drink.rb +0 -1
- data/spec/support/models/mop.rb +0 -1
- data/spec/support/models/movie.rb +0 -1
- data/spec/support/models/my_hash.rb +0 -1
- data/spec/support/models/name.rb +0 -1
- data/spec/support/models/name_only.rb +0 -1
- data/spec/support/models/node.rb +0 -1
- data/spec/support/models/note.rb +0 -1
- data/spec/support/models/nut.rb +0 -1
- data/spec/support/models/odd.rb +0 -1
- data/spec/support/models/order.rb +2 -1
- data/spec/support/models/ordered_post.rb +1 -2
- data/spec/support/models/ordered_preference.rb +0 -1
- data/spec/support/models/oscar.rb +0 -1
- data/spec/support/models/other_owner_object.rb +0 -1
- data/spec/support/models/override.rb +0 -1
- data/spec/support/models/ownable.rb +0 -1
- data/spec/support/models/owner.rb +0 -1
- data/spec/support/models/pack.rb +0 -1
- data/spec/support/models/page.rb +0 -1
- data/spec/support/models/page_question.rb +0 -1
- data/spec/support/models/palette.rb +0 -1
- data/spec/support/models/parent.rb +0 -1
- data/spec/support/models/parent_doc.rb +0 -1
- data/spec/support/models/passport.rb +5 -1
- data/spec/support/models/patient.rb +0 -1
- data/spec/support/models/pdf_writer.rb +0 -1
- data/spec/support/models/pencil.rb +0 -1
- data/spec/support/models/person.rb +1 -1
- data/spec/support/models/pet.rb +0 -1
- data/spec/support/models/pet_owner.rb +0 -1
- data/spec/support/models/phone.rb +2 -2
- data/spec/support/models/piano.rb +0 -1
- data/spec/support/models/pizza.rb +0 -1
- data/spec/support/models/player.rb +0 -1
- data/spec/support/models/post.rb +0 -1
- data/spec/support/models/post_genre.rb +0 -1
- data/spec/support/models/powerup.rb +0 -1
- data/spec/support/models/preference.rb +0 -1
- data/spec/support/models/princess.rb +0 -1
- data/spec/support/models/product.rb +0 -1
- data/spec/support/models/profile.rb +0 -1
- data/spec/support/models/pronunciation.rb +0 -1
- data/spec/support/models/pub.rb +0 -1
- 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 +0 -1
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/support/models/question.rb +0 -1
- data/spec/support/models/quiz.rb +0 -1
- data/spec/support/models/rating.rb +0 -1
- data/spec/support/models/record.rb +0 -1
- data/spec/support/models/registry.rb +0 -1
- data/spec/support/models/role.rb +0 -1
- data/spec/support/models/root_category.rb +0 -1
- data/spec/support/models/sandwich.rb +0 -1
- data/spec/support/models/scheduler.rb +0 -1
- data/spec/support/models/scribe.rb +0 -1
- data/spec/support/models/sealer.rb +0 -1
- data/spec/support/models/seat.rb +0 -1
- data/spec/support/models/seo.rb +0 -1
- data/spec/support/models/series.rb +0 -1
- data/spec/support/models/server.rb +0 -1
- data/spec/support/models/service.rb +0 -1
- data/spec/support/models/shape.rb +0 -1
- data/spec/support/models/shelf.rb +0 -1
- data/spec/support/models/shipment_address.rb +0 -1
- data/spec/support/models/shipping_container.rb +0 -1
- data/spec/support/models/shipping_pack.rb +0 -1
- data/spec/support/models/shirt.rb +0 -1
- data/spec/support/models/shop.rb +0 -1
- data/spec/support/models/short_agent.rb +0 -1
- data/spec/support/models/short_quiz.rb +0 -1
- data/spec/support/models/simple.rb +0 -1
- data/spec/support/models/slave.rb +0 -1
- data/spec/support/models/song.rb +0 -1
- data/spec/support/models/sound.rb +0 -1
- 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 +0 -1
- data/spec/support/models/store_as_dup_test2.rb +0 -1
- data/spec/support/models/store_as_dup_test3.rb +0 -1
- data/spec/support/models/store_as_dup_test4.rb +0 -1
- data/spec/support/models/strategy.rb +0 -1
- data/spec/support/models/sub_item.rb +0 -1
- data/spec/support/models/subscription.rb +0 -1
- data/spec/support/models/survey.rb +0 -1
- data/spec/support/models/symptom.rb +0 -1
- data/spec/support/models/tag.rb +0 -1
- data/spec/support/models/target.rb +0 -1
- data/spec/support/models/template.rb +0 -1
- data/spec/support/models/thing.rb +0 -1
- data/spec/support/models/threadlocker.rb +0 -1
- data/spec/support/models/title.rb +0 -1
- data/spec/support/models/tool.rb +0 -1
- data/spec/support/models/topping.rb +0 -1
- data/spec/support/models/toy.rb +0 -1
- data/spec/support/models/track.rb +0 -1
- data/spec/support/models/translation.rb +0 -1
- data/spec/support/models/tree.rb +0 -1
- data/spec/support/models/truck.rb +0 -1
- data/spec/support/models/updatable.rb +0 -1
- data/spec/support/models/user.rb +0 -1
- data/spec/support/models/user_account.rb +0 -1
- data/spec/support/models/validation_callback.rb +0 -1
- data/spec/support/models/vehicle.rb +0 -1
- data/spec/support/models/version.rb +0 -1
- data/spec/support/models/vertex.rb +0 -1
- data/spec/support/models/vet_visit.rb +0 -1
- data/spec/support/models/video.rb +0 -1
- data/spec/support/models/video_game.rb +0 -1
- data/spec/support/models/washer.rb +0 -1
- data/spec/support/models/weapon.rb +0 -1
- data/spec/support/models/wiki_page.rb +0 -1
- data/spec/support/models/word.rb +0 -1
- data/spec/support/models/word_origin.rb +0 -1
- data/spec/support/models/writer.rb +0 -1
- data/spec/support/shared/time.rb +0 -1
- data/spec/support/spec_config.rb +3 -1
- data.tar.gz.sig +0 -0
- metadata +642 -610
- metadata.gz.sig +0 -0
- data/lib/support/ruby_version.rb +0 -29
- data/spec/support/session_registry.rb +0 -50
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
2
|
|
|
4
3
|
require "spec_helper"
|
|
5
4
|
|
|
@@ -41,7 +40,7 @@ describe Mongoid::Criteria do
|
|
|
41
40
|
context "when the entries are the same" do
|
|
42
41
|
|
|
43
42
|
let!(:band) do
|
|
44
|
-
Band.create(name: "Depeche Mode")
|
|
43
|
+
Band.create!(name: "Depeche Mode")
|
|
45
44
|
end
|
|
46
45
|
|
|
47
46
|
let(:other) do
|
|
@@ -56,11 +55,11 @@ describe Mongoid::Criteria do
|
|
|
56
55
|
context "when the entries are not the same" do
|
|
57
56
|
|
|
58
57
|
let!(:band) do
|
|
59
|
-
Band.create(name: "Depeche Mode")
|
|
58
|
+
Band.create!(name: "Depeche Mode")
|
|
60
59
|
end
|
|
61
60
|
|
|
62
61
|
let!(:other_band) do
|
|
63
|
-
Band.create(name: "Tool")
|
|
62
|
+
Band.create!(name: "Tool")
|
|
64
63
|
end
|
|
65
64
|
|
|
66
65
|
let(:other) do
|
|
@@ -105,21 +104,21 @@ describe Mongoid::Criteria do
|
|
|
105
104
|
describe "#asc" do
|
|
106
105
|
|
|
107
106
|
let(:person) do
|
|
108
|
-
Person.create
|
|
107
|
+
Person.create!
|
|
109
108
|
end
|
|
110
109
|
|
|
111
110
|
context "when the documents are embedded" do
|
|
112
111
|
|
|
113
112
|
let!(:hobrecht) do
|
|
114
|
-
person.addresses.create(street: "hobrecht", name: "hobrecht")
|
|
113
|
+
person.addresses.create!(street: "hobrecht", name: "hobrecht")
|
|
115
114
|
end
|
|
116
115
|
|
|
117
116
|
let!(:friedel) do
|
|
118
|
-
person.addresses.create(street: "friedel", name: "friedel")
|
|
117
|
+
person.addresses.create!(street: "friedel", name: "friedel")
|
|
119
118
|
end
|
|
120
119
|
|
|
121
120
|
let!(:pfluger) do
|
|
122
|
-
person.addresses.create(street: "pfluger", name: "pfluger")
|
|
121
|
+
person.addresses.create!(street: "pfluger", name: "pfluger")
|
|
123
122
|
end
|
|
124
123
|
|
|
125
124
|
let(:criteria) do
|
|
@@ -135,7 +134,7 @@ describe Mongoid::Criteria do
|
|
|
135
134
|
describe "#batch_size" do
|
|
136
135
|
|
|
137
136
|
let(:person) do
|
|
138
|
-
Person.create
|
|
137
|
+
Person.create!
|
|
139
138
|
end
|
|
140
139
|
|
|
141
140
|
let(:criteria) do
|
|
@@ -154,7 +153,7 @@ describe Mongoid::Criteria do
|
|
|
154
153
|
describe "#read" do
|
|
155
154
|
|
|
156
155
|
let(:person) do
|
|
157
|
-
Person.create
|
|
156
|
+
Person.create!
|
|
158
157
|
end
|
|
159
158
|
|
|
160
159
|
let(:criteria) do
|
|
@@ -171,11 +170,11 @@ describe Mongoid::Criteria do
|
|
|
171
170
|
context "when provided a single field" do
|
|
172
171
|
|
|
173
172
|
let!(:depeche) do
|
|
174
|
-
Band.create(name: "Depeche Mode", likes: 1000)
|
|
173
|
+
Band.create!(name: "Depeche Mode", likes: 1000)
|
|
175
174
|
end
|
|
176
175
|
|
|
177
176
|
let!(:tool) do
|
|
178
|
-
Band.create(name: "Tool", likes: 500)
|
|
177
|
+
Band.create!(name: "Tool", likes: 500)
|
|
179
178
|
end
|
|
180
179
|
|
|
181
180
|
let(:criteria) do
|
|
@@ -213,11 +212,11 @@ describe Mongoid::Criteria do
|
|
|
213
212
|
context "when provided a single field" do
|
|
214
213
|
|
|
215
214
|
let!(:depeche) do
|
|
216
|
-
Band.create(name: "Depeche Mode", likes: 1000)
|
|
215
|
+
Band.create!(name: "Depeche Mode", likes: 1000)
|
|
217
216
|
end
|
|
218
217
|
|
|
219
218
|
let!(:tool) do
|
|
220
|
-
Band.create(name: "Tool", likes: 500)
|
|
219
|
+
Band.create!(name: "Tool", likes: 500)
|
|
221
220
|
end
|
|
222
221
|
|
|
223
222
|
let(:criteria) do
|
|
@@ -239,11 +238,11 @@ describe Mongoid::Criteria do
|
|
|
239
238
|
describe "\##{method}" do
|
|
240
239
|
|
|
241
240
|
let!(:match) do
|
|
242
|
-
Band.create(genres: [ "electro", "dub" ])
|
|
241
|
+
Band.create!(genres: [ "electro", "dub" ])
|
|
243
242
|
end
|
|
244
243
|
|
|
245
244
|
let!(:non_match) do
|
|
246
|
-
Band.create(genres: [ "house" ])
|
|
245
|
+
Band.create!(genres: [ "house" ])
|
|
247
246
|
end
|
|
248
247
|
|
|
249
248
|
let(:criteria) do
|
|
@@ -261,11 +260,11 @@ describe Mongoid::Criteria do
|
|
|
261
260
|
describe "\##{method}" do
|
|
262
261
|
|
|
263
262
|
let!(:match) do
|
|
264
|
-
Band.create(name: "Depeche Mode", genres: [ "electro" ])
|
|
263
|
+
Band.create!(name: "Depeche Mode", genres: [ "electro" ])
|
|
265
264
|
end
|
|
266
265
|
|
|
267
266
|
let!(:non_match) do
|
|
268
|
-
Band.create(genres: [ "house" ])
|
|
267
|
+
Band.create!(genres: [ "house" ])
|
|
269
268
|
end
|
|
270
269
|
|
|
271
270
|
let(:criteria) do
|
|
@@ -281,7 +280,7 @@ describe Mongoid::Criteria do
|
|
|
281
280
|
describe "#as_json" do
|
|
282
281
|
|
|
283
282
|
let!(:band) do
|
|
284
|
-
Band.create(name: "Depeche Mode")
|
|
283
|
+
Band.create!(name: "Depeche Mode")
|
|
285
284
|
end
|
|
286
285
|
|
|
287
286
|
let(:criteria) do
|
|
@@ -311,11 +310,11 @@ describe Mongoid::Criteria do
|
|
|
311
310
|
describe "#between" do
|
|
312
311
|
|
|
313
312
|
let!(:match) do
|
|
314
|
-
Band.create(member_count: 3)
|
|
313
|
+
Band.create!(member_count: 3)
|
|
315
314
|
end
|
|
316
315
|
|
|
317
316
|
let!(:non_match) do
|
|
318
|
-
Band.create(member_count: 10)
|
|
317
|
+
Band.create!(member_count: 10)
|
|
319
318
|
end
|
|
320
319
|
|
|
321
320
|
let(:criteria) do
|
|
@@ -381,7 +380,7 @@ describe Mongoid::Criteria do
|
|
|
381
380
|
describe "#cache" do
|
|
382
381
|
|
|
383
382
|
let!(:person) do
|
|
384
|
-
Person.create
|
|
383
|
+
Person.create!
|
|
385
384
|
end
|
|
386
385
|
|
|
387
386
|
context "when no eager loading is involved" do
|
|
@@ -533,11 +532,11 @@ describe Mongoid::Criteria do
|
|
|
533
532
|
describe "#delete" do
|
|
534
533
|
|
|
535
534
|
let(:depeche) do
|
|
536
|
-
Band.create(name: "Depeche Mode")
|
|
535
|
+
Band.create!(name: "Depeche Mode")
|
|
537
536
|
end
|
|
538
537
|
|
|
539
538
|
let(:tool) do
|
|
540
|
-
Band.create(name: "Tool")
|
|
539
|
+
Band.create!(name: "Tool")
|
|
541
540
|
end
|
|
542
541
|
|
|
543
542
|
context "when no selector is provided" do
|
|
@@ -591,7 +590,7 @@ describe Mongoid::Criteria do
|
|
|
591
590
|
describe "#each" do
|
|
592
591
|
|
|
593
592
|
let!(:band) do
|
|
594
|
-
Band.create(name: "Depeche Mode")
|
|
593
|
+
Band.create!(name: "Depeche Mode")
|
|
595
594
|
end
|
|
596
595
|
|
|
597
596
|
context "when provided a block" do
|
|
@@ -611,14 +610,14 @@ describe Mongoid::Criteria do
|
|
|
611
610
|
describe "#elem_match" do
|
|
612
611
|
|
|
613
612
|
let!(:match) do
|
|
614
|
-
Band.create(name: "Depeche Mode").tap do |band|
|
|
613
|
+
Band.create!(name: "Depeche Mode").tap do |band|
|
|
615
614
|
r = band.records
|
|
616
|
-
r.create(name: "101")
|
|
615
|
+
r.create!(name: "101")
|
|
617
616
|
end
|
|
618
617
|
end
|
|
619
618
|
|
|
620
619
|
let!(:non_match) do
|
|
621
|
-
Band.create(genres: [ "house" ])
|
|
620
|
+
Band.create!(genres: [ "house" ])
|
|
622
621
|
end
|
|
623
622
|
|
|
624
623
|
let(:criteria) do
|
|
@@ -664,7 +663,7 @@ describe Mongoid::Criteria do
|
|
|
664
663
|
context "when matching documents exist" do
|
|
665
664
|
|
|
666
665
|
let!(:match) do
|
|
667
|
-
Band.create(name: "Depeche Mode")
|
|
666
|
+
Band.create!(name: "Depeche Mode")
|
|
668
667
|
end
|
|
669
668
|
|
|
670
669
|
let(:criteria) do
|
|
@@ -679,7 +678,7 @@ describe Mongoid::Criteria do
|
|
|
679
678
|
context "when no matching documents exist" do
|
|
680
679
|
|
|
681
680
|
let!(:nonmatch) do
|
|
682
|
-
Band.create(name: "New Order")
|
|
681
|
+
Band.create!(name: "New Order")
|
|
683
682
|
end
|
|
684
683
|
|
|
685
684
|
let(:criteria) do
|
|
@@ -695,11 +694,11 @@ describe Mongoid::Criteria do
|
|
|
695
694
|
describe "#exists" do
|
|
696
695
|
|
|
697
696
|
let!(:match) do
|
|
698
|
-
Band.create(name: "Depeche Mode")
|
|
697
|
+
Band.create!(name: "Depeche Mode")
|
|
699
698
|
end
|
|
700
699
|
|
|
701
700
|
let!(:non_match) do
|
|
702
|
-
Band.create
|
|
701
|
+
Band.create!
|
|
703
702
|
end
|
|
704
703
|
|
|
705
704
|
let(:criteria) do
|
|
@@ -716,7 +715,7 @@ describe Mongoid::Criteria do
|
|
|
716
715
|
context "when matching documents exist" do
|
|
717
716
|
|
|
718
717
|
let!(:match) do
|
|
719
|
-
Band.create(name: "Depeche Mode")
|
|
718
|
+
Band.create!(name: "Depeche Mode")
|
|
720
719
|
end
|
|
721
720
|
|
|
722
721
|
let(:criteria) do
|
|
@@ -858,11 +857,11 @@ describe Mongoid::Criteria do
|
|
|
858
857
|
describe "#find_one_and_update" do
|
|
859
858
|
|
|
860
859
|
let!(:depeche) do
|
|
861
|
-
Band.create(name: "Depeche Mode")
|
|
860
|
+
Band.create!(name: "Depeche Mode")
|
|
862
861
|
end
|
|
863
862
|
|
|
864
863
|
let!(:tool) do
|
|
865
|
-
Band.create(name: "Tool")
|
|
864
|
+
Band.create!(name: "Tool")
|
|
866
865
|
end
|
|
867
866
|
|
|
868
867
|
context "when the selector matches" do
|
|
@@ -1060,7 +1059,7 @@ describe Mongoid::Criteria do
|
|
|
1060
1059
|
end
|
|
1061
1060
|
|
|
1062
1061
|
let!(:match) do
|
|
1063
|
-
Bar.create(location: [ 52.30, 13.25 ])
|
|
1062
|
+
Bar.create!(location: [ 52.30, 13.25 ])
|
|
1064
1063
|
end
|
|
1065
1064
|
|
|
1066
1065
|
let(:criteria) do
|
|
@@ -1072,7 +1071,7 @@ describe Mongoid::Criteria do
|
|
|
1072
1071
|
end
|
|
1073
1072
|
end
|
|
1074
1073
|
|
|
1075
|
-
describe "#
|
|
1074
|
+
describe "#eq" do
|
|
1076
1075
|
|
|
1077
1076
|
let!(:match) do
|
|
1078
1077
|
Band.create(member_count: 5)
|
|
@@ -1082,6 +1081,25 @@ describe Mongoid::Criteria do
|
|
|
1082
1081
|
Band.create(member_count: 1)
|
|
1083
1082
|
end
|
|
1084
1083
|
|
|
1084
|
+
let(:criteria) do
|
|
1085
|
+
Band.eq(member_count: 5)
|
|
1086
|
+
end
|
|
1087
|
+
|
|
1088
|
+
it "returns the matching documents" do
|
|
1089
|
+
expect(criteria).to eq([ match ])
|
|
1090
|
+
end
|
|
1091
|
+
end
|
|
1092
|
+
|
|
1093
|
+
describe "#gt" do
|
|
1094
|
+
|
|
1095
|
+
let!(:match) do
|
|
1096
|
+
Band.create!(member_count: 5)
|
|
1097
|
+
end
|
|
1098
|
+
|
|
1099
|
+
let!(:non_match) do
|
|
1100
|
+
Band.create!(member_count: 1)
|
|
1101
|
+
end
|
|
1102
|
+
|
|
1085
1103
|
let(:criteria) do
|
|
1086
1104
|
Band.gt(member_count: 4)
|
|
1087
1105
|
end
|
|
@@ -1094,11 +1112,11 @@ describe Mongoid::Criteria do
|
|
|
1094
1112
|
describe "#gte" do
|
|
1095
1113
|
|
|
1096
1114
|
let!(:match) do
|
|
1097
|
-
Band.create(member_count: 5)
|
|
1115
|
+
Band.create!(member_count: 5)
|
|
1098
1116
|
end
|
|
1099
1117
|
|
|
1100
1118
|
let!(:non_match) do
|
|
1101
|
-
Band.create(member_count: 1)
|
|
1119
|
+
Band.create!(member_count: 1)
|
|
1102
1120
|
end
|
|
1103
1121
|
|
|
1104
1122
|
let(:criteria) do
|
|
@@ -1117,11 +1135,11 @@ describe Mongoid::Criteria do
|
|
|
1117
1135
|
context "when querying on a normal field" do
|
|
1118
1136
|
|
|
1119
1137
|
let!(:match) do
|
|
1120
|
-
Band.create(genres: [ "electro", "dub" ])
|
|
1138
|
+
Band.create!(genres: [ "electro", "dub" ])
|
|
1121
1139
|
end
|
|
1122
1140
|
|
|
1123
1141
|
let!(:non_match) do
|
|
1124
|
-
Band.create(genres: [ "house" ])
|
|
1142
|
+
Band.create!(genres: [ "house" ])
|
|
1125
1143
|
end
|
|
1126
1144
|
|
|
1127
1145
|
let(:criteria) do
|
|
@@ -1140,7 +1158,7 @@ describe Mongoid::Criteria do
|
|
|
1140
1158
|
end
|
|
1141
1159
|
|
|
1142
1160
|
let!(:match_one) do
|
|
1143
|
-
Person.create(preference_ids: [ id ])
|
|
1161
|
+
Person.create!(preference_ids: [ id ])
|
|
1144
1162
|
end
|
|
1145
1163
|
|
|
1146
1164
|
context "when providing valid ids" do
|
|
@@ -1181,7 +1199,7 @@ describe Mongoid::Criteria do
|
|
|
1181
1199
|
context "when the relation is a one to one" do
|
|
1182
1200
|
|
|
1183
1201
|
let!(:game) do
|
|
1184
|
-
Game.create
|
|
1202
|
+
Game.create!
|
|
1185
1203
|
end
|
|
1186
1204
|
|
|
1187
1205
|
let(:criteria) do
|
|
@@ -1219,7 +1237,7 @@ describe Mongoid::Criteria do
|
|
|
1219
1237
|
describe "#includes" do
|
|
1220
1238
|
|
|
1221
1239
|
let!(:person) do
|
|
1222
|
-
Person.create(age: 1)
|
|
1240
|
+
Person.create!(age: 1)
|
|
1223
1241
|
end
|
|
1224
1242
|
|
|
1225
1243
|
context "when providing a name that is not a relation" do
|
|
@@ -1234,11 +1252,11 @@ describe Mongoid::Criteria do
|
|
|
1234
1252
|
context "when providing one association" do
|
|
1235
1253
|
|
|
1236
1254
|
let!(:user) do
|
|
1237
|
-
User.create(posts: [ post1 ])
|
|
1255
|
+
User.create!(posts: [ post1 ])
|
|
1238
1256
|
end
|
|
1239
1257
|
|
|
1240
1258
|
let!(:post1) do
|
|
1241
|
-
Post.create
|
|
1259
|
+
Post.create!
|
|
1242
1260
|
end
|
|
1243
1261
|
|
|
1244
1262
|
let(:result) do
|
|
@@ -1257,15 +1275,15 @@ describe Mongoid::Criteria do
|
|
|
1257
1275
|
context "when providing a list of associations" do
|
|
1258
1276
|
|
|
1259
1277
|
let!(:user) do
|
|
1260
|
-
User.create(posts: [ post1 ], descriptions: [ description1 ])
|
|
1278
|
+
User.create!(posts: [ post1 ], descriptions: [ description1 ])
|
|
1261
1279
|
end
|
|
1262
1280
|
|
|
1263
1281
|
let!(:post1) do
|
|
1264
|
-
Post.create
|
|
1282
|
+
Post.create!
|
|
1265
1283
|
end
|
|
1266
1284
|
|
|
1267
1285
|
let!(:description1) do
|
|
1268
|
-
Description.create(details: 1)
|
|
1286
|
+
Description.create!(details: 1)
|
|
1269
1287
|
end
|
|
1270
1288
|
|
|
1271
1289
|
let(:result) do
|
|
@@ -1285,13 +1303,13 @@ describe Mongoid::Criteria do
|
|
|
1285
1303
|
context "when providing a nested association" do
|
|
1286
1304
|
|
|
1287
1305
|
let!(:user) do
|
|
1288
|
-
User.create
|
|
1306
|
+
User.create!
|
|
1289
1307
|
end
|
|
1290
1308
|
|
|
1291
1309
|
before do
|
|
1292
|
-
p = Post.create(alerts: [ Alert.create ])
|
|
1310
|
+
p = Post.create!(alerts: [ Alert.create! ])
|
|
1293
1311
|
user.posts = [ p ]
|
|
1294
|
-
user.save
|
|
1312
|
+
user.save!
|
|
1295
1313
|
end
|
|
1296
1314
|
|
|
1297
1315
|
let(:result) do
|
|
@@ -1311,7 +1329,7 @@ describe Mongoid::Criteria do
|
|
|
1311
1329
|
context "when providing a deeply nested association" do
|
|
1312
1330
|
|
|
1313
1331
|
let!(:user) do
|
|
1314
|
-
User.create
|
|
1332
|
+
User.create!
|
|
1315
1333
|
end
|
|
1316
1334
|
|
|
1317
1335
|
let(:results) do
|
|
@@ -1349,15 +1367,15 @@ describe Mongoid::Criteria do
|
|
|
1349
1367
|
context "when the includes is on the subclass" do
|
|
1350
1368
|
|
|
1351
1369
|
let!(:c_one) do
|
|
1352
|
-
C.create
|
|
1370
|
+
C.create!
|
|
1353
1371
|
end
|
|
1354
1372
|
|
|
1355
1373
|
let!(:c_two) do
|
|
1356
|
-
C.create
|
|
1374
|
+
C.create!
|
|
1357
1375
|
end
|
|
1358
1376
|
|
|
1359
1377
|
let!(:b) do
|
|
1360
|
-
B.create(c: c_two)
|
|
1378
|
+
B.create!(c: c_two)
|
|
1361
1379
|
end
|
|
1362
1380
|
|
|
1363
1381
|
let!(:results) do
|
|
@@ -1412,19 +1430,19 @@ describe Mongoid::Criteria do
|
|
|
1412
1430
|
context "when the includes is on the several relations" do
|
|
1413
1431
|
|
|
1414
1432
|
let!(:d_one) do
|
|
1415
|
-
D.create
|
|
1433
|
+
D.create!
|
|
1416
1434
|
end
|
|
1417
1435
|
|
|
1418
1436
|
let!(:d_two) do
|
|
1419
|
-
D.create
|
|
1437
|
+
D.create!
|
|
1420
1438
|
end
|
|
1421
1439
|
|
|
1422
1440
|
let!(:b) do
|
|
1423
|
-
B.create(d: d_two)
|
|
1441
|
+
B.create!(d: d_two)
|
|
1424
1442
|
end
|
|
1425
1443
|
|
|
1426
1444
|
let!(:c) do
|
|
1427
|
-
C.create(d: d_two)
|
|
1445
|
+
C.create!(d: d_two)
|
|
1428
1446
|
end
|
|
1429
1447
|
|
|
1430
1448
|
let!(:results) do
|
|
@@ -1483,19 +1501,19 @@ describe Mongoid::Criteria do
|
|
|
1483
1501
|
context "when the includes is on the several relations" do
|
|
1484
1502
|
|
|
1485
1503
|
let!(:d_one) do
|
|
1486
|
-
D.create
|
|
1504
|
+
D.create!
|
|
1487
1505
|
end
|
|
1488
1506
|
|
|
1489
1507
|
let!(:d_two) do
|
|
1490
|
-
D.create
|
|
1508
|
+
D.create!
|
|
1491
1509
|
end
|
|
1492
1510
|
|
|
1493
1511
|
let!(:bs) do
|
|
1494
|
-
2.times.map { B.create(d: d_two) }
|
|
1512
|
+
2.times.map { B.create!(d: d_two) }
|
|
1495
1513
|
end
|
|
1496
1514
|
|
|
1497
1515
|
let!(:cs) do
|
|
1498
|
-
2.times.map { C.create(d: d_two) }
|
|
1516
|
+
2.times.map { C.create!(d: d_two) }
|
|
1499
1517
|
end
|
|
1500
1518
|
|
|
1501
1519
|
let!(:results) do
|
|
@@ -1541,7 +1559,7 @@ describe Mongoid::Criteria do
|
|
|
1541
1559
|
context "when mapping the results more than once" do
|
|
1542
1560
|
|
|
1543
1561
|
let!(:post) do
|
|
1544
|
-
person.posts.create(title: "one")
|
|
1562
|
+
person.posts.create!(title: "one")
|
|
1545
1563
|
end
|
|
1546
1564
|
|
|
1547
1565
|
let(:criteria) do
|
|
@@ -1563,15 +1581,15 @@ describe Mongoid::Criteria do
|
|
|
1563
1581
|
context "when the criteria is from the root" do
|
|
1564
1582
|
|
|
1565
1583
|
let!(:person_two) do
|
|
1566
|
-
Person.create(age: 2)
|
|
1584
|
+
Person.create!(age: 2)
|
|
1567
1585
|
end
|
|
1568
1586
|
|
|
1569
1587
|
let!(:post_one) do
|
|
1570
|
-
person.posts.create(title: "one")
|
|
1588
|
+
person.posts.create!(title: "one")
|
|
1571
1589
|
end
|
|
1572
1590
|
|
|
1573
1591
|
let!(:post_two) do
|
|
1574
|
-
person_two.posts.create(title: "two")
|
|
1592
|
+
person_two.posts.create!(title: "two")
|
|
1575
1593
|
end
|
|
1576
1594
|
|
|
1577
1595
|
context "when calling first" do
|
|
@@ -1620,15 +1638,15 @@ describe Mongoid::Criteria do
|
|
|
1620
1638
|
context "when the criteria is from an embedded relation" do
|
|
1621
1639
|
|
|
1622
1640
|
let(:peep) do
|
|
1623
|
-
Person.create
|
|
1641
|
+
Person.create!
|
|
1624
1642
|
end
|
|
1625
1643
|
|
|
1626
1644
|
let!(:address_one) do
|
|
1627
|
-
peep.addresses.create(street: "rosenthaler")
|
|
1645
|
+
peep.addresses.create!(street: "rosenthaler")
|
|
1628
1646
|
end
|
|
1629
1647
|
|
|
1630
1648
|
let!(:address_two) do
|
|
1631
|
-
peep.addresses.create(street: "weinmeister")
|
|
1649
|
+
peep.addresses.create!(street: "weinmeister")
|
|
1632
1650
|
end
|
|
1633
1651
|
|
|
1634
1652
|
let!(:depeche) do
|
|
@@ -1642,8 +1660,8 @@ describe Mongoid::Criteria do
|
|
|
1642
1660
|
before do
|
|
1643
1661
|
address_one.band = depeche
|
|
1644
1662
|
address_two.band = tool
|
|
1645
|
-
address_one.save
|
|
1646
|
-
address_two.save
|
|
1663
|
+
address_one.save!
|
|
1664
|
+
address_two.save!
|
|
1647
1665
|
end
|
|
1648
1666
|
|
|
1649
1667
|
context "when calling first" do
|
|
@@ -1740,11 +1758,11 @@ describe Mongoid::Criteria do
|
|
|
1740
1758
|
end
|
|
1741
1759
|
|
|
1742
1760
|
let!(:post_one) do
|
|
1743
|
-
person.posts.create(title: "one")
|
|
1761
|
+
person.posts.create!(title: "one")
|
|
1744
1762
|
end
|
|
1745
1763
|
|
|
1746
1764
|
let!(:post_two) do
|
|
1747
|
-
person.posts.create(title: "two")
|
|
1765
|
+
person.posts.create!(title: "two")
|
|
1748
1766
|
end
|
|
1749
1767
|
|
|
1750
1768
|
context "when the criteria has no options" do
|
|
@@ -1862,11 +1880,11 @@ describe Mongoid::Criteria do
|
|
|
1862
1880
|
context "when the criteria has limiting options" do
|
|
1863
1881
|
|
|
1864
1882
|
let!(:person_two) do
|
|
1865
|
-
Person.create
|
|
1883
|
+
Person.create!
|
|
1866
1884
|
end
|
|
1867
1885
|
|
|
1868
1886
|
let!(:post_three) do
|
|
1869
|
-
person_two.posts.create(title: "three")
|
|
1887
|
+
person_two.posts.create!(title: "three")
|
|
1870
1888
|
end
|
|
1871
1889
|
|
|
1872
1890
|
let!(:criteria) do
|
|
@@ -1898,11 +1916,11 @@ describe Mongoid::Criteria do
|
|
|
1898
1916
|
context "when including a has and belongs to many" do
|
|
1899
1917
|
|
|
1900
1918
|
let!(:preference_one) do
|
|
1901
|
-
person.preferences.create(name: "one")
|
|
1919
|
+
person.preferences.create!(name: "one")
|
|
1902
1920
|
end
|
|
1903
1921
|
|
|
1904
1922
|
let!(:preference_two) do
|
|
1905
|
-
person.preferences.create(name: "two")
|
|
1923
|
+
person.preferences.create!(name: "two")
|
|
1906
1924
|
end
|
|
1907
1925
|
|
|
1908
1926
|
context "when one of the related items is deleted" do
|
|
@@ -2006,11 +2024,11 @@ describe Mongoid::Criteria do
|
|
|
2006
2024
|
context "when including a has many" do
|
|
2007
2025
|
|
|
2008
2026
|
let!(:post_one) do
|
|
2009
|
-
person.posts.create(title: "one")
|
|
2027
|
+
person.posts.create!(title: "one")
|
|
2010
2028
|
end
|
|
2011
2029
|
|
|
2012
2030
|
let!(:post_two) do
|
|
2013
|
-
person.posts.create(title: "two")
|
|
2031
|
+
person.posts.create!(title: "two")
|
|
2014
2032
|
end
|
|
2015
2033
|
|
|
2016
2034
|
context "when the criteria has no options" do
|
|
@@ -2095,11 +2113,11 @@ describe Mongoid::Criteria do
|
|
|
2095
2113
|
context "when the criteria has limiting options" do
|
|
2096
2114
|
|
|
2097
2115
|
let!(:person_two) do
|
|
2098
|
-
Person.create
|
|
2116
|
+
Person.create!
|
|
2099
2117
|
end
|
|
2100
2118
|
|
|
2101
2119
|
let!(:post_three) do
|
|
2102
|
-
person_two.posts.create(title: "three")
|
|
2120
|
+
person_two.posts.create!(title: "three")
|
|
2103
2121
|
end
|
|
2104
2122
|
|
|
2105
2123
|
let!(:criteria) do
|
|
@@ -2160,7 +2178,7 @@ describe Mongoid::Criteria do
|
|
|
2160
2178
|
context "when the criteria has limiting options" do
|
|
2161
2179
|
|
|
2162
2180
|
let!(:person_two) do
|
|
2163
|
-
Person.create(age: 2)
|
|
2181
|
+
Person.create!(age: 2)
|
|
2164
2182
|
end
|
|
2165
2183
|
|
|
2166
2184
|
let!(:game_three) do
|
|
@@ -2192,7 +2210,7 @@ describe Mongoid::Criteria do
|
|
|
2192
2210
|
context "when including a belongs to" do
|
|
2193
2211
|
|
|
2194
2212
|
let(:person_two) do
|
|
2195
|
-
Person.create(age: 2)
|
|
2213
|
+
Person.create!(age: 2)
|
|
2196
2214
|
end
|
|
2197
2215
|
|
|
2198
2216
|
let!(:game_one) do
|
|
@@ -2253,11 +2271,11 @@ describe Mongoid::Criteria do
|
|
|
2253
2271
|
context "when including multiples in the same criteria" do
|
|
2254
2272
|
|
|
2255
2273
|
let!(:post_one) do
|
|
2256
|
-
person.posts.create(title: "one")
|
|
2274
|
+
person.posts.create!(title: "one")
|
|
2257
2275
|
end
|
|
2258
2276
|
|
|
2259
2277
|
let!(:post_two) do
|
|
2260
|
-
person.posts.create(title: "two")
|
|
2278
|
+
person.posts.create!(title: "two")
|
|
2261
2279
|
end
|
|
2262
2280
|
|
|
2263
2281
|
let!(:game_one) do
|
|
@@ -2327,11 +2345,11 @@ describe Mongoid::Criteria do
|
|
|
2327
2345
|
describe "#lt" do
|
|
2328
2346
|
|
|
2329
2347
|
let!(:match) do
|
|
2330
|
-
Band.create(member_count: 1)
|
|
2348
|
+
Band.create!(member_count: 1)
|
|
2331
2349
|
end
|
|
2332
2350
|
|
|
2333
2351
|
let!(:non_match) do
|
|
2334
|
-
Band.create(member_count: 5)
|
|
2352
|
+
Band.create!(member_count: 5)
|
|
2335
2353
|
end
|
|
2336
2354
|
|
|
2337
2355
|
let(:criteria) do
|
|
@@ -2346,11 +2364,11 @@ describe Mongoid::Criteria do
|
|
|
2346
2364
|
describe "#lte" do
|
|
2347
2365
|
|
|
2348
2366
|
let!(:match) do
|
|
2349
|
-
Band.create(member_count: 4)
|
|
2367
|
+
Band.create!(member_count: 4)
|
|
2350
2368
|
end
|
|
2351
2369
|
|
|
2352
2370
|
let!(:non_match) do
|
|
2353
|
-
Band.create(member_count: 5)
|
|
2371
|
+
Band.create!(member_count: 5)
|
|
2354
2372
|
end
|
|
2355
2373
|
|
|
2356
2374
|
let(:criteria) do
|
|
@@ -2383,11 +2401,11 @@ describe Mongoid::Criteria do
|
|
|
2383
2401
|
end
|
|
2384
2402
|
|
|
2385
2403
|
let!(:depeche_mode) do
|
|
2386
|
-
Band.create(name: "Depeche Mode", likes: 200)
|
|
2404
|
+
Band.create!(name: "Depeche Mode", likes: 200)
|
|
2387
2405
|
end
|
|
2388
2406
|
|
|
2389
2407
|
let!(:tool) do
|
|
2390
|
-
Band.create(name: "Tool", likes: 100)
|
|
2408
|
+
Band.create!(name: "Tool", likes: 100)
|
|
2391
2409
|
end
|
|
2392
2410
|
|
|
2393
2411
|
context "when no timeout options are provided" do
|
|
@@ -2410,11 +2428,11 @@ describe Mongoid::Criteria do
|
|
|
2410
2428
|
context "when provided a single field" do
|
|
2411
2429
|
|
|
2412
2430
|
let!(:depeche) do
|
|
2413
|
-
Band.create(name: "Depeche Mode", likes: 1000)
|
|
2431
|
+
Band.create!(name: "Depeche Mode", likes: 1000)
|
|
2414
2432
|
end
|
|
2415
2433
|
|
|
2416
2434
|
let!(:tool) do
|
|
2417
|
-
Band.create(name: "Tool", likes: 500)
|
|
2435
|
+
Band.create!(name: "Tool", likes: 500)
|
|
2418
2436
|
end
|
|
2419
2437
|
|
|
2420
2438
|
let(:criteria) do
|
|
@@ -2454,11 +2472,11 @@ describe Mongoid::Criteria do
|
|
|
2454
2472
|
end
|
|
2455
2473
|
|
|
2456
2474
|
let!(:match) do
|
|
2457
|
-
Bar.create(location: [ 52.30, 13.25 ])
|
|
2475
|
+
Bar.create!(location: [ 52.30, 13.25 ])
|
|
2458
2476
|
end
|
|
2459
2477
|
|
|
2460
2478
|
let!(:non_match) do
|
|
2461
|
-
Bar.create(location: [ 19.26, 99.70 ])
|
|
2479
|
+
Bar.create!(location: [ 19.26, 99.70 ])
|
|
2462
2480
|
end
|
|
2463
2481
|
|
|
2464
2482
|
let(:criteria) do
|
|
@@ -2611,11 +2629,11 @@ describe Mongoid::Criteria do
|
|
|
2611
2629
|
context "when provided a single field" do
|
|
2612
2630
|
|
|
2613
2631
|
let!(:depeche) do
|
|
2614
|
-
Band.create(name: "Depeche Mode", likes: 1000)
|
|
2632
|
+
Band.create!(name: "Depeche Mode", likes: 1000)
|
|
2615
2633
|
end
|
|
2616
2634
|
|
|
2617
2635
|
let!(:tool) do
|
|
2618
|
-
Band.create(name: "Tool", likes: 500)
|
|
2636
|
+
Band.create!(name: "Tool", likes: 500)
|
|
2619
2637
|
end
|
|
2620
2638
|
|
|
2621
2639
|
let(:criteria) do
|
|
@@ -2651,11 +2669,11 @@ describe Mongoid::Criteria do
|
|
|
2651
2669
|
describe "#mod" do
|
|
2652
2670
|
|
|
2653
2671
|
let!(:match) do
|
|
2654
|
-
Band.create(member_count: 5)
|
|
2672
|
+
Band.create!(member_count: 5)
|
|
2655
2673
|
end
|
|
2656
2674
|
|
|
2657
2675
|
let!(:non_match) do
|
|
2658
|
-
Band.create(member_count: 2)
|
|
2676
|
+
Band.create!(member_count: 2)
|
|
2659
2677
|
end
|
|
2660
2678
|
|
|
2661
2679
|
let(:criteria) do
|
|
@@ -2670,11 +2688,11 @@ describe Mongoid::Criteria do
|
|
|
2670
2688
|
describe "#ne" do
|
|
2671
2689
|
|
|
2672
2690
|
let!(:match) do
|
|
2673
|
-
Band.create(name: "Depeche Mode")
|
|
2691
|
+
Band.create!(name: "Depeche Mode")
|
|
2674
2692
|
end
|
|
2675
2693
|
|
|
2676
2694
|
let!(:non_match) do
|
|
2677
|
-
Band.create(name: "Tool")
|
|
2695
|
+
Band.create!(name: "Tool")
|
|
2678
2696
|
end
|
|
2679
2697
|
|
|
2680
2698
|
let(:criteria) do
|
|
@@ -2693,7 +2711,7 @@ describe Mongoid::Criteria do
|
|
|
2693
2711
|
end
|
|
2694
2712
|
|
|
2695
2713
|
let!(:match) do
|
|
2696
|
-
Bar.create(location: [ 52.30, 13.25 ])
|
|
2714
|
+
Bar.create!(location: [ 52.30, 13.25 ])
|
|
2697
2715
|
end
|
|
2698
2716
|
|
|
2699
2717
|
let(:criteria) do
|
|
@@ -2712,7 +2730,7 @@ describe Mongoid::Criteria do
|
|
|
2712
2730
|
end
|
|
2713
2731
|
|
|
2714
2732
|
let!(:match) do
|
|
2715
|
-
Bar.create(location: [ 52.30, 13.25 ])
|
|
2733
|
+
Bar.create!(location: [ 52.30, 13.25 ])
|
|
2716
2734
|
end
|
|
2717
2735
|
|
|
2718
2736
|
let(:criteria) do
|
|
@@ -2727,11 +2745,11 @@ describe Mongoid::Criteria do
|
|
|
2727
2745
|
describe "#nin" do
|
|
2728
2746
|
|
|
2729
2747
|
let!(:match) do
|
|
2730
|
-
Band.create(name: "Depeche Mode")
|
|
2748
|
+
Band.create!(name: "Depeche Mode")
|
|
2731
2749
|
end
|
|
2732
2750
|
|
|
2733
2751
|
let!(:non_match) do
|
|
2734
|
-
Band.create(name: "Tool")
|
|
2752
|
+
Band.create!(name: "Tool")
|
|
2735
2753
|
end
|
|
2736
2754
|
|
|
2737
2755
|
let(:criteria) do
|
|
@@ -2746,11 +2764,11 @@ describe Mongoid::Criteria do
|
|
|
2746
2764
|
describe "#nor" do
|
|
2747
2765
|
|
|
2748
2766
|
let!(:match) do
|
|
2749
|
-
Band.create(name: "Depeche Mode")
|
|
2767
|
+
Band.create!(name: "Depeche Mode")
|
|
2750
2768
|
end
|
|
2751
2769
|
|
|
2752
2770
|
let!(:non_match) do
|
|
2753
|
-
Band.create(name: "Tool")
|
|
2771
|
+
Band.create!(name: "Tool")
|
|
2754
2772
|
end
|
|
2755
2773
|
|
|
2756
2774
|
let(:criteria) do
|
|
@@ -2767,11 +2785,11 @@ describe Mongoid::Criteria do
|
|
|
2767
2785
|
describe "\##{method}" do
|
|
2768
2786
|
|
|
2769
2787
|
let!(:match) do
|
|
2770
|
-
Band.create(name: "Depeche Mode")
|
|
2788
|
+
Band.create!(name: "Depeche Mode")
|
|
2771
2789
|
end
|
|
2772
2790
|
|
|
2773
2791
|
let!(:non_match) do
|
|
2774
|
-
Band.create(name: "Tool")
|
|
2792
|
+
Band.create!(name: "Tool")
|
|
2775
2793
|
end
|
|
2776
2794
|
|
|
2777
2795
|
context "when sending a normal $or criterion" do
|
|
@@ -2801,25 +2819,29 @@ describe Mongoid::Criteria do
|
|
|
2801
2819
|
describe "#pluck" do
|
|
2802
2820
|
|
|
2803
2821
|
let!(:depeche) do
|
|
2804
|
-
Band.create(name: "Depeche Mode", likes: 3)
|
|
2822
|
+
Band.create!(name: "Depeche Mode", likes: 3)
|
|
2805
2823
|
end
|
|
2806
2824
|
|
|
2807
2825
|
let!(:tool) do
|
|
2808
|
-
Band.create(name: "Tool", likes: 3)
|
|
2826
|
+
Band.create!(name: "Tool", likes: 3)
|
|
2809
2827
|
end
|
|
2810
2828
|
|
|
2811
2829
|
let!(:photek) do
|
|
2812
|
-
Band.create(name: "Photek", likes: 1)
|
|
2830
|
+
Band.create!(name: "Photek", likes: 1)
|
|
2831
|
+
end
|
|
2832
|
+
|
|
2833
|
+
let(:maniacs) do
|
|
2834
|
+
Band.create!(name: "10,000 Maniacs", likes: 1, sales: "1E2")
|
|
2813
2835
|
end
|
|
2814
2836
|
|
|
2815
2837
|
context "when the field is aliased" do
|
|
2816
2838
|
|
|
2817
2839
|
let!(:expensive) do
|
|
2818
|
-
Product.create(price: 100000)
|
|
2840
|
+
Product.create!(price: 100000)
|
|
2819
2841
|
end
|
|
2820
2842
|
|
|
2821
2843
|
let!(:cheap) do
|
|
2822
|
-
Product.create(price: 1)
|
|
2844
|
+
Product.create!(price: 1)
|
|
2823
2845
|
end
|
|
2824
2846
|
|
|
2825
2847
|
context "when using alias_attribute" do
|
|
@@ -2828,8 +2850,10 @@ describe Mongoid::Criteria do
|
|
|
2828
2850
|
Product.pluck(:price)
|
|
2829
2851
|
end
|
|
2830
2852
|
|
|
2831
|
-
|
|
2832
|
-
|
|
2853
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
2854
|
+
it "uses the aliases" do
|
|
2855
|
+
expect(plucked).to eq([ 100000, 1 ])
|
|
2856
|
+
end
|
|
2833
2857
|
end
|
|
2834
2858
|
end
|
|
2835
2859
|
end
|
|
@@ -2846,14 +2870,18 @@ describe Mongoid::Criteria do
|
|
|
2846
2870
|
criteria.pluck(:name)
|
|
2847
2871
|
end
|
|
2848
2872
|
|
|
2849
|
-
|
|
2850
|
-
|
|
2873
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
2874
|
+
it "returns the values" do
|
|
2875
|
+
expect(plucked).to contain_exactly("Depeche Mode", "Tool", "Photek")
|
|
2876
|
+
end
|
|
2851
2877
|
end
|
|
2852
2878
|
|
|
2853
2879
|
context "when subsequently executing the criteria without a pluck" do
|
|
2854
2880
|
|
|
2855
|
-
|
|
2856
|
-
|
|
2881
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
2882
|
+
it "does not limit the fields" do
|
|
2883
|
+
expect(criteria.first.likes).to eq(3)
|
|
2884
|
+
end
|
|
2857
2885
|
end
|
|
2858
2886
|
end
|
|
2859
2887
|
|
|
@@ -2864,51 +2892,83 @@ describe Mongoid::Criteria do
|
|
|
2864
2892
|
end
|
|
2865
2893
|
|
|
2866
2894
|
context 'when a top-level field and a subdocument field are plucked' do
|
|
2867
|
-
|
|
2868
2895
|
before do
|
|
2869
|
-
Band.create(name: 'FKA Twigs')
|
|
2870
|
-
Band.create(name: 'FKA Twigs', records: [ Record.new(name: 'LP1') ])
|
|
2896
|
+
Band.create!(name: 'FKA Twigs')
|
|
2897
|
+
Band.create!(name: 'FKA Twigs', records: [ Record.new(name: 'LP1') ])
|
|
2871
2898
|
end
|
|
2872
2899
|
|
|
2873
2900
|
let(:embedded_pluck) do
|
|
2874
2901
|
criteria.pluck(:name, 'records.name')
|
|
2875
2902
|
end
|
|
2876
2903
|
|
|
2877
|
-
|
|
2878
|
-
|
|
2879
|
-
|
|
2880
|
-
[
|
|
2881
|
-
|
|
2904
|
+
context "when legacy_pluck_distinct is set" do
|
|
2905
|
+
config_override :legacy_pluck_distinct, true
|
|
2906
|
+
let(:expected) do
|
|
2907
|
+
[
|
|
2908
|
+
["FKA Twigs", nil],
|
|
2909
|
+
['FKA Twigs', [{ "name" => "LP1" }]]
|
|
2910
|
+
]
|
|
2911
|
+
end
|
|
2912
|
+
|
|
2913
|
+
it 'returns the list of top-level field and subdocument values' do
|
|
2914
|
+
expect(embedded_pluck).to eq(expected)
|
|
2915
|
+
end
|
|
2882
2916
|
end
|
|
2883
2917
|
|
|
2884
|
-
|
|
2885
|
-
|
|
2918
|
+
context "when legacy_pluck_distinct is not set" do
|
|
2919
|
+
config_override :legacy_pluck_distinct, false
|
|
2920
|
+
let(:expected) do
|
|
2921
|
+
[
|
|
2922
|
+
["FKA Twigs", nil],
|
|
2923
|
+
['FKA Twigs', ["LP1"]]
|
|
2924
|
+
]
|
|
2925
|
+
end
|
|
2926
|
+
|
|
2927
|
+
it 'returns the list of top-level field and subdocument values' do
|
|
2928
|
+
expect(embedded_pluck).to eq(expected)
|
|
2929
|
+
end
|
|
2886
2930
|
end
|
|
2887
2931
|
end
|
|
2888
2932
|
|
|
2889
2933
|
context 'when only a subdocument field is plucked' do
|
|
2890
2934
|
|
|
2891
2935
|
before do
|
|
2892
|
-
Band.create(name: 'FKA Twigs')
|
|
2893
|
-
Band.create(name: 'FKA Twigs', records: [ Record.new(name: 'LP1') ])
|
|
2936
|
+
Band.create!(name: 'FKA Twigs')
|
|
2937
|
+
Band.create!(name: 'FKA Twigs', records: [ Record.new(name: 'LP1') ])
|
|
2894
2938
|
end
|
|
2895
2939
|
|
|
2896
2940
|
let(:embedded_pluck) do
|
|
2897
2941
|
criteria.pluck('records.name')
|
|
2898
2942
|
end
|
|
2899
2943
|
|
|
2900
|
-
|
|
2901
|
-
|
|
2902
|
-
|
|
2903
|
-
[
|
|
2904
|
-
|
|
2944
|
+
context "when legacy_pluck_distinct is set" do
|
|
2945
|
+
config_override :legacy_pluck_distinct, true
|
|
2946
|
+
let(:expected) do
|
|
2947
|
+
[
|
|
2948
|
+
nil,
|
|
2949
|
+
[{ "name" => "LP1" }]
|
|
2950
|
+
]
|
|
2951
|
+
end
|
|
2952
|
+
|
|
2953
|
+
it 'returns the list of subdocument values' do
|
|
2954
|
+
expect(embedded_pluck).to eq(expected)
|
|
2955
|
+
end
|
|
2905
2956
|
end
|
|
2906
2957
|
|
|
2907
|
-
|
|
2908
|
-
|
|
2958
|
+
context "when legacy_pluck_distinct is not set" do
|
|
2959
|
+
config_override :legacy_pluck_distinct, false
|
|
2960
|
+
let(:expected) do
|
|
2961
|
+
[
|
|
2962
|
+
nil,
|
|
2963
|
+
["LP1"]
|
|
2964
|
+
]
|
|
2965
|
+
end
|
|
2966
|
+
|
|
2967
|
+
it 'returns the list of subdocument values' do
|
|
2968
|
+
expect(embedded_pluck).to eq(expected)
|
|
2969
|
+
end
|
|
2909
2970
|
end
|
|
2910
2971
|
end
|
|
2911
|
-
|
|
2912
2972
|
end
|
|
2913
2973
|
end
|
|
2914
2974
|
|
|
@@ -2918,8 +2978,10 @@ describe Mongoid::Criteria do
|
|
|
2918
2978
|
Band.where(:name.exists => true).pluck(:name, :likes)
|
|
2919
2979
|
end
|
|
2920
2980
|
|
|
2921
|
-
|
|
2922
|
-
|
|
2981
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
2982
|
+
it "returns the values" do
|
|
2983
|
+
expect(plucked).to contain_exactly(["Depeche Mode", 3], ["Tool", 3], ["Photek", 1])
|
|
2984
|
+
end
|
|
2923
2985
|
end
|
|
2924
2986
|
end
|
|
2925
2987
|
|
|
@@ -2929,8 +2991,10 @@ describe Mongoid::Criteria do
|
|
|
2929
2991
|
Band.where(:name.exists => true).pluck(:likes)
|
|
2930
2992
|
end
|
|
2931
2993
|
|
|
2932
|
-
|
|
2933
|
-
|
|
2994
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
2995
|
+
it "returns the duplicates" do
|
|
2996
|
+
expect(plucked).to contain_exactly(3, 3, 1)
|
|
2997
|
+
end
|
|
2934
2998
|
end
|
|
2935
2999
|
end
|
|
2936
3000
|
end
|
|
@@ -2941,8 +3005,10 @@ describe Mongoid::Criteria do
|
|
|
2941
3005
|
Band.where(name: "New Order").pluck(:_id)
|
|
2942
3006
|
end
|
|
2943
3007
|
|
|
2944
|
-
|
|
2945
|
-
|
|
3008
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
3009
|
+
it "returns an empty array" do
|
|
3010
|
+
expect(plucked).to be_empty
|
|
3011
|
+
end
|
|
2946
3012
|
end
|
|
2947
3013
|
end
|
|
2948
3014
|
|
|
@@ -2952,8 +3018,10 @@ describe Mongoid::Criteria do
|
|
|
2952
3018
|
Band.all.pluck(:id)
|
|
2953
3019
|
end
|
|
2954
3020
|
|
|
2955
|
-
|
|
2956
|
-
|
|
3021
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
3022
|
+
it "returns the field values" do
|
|
3023
|
+
expect(plucked).to eq([ depeche.id, tool.id, photek.id ])
|
|
3024
|
+
end
|
|
2957
3025
|
end
|
|
2958
3026
|
end
|
|
2959
3027
|
|
|
@@ -2963,8 +3031,10 @@ describe Mongoid::Criteria do
|
|
|
2963
3031
|
Band.all.pluck(:id, :fooz)
|
|
2964
3032
|
end
|
|
2965
3033
|
|
|
2966
|
-
|
|
2967
|
-
|
|
3034
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
3035
|
+
it "returns nil for the field that doesnt exist" do
|
|
3036
|
+
expect(plucked).to eq([[depeche.id, nil], [tool.id, nil], [photek.id, nil] ])
|
|
3037
|
+
end
|
|
2968
3038
|
end
|
|
2969
3039
|
end
|
|
2970
3040
|
|
|
@@ -2976,8 +3046,10 @@ describe Mongoid::Criteria do
|
|
|
2976
3046
|
Band.all.pluck(:foo)
|
|
2977
3047
|
end
|
|
2978
3048
|
|
|
2979
|
-
|
|
2980
|
-
|
|
3049
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
3050
|
+
it "returns a array with nil values" do
|
|
3051
|
+
expect(plucked).to eq([nil, nil, nil])
|
|
3052
|
+
end
|
|
2981
3053
|
end
|
|
2982
3054
|
end
|
|
2983
3055
|
|
|
@@ -2987,8 +3059,10 @@ describe Mongoid::Criteria do
|
|
|
2987
3059
|
Band.all.pluck(:foo, :bar)
|
|
2988
3060
|
end
|
|
2989
3061
|
|
|
2990
|
-
|
|
2991
|
-
|
|
3062
|
+
with_config_values :legacy_pluck_distinct, true, false do
|
|
3063
|
+
it "returns a nil arrays" do
|
|
3064
|
+
expect(plucked).to eq([[nil, nil], [nil, nil], [nil, nil]])
|
|
3065
|
+
end
|
|
2992
3066
|
end
|
|
2993
3067
|
end
|
|
2994
3068
|
end
|
|
@@ -2997,10 +3071,10 @@ describe Mongoid::Criteria do
|
|
|
2997
3071
|
|
|
2998
3072
|
before do
|
|
2999
3073
|
I18n.locale = :en
|
|
3000
|
-
d = Dictionary.create(description: 'english-text')
|
|
3074
|
+
d = Dictionary.create!(description: 'english-text')
|
|
3001
3075
|
I18n.locale = :de
|
|
3002
3076
|
d.description = 'deutsch-text'
|
|
3003
|
-
d.save
|
|
3077
|
+
d.save!
|
|
3004
3078
|
end
|
|
3005
3079
|
|
|
3006
3080
|
after do
|
|
@@ -3008,13 +3082,48 @@ describe Mongoid::Criteria do
|
|
|
3008
3082
|
end
|
|
3009
3083
|
|
|
3010
3084
|
context 'when plucking the entire field' do
|
|
3011
|
-
|
|
3012
3085
|
let(:plucked) do
|
|
3013
3086
|
Dictionary.all.pluck(:description)
|
|
3014
3087
|
end
|
|
3015
3088
|
|
|
3016
|
-
|
|
3017
|
-
|
|
3089
|
+
let(:plucked_translations) do
|
|
3090
|
+
Dictionary.all.pluck(:description_translations)
|
|
3091
|
+
end
|
|
3092
|
+
|
|
3093
|
+
let(:plucked_translations_both) do
|
|
3094
|
+
Dictionary.all.pluck(:description_translations, :description)
|
|
3095
|
+
end
|
|
3096
|
+
|
|
3097
|
+
context "when legacy_pluck_distinct is set" do
|
|
3098
|
+
config_override :legacy_pluck_distinct, true
|
|
3099
|
+
|
|
3100
|
+
it 'returns the non-demongoized translations' do
|
|
3101
|
+
expect(plucked.first).to eq({"de"=>"deutsch-text", "en"=>"english-text"})
|
|
3102
|
+
end
|
|
3103
|
+
|
|
3104
|
+
it 'returns nil' do
|
|
3105
|
+
expect(plucked_translations.first).to eq(nil)
|
|
3106
|
+
end
|
|
3107
|
+
|
|
3108
|
+
it 'returns nil for _translations' do
|
|
3109
|
+
expect(plucked_translations_both.first).to eq([nil, {"de"=>"deutsch-text", "en"=>"english-text"}])
|
|
3110
|
+
end
|
|
3111
|
+
end
|
|
3112
|
+
|
|
3113
|
+
context "when legacy_pluck_distinct is not set" do
|
|
3114
|
+
config_override :legacy_pluck_distinct, false
|
|
3115
|
+
|
|
3116
|
+
it 'returns the demongoized translations' do
|
|
3117
|
+
expect(plucked.first).to eq('deutsch-text')
|
|
3118
|
+
end
|
|
3119
|
+
|
|
3120
|
+
it 'returns the full translations hash to _translations' do
|
|
3121
|
+
expect(plucked_translations.first).to eq({"de"=>"deutsch-text", "en"=>"english-text"})
|
|
3122
|
+
end
|
|
3123
|
+
|
|
3124
|
+
it 'returns both' do
|
|
3125
|
+
expect(plucked_translations_both.first).to eq([{"de"=>"deutsch-text", "en"=>"english-text"}, "deutsch-text"])
|
|
3126
|
+
end
|
|
3018
3127
|
end
|
|
3019
3128
|
end
|
|
3020
3129
|
|
|
@@ -3024,8 +3133,227 @@ describe Mongoid::Criteria do
|
|
|
3024
3133
|
Dictionary.all.pluck(:'description.de')
|
|
3025
3134
|
end
|
|
3026
3135
|
|
|
3027
|
-
|
|
3028
|
-
|
|
3136
|
+
context "when legacy_pluck_distinct is set" do
|
|
3137
|
+
config_override :legacy_pluck_distinct, true
|
|
3138
|
+
|
|
3139
|
+
it 'returns the specific translations' do
|
|
3140
|
+
expect(plucked.first).to eq({'de' => 'deutsch-text'})
|
|
3141
|
+
end
|
|
3142
|
+
end
|
|
3143
|
+
|
|
3144
|
+
context "when legacy_pluck_distinct is not set" do
|
|
3145
|
+
config_override :legacy_pluck_distinct, false
|
|
3146
|
+
|
|
3147
|
+
it 'returns the specific translations' do
|
|
3148
|
+
expect(plucked.first).to eq('deutsch-text')
|
|
3149
|
+
end
|
|
3150
|
+
end
|
|
3151
|
+
end
|
|
3152
|
+
|
|
3153
|
+
context 'when plucking a specific locale from _translations field' do
|
|
3154
|
+
|
|
3155
|
+
let(:plucked) do
|
|
3156
|
+
Dictionary.all.pluck(:'description_translations.de')
|
|
3157
|
+
end
|
|
3158
|
+
|
|
3159
|
+
context "when legacy_pluck_distinct is set" do
|
|
3160
|
+
config_override :legacy_pluck_distinct, true
|
|
3161
|
+
|
|
3162
|
+
it 'returns the specific translations' do
|
|
3163
|
+
expect(plucked.first).to eq(nil)
|
|
3164
|
+
end
|
|
3165
|
+
end
|
|
3166
|
+
|
|
3167
|
+
context "when legacy_pluck_distinct is not set" do
|
|
3168
|
+
config_override :legacy_pluck_distinct, false
|
|
3169
|
+
|
|
3170
|
+
it 'returns the specific translations' do
|
|
3171
|
+
expect(plucked.first).to eq('deutsch-text')
|
|
3172
|
+
end
|
|
3173
|
+
end
|
|
3174
|
+
end
|
|
3175
|
+
|
|
3176
|
+
context 'when fallbacks are enabled with a locale list' do
|
|
3177
|
+
require_fallbacks
|
|
3178
|
+
|
|
3179
|
+
around(:all) do |example|
|
|
3180
|
+
prev_fallbacks = I18n.fallbacks.dup
|
|
3181
|
+
I18n.fallbacks[:he] = [ :en ]
|
|
3182
|
+
example.run
|
|
3183
|
+
I18n.fallbacks = prev_fallbacks
|
|
3184
|
+
end
|
|
3185
|
+
|
|
3186
|
+
let(:plucked) do
|
|
3187
|
+
Dictionary.all.pluck(:description).first
|
|
3188
|
+
end
|
|
3189
|
+
|
|
3190
|
+
context "when legacy_pluck_distinct is set" do
|
|
3191
|
+
config_override :legacy_pluck_distinct, true
|
|
3192
|
+
|
|
3193
|
+
it "does not correctly use the fallback" do
|
|
3194
|
+
plucked.should == {"de"=>"deutsch-text", "en"=>"english-text"}
|
|
3195
|
+
end
|
|
3196
|
+
end
|
|
3197
|
+
|
|
3198
|
+
context "when legacy_pluck_distinct is not set" do
|
|
3199
|
+
config_override :legacy_pluck_distinct, false
|
|
3200
|
+
|
|
3201
|
+
it "correctly uses the fallback" do
|
|
3202
|
+
I18n.locale = :en
|
|
3203
|
+
d = Dictionary.create!(description: 'english-text')
|
|
3204
|
+
I18n.locale = :he
|
|
3205
|
+
plucked.should == "english-text"
|
|
3206
|
+
end
|
|
3207
|
+
end
|
|
3208
|
+
end
|
|
3209
|
+
|
|
3210
|
+
context "when the localized field is embedded" do
|
|
3211
|
+
before do
|
|
3212
|
+
p = Passport.new
|
|
3213
|
+
I18n.locale = :en
|
|
3214
|
+
p.name = "Neil"
|
|
3215
|
+
I18n.locale = :he
|
|
3216
|
+
p.name = "Nissim"
|
|
3217
|
+
|
|
3218
|
+
Person.create!(passport: p, employer_id: 12345)
|
|
3219
|
+
end
|
|
3220
|
+
|
|
3221
|
+
let(:plucked) do
|
|
3222
|
+
Person.where(employer_id: 12345).pluck("pass.name").first
|
|
3223
|
+
end
|
|
3224
|
+
|
|
3225
|
+
let(:plucked_translations) do
|
|
3226
|
+
Person.where(employer_id: 12345).pluck("pass.name_translations").first
|
|
3227
|
+
end
|
|
3228
|
+
|
|
3229
|
+
let(:plucked_translations_field) do
|
|
3230
|
+
Person.where(employer_id: 12345).pluck("pass.name_translations.en").first
|
|
3231
|
+
end
|
|
3232
|
+
|
|
3233
|
+
context "when legacy_pluck_distinct is set" do
|
|
3234
|
+
config_override :legacy_pluck_distinct, true
|
|
3235
|
+
|
|
3236
|
+
it "returns the full hash embedded" do
|
|
3237
|
+
expect(plucked).to eq({ "name" => { "en" => "Neil", "he" => "Nissim" } })
|
|
3238
|
+
end
|
|
3239
|
+
|
|
3240
|
+
it "returns the empty hash" do
|
|
3241
|
+
expect(plucked_translations).to eq({})
|
|
3242
|
+
end
|
|
3243
|
+
|
|
3244
|
+
it "returns the empty hash" do
|
|
3245
|
+
expect(plucked_translations_field).to eq({})
|
|
3246
|
+
end
|
|
3247
|
+
end
|
|
3248
|
+
|
|
3249
|
+
context "when legacy_pluck_distinct is not set" do
|
|
3250
|
+
config_override :legacy_pluck_distinct, false
|
|
3251
|
+
|
|
3252
|
+
it "returns the translation for the current locale" do
|
|
3253
|
+
expect(plucked).to eq("Nissim")
|
|
3254
|
+
end
|
|
3255
|
+
|
|
3256
|
+
it "returns the full _translation hash" do
|
|
3257
|
+
expect(plucked_translations).to eq({ "en" => "Neil", "he" => "Nissim" })
|
|
3258
|
+
end
|
|
3259
|
+
|
|
3260
|
+
it "returns the translation for the requested locale" do
|
|
3261
|
+
expect(plucked_translations_field).to eq("Neil")
|
|
3262
|
+
end
|
|
3263
|
+
end
|
|
3264
|
+
end
|
|
3265
|
+
end
|
|
3266
|
+
|
|
3267
|
+
context 'when plucking a field to be demongoized' do
|
|
3268
|
+
|
|
3269
|
+
let(:plucked) do
|
|
3270
|
+
Band.where(name: maniacs.name).pluck(:sales)
|
|
3271
|
+
end
|
|
3272
|
+
|
|
3273
|
+
context "when legacy_pluck_distinct is set" do
|
|
3274
|
+
config_override :legacy_pluck_distinct, true
|
|
3275
|
+
|
|
3276
|
+
it "does not demongoize the field" do
|
|
3277
|
+
expect(plucked.first).to be_a(String)
|
|
3278
|
+
expect(plucked.first).to eq("1E2")
|
|
3279
|
+
end
|
|
3280
|
+
end
|
|
3281
|
+
|
|
3282
|
+
context "when legacy_pluck_distinct is not set" do
|
|
3283
|
+
config_override :legacy_pluck_distinct, false
|
|
3284
|
+
|
|
3285
|
+
it "demongoizes the field" do
|
|
3286
|
+
expect(plucked.first).to be_a(BigDecimal)
|
|
3287
|
+
expect(plucked.first).to eq(BigDecimal("1E2"))
|
|
3288
|
+
end
|
|
3289
|
+
end
|
|
3290
|
+
end
|
|
3291
|
+
|
|
3292
|
+
context "when plucking an embedded field" do
|
|
3293
|
+
let(:label) { Label.new(sales: "1E2") }
|
|
3294
|
+
let!(:band) { Band.create!(label: label) }
|
|
3295
|
+
|
|
3296
|
+
let(:plucked) { Band.where(_id: band.id).pluck("label.sales") }
|
|
3297
|
+
|
|
3298
|
+
context "when legacy_pluck_distinct is set" do
|
|
3299
|
+
config_override :legacy_pluck_distinct, true
|
|
3300
|
+
|
|
3301
|
+
it "returns a hash with a non-demongoized field" do
|
|
3302
|
+
expect(plucked.first).to eq({ 'sales' => "1E2" })
|
|
3303
|
+
end
|
|
3304
|
+
end
|
|
3305
|
+
|
|
3306
|
+
context "when legacy_pluck_distinct is not set" do
|
|
3307
|
+
config_override :legacy_pluck_distinct, false
|
|
3308
|
+
|
|
3309
|
+
it "demongoizes the field" do
|
|
3310
|
+
expect(plucked.first).to eq(BigDecimal("1E2"))
|
|
3311
|
+
end
|
|
3312
|
+
end
|
|
3313
|
+
end
|
|
3314
|
+
|
|
3315
|
+
context "when plucking an embeds_many field" do
|
|
3316
|
+
let(:label) { Label.new(sales: "1E2") }
|
|
3317
|
+
let!(:band) { Band.create!(labels: [label]) }
|
|
3318
|
+
|
|
3319
|
+
let(:plucked) { Band.where(_id: band.id).pluck("labels.sales") }
|
|
3320
|
+
|
|
3321
|
+
context "when legacy_pluck_distinct is set" do
|
|
3322
|
+
config_override :legacy_pluck_distinct, true
|
|
3323
|
+
|
|
3324
|
+
it "returns a hash with a non-demongoized field" do
|
|
3325
|
+
expect(plucked.first).to eq([{ 'sales' => "1E2" }])
|
|
3326
|
+
end
|
|
3327
|
+
end
|
|
3328
|
+
|
|
3329
|
+
context "when legacy_pluck_distinct is not set" do
|
|
3330
|
+
config_override :legacy_pluck_distinct, false
|
|
3331
|
+
|
|
3332
|
+
it "demongoizes the field" do
|
|
3333
|
+
expect(plucked.first).to eq([BigDecimal("1E2")])
|
|
3334
|
+
end
|
|
3335
|
+
end
|
|
3336
|
+
end
|
|
3337
|
+
|
|
3338
|
+
context "when plucking a nonexistent embedded field" do
|
|
3339
|
+
let(:label) { Label.new(sales: "1E2") }
|
|
3340
|
+
let!(:band) { Band.create!(label: label) }
|
|
3341
|
+
|
|
3342
|
+
let(:plucked) { Band.where(_id: band.id).pluck("label.qwerty") }
|
|
3343
|
+
|
|
3344
|
+
context "when legacy_pluck_distinct is set" do
|
|
3345
|
+
config_override :legacy_pluck_distinct, true
|
|
3346
|
+
|
|
3347
|
+
it "returns an empty hash" do
|
|
3348
|
+
expect(plucked.first).to eq({})
|
|
3349
|
+
end
|
|
3350
|
+
end
|
|
3351
|
+
|
|
3352
|
+
context "when legacy_pluck_distinct is not set" do
|
|
3353
|
+
config_override :legacy_pluck_distinct, false
|
|
3354
|
+
|
|
3355
|
+
it "returns nil" do
|
|
3356
|
+
expect(plucked.first).to eq(nil)
|
|
3029
3357
|
end
|
|
3030
3358
|
end
|
|
3031
3359
|
end
|
|
@@ -3112,11 +3440,11 @@ describe Mongoid::Criteria do
|
|
|
3112
3440
|
describe "#sort" do
|
|
3113
3441
|
|
|
3114
3442
|
let!(:depeche) do
|
|
3115
|
-
Band.create(name: "Depeche Mode", likes: 1000)
|
|
3443
|
+
Band.create!(name: "Depeche Mode", likes: 1000)
|
|
3116
3444
|
end
|
|
3117
3445
|
|
|
3118
3446
|
let!(:tool) do
|
|
3119
|
-
Band.create(name: "Tool", likes: 500)
|
|
3447
|
+
Band.create!(name: "Tool", likes: 500)
|
|
3120
3448
|
end
|
|
3121
3449
|
|
|
3122
3450
|
let(:sorted) do
|
|
@@ -3135,11 +3463,11 @@ describe Mongoid::Criteria do
|
|
|
3135
3463
|
context "when provided a single field" do
|
|
3136
3464
|
|
|
3137
3465
|
let!(:depeche) do
|
|
3138
|
-
Band.create(name: "Depeche Mode", likes: 1000)
|
|
3466
|
+
Band.create!(name: "Depeche Mode", likes: 1000)
|
|
3139
3467
|
end
|
|
3140
3468
|
|
|
3141
3469
|
let!(:tool) do
|
|
3142
|
-
Band.create(name: "Tool", likes: 500)
|
|
3470
|
+
Band.create!(name: "Tool", likes: 500)
|
|
3143
3471
|
end
|
|
3144
3472
|
|
|
3145
3473
|
let(:criteria) do
|
|
@@ -3173,7 +3501,7 @@ describe Mongoid::Criteria do
|
|
|
3173
3501
|
describe "#to_ary" do
|
|
3174
3502
|
|
|
3175
3503
|
let!(:band) do
|
|
3176
|
-
Band.create(name: "Depeche Mode")
|
|
3504
|
+
Band.create!(name: "Depeche Mode")
|
|
3177
3505
|
end
|
|
3178
3506
|
|
|
3179
3507
|
let(:criteria) do
|
|
@@ -3189,11 +3517,11 @@ describe Mongoid::Criteria do
|
|
|
3189
3517
|
max_server_version '4.0'
|
|
3190
3518
|
|
|
3191
3519
|
let!(:band) do
|
|
3192
|
-
Band.create(name: "Depeche Mode")
|
|
3520
|
+
Band.create!(name: "Depeche Mode")
|
|
3193
3521
|
end
|
|
3194
3522
|
|
|
3195
3523
|
let!(:band2) do
|
|
3196
|
-
Band.create(name: "Tool")
|
|
3524
|
+
Band.create!(name: "Tool")
|
|
3197
3525
|
end
|
|
3198
3526
|
|
|
3199
3527
|
let(:criteria) do
|
|
@@ -3236,7 +3564,7 @@ describe Mongoid::Criteria do
|
|
|
3236
3564
|
context "when the type is a string" do
|
|
3237
3565
|
|
|
3238
3566
|
let!(:browser) do
|
|
3239
|
-
Browser.create
|
|
3567
|
+
Browser.create!
|
|
3240
3568
|
end
|
|
3241
3569
|
|
|
3242
3570
|
let(:criteria) do
|
|
@@ -3251,7 +3579,7 @@ describe Mongoid::Criteria do
|
|
|
3251
3579
|
context "when the type is an Array of type" do
|
|
3252
3580
|
|
|
3253
3581
|
let!(:browser) do
|
|
3254
|
-
Firefox.create
|
|
3582
|
+
Firefox.create!
|
|
3255
3583
|
end
|
|
3256
3584
|
|
|
3257
3585
|
let(:criteria) do
|
|
@@ -3276,7 +3604,7 @@ describe Mongoid::Criteria do
|
|
|
3276
3604
|
context "when the type is a string" do
|
|
3277
3605
|
|
|
3278
3606
|
let!(:browser) do
|
|
3279
|
-
Browser.create
|
|
3607
|
+
Browser.create!
|
|
3280
3608
|
end
|
|
3281
3609
|
|
|
3282
3610
|
let(:criteria) do
|
|
@@ -3291,7 +3619,7 @@ describe Mongoid::Criteria do
|
|
|
3291
3619
|
context "when the type is an Array of type" do
|
|
3292
3620
|
|
|
3293
3621
|
let!(:browser) do
|
|
3294
|
-
Firefox.create
|
|
3622
|
+
Firefox.create!
|
|
3295
3623
|
end
|
|
3296
3624
|
|
|
3297
3625
|
let(:criteria) do
|
|
@@ -3308,11 +3636,11 @@ describe Mongoid::Criteria do
|
|
|
3308
3636
|
describe "#where" do
|
|
3309
3637
|
|
|
3310
3638
|
let!(:match) do
|
|
3311
|
-
Band.create(name: "Depeche Mode")
|
|
3639
|
+
Band.create!(name: "Depeche Mode")
|
|
3312
3640
|
end
|
|
3313
3641
|
|
|
3314
3642
|
let!(:non_match) do
|
|
3315
|
-
Band.create(name: "Tool")
|
|
3643
|
+
Band.create!(name: "Tool")
|
|
3316
3644
|
end
|
|
3317
3645
|
|
|
3318
3646
|
context 'when provided no arguments' do
|
|
@@ -3409,7 +3737,7 @@ describe Mongoid::Criteria do
|
|
|
3409
3737
|
end
|
|
3410
3738
|
|
|
3411
3739
|
let!(:band) do
|
|
3412
|
-
Band.create(name: "Boards of Canada", sales: sales)
|
|
3740
|
+
Band.create!(name: "Boards of Canada", sales: sales)
|
|
3413
3741
|
end
|
|
3414
3742
|
|
|
3415
3743
|
let(:from_db) do
|
|
@@ -3429,7 +3757,7 @@ describe Mongoid::Criteria do
|
|
|
3429
3757
|
end
|
|
3430
3758
|
|
|
3431
3759
|
let!(:band) do
|
|
3432
|
-
Band.create(name: "Boards of Canada", decimal: decimal)
|
|
3760
|
+
Band.create!(name: "Boards of Canada", decimal: decimal)
|
|
3433
3761
|
end
|
|
3434
3762
|
|
|
3435
3763
|
let(:from_db) do
|
|
@@ -3444,7 +3772,7 @@ describe Mongoid::Criteria do
|
|
|
3444
3772
|
context 'when querying on a polymorphic relation' do
|
|
3445
3773
|
|
|
3446
3774
|
let(:movie) do
|
|
3447
|
-
Movie.create
|
|
3775
|
+
Movie.create!
|
|
3448
3776
|
end
|
|
3449
3777
|
|
|
3450
3778
|
let(:selector) do
|
|
@@ -3490,12 +3818,44 @@ describe Mongoid::Criteria do
|
|
|
3490
3818
|
'foo' => 1, '$and' => [{'foo' => 2}], 'bar' => 3)
|
|
3491
3819
|
end
|
|
3492
3820
|
end
|
|
3821
|
+
|
|
3822
|
+
context "when duplicating where conditions" do
|
|
3823
|
+
let(:criteria) { Sound.where(active: true).where(active: true) }
|
|
3824
|
+
|
|
3825
|
+
it 'does not duplicate criteria' do
|
|
3826
|
+
expect(criteria.selector).to eq('active' => true)
|
|
3827
|
+
end
|
|
3828
|
+
end
|
|
3829
|
+
|
|
3830
|
+
context "when duplicating where conditions with different values" do
|
|
3831
|
+
let(:criteria) { Sound.where(active: true).where(active: false).where(active: true).where(active: false) }
|
|
3832
|
+
|
|
3833
|
+
it 'does not duplicate criteria' do
|
|
3834
|
+
expect(criteria.selector).to eq(
|
|
3835
|
+
'active' => true, '$and' => [{'active' => false}])
|
|
3836
|
+
end
|
|
3837
|
+
end
|
|
3838
|
+
|
|
3839
|
+
# Used to test MONGOID-5251 where the find command was adding unnecessary
|
|
3840
|
+
# and clauses. Since the find command creates the criteria and executes it,
|
|
3841
|
+
# it is difficult to analyze the criteria used. For this reason, I have
|
|
3842
|
+
# extracted the crux of the issue, adding an _id to the the criteria twice,
|
|
3843
|
+
# and used that for the test case.
|
|
3844
|
+
context "when searching by _id twice" do
|
|
3845
|
+
let(:_id) { BSON::ObjectId.new }
|
|
3846
|
+
let(:criteria) { Band.where(_id: _id) }
|
|
3847
|
+
let(:dup_criteria) { criteria.where(_id: _id)}
|
|
3848
|
+
|
|
3849
|
+
it "does not duplicate the criteria" do
|
|
3850
|
+
expect(dup_criteria.selector).to eq({ "_id" => _id })
|
|
3851
|
+
end
|
|
3852
|
+
end
|
|
3493
3853
|
end
|
|
3494
3854
|
|
|
3495
3855
|
describe "#for_js" do
|
|
3496
3856
|
|
|
3497
3857
|
let!(:match) do
|
|
3498
|
-
Band.create(name: "Depeche Mode")
|
|
3858
|
+
Band.create!(name: "Depeche Mode")
|
|
3499
3859
|
end
|
|
3500
3860
|
|
|
3501
3861
|
context "when the code has no scope" do
|
|
@@ -3582,11 +3942,11 @@ describe Mongoid::Criteria do
|
|
|
3582
3942
|
describe "#uniq" do
|
|
3583
3943
|
|
|
3584
3944
|
let!(:band_one) do
|
|
3585
|
-
Band.create(name: "New Order")
|
|
3945
|
+
Band.create!(name: "New Order")
|
|
3586
3946
|
end
|
|
3587
3947
|
|
|
3588
3948
|
let!(:band_two) do
|
|
3589
|
-
Band.create(name: "New Order")
|
|
3949
|
+
Band.create!(name: "New Order")
|
|
3590
3950
|
end
|
|
3591
3951
|
|
|
3592
3952
|
let(:criteria) do
|
|
@@ -3635,7 +3995,7 @@ describe Mongoid::Criteria do
|
|
|
3635
3995
|
end
|
|
3636
3996
|
|
|
3637
3997
|
let!(:match) do
|
|
3638
|
-
Bar.create(location: [ 52.30, 13.25 ])
|
|
3998
|
+
Bar.create!(location: [ 52.30, 13.25 ])
|
|
3639
3999
|
end
|
|
3640
4000
|
|
|
3641
4001
|
let(:criteria) do
|
|
@@ -3653,11 +4013,11 @@ describe Mongoid::Criteria do
|
|
|
3653
4013
|
describe "#with_size" do
|
|
3654
4014
|
|
|
3655
4015
|
let!(:match) do
|
|
3656
|
-
Band.create(genres: [ "electro", "dub" ])
|
|
4016
|
+
Band.create!(genres: [ "electro", "dub" ])
|
|
3657
4017
|
end
|
|
3658
4018
|
|
|
3659
4019
|
let!(:non_match) do
|
|
3660
|
-
Band.create(genres: [ "house" ])
|
|
4020
|
+
Band.create!(genres: [ "house" ])
|
|
3661
4021
|
end
|
|
3662
4022
|
|
|
3663
4023
|
let(:criteria) do
|
|
@@ -3672,7 +4032,7 @@ describe Mongoid::Criteria do
|
|
|
3672
4032
|
describe "#with_type" do
|
|
3673
4033
|
|
|
3674
4034
|
let!(:match) do
|
|
3675
|
-
Band.create(name: "Depeche Mode")
|
|
4035
|
+
Band.create!(name: "Depeche Mode")
|
|
3676
4036
|
end
|
|
3677
4037
|
|
|
3678
4038
|
let(:criteria) do
|