mongoid 7.4.0 → 8.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +3 -3
- data/lib/config/locales/en.yml +52 -28
- data/lib/mongoid/association/accessors.rb +38 -9
- data/lib/mongoid/association/bindable.rb +50 -2
- data/lib/mongoid/association/builders.rb +4 -2
- data/lib/mongoid/association/constrainable.rb +0 -1
- data/lib/mongoid/association/eager_loadable.rb +29 -7
- data/lib/mongoid/association/embedded/batchable.rb +53 -13
- data/lib/mongoid/association/embedded/cyclic.rb +1 -1
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +50 -28
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +18 -4
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +23 -4
- data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
- data/lib/mongoid/association/macros.rb +22 -1
- data/lib/mongoid/association/many.rb +11 -7
- data/lib/mongoid/association/nested/many.rb +5 -4
- data/lib/mongoid/association/nested/nested_buildable.rb +4 -4
- data/lib/mongoid/association/nested/one.rb +5 -5
- data/lib/mongoid/association/one.rb +2 -2
- data/lib/mongoid/association/options.rb +9 -9
- data/lib/mongoid/association/proxy.rb +14 -3
- data/lib/mongoid/association/referenced/auto_save.rb +4 -3
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +5 -6
- data/lib/mongoid/association/referenced/belongs_to.rb +2 -2
- data/lib/mongoid/association/referenced/counter_cache.rb +10 -10
- data/lib/mongoid/association/referenced/eager.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +66 -13
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +20 -24
- data/lib/mongoid/association/referenced/has_many/proxy.rb +24 -18
- data/lib/mongoid/association/referenced/has_many.rb +3 -3
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +5 -5
- data/lib/mongoid/association/referenced/has_one/proxy.rb +9 -12
- data/lib/mongoid/association/referenced/has_one.rb +3 -3
- data/lib/mongoid/association/referenced/syncable.rb +4 -4
- data/lib/mongoid/association/reflections.rb +2 -2
- data/lib/mongoid/association/relatable.rb +44 -10
- data/lib/mongoid/association.rb +5 -5
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic/paths/embedded/many.rb +19 -0
- data/lib/mongoid/attributes/dynamic.rb +3 -3
- data/lib/mongoid/attributes/nested.rb +5 -5
- data/lib/mongoid/attributes/processing.rb +10 -3
- data/lib/mongoid/attributes/projector.rb +1 -1
- data/lib/mongoid/attributes/readonly.rb +2 -2
- data/lib/mongoid/attributes.rb +43 -40
- data/lib/mongoid/cacheable.rb +2 -2
- data/lib/mongoid/changeable.rb +42 -7
- data/lib/mongoid/clients/options.rb +5 -1
- data/lib/mongoid/clients/sessions.rb +2 -14
- data/lib/mongoid/clients/validators/storage.rb +3 -3
- data/lib/mongoid/config/environment.rb +20 -4
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config.rb +32 -17
- data/lib/mongoid/contextual/aggregable/memory.rb +24 -16
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -5
- data/lib/mongoid/contextual/aggregable/none.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +7 -7
- data/lib/mongoid/contextual/map_reduce.rb +2 -2
- data/lib/mongoid/contextual/memory.rb +180 -21
- data/lib/mongoid/contextual/mongo.rb +237 -217
- data/lib/mongoid/contextual/none.rb +67 -5
- data/lib/mongoid/contextual/queryable.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -2
- data/lib/mongoid/copyable.rb +32 -8
- data/lib/mongoid/criteria/findable.rb +7 -4
- data/lib/mongoid/criteria/includable.rb +24 -20
- data/lib/mongoid/criteria/marshalable.rb +10 -2
- data/lib/mongoid/criteria/permission.rb +1 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/array.rb +2 -13
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/set.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -2
- data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
- data/lib/mongoid/criteria/queryable/key.rb +3 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +21 -0
- data/lib/mongoid/criteria/queryable/optional.rb +5 -11
- data/lib/mongoid/criteria/queryable/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/pipeline.rb +1 -1
- data/lib/mongoid/criteria/queryable/selectable.rb +31 -37
- data/lib/mongoid/criteria/queryable/selector.rb +92 -7
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable.rb +12 -7
- data/lib/mongoid/criteria/scopable.rb +2 -2
- data/lib/mongoid/criteria.rb +15 -35
- data/lib/mongoid/deprecable.rb +36 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +98 -34
- data/lib/mongoid/equality.rb +12 -12
- data/lib/mongoid/errors/document_not_found.rb +33 -12
- data/lib/mongoid/errors/invalid_config_option.rb +1 -1
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -1
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
- data/lib/mongoid/errors/invalid_field.rb +6 -2
- data/lib/mongoid/errors/invalid_field_type.rb +26 -0
- data/lib/mongoid/errors/invalid_relation.rb +1 -1
- data/lib/mongoid/errors/invalid_relation_option.rb +1 -1
- data/lib/mongoid/errors/invalid_session_use.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/mongoid_error.rb +3 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -1
- data/lib/mongoid/errors/no_client_database.rb +1 -1
- data/lib/mongoid/errors/no_client_hosts.rb +1 -1
- data/lib/mongoid/errors/readonly_attribute.rb +1 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
- data/lib/mongoid/errors/unknown_attribute.rb +1 -1
- data/lib/mongoid/errors.rb +2 -2
- data/lib/mongoid/extensions/array.rb +9 -7
- data/lib/mongoid/extensions/big_decimal.rb +33 -10
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +8 -2
- data/lib/mongoid/extensions/date.rb +26 -20
- data/lib/mongoid/extensions/date_time.rb +1 -1
- data/lib/mongoid/extensions/false_class.rb +1 -1
- data/lib/mongoid/extensions/float.rb +7 -4
- data/lib/mongoid/extensions/hash.rb +13 -6
- data/lib/mongoid/extensions/integer.rb +7 -4
- data/lib/mongoid/extensions/module.rb +1 -1
- data/lib/mongoid/extensions/object.rb +8 -6
- data/lib/mongoid/extensions/range.rb +41 -10
- data/lib/mongoid/extensions/regexp.rb +11 -4
- data/lib/mongoid/extensions/set.rb +11 -4
- data/lib/mongoid/extensions/string.rb +11 -22
- data/lib/mongoid/extensions/symbol.rb +4 -15
- data/lib/mongoid/extensions/time.rb +27 -16
- data/lib/mongoid/extensions/time_with_zone.rb +1 -2
- data/lib/mongoid/extensions/true_class.rb +1 -1
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +42 -7
- data/lib/mongoid/fields/foreign_key.rb +11 -4
- data/lib/mongoid/fields/localized.rb +9 -4
- data/lib/mongoid/fields/standard.rb +7 -7
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +201 -35
- data/lib/mongoid/findable.rb +34 -13
- data/lib/mongoid/indexable/specification.rb +2 -2
- data/lib/mongoid/indexable/validators/options.rb +6 -2
- data/lib/mongoid/interceptable.rb +73 -13
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher.rb +12 -7
- data/lib/mongoid/persistable/creatable.rb +18 -9
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistable/destroyable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +2 -2
- data/lib/mongoid/persistable/unsettable.rb +1 -1
- data/lib/mongoid/persistable/updatable.rb +19 -12
- data/lib/mongoid/persistable/upsertable.rb +2 -2
- data/lib/mongoid/persistable.rb +3 -3
- data/lib/mongoid/persistence_context.rb +63 -10
- data/lib/mongoid/query_cache.rb +8 -260
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/reloadable.rb +7 -3
- data/lib/mongoid/scopable.rb +26 -22
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +10 -6
- data/lib/mongoid/stateful.rb +35 -9
- data/lib/mongoid/tasks/database.rb +0 -2
- data/lib/mongoid/threaded/lifecycle.rb +5 -5
- data/lib/mongoid/threaded.rb +12 -12
- data/lib/mongoid/timestamps/created.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +2 -3
- data/lib/mongoid/traversable.rb +8 -4
- data/lib/mongoid/validatable/localizable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +0 -2
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +9 -8
- data/lib/mongoid/validatable.rb +6 -6
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +28 -0
- data/lib/mongoid.rb +2 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +11 -5
- data/spec/config/mongoid.yml +16 -0
- data/spec/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/app_spec.rb +28 -26
- data/spec/integration/associations/belongs_to_spec.rb +18 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +28 -0
- data/spec/integration/associations/embedded_spec.rb +15 -0
- data/spec/integration/associations/embeds_many_spec.rb +15 -2
- data/spec/integration/associations/embeds_one_spec.rb +18 -0
- data/spec/integration/associations/foreign_key_spec.rb +9 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
- data/spec/integration/associations/has_one_spec.rb +97 -1
- data/spec/integration/associations/scope_option_spec.rb +1 -1
- data/spec/integration/callbacks_models.rb +95 -1
- data/spec/integration/callbacks_spec.rb +226 -4
- data/spec/integration/criteria/range_spec.rb +95 -1
- data/spec/integration/discriminator_key_spec.rb +115 -76
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +1 -17
- data/spec/integration/matcher_examples_spec.rb +20 -13
- data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
- data/spec/integration/matcher_operator_spec.rb +3 -5
- data/spec/integration/persistence/range_field_spec.rb +350 -0
- data/spec/lite_spec_helper.rb +1 -1
- data/spec/mongoid/association/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +9 -9
- data/spec/mongoid/association/eager_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +69 -9
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +219 -8
- data/spec/mongoid/association/embedded/embeds_many_models.rb +157 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +12 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +15 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +67 -4
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +8 -8
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +82 -13
- data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
- data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
- data/spec/mongoid/association/syncable_spec.rb +14 -0
- data/spec/mongoid/atomic/paths_spec.rb +0 -14
- data/spec/mongoid/atomic_spec.rb +22 -0
- data/spec/mongoid/attributes/nested_spec.rb +80 -11
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
- data/spec/mongoid/attributes/projector_spec.rb +1 -5
- data/spec/mongoid/attributes_spec.rb +524 -27
- data/spec/mongoid/cacheable_spec.rb +3 -3
- data/spec/mongoid/changeable_spec.rb +130 -13
- data/spec/mongoid/clients/factory_spec.rb +34 -42
- data/spec/mongoid/clients/options_spec.rb +1 -0
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +57 -2
- data/spec/mongoid/config/environment_spec.rb +39 -1
- data/spec/mongoid/config_spec.rb +104 -13
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
- data/spec/mongoid/contextual/memory_spec.rb +1336 -69
- data/spec/mongoid/contextual/mongo_spec.rb +1105 -174
- data/spec/mongoid/contextual/none_spec.rb +38 -0
- data/spec/mongoid/copyable_spec.rb +451 -1
- data/spec/mongoid/criteria/findable_spec.rb +86 -210
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +0 -484
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +50 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +289 -124
- data/spec/mongoid/criteria/queryable/selector_spec.rb +14 -2
- data/spec/mongoid/criteria_projection_spec.rb +0 -1
- data/spec/mongoid/criteria_spec.rb +475 -1199
- data/spec/mongoid/document_fields_spec.rb +173 -24
- data/spec/mongoid/document_spec.rb +32 -41
- data/spec/mongoid/equality_spec.rb +12 -12
- data/spec/mongoid/errors/document_not_found_spec.rb +76 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
- data/spec/mongoid/extensions/array_spec.rb +16 -2
- data/spec/mongoid/extensions/big_decimal_spec.rb +712 -212
- data/spec/mongoid/extensions/binary_spec.rb +44 -9
- data/spec/mongoid/extensions/boolean_spec.rb +68 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
- data/spec/mongoid/extensions/date_spec.rb +71 -1
- data/spec/mongoid/extensions/date_time_spec.rb +15 -9
- data/spec/mongoid/extensions/float_spec.rb +53 -74
- data/spec/mongoid/extensions/hash_spec.rb +30 -0
- data/spec/mongoid/extensions/integer_spec.rb +50 -64
- data/spec/mongoid/extensions/range_spec.rb +255 -54
- data/spec/mongoid/extensions/regexp_spec.rb +58 -33
- data/spec/mongoid/extensions/set_spec.rb +106 -0
- data/spec/mongoid/extensions/string_spec.rb +53 -25
- data/spec/mongoid/extensions/symbol_spec.rb +18 -25
- data/spec/mongoid/extensions/time_spec.rb +634 -66
- data/spec/mongoid/extensions/time_with_zone_spec.rb +17 -31
- data/spec/mongoid/factory_spec.rb +61 -1
- data/spec/mongoid/fields/localized_spec.rb +37 -12
- data/spec/mongoid/fields_spec.rb +321 -50
- data/spec/mongoid/findable_spec.rb +80 -15
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +39 -20
- data/spec/mongoid/interceptable_spec.rb +584 -5
- data/spec/mongoid/interceptable_spec_models.rb +235 -4
- data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +2 -2
- data/spec/mongoid/persistable/deletable_spec.rb +2 -2
- data/spec/mongoid/persistable/destroyable_spec.rb +2 -2
- data/spec/mongoid/persistable/upsertable_spec.rb +14 -0
- data/spec/mongoid/persistence_context_spec.rb +50 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
- data/spec/mongoid/query_cache_spec.rb +0 -154
- data/spec/mongoid/reloadable_spec.rb +35 -2
- data/spec/mongoid/scopable_spec.rb +54 -16
- data/spec/mongoid/shardable_spec.rb +14 -0
- data/spec/mongoid/stateful_spec.rb +28 -0
- data/spec/mongoid/timestamps_spec.rb +390 -0
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +116 -0
- data/spec/mongoid/touchable_spec_models.rb +12 -8
- data/spec/mongoid/traversable_spec.rb +4 -11
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +59 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/constraints.rb +8 -16
- data/spec/shared/lib/mrss/docker_runner.rb +23 -3
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +32 -1
- data/spec/shared/share/Dockerfile.erb +34 -48
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/server.sh +32 -19
- data/spec/shared/shlib/set_env.sh +37 -0
- data/spec/support/constraints.rb +24 -0
- data/spec/support/macros.rb +55 -0
- data/spec/support/models/augmentation.rb +12 -0
- data/spec/support/models/band.rb +3 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/circus.rb +3 -0
- data/spec/support/models/code.rb +2 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/support/models/implant.rb +9 -0
- data/spec/support/models/label.rb +2 -0
- data/spec/support/models/membership.rb +1 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +1 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/registry.rb +1 -0
- data/spec/support/models/school.rb +14 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/support/models/weapon.rb +12 -0
- data/spec/support/schema_maps/schema_map_aws.json +17 -0
- data/spec/support/schema_maps/schema_map_aws_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_azure.json +17 -0
- data/spec/support/schema_maps/schema_map_azure_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_gcp.json +17 -0
- data/spec/support/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_kmip.json +17 -0
- data/spec/support/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_local.json +18 -0
- data/spec/support/schema_maps/schema_map_local_key_alt_names.json +12 -0
- data/spec/support/spec_config.rb +4 -0
- data.tar.gz.sig +0 -0
- metadata +682 -619
- metadata.gz.sig +0 -0
- data/lib/mongoid/errors/eager_load.rb +0 -23
- data/lib/mongoid/errors/invalid_value.rb +0 -17
- data/spec/mongoid/errors/eager_load_spec.rb +0 -31
@@ -479,10 +479,24 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
479
479
|
query.elem_match(users: { name: "value" })
|
480
480
|
end
|
481
481
|
|
482
|
-
|
483
|
-
|
484
|
-
|
485
|
-
|
482
|
+
context "when overwrite_chained_operators is false" do
|
483
|
+
config_override :overwrite_chained_operators, false
|
484
|
+
|
485
|
+
it "adds the $elemMatch expression" do
|
486
|
+
expect(selection.selector).to eq({
|
487
|
+
"users" => { "$elemMatch" => { "name" => "value" }}
|
488
|
+
})
|
489
|
+
end
|
490
|
+
end
|
491
|
+
|
492
|
+
context "when overwrite_chained_operators is true" do
|
493
|
+
config_override :overwrite_chained_operators, true
|
494
|
+
|
495
|
+
it "adds the $elemMatch expression" do
|
496
|
+
expect(selection.selector).to eq({
|
497
|
+
"users" => { "$elemMatch" => { name: "value" }}
|
498
|
+
})
|
499
|
+
end
|
486
500
|
end
|
487
501
|
|
488
502
|
it "returns a cloned query" do
|
@@ -523,11 +537,26 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
523
537
|
)
|
524
538
|
end
|
525
539
|
|
526
|
-
|
527
|
-
|
528
|
-
|
529
|
-
|
530
|
-
|
540
|
+
context "when overwrite_chained_operators is false" do
|
541
|
+
config_override :overwrite_chained_operators, false
|
542
|
+
|
543
|
+
it "adds the $elemMatch expression" do
|
544
|
+
expect(selection.selector).to eq({
|
545
|
+
"users" => { "$elemMatch" => { "name" => "value" }},
|
546
|
+
"comments" => { "$elemMatch" => { "text" => "value" }}
|
547
|
+
})
|
548
|
+
end
|
549
|
+
end
|
550
|
+
|
551
|
+
context "when overwrite_chained_operators is true" do
|
552
|
+
config_override :overwrite_chained_operators, true
|
553
|
+
|
554
|
+
it "adds the $elemMatch expression" do
|
555
|
+
expect(selection.selector).to eq({
|
556
|
+
"users" => { "$elemMatch" => { name: "value" }},
|
557
|
+
"comments" => { "$elemMatch" => { text: "value" }}
|
558
|
+
})
|
559
|
+
end
|
531
560
|
end
|
532
561
|
|
533
562
|
it "returns a cloned query" do
|
@@ -546,11 +575,26 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
546
575
|
elem_match(comments: { text: "value" })
|
547
576
|
end
|
548
577
|
|
549
|
-
|
550
|
-
|
551
|
-
|
552
|
-
|
553
|
-
|
578
|
+
context "when overwrite_chained_operators is false" do
|
579
|
+
config_override :overwrite_chained_operators, false
|
580
|
+
|
581
|
+
it "adds the $elemMatch expression" do
|
582
|
+
expect(selection.selector).to eq({
|
583
|
+
"users" => { "$elemMatch" => { "name" => "value" }},
|
584
|
+
"comments" => { "$elemMatch" => { "text" => "value" }}
|
585
|
+
})
|
586
|
+
end
|
587
|
+
end
|
588
|
+
|
589
|
+
context "when overwrite_chained_operators is true" do
|
590
|
+
config_override :overwrite_chained_operators, true
|
591
|
+
|
592
|
+
it "adds the $elemMatch expression" do
|
593
|
+
expect(selection.selector).to eq({
|
594
|
+
"users" => { "$elemMatch" => { name: "value" }},
|
595
|
+
"comments" => { "$elemMatch" => { text: "value" }}
|
596
|
+
})
|
597
|
+
end
|
554
598
|
end
|
555
599
|
|
556
600
|
it "returns a cloned query" do
|
@@ -566,10 +610,25 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
566
610
|
elem_match(users: { state: "new" })
|
567
611
|
end
|
568
612
|
|
569
|
-
|
570
|
-
|
571
|
-
|
572
|
-
|
613
|
+
context "when overwrite_chained_operators is false" do
|
614
|
+
config_override :overwrite_chained_operators, false
|
615
|
+
|
616
|
+
it "adds an $elemMatch expression" do
|
617
|
+
expect(selection.selector).to eq({
|
618
|
+
"users" => { "$elemMatch" => { "name" => "value" } },
|
619
|
+
"$and" => [ { "users" => { "$elemMatch" => { "state" => "new" } } } ],
|
620
|
+
})
|
621
|
+
end
|
622
|
+
end
|
623
|
+
|
624
|
+
context "when overwrite_chained_operators is true" do
|
625
|
+
config_override :overwrite_chained_operators, true
|
626
|
+
|
627
|
+
it "overrides the $elemMatch expression" do
|
628
|
+
expect(selection.selector).to eq({
|
629
|
+
"users" => { "$elemMatch" => { state: "new" }}
|
630
|
+
})
|
631
|
+
end
|
573
632
|
end
|
574
633
|
|
575
634
|
it "returns a cloned query" do
|
@@ -695,127 +754,119 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
695
754
|
end
|
696
755
|
end
|
697
756
|
|
698
|
-
|
699
|
-
describe "#geo_spacial" do
|
757
|
+
describe "#geo_spatial" do
|
700
758
|
|
701
|
-
|
759
|
+
let(:query_method) { :geo_spatial }
|
702
760
|
|
703
|
-
|
704
|
-
|
761
|
+
it_behaves_like 'requires an argument'
|
762
|
+
it_behaves_like 'requires a non-nil argument'
|
705
763
|
|
706
|
-
|
764
|
+
context "when provided a criterion" do
|
707
765
|
|
708
|
-
|
766
|
+
context "when the geometry is a point intersection" do
|
709
767
|
|
710
|
-
|
711
|
-
|
712
|
-
|
768
|
+
let(:selection) do
|
769
|
+
query.geo_spatial(:location.intersects_point => [ 1, 10 ])
|
770
|
+
end
|
713
771
|
|
714
|
-
|
715
|
-
|
716
|
-
|
717
|
-
|
718
|
-
|
719
|
-
|
720
|
-
|
721
|
-
}
|
772
|
+
it "adds the $geoIntersects expression" do
|
773
|
+
expect(selection.selector).to eq({
|
774
|
+
"location" => {
|
775
|
+
"$geoIntersects" => {
|
776
|
+
"$geometry" => {
|
777
|
+
"type" => "Point",
|
778
|
+
"coordinates" => [ 1, 10 ]
|
722
779
|
}
|
723
780
|
}
|
724
|
-
}
|
725
|
-
|
726
|
-
|
727
|
-
it_behaves_like "returns a cloned query"
|
781
|
+
}
|
782
|
+
})
|
728
783
|
end
|
729
784
|
|
730
|
-
|
785
|
+
it_behaves_like "returns a cloned query"
|
786
|
+
end
|
731
787
|
|
732
|
-
|
733
|
-
query.public_send(query_method, :location.intersects_line => [[ 1, 10 ], [ 2, 10 ]])
|
734
|
-
end
|
788
|
+
context "when the geometry is a line intersection" do
|
735
789
|
|
736
|
-
|
737
|
-
|
738
|
-
|
739
|
-
|
740
|
-
|
741
|
-
|
742
|
-
|
743
|
-
|
790
|
+
let(:selection) do
|
791
|
+
query.geo_spatial(:location.intersects_line => [[ 1, 10 ], [ 2, 10 ]])
|
792
|
+
end
|
793
|
+
|
794
|
+
it "adds the $geoIntersects expression" do
|
795
|
+
expect(selection.selector).to eq({
|
796
|
+
"location" => {
|
797
|
+
"$geoIntersects" => {
|
798
|
+
"$geometry" => {
|
799
|
+
"type" => "LineString",
|
800
|
+
"coordinates" => [[ 1, 10 ], [ 2, 10 ]]
|
744
801
|
}
|
745
802
|
}
|
746
|
-
}
|
747
|
-
|
748
|
-
|
749
|
-
it_behaves_like "returns a cloned query"
|
803
|
+
}
|
804
|
+
})
|
750
805
|
end
|
751
806
|
|
752
|
-
|
807
|
+
it_behaves_like "returns a cloned query"
|
808
|
+
end
|
753
809
|
|
754
|
-
|
755
|
-
query.public_send(query_method,
|
756
|
-
:location.intersects_polygon => [[[ 1, 10 ], [ 2, 10 ], [ 1, 10 ]]]
|
757
|
-
)
|
758
|
-
end
|
810
|
+
context "when the geometry is a polygon intersection" do
|
759
811
|
|
760
|
-
|
761
|
-
|
762
|
-
|
763
|
-
|
764
|
-
|
765
|
-
|
766
|
-
|
767
|
-
|
812
|
+
let(:selection) do
|
813
|
+
query.geo_spatial(:location.intersects_polygon => [[[ 1, 10 ], [ 2, 10 ], [ 1, 10 ]]])
|
814
|
+
end
|
815
|
+
|
816
|
+
it "adds the $geoIntersects expression" do
|
817
|
+
expect(selection.selector).to eq({
|
818
|
+
"location" => {
|
819
|
+
"$geoIntersects" => {
|
820
|
+
"$geometry" => {
|
821
|
+
"type" => "Polygon",
|
822
|
+
"coordinates" => [[[ 1, 10 ], [ 2, 10 ], [ 1, 10 ]]]
|
768
823
|
}
|
769
824
|
}
|
770
|
-
}
|
771
|
-
|
825
|
+
}
|
826
|
+
})
|
827
|
+
end
|
828
|
+
|
829
|
+
it_behaves_like "returns a cloned query"
|
830
|
+
end
|
831
|
+
|
832
|
+
context "when the geometry is within a polygon" do
|
772
833
|
|
773
|
-
|
834
|
+
let(:selection) do
|
835
|
+
query.geo_spatial(:location.within_polygon => [[[ 1, 10 ], [ 2, 10 ], [ 1, 10 ]]])
|
774
836
|
end
|
775
837
|
|
776
|
-
|
838
|
+
it "adds the $geoIntersects expression" do
|
839
|
+
expect(selection.selector).to eq({
|
840
|
+
"location" => {
|
841
|
+
"$geoWithin" => {
|
842
|
+
"$geometry" => {
|
843
|
+
"type" => "Polygon",
|
844
|
+
"coordinates" => [[[ 1, 10 ], [ 2, 10 ], [ 1, 10 ]]]
|
845
|
+
}
|
846
|
+
}
|
847
|
+
}
|
848
|
+
})
|
849
|
+
end
|
777
850
|
|
851
|
+
context "when used with the $box operator ($geoWithin query) " do
|
778
852
|
let(:selection) do
|
779
|
-
query.
|
780
|
-
:location.within_polygon => [[[ 1, 10 ], [ 2, 10 ], [ 1, 10 ]]]
|
781
|
-
)
|
853
|
+
query.geo_spatial(:location.within_box => [[ 1, 10 ], [ 2, 10 ]])
|
782
854
|
end
|
783
855
|
|
784
856
|
it "adds the $geoIntersects expression" do
|
785
857
|
expect(selection.selector).to eq({
|
786
858
|
"location" => {
|
787
859
|
"$geoWithin" => {
|
788
|
-
"$
|
789
|
-
|
790
|
-
|
791
|
-
}
|
860
|
+
"$box" => [
|
861
|
+
[ 1, 10 ], [ 2, 10 ]
|
862
|
+
]
|
792
863
|
}
|
793
864
|
}
|
794
865
|
})
|
795
866
|
end
|
796
|
-
|
797
|
-
context "when used with the $box operator ($geoWithin query) " do
|
798
|
-
let(:selection) do
|
799
|
-
query.public_send(query_method,
|
800
|
-
:location.within_box => [[ 1, 10 ], [ 2, 10 ]]
|
801
|
-
)
|
802
|
-
end
|
803
|
-
|
804
|
-
it "adds the $geoIntersects expression" do
|
805
|
-
expect(selection.selector).to eq({
|
806
|
-
"location" => {
|
807
|
-
"$geoWithin" => {
|
808
|
-
"$box" => [
|
809
|
-
[ 1, 10 ], [ 2, 10 ]
|
810
|
-
]
|
811
|
-
}
|
812
|
-
}
|
813
|
-
})
|
814
|
-
end
|
815
|
-
end
|
816
|
-
|
817
|
-
it_behaves_like "returns a cloned query"
|
818
867
|
end
|
868
|
+
|
869
|
+
it_behaves_like "returns a cloned query"
|
819
870
|
end
|
820
871
|
end
|
821
872
|
end
|
@@ -887,18 +938,40 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
887
938
|
|
888
939
|
context "when the criterion are on the same field" do
|
889
940
|
|
890
|
-
|
891
|
-
|
892
|
-
end
|
941
|
+
context "when overwrite_chained_operators is true" do
|
942
|
+
config_override :overwrite_chained_operators, true
|
893
943
|
|
894
|
-
|
895
|
-
|
896
|
-
|
897
|
-
|
944
|
+
let(:selection) do
|
945
|
+
query.gt(first: 10).gt(first: 15)
|
946
|
+
end
|
947
|
+
|
948
|
+
it "overwrites the first $gt selector" do
|
949
|
+
expect(selection.selector).to eq({
|
950
|
+
"first" => { "$gt" => 15 },
|
951
|
+
})
|
952
|
+
end
|
953
|
+
|
954
|
+
it "returns a cloned query" do
|
955
|
+
expect(selection).to_not equal(query)
|
956
|
+
end
|
898
957
|
end
|
899
958
|
|
900
|
-
|
901
|
-
|
959
|
+
context "when overwrite_chained_operators is false" do
|
960
|
+
config_override :overwrite_chained_operators, false
|
961
|
+
let(:selection) do
|
962
|
+
query.gt(first: 10).gt(first: 15)
|
963
|
+
end
|
964
|
+
|
965
|
+
it "overwrites the first $gt selector" do
|
966
|
+
expect(selection.selector).to eq({
|
967
|
+
"first" => { "$gt" => 10 },
|
968
|
+
"$and" => [{ "first" => { "$gt" => 15 } }]
|
969
|
+
})
|
970
|
+
end
|
971
|
+
|
972
|
+
it "returns a cloned query" do
|
973
|
+
expect(selection).to_not equal(query)
|
974
|
+
end
|
902
975
|
end
|
903
976
|
end
|
904
977
|
end
|
@@ -975,10 +1048,25 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
975
1048
|
query.gte(first: 10).gte(first: 15)
|
976
1049
|
end
|
977
1050
|
|
978
|
-
|
979
|
-
|
980
|
-
|
981
|
-
|
1051
|
+
context "when overwrite_chained_operators is false" do
|
1052
|
+
config_override :overwrite_chained_operators, false
|
1053
|
+
|
1054
|
+
it "adds a second $gte selector" do
|
1055
|
+
expect(selection.selector).to eq({
|
1056
|
+
"first" => { "$gte" => 10 },
|
1057
|
+
"$and" => [ { "first" => { "$gte" => 15 } } ]
|
1058
|
+
})
|
1059
|
+
end
|
1060
|
+
end
|
1061
|
+
|
1062
|
+
context "when overwrite_chained_operators is true" do
|
1063
|
+
config_override :overwrite_chained_operators, true
|
1064
|
+
|
1065
|
+
it "overwrites the first $gte selector" do
|
1066
|
+
expect(selection.selector).to eq({
|
1067
|
+
"first" => { "$gte" => 15 }
|
1068
|
+
})
|
1069
|
+
end
|
982
1070
|
end
|
983
1071
|
|
984
1072
|
it "returns a cloned query" do
|
@@ -1152,10 +1240,25 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
1152
1240
|
query.lt(first: 10).lt(first: 15)
|
1153
1241
|
end
|
1154
1242
|
|
1155
|
-
|
1156
|
-
|
1157
|
-
|
1158
|
-
|
1243
|
+
context "when overwrite_chained_operators is false" do
|
1244
|
+
config_override :overwrite_chained_operators, false
|
1245
|
+
|
1246
|
+
it "adds a second $lt selector" do
|
1247
|
+
expect(selection.selector).to eq({
|
1248
|
+
"first" => { "$lt" => 10 },
|
1249
|
+
"$and" => [ { "first" => { "$lt" => 15 } } ]
|
1250
|
+
})
|
1251
|
+
end
|
1252
|
+
end
|
1253
|
+
|
1254
|
+
context "when overwrite_chained_operators is true" do
|
1255
|
+
config_override :overwrite_chained_operators, true
|
1256
|
+
|
1257
|
+
it "overwrites the first $lt selector" do
|
1258
|
+
expect(selection.selector).to eq({
|
1259
|
+
"first" => { "$lt" => 15 }
|
1260
|
+
})
|
1261
|
+
end
|
1159
1262
|
end
|
1160
1263
|
|
1161
1264
|
it "returns a cloned query" do
|
@@ -1236,10 +1339,25 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
1236
1339
|
query.lte(first: 10).lte(first: 15)
|
1237
1340
|
end
|
1238
1341
|
|
1239
|
-
|
1240
|
-
|
1241
|
-
|
1242
|
-
|
1342
|
+
context "when overwrite_chained_operators is false" do
|
1343
|
+
config_override :overwrite_chained_operators, false
|
1344
|
+
|
1345
|
+
it "adds a second $lte selector" do
|
1346
|
+
expect(selection.selector).to eq({
|
1347
|
+
"first" => { "$lte" => 10 },
|
1348
|
+
"$and" => [ { "first" => { "$lte" => 15 } } ]
|
1349
|
+
})
|
1350
|
+
end
|
1351
|
+
end
|
1352
|
+
|
1353
|
+
context "when overwrite_chained_operators is true" do
|
1354
|
+
config_override :overwrite_chained_operators, true
|
1355
|
+
|
1356
|
+
it "overwrites the first $lte selector" do
|
1357
|
+
expect(selection.selector).to eq({
|
1358
|
+
"first" => { "$lte" => 15 }
|
1359
|
+
})
|
1360
|
+
end
|
1243
1361
|
end
|
1244
1362
|
|
1245
1363
|
it "returns a cloned query" do
|
@@ -2294,4 +2412,51 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
2294
2412
|
end
|
2295
2413
|
end
|
2296
2414
|
end
|
2415
|
+
|
2416
|
+
describe "Mongoid.overwrite_chained_operators" do
|
2417
|
+
[ :eq, :elem_match, :gt, :gte, :lt, :lte, :mod, :ne, :near, :near_sphere ].each do |meth|
|
2418
|
+
|
2419
|
+
context "when chaining the #{meth} method when using the same field" do
|
2420
|
+
let(:op) do
|
2421
|
+
{
|
2422
|
+
eq: "$eq",
|
2423
|
+
elem_match: "$elemMatch",
|
2424
|
+
gt: "$gt",
|
2425
|
+
gte: "$gte",
|
2426
|
+
lt: "$lt",
|
2427
|
+
lte: "$lte",
|
2428
|
+
mod: "$mod",
|
2429
|
+
ne: "$ne",
|
2430
|
+
near: "$near",
|
2431
|
+
near_sphere: "$nearSphere"
|
2432
|
+
}[meth]
|
2433
|
+
end
|
2434
|
+
|
2435
|
+
let(:criteria) do
|
2436
|
+
Band.send(meth, {views: 1}).send(meth, {views:2})
|
2437
|
+
end
|
2438
|
+
|
2439
|
+
context "when overwrite_chained_operators is true" do
|
2440
|
+
config_override :overwrite_chained_operators, true
|
2441
|
+
|
2442
|
+
it "overrides the previous operators" do
|
2443
|
+
expect(criteria.selector).to eq({
|
2444
|
+
"views" => { op => 2 },
|
2445
|
+
})
|
2446
|
+
end
|
2447
|
+
end
|
2448
|
+
|
2449
|
+
context "when overwrite_chained_operators is false" do
|
2450
|
+
config_override :overwrite_chained_operators, false
|
2451
|
+
|
2452
|
+
it "overrides the previous operators" do
|
2453
|
+
expect(criteria.selector).to eq({
|
2454
|
+
"views" => { op => 1 },
|
2455
|
+
"$and" => [{ "views" => { op => 2 } }]
|
2456
|
+
})
|
2457
|
+
end
|
2458
|
+
end
|
2459
|
+
end
|
2460
|
+
end
|
2461
|
+
end
|
2297
2462
|
end
|
@@ -387,8 +387,20 @@ describe Mongoid::Criteria::Queryable::Selector do
|
|
387
387
|
selector.send(method, "key", array)
|
388
388
|
end
|
389
389
|
|
390
|
-
|
391
|
-
|
390
|
+
context 'when serializing bigdecimal to string' do
|
391
|
+
config_override :map_big_decimal_to_decimal128, false
|
392
|
+
|
393
|
+
it "serializes each element in the array" do
|
394
|
+
expect(selector["key"]).to eq([ big_one.to_s, big_two.to_s ])
|
395
|
+
end
|
396
|
+
end
|
397
|
+
|
398
|
+
context 'when serializing bigdecimal to decimal128' do
|
399
|
+
config_override :map_big_decimal_to_decimal128, true
|
400
|
+
|
401
|
+
it "serializes each element in the array" do
|
402
|
+
expect(selector["key"]).to eq([ BSON::Decimal128.new(big_one), BSON::Decimal128.new(big_two)])
|
403
|
+
end
|
392
404
|
end
|
393
405
|
end
|
394
406
|
end
|