mongoid 7.4.3 → 8.0.7
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/README.md +3 -3
- data/Rakefile +25 -0
- 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 +33 -10
- 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 +65 -41
- 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 +28 -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 +70 -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 +26 -16
- 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.rb +7 -0
- data/lib/mongoid/attributes/dynamic.rb +3 -3
- data/lib/mongoid/attributes/nested.rb +5 -5
- data/lib/mongoid/attributes/processing.rb +37 -6
- 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 +43 -10
- 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/options.rb +3 -0
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config.rb +62 -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 +260 -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 +3 -14
- 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 +1 -15
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -9
- 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 +4 -14
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -12
- 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 +93 -8
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable/storable.rb +1 -1
- data/lib/mongoid/criteria/queryable.rb +12 -7
- data/lib/mongoid/criteria/scopable.rb +2 -2
- data/lib/mongoid/criteria/translator.rb +45 -0
- data/lib/mongoid/criteria.rb +16 -35
- data/lib/mongoid/deprecable.rb +37 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +135 -34
- data/lib/mongoid/equality.rb +8 -8
- 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 +37 -8
- 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 +55 -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 +233 -40
- 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 +185 -16
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher.rb +33 -13
- 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 +1 -1
- 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 +10 -8
- data/lib/mongoid/scopable.rb +26 -22
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +10 -6
- data/lib/mongoid/shardable.rb +35 -11
- 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 +42 -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 +5 -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 +4 -3
- data/spec/config/mongoid.yml +16 -0
- data/spec/integration/app_spec.rb +8 -12
- data/spec/integration/associations/belongs_to_spec.rb +18 -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 +246 -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/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 +235 -40
- data/spec/mongoid/association/embedded/embeds_many_models.rb +36 -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 +202 -201
- 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 +160 -119
- 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/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 +551 -27
- data/spec/mongoid/cacheable_spec.rb +3 -3
- data/spec/mongoid/changeable_spec.rb +130 -13
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- 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_spec.rb +78 -18
- 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 +1253 -247
- 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/string_spec.rb +0 -59
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -59
- 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 +15 -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 +89 -4
- data/spec/mongoid/criteria/queryable/storable_spec.rb +72 -0
- data/spec/mongoid/criteria/translator_spec.rb +132 -0
- 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/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 +33 -3
- 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 +364 -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 +807 -27
- 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 +59 -2
- data/spec/mongoid/scopable_spec.rb +54 -16
- data/spec/mongoid/shardable_models.rb +14 -0
- data/spec/mongoid/shardable_spec.rb +157 -51
- 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/mongoid_spec.rb +1 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/docker_runner.rb +7 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +10 -2
- data/spec/shared/lib/mrss/server_version_registry.rb +16 -23
- data/spec/shared/lib/mrss/utils.rb +28 -6
- data/spec/shared/share/Dockerfile.erb +36 -40
- data/spec/shared/shlib/server.sh +32 -8
- data/spec/shared/shlib/set_env.sh +4 -4
- data/spec/support/constraints.rb +24 -0
- data/spec/support/macros.rb +46 -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/passport.rb +9 -0
- data/spec/support/models/person.rb +2 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/purse.rb +9 -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.tar.gz.sig +4 -1
- metadata +682 -635
- 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
@@ -40,29 +40,11 @@ describe Mongoid::QueryCache::Middleware do
|
|
40
40
|
end
|
41
41
|
|
42
42
|
context 'with driver query cache' do
|
43
|
-
min_driver_version '2.14'
|
44
43
|
|
45
44
|
it "cleans the query cache after it responds" do
|
46
45
|
middleware.call({})
|
47
46
|
expect(Mongo::QueryCache.send(:cache_table)).to be_empty
|
48
47
|
end
|
49
48
|
end
|
50
|
-
|
51
|
-
context 'with mongoid query cache' do
|
52
|
-
max_driver_version '2.13'
|
53
|
-
|
54
|
-
it "cleans the query cache after it responds" do
|
55
|
-
middleware.call({})
|
56
|
-
expect(Mongoid::QueryCache.cache_table).to be_empty
|
57
|
-
end
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
context 'when driver implements query cache middleware' do
|
62
|
-
min_driver_version '2.15'
|
63
|
-
|
64
|
-
it 'uses the driver query cache middleware' do
|
65
|
-
Mongoid::QueryCache::Middleware.should be Mongo::QueryCache::Middleware
|
66
|
-
end
|
67
49
|
end
|
68
50
|
end
|
@@ -34,66 +34,6 @@ describe Mongoid::QueryCache do
|
|
34
34
|
|
35
35
|
describe '#cache' do
|
36
36
|
context 'with driver query cache' do
|
37
|
-
min_driver_version '2.14'
|
38
|
-
|
39
|
-
it 'does not log a deprecation warning' do
|
40
|
-
reset_legacy_qc_warning
|
41
|
-
|
42
|
-
expect_any_instance_of(Logger).to_not receive(:warn).with(
|
43
|
-
described_class::LEGACY_WARNING
|
44
|
-
)
|
45
|
-
described_class.cache { }
|
46
|
-
end
|
47
|
-
|
48
|
-
context 'when query cache is not enabled' do
|
49
|
-
before do
|
50
|
-
Mongoid::QueryCache.enabled = false
|
51
|
-
end
|
52
|
-
|
53
|
-
it 'turns on the query cache within the block' do
|
54
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
55
|
-
|
56
|
-
Mongoid::QueryCache.cache do
|
57
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
58
|
-
end
|
59
|
-
|
60
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
context 'when query cache is enabled' do
|
65
|
-
before do
|
66
|
-
Mongoid::QueryCache.enabled = true
|
67
|
-
end
|
68
|
-
|
69
|
-
it 'keeps the query cache enabled within the block' do
|
70
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
71
|
-
|
72
|
-
Mongoid::QueryCache.cache do
|
73
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
74
|
-
end
|
75
|
-
|
76
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
77
|
-
end
|
78
|
-
end
|
79
|
-
|
80
|
-
context 'nested inside #uncached' do
|
81
|
-
it 'turns on the query cache in the block' do
|
82
|
-
Mongoid::QueryCache.uncached do
|
83
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
84
|
-
|
85
|
-
Mongoid::QueryCache.cache do
|
86
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
87
|
-
end
|
88
|
-
|
89
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
90
|
-
end
|
91
|
-
end
|
92
|
-
end
|
93
|
-
end
|
94
|
-
|
95
|
-
context 'with mongoid query cache' do
|
96
|
-
max_driver_version '2.13'
|
97
37
|
|
98
38
|
context 'when query cache is not enabled' do
|
99
39
|
before do
|
@@ -145,64 +85,6 @@ describe Mongoid::QueryCache do
|
|
145
85
|
|
146
86
|
describe '#uncached' do
|
147
87
|
context 'with driver query cache' do
|
148
|
-
min_driver_version '2.14'
|
149
|
-
|
150
|
-
context 'when query cache is not enabled' do
|
151
|
-
before do
|
152
|
-
Mongoid::QueryCache.enabled = false
|
153
|
-
end
|
154
|
-
|
155
|
-
it 'keeps the query cache turned off within the block' do
|
156
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
157
|
-
|
158
|
-
Mongoid::QueryCache.uncached do
|
159
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
160
|
-
end
|
161
|
-
|
162
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
163
|
-
end
|
164
|
-
end
|
165
|
-
|
166
|
-
context 'when query cache is enabled' do
|
167
|
-
before do
|
168
|
-
Mongoid::QueryCache.enabled = true
|
169
|
-
end
|
170
|
-
|
171
|
-
it 'turns off the query cache within the block' do
|
172
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
173
|
-
|
174
|
-
Mongoid::QueryCache.uncached do
|
175
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
176
|
-
end
|
177
|
-
|
178
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
179
|
-
end
|
180
|
-
end
|
181
|
-
|
182
|
-
context 'nested inside #cache' do
|
183
|
-
it 'turns on the query cache in the block' do
|
184
|
-
Mongoid::QueryCache.cache do
|
185
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
186
|
-
|
187
|
-
Mongoid::QueryCache.uncached do
|
188
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
189
|
-
end
|
190
|
-
|
191
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
192
|
-
end
|
193
|
-
end
|
194
|
-
end
|
195
|
-
end
|
196
|
-
|
197
|
-
context 'with mongoid query cache' do
|
198
|
-
max_driver_version '2.13'
|
199
|
-
|
200
|
-
it 'logs a deprecation warning' do
|
201
|
-
reset_legacy_qc_warning
|
202
|
-
|
203
|
-
expect_any_instance_of(Logger).to receive(:warn).with(described_class::LEGACY_WARNING)
|
204
|
-
described_class.cache { }
|
205
|
-
end
|
206
88
|
|
207
89
|
context 'when query cache is not enabled' do
|
208
90
|
before do
|
@@ -328,7 +210,6 @@ describe Mongoid::QueryCache do
|
|
328
210
|
end
|
329
211
|
|
330
212
|
context 'when driver query cache exists' do
|
331
|
-
min_driver_version '2.14'
|
332
213
|
|
333
214
|
before do
|
334
215
|
Band.all.to_a
|
@@ -424,14 +305,6 @@ describe Mongoid::QueryCache do
|
|
424
305
|
end
|
425
306
|
end
|
426
307
|
|
427
|
-
context 'when drivers query cache does not exist' do
|
428
|
-
max_driver_version '2.13'
|
429
|
-
|
430
|
-
it 'does not recognize the driver query cache' do
|
431
|
-
expect(defined?(Mongo::QueryCache)).to be_nil
|
432
|
-
end
|
433
|
-
end
|
434
|
-
|
435
308
|
context "when querying for a single document" do
|
436
309
|
|
437
310
|
[ :first, :one, :last ].each do |method|
|
@@ -662,12 +535,8 @@ describe Mongoid::QueryCache do
|
|
662
535
|
end
|
663
536
|
|
664
537
|
context "when the next query has a limit" do
|
665
|
-
# Server versions older than 3.2 also perform a killCursors operation,
|
666
|
-
# which causes this test to fail.
|
667
|
-
min_server_version '3.2'
|
668
538
|
|
669
539
|
context 'with driver query cache' do
|
670
|
-
min_driver_version '2.14'
|
671
540
|
|
672
541
|
# The driver query cache re-uses results with a larger limit
|
673
542
|
it 'does not query again' do
|
@@ -678,18 +547,6 @@ describe Mongoid::QueryCache do
|
|
678
547
|
end
|
679
548
|
end
|
680
549
|
end
|
681
|
-
|
682
|
-
context 'with mongoid query cache' do
|
683
|
-
max_driver_version '2.13'
|
684
|
-
|
685
|
-
it 'queries again' do
|
686
|
-
expect_query(1) do
|
687
|
-
result = game.ratings.where(:value.gt => 5).limit(2).asc(:id).to_a
|
688
|
-
expect(result.length).to eq(2)
|
689
|
-
expect(result.map { |r| r['value'] }).to eq([6, 7])
|
690
|
-
end
|
691
|
-
end
|
692
|
-
end
|
693
550
|
end
|
694
551
|
|
695
552
|
context "when the new query does not have a limit" do
|
@@ -970,7 +827,6 @@ describe Mongoid::QueryCache do
|
|
970
827
|
end
|
971
828
|
|
972
829
|
context 'with driver query cache' do
|
973
|
-
min_driver_version '2.14'
|
974
830
|
|
975
831
|
# The driver query cache caches multi-batch cursors
|
976
832
|
it 'does cache the result' do
|
@@ -979,16 +835,6 @@ describe Mongoid::QueryCache do
|
|
979
835
|
end
|
980
836
|
end
|
981
837
|
end
|
982
|
-
|
983
|
-
context 'with mongoid query cache' do
|
984
|
-
max_driver_version '2.13'
|
985
|
-
|
986
|
-
it 'does not cache the result' do
|
987
|
-
expect_query(1) do
|
988
|
-
expect(Band.all.map(&:id).size).to eq(10)
|
989
|
-
end
|
990
|
-
end
|
991
|
-
end
|
992
838
|
end
|
993
839
|
|
994
840
|
context 'when storing in system collection' do
|
@@ -103,7 +103,7 @@ describe Mongoid::Reloadable do
|
|
103
103
|
end
|
104
104
|
|
105
105
|
it "resets attributes_before_type_cast" do
|
106
|
-
expect(person.attributes_before_type_cast).to
|
106
|
+
expect(person.attributes_before_type_cast).to eq(person.attributes)
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
@@ -114,7 +114,7 @@ describe Mongoid::Reloadable do
|
|
114
114
|
it "raises an error" do
|
115
115
|
expect {
|
116
116
|
Person.new.reload
|
117
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
117
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Person with id\(s\)/)
|
118
118
|
end
|
119
119
|
end
|
120
120
|
|
@@ -390,6 +390,30 @@ describe Mongoid::Reloadable do
|
|
390
390
|
end
|
391
391
|
end
|
392
392
|
|
393
|
+
context 'when embeds_many is modified' do
|
394
|
+
let(:contractor1) { Contractor.new(name: 'b') }
|
395
|
+
let(:contractor2) { Contractor.new(name: 'c') }
|
396
|
+
|
397
|
+
let(:building) do
|
398
|
+
Building.create!(contractors: [ contractor1 ])
|
399
|
+
end
|
400
|
+
|
401
|
+
let(:more_contractors) { building.contractors + [ contractor2 ] }
|
402
|
+
|
403
|
+
let(:modified_building) do
|
404
|
+
building.tap do
|
405
|
+
building.assign_attributes contractors: more_contractors
|
406
|
+
end
|
407
|
+
end
|
408
|
+
|
409
|
+
let(:reloaded_building) { modified_building.reload }
|
410
|
+
|
411
|
+
it 'resets delayed_atomic_sets' do
|
412
|
+
expect(modified_building.delayed_atomic_sets).not_to be_empty
|
413
|
+
expect(reloaded_building.delayed_atomic_sets).to be_empty
|
414
|
+
end
|
415
|
+
end
|
416
|
+
|
393
417
|
context "when embedded document is nil" do
|
394
418
|
|
395
419
|
let(:palette) do
|
@@ -628,5 +652,38 @@ describe Mongoid::Reloadable do
|
|
628
652
|
church.acolytes.first.name.should == 'Borg'
|
629
653
|
end
|
630
654
|
end
|
655
|
+
|
656
|
+
context 'when document has previous changes' do
|
657
|
+
context 'when document was updated' do
|
658
|
+
let(:person) do
|
659
|
+
Person.create!(title: 'Sir')
|
660
|
+
end
|
661
|
+
|
662
|
+
before do
|
663
|
+
person.title = 'Madam'
|
664
|
+
person.save!
|
665
|
+
person.reload
|
666
|
+
end
|
667
|
+
|
668
|
+
it "resets previous changes" do
|
669
|
+
expect(person.title_previously_was).to be_nil
|
670
|
+
expect(person).not_to be_previously_persisted
|
671
|
+
end
|
672
|
+
end
|
673
|
+
|
674
|
+
context 'when document was created' do
|
675
|
+
let(:person) do
|
676
|
+
Person.create!(title: 'Sir')
|
677
|
+
end
|
678
|
+
|
679
|
+
before do
|
680
|
+
person.reload
|
681
|
+
end
|
682
|
+
|
683
|
+
it "resets previous changes" do
|
684
|
+
expect(person).not_to be_previously_new_record
|
685
|
+
end
|
686
|
+
end
|
687
|
+
end
|
631
688
|
end
|
632
689
|
end
|
@@ -481,27 +481,45 @@ describe Mongoid::Scopable do
|
|
481
481
|
|
482
482
|
context "when a block is provided" do
|
483
483
|
|
484
|
-
|
485
|
-
|
486
|
-
|
487
|
-
|
488
|
-
|
484
|
+
context "when with optional and keyword arguments" do
|
485
|
+
before do
|
486
|
+
Band.scope(:named_by, ->(name, deleted: false) {
|
487
|
+
Band.where(name: name, deleted: deleted)
|
488
|
+
})
|
489
489
|
end
|
490
|
-
end
|
491
490
|
|
492
|
-
|
493
|
-
|
494
|
-
undef_method :active
|
491
|
+
let(:scope) do
|
492
|
+
Band.named_by("Emily", deleted: true)
|
495
493
|
end
|
496
|
-
Band._declared_scopes.clear
|
497
|
-
end
|
498
494
|
|
499
|
-
|
500
|
-
|
495
|
+
it "sets the conditions from keyword arguments" do
|
496
|
+
scope.selector.should == {'name' => 'Emily', 'deleted' => true}
|
497
|
+
end
|
501
498
|
end
|
502
499
|
|
503
|
-
|
504
|
-
|
500
|
+
context "when without arguments" do
|
501
|
+
before do
|
502
|
+
Band.scope(:active, ->{ Band.where(active: true) }) do
|
503
|
+
def add_origin
|
504
|
+
tap { |c| c.selector[:origin] = "Deutschland" }
|
505
|
+
end
|
506
|
+
end
|
507
|
+
end
|
508
|
+
|
509
|
+
after do
|
510
|
+
class << Band
|
511
|
+
undef_method :active
|
512
|
+
end
|
513
|
+
Band._declared_scopes.clear
|
514
|
+
end
|
515
|
+
|
516
|
+
let(:scope) do
|
517
|
+
Band.active.add_origin
|
518
|
+
end
|
519
|
+
|
520
|
+
it "adds the extension to the scope" do
|
521
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "Deutschland" })
|
522
|
+
end
|
505
523
|
end
|
506
524
|
end
|
507
525
|
|
@@ -783,9 +801,11 @@ describe Mongoid::Scopable do
|
|
783
801
|
"$or" => [
|
784
802
|
{ "ccc" => nil },
|
785
803
|
{ "ccc" => { "$gt" => 1.0 }},
|
804
|
+
],
|
805
|
+
'$and' => ['$or' => [
|
786
806
|
{ "aaa" => { "$gt" => 0.0 }},
|
787
807
|
{ "bbb" => { "$gt" => 0.0 }}
|
788
|
-
]
|
808
|
+
]],
|
789
809
|
})
|
790
810
|
end
|
791
811
|
end
|
@@ -1170,6 +1190,24 @@ describe Mongoid::Scopable do
|
|
1170
1190
|
end
|
1171
1191
|
end
|
1172
1192
|
end
|
1193
|
+
|
1194
|
+
context 'when nesting unscoped under with_scope' do
|
1195
|
+
let(:c1) { Band.where(active: true) }
|
1196
|
+
|
1197
|
+
it 'restores previous scope' do
|
1198
|
+
pending 'MONGOID-5214'
|
1199
|
+
|
1200
|
+
Band.with_scope(c1) do |crit|
|
1201
|
+
Band.unscoped do |crit2|
|
1202
|
+
Mongoid::Threaded.current_scope(Band).should be nil
|
1203
|
+
end
|
1204
|
+
|
1205
|
+
Mongoid::Threaded.current_scope(Band).selector.should == {
|
1206
|
+
'active' => true,
|
1207
|
+
}
|
1208
|
+
end
|
1209
|
+
end
|
1210
|
+
end
|
1173
1211
|
end
|
1174
1212
|
|
1175
1213
|
describe ".without_default_scope" do
|
@@ -59,3 +59,17 @@ end
|
|
59
59
|
class SmNotSharded
|
60
60
|
include Mongoid::Document
|
61
61
|
end
|
62
|
+
|
63
|
+
class SmReviewAuthor
|
64
|
+
include Mongoid::Document
|
65
|
+
embedded_in :review, class_name: "SmReview", touch: false
|
66
|
+
field :name, type: String
|
67
|
+
end
|
68
|
+
|
69
|
+
class SmReview
|
70
|
+
include Mongoid::Document
|
71
|
+
|
72
|
+
embeds_one :author, class_name: "SmReviewAuthor"
|
73
|
+
|
74
|
+
shard_key "author.name" => 1
|
75
|
+
end
|