mongoid 7.2.1 → 9.0.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 +20 -20
- data/LICENSE +1 -1
- data/README.md +7 -12
- data/Rakefile +58 -1
- data/lib/config/locales/en.yml +191 -60
- data/lib/mongoid/association/accessors.rb +67 -53
- data/lib/mongoid/association/bindable.rb +77 -31
- data/lib/mongoid/association/builders.rb +8 -14
- data/lib/mongoid/association/constrainable.rb +2 -5
- data/lib/mongoid/association/depending.rb +20 -12
- data/lib/mongoid/association/eager.rb +160 -0
- data/lib/mongoid/association/eager_loadable.rb +41 -11
- data/lib/mongoid/association/embedded/batchable.rb +63 -52
- data/lib/mongoid/association/embedded/cyclic.rb +4 -12
- data/lib/mongoid/association/embedded/eager.rb +23 -0
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +29 -13
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +3 -5
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +25 -23
- data/lib/mongoid/association/embedded/embedded_in.rb +11 -26
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +4 -9
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +5 -6
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +226 -203
- data/lib/mongoid/association/embedded/embeds_many.rb +3 -33
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +3 -9
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +20 -8
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +131 -42
- data/lib/mongoid/association/embedded/embeds_one.rb +4 -30
- data/lib/mongoid/association/embedded.rb +2 -1
- data/lib/mongoid/association/macros.rb +47 -16
- data/lib/mongoid/association/many.rb +12 -24
- data/lib/mongoid/association/marshalable.rb +4 -5
- data/lib/mongoid/association/nested/many.rb +14 -19
- data/lib/mongoid/association/nested/nested_buildable.rb +36 -13
- data/lib/mongoid/association/nested/one.rb +54 -26
- data/lib/mongoid/association/nested.rb +1 -3
- data/lib/mongoid/association/one.rb +3 -11
- data/lib/mongoid/association/options.rb +18 -44
- data/lib/mongoid/association/proxy.rb +49 -42
- data/lib/mongoid/association/referenced/auto_save.rb +11 -15
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +2 -7
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +6 -6
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +2 -2
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +23 -32
- data/lib/mongoid/association/referenced/belongs_to.rb +13 -37
- data/lib/mongoid/association/referenced/counter_cache.rb +18 -26
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +15 -8
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +1 -3
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +191 -123
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +23 -42
- data/lib/mongoid/association/referenced/has_many/binding.rb +1 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +1 -3
- data/lib/mongoid/association/referenced/has_many/eager.rb +2 -2
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +471 -496
- data/lib/mongoid/association/referenced/has_many/proxy.rb +182 -179
- data/lib/mongoid/association/referenced/has_many.rb +17 -43
- data/lib/mongoid/association/referenced/has_one/binding.rb +1 -7
- data/lib/mongoid/association/referenced/has_one/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_one/eager.rb +3 -4
- data/lib/mongoid/association/referenced/has_one/proxy.rb +38 -41
- data/lib/mongoid/association/referenced/has_one.rb +17 -36
- data/lib/mongoid/association/referenced/syncable.rb +11 -27
- data/lib/mongoid/association/referenced.rb +1 -1
- data/lib/mongoid/association/reflections.rb +9 -9
- data/lib/mongoid/association/relatable.rb +55 -74
- data/lib/mongoid/association.rb +10 -22
- data/lib/mongoid/atomic/modifiers.rb +7 -53
- data/lib/mongoid/atomic/paths/embedded/many.rb +20 -5
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -5
- data/lib/mongoid/atomic/paths/embedded.rb +1 -3
- data/lib/mongoid/atomic/paths/root.rb +1 -5
- data/lib/mongoid/atomic/paths.rb +1 -1
- data/lib/mongoid/atomic.rb +39 -86
- data/lib/mongoid/atomic_update_preparer.rb +88 -0
- data/lib/mongoid/attributes/dynamic.rb +5 -21
- data/lib/mongoid/attributes/embedded.rb +34 -0
- data/lib/mongoid/attributes/nested.rb +9 -13
- data/lib/mongoid/attributes/processing.rb +43 -28
- data/lib/mongoid/attributes/projector.rb +120 -0
- data/lib/mongoid/attributes/readonly.rb +4 -8
- data/lib/mongoid/attributes.rb +85 -89
- data/lib/mongoid/cacheable.rb +5 -9
- data/lib/mongoid/changeable.rb +183 -97
- data/lib/mongoid/clients/factory.rb +58 -15
- data/lib/mongoid/clients/options.rb +117 -8
- data/lib/mongoid/clients/sessions.rb +246 -84
- data/lib/mongoid/clients/storage_options.rb +37 -11
- data/lib/mongoid/clients/validators/storage.rb +4 -24
- data/lib/mongoid/clients/validators.rb +1 -1
- data/lib/mongoid/clients.rb +37 -14
- data/lib/mongoid/collection_configurable.rb +59 -0
- data/lib/mongoid/composable.rb +7 -7
- data/lib/mongoid/config/defaults.rb +40 -0
- data/lib/mongoid/config/encryption.rb +213 -0
- data/lib/mongoid/config/environment.rb +25 -5
- data/lib/mongoid/config/introspection.rb +152 -0
- data/lib/mongoid/config/options.rb +11 -14
- data/lib/mongoid/config/validators/async_query_executor.rb +34 -0
- data/lib/mongoid/config/validators/client.rb +7 -23
- data/lib/mongoid/config/validators/option.rb +1 -3
- data/lib/mongoid/config/validators.rb +2 -1
- data/lib/mongoid/config.rb +183 -46
- data/lib/mongoid/contextual/aggregable/memory.rb +38 -26
- data/lib/mongoid/contextual/aggregable/mongo.rb +26 -32
- data/lib/mongoid/contextual/aggregable/none.rb +66 -0
- data/lib/mongoid/contextual/aggregable.rb +18 -0
- data/lib/mongoid/contextual/atomic.rb +97 -30
- data/lib/mongoid/contextual/command.rb +3 -5
- data/lib/mongoid/contextual/map_reduce.rb +8 -33
- data/lib/mongoid/contextual/memory.rb +396 -89
- data/lib/mongoid/contextual/mongo/documents_loader.rb +178 -0
- data/lib/mongoid/contextual/mongo.rb +640 -311
- data/lib/mongoid/contextual/none.rb +244 -30
- data/lib/mongoid/contextual/queryable.rb +5 -4
- data/lib/mongoid/contextual.rb +18 -7
- data/lib/mongoid/copyable.rb +34 -14
- data/lib/mongoid/criteria/findable.rb +52 -22
- data/lib/mongoid/criteria/includable.rb +31 -34
- data/lib/mongoid/criteria/inspectable.rb +4 -3
- data/lib/mongoid/criteria/marshalable.rb +14 -7
- data/lib/mongoid/criteria/modifiable.rb +5 -19
- data/lib/mongoid/criteria/options.rb +1 -3
- data/lib/mongoid/criteria/permission.rb +6 -2
- data/lib/mongoid/criteria/queryable/aggregable.rb +3 -15
- data/lib/mongoid/criteria/queryable/expandable.rb +1 -25
- data/lib/mongoid/criteria/queryable/extensions/array.rb +6 -41
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -9
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +5 -7
- data/lib/mongoid/criteria/queryable/extensions/date.rb +10 -11
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +8 -7
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -41
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +2 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +3 -21
- data/lib/mongoid/criteria/queryable/extensions/object.rb +7 -30
- data/lib/mongoid/criteria/queryable/extensions/range.rb +48 -17
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +10 -13
- data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -5
- data/lib/mongoid/criteria/queryable/extensions/string.rb +19 -34
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +6 -22
- data/lib/mongoid/criteria/queryable/extensions/time.rb +8 -9
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +9 -9
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -5
- data/lib/mongoid/criteria/queryable/key.rb +15 -18
- data/lib/mongoid/criteria/queryable/macroable.rb +1 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +69 -50
- data/lib/mongoid/criteria/queryable/optional.rb +12 -62
- data/lib/mongoid/criteria/queryable/options.rb +3 -21
- data/lib/mongoid/criteria/queryable/pipeline.rb +2 -14
- data/lib/mongoid/criteria/queryable/selectable.rb +87 -124
- data/lib/mongoid/criteria/queryable/selector.rb +96 -25
- data/lib/mongoid/criteria/queryable/smash.rb +41 -18
- data/lib/mongoid/criteria/queryable/storable.rb +14 -9
- data/lib/mongoid/criteria/queryable.rb +12 -13
- data/lib/mongoid/criteria/scopable.rb +32 -21
- data/lib/mongoid/criteria/translator.rb +46 -0
- data/lib/mongoid/criteria.rb +60 -109
- data/lib/mongoid/deprecable.rb +38 -0
- data/lib/mongoid/deprecation.rb +29 -0
- data/lib/mongoid/document.rb +263 -173
- data/lib/mongoid/encryptable.rb +53 -0
- data/lib/mongoid/equality.rb +22 -25
- data/lib/mongoid/errors/ambiguous_relationship.rb +3 -5
- data/lib/mongoid/errors/attribute_not_loaded.rb +34 -0
- data/lib/mongoid/errors/callback.rb +1 -3
- data/lib/mongoid/errors/create_collection_failure.rb +34 -0
- data/lib/mongoid/errors/criteria_argument_required.rb +1 -1
- data/lib/mongoid/errors/delete_restriction.rb +9 -12
- data/lib/mongoid/errors/document_not_destroyed.rb +3 -7
- data/lib/mongoid/errors/document_not_found.rb +34 -21
- data/lib/mongoid/errors/drop_collection_failure.rb +28 -0
- data/lib/mongoid/errors/empty_config_file.rb +26 -0
- data/lib/mongoid/errors/immutable_attribute.rb +27 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +1 -3
- data/lib/mongoid/errors/invalid_async_query_executor.rb +26 -0
- data/lib/mongoid/errors/invalid_auto_encryption_configuration.rb +33 -0
- data/lib/mongoid/errors/invalid_collection.rb +1 -1
- data/lib/mongoid/errors/invalid_config_file.rb +26 -0
- data/lib/mongoid/errors/invalid_config_option.rb +2 -4
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -4
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +1 -1
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +24 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +1 -1
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +6 -5
- data/lib/mongoid/errors/invalid_estimated_count_scoping.rb +27 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +1 -1
- data/lib/mongoid/errors/invalid_field.rb +7 -7
- data/lib/mongoid/errors/invalid_field_operator.rb +1 -1
- data/lib/mongoid/errors/invalid_field_option.rb +1 -3
- data/lib/mongoid/errors/invalid_field_type.rb +27 -0
- data/lib/mongoid/errors/invalid_find.rb +1 -3
- data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +23 -0
- data/lib/mongoid/errors/invalid_includes.rb +1 -3
- data/lib/mongoid/errors/invalid_index.rb +1 -3
- data/lib/mongoid/errors/invalid_options.rb +1 -3
- data/lib/mongoid/errors/invalid_path.rb +1 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +1 -5
- data/lib/mongoid/errors/invalid_query.rb +1 -1
- data/lib/mongoid/errors/invalid_relation.rb +2 -8
- data/lib/mongoid/errors/invalid_relation_option.rb +2 -4
- data/lib/mongoid/errors/invalid_scope.rb +1 -3
- data/lib/mongoid/errors/invalid_session_nesting.rb +17 -0
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +1 -2
- data/lib/mongoid/errors/invalid_storage_options.rb +2 -4
- data/lib/mongoid/errors/invalid_time.rb +1 -3
- data/lib/mongoid/errors/invalid_transaction_nesting.rb +17 -0
- data/lib/mongoid/errors/inverse_not_found.rb +1 -3
- data/lib/mongoid/errors/mixed_client_configuration.rb +1 -3
- data/lib/mongoid/errors/mixed_relations.rb +1 -3
- data/lib/mongoid/errors/mongoid_error.rb +8 -16
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +2 -4
- data/lib/mongoid/errors/no_client_config.rb +1 -3
- data/lib/mongoid/errors/no_client_database.rb +2 -4
- data/lib/mongoid/errors/no_client_hosts.rb +2 -4
- data/lib/mongoid/errors/no_clients_config.rb +1 -3
- data/lib/mongoid/errors/no_default_client.rb +1 -3
- data/lib/mongoid/errors/no_environment.rb +1 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +1 -3
- data/lib/mongoid/errors/no_metadata.rb +1 -3
- data/lib/mongoid/errors/no_parent.rb +1 -3
- data/lib/mongoid/errors/readonly_attribute.rb +2 -4
- data/lib/mongoid/errors/readonly_document.rb +2 -6
- data/lib/mongoid/errors/rollback.rb +15 -0
- data/lib/mongoid/errors/scope_overwrite.rb +1 -1
- data/lib/mongoid/errors/sessions_not_supported.rb +17 -0
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +2 -2
- data/lib/mongoid/errors/transaction_error.rb +25 -0
- data/lib/mongoid/errors/transactions_not_supported.rb +17 -0
- data/lib/mongoid/errors/unknown_attribute.rb +2 -4
- data/lib/mongoid/errors/unknown_model.rb +1 -3
- data/lib/mongoid/errors/unsaved_document.rb +2 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +1 -3
- data/lib/mongoid/errors/validations.rb +1 -1
- data/lib/mongoid/errors.rb +18 -5
- data/lib/mongoid/evolvable.rb +2 -4
- data/lib/mongoid/extensions/array.rb +20 -58
- data/lib/mongoid/extensions/big_decimal.rb +44 -24
- data/lib/mongoid/extensions/binary.rb +45 -0
- data/lib/mongoid/extensions/boolean.rb +11 -6
- data/lib/mongoid/extensions/date.rb +31 -29
- data/lib/mongoid/extensions/date_time.rb +5 -16
- data/lib/mongoid/extensions/decimal128.rb +3 -5
- data/lib/mongoid/extensions/false_class.rb +8 -10
- data/lib/mongoid/extensions/float.rb +11 -12
- data/lib/mongoid/extensions/hash.rb +28 -148
- data/lib/mongoid/extensions/integer.rb +13 -14
- data/lib/mongoid/extensions/module.rb +5 -5
- data/lib/mongoid/extensions/nil_class.rb +5 -7
- data/lib/mongoid/extensions/object.rb +32 -81
- data/lib/mongoid/extensions/object_id.rb +3 -7
- data/lib/mongoid/extensions/range.rb +47 -24
- data/lib/mongoid/extensions/raw_value.rb +34 -0
- data/lib/mongoid/extensions/regexp.rb +14 -7
- data/lib/mongoid/extensions/set.rb +24 -13
- data/lib/mongoid/extensions/string.rb +30 -62
- data/lib/mongoid/extensions/symbol.rb +9 -22
- data/lib/mongoid/extensions/time.rb +30 -40
- data/lib/mongoid/extensions/time_with_zone.rb +18 -11
- data/lib/mongoid/extensions/true_class.rb +8 -10
- data/lib/mongoid/extensions.rb +3 -20
- data/lib/mongoid/factory.rb +178 -37
- data/lib/mongoid/fields/encrypted.rb +48 -0
- data/lib/mongoid/fields/foreign_key.rb +39 -27
- data/lib/mongoid/fields/localized.rb +25 -15
- data/lib/mongoid/fields/standard.rb +22 -40
- data/lib/mongoid/fields/validators/macro.rb +6 -19
- data/lib/mongoid/fields/validators.rb +1 -1
- data/lib/mongoid/fields.rb +354 -76
- data/lib/mongoid/findable.rb +62 -22
- data/lib/mongoid/indexable/specification.rb +55 -34
- data/lib/mongoid/indexable/validators/options.rb +7 -9
- data/lib/mongoid/indexable.rb +2 -18
- data/lib/mongoid/inspectable.rb +34 -11
- data/lib/mongoid/interceptable.rb +197 -41
- data/lib/mongoid/loadable.rb +83 -0
- data/lib/mongoid/loggable.rb +1 -9
- data/lib/mongoid/matchable.rb +2 -6
- data/lib/mongoid/matcher/all.rb +15 -0
- data/lib/mongoid/matcher/and.rb +14 -0
- data/lib/mongoid/matcher/bits.rb +60 -0
- data/lib/mongoid/matcher/bits_all_clear.rb +41 -0
- data/lib/mongoid/matcher/bits_all_set.rb +41 -0
- data/lib/mongoid/matcher/bits_any_clear.rb +41 -0
- data/lib/mongoid/matcher/bits_any_set.rb +41 -0
- data/lib/mongoid/matcher/elem_match.rb +17 -1
- data/lib/mongoid/matcher/elem_match_expression.rb +14 -2
- data/lib/mongoid/matcher/eq.rb +15 -0
- data/lib/mongoid/matcher/eq_impl.rb +54 -2
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +18 -1
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +22 -14
- data/lib/mongoid/matcher/expression_operator.rb +14 -0
- data/lib/mongoid/matcher/field_expression.rb +19 -5
- data/lib/mongoid/matcher/field_operator.rb +30 -0
- data/lib/mongoid/matcher/gt.rb +15 -0
- data/lib/mongoid/matcher/gte.rb +15 -0
- data/lib/mongoid/matcher/in.rb +15 -0
- data/lib/mongoid/matcher/lt.rb +15 -0
- data/lib/mongoid/matcher/lte.rb +15 -0
- data/lib/mongoid/matcher/mod.rb +33 -0
- data/lib/mongoid/matcher/ne.rb +15 -0
- data/lib/mongoid/matcher/nin.rb +15 -0
- data/lib/mongoid/matcher/nor.rb +14 -0
- data/lib/mongoid/matcher/not.rb +16 -0
- data/lib/mongoid/matcher/or.rb +14 -0
- data/lib/mongoid/matcher/regex.rb +24 -0
- data/lib/mongoid/matcher/size.rb +16 -0
- data/lib/mongoid/matcher/type.rb +124 -0
- data/lib/mongoid/matcher.rb +59 -52
- data/lib/mongoid/persistable/creatable.rb +25 -29
- data/lib/mongoid/persistable/deletable.rb +10 -23
- data/lib/mongoid/persistable/destroyable.rb +37 -11
- data/lib/mongoid/persistable/incrementable.rb +2 -6
- data/lib/mongoid/persistable/logical.rb +1 -5
- data/lib/mongoid/persistable/maxable.rb +37 -0
- data/lib/mongoid/persistable/minable.rb +37 -0
- data/lib/mongoid/persistable/multipliable.rb +36 -0
- data/lib/mongoid/persistable/poppable.rb +1 -5
- data/lib/mongoid/persistable/pullable.rb +1 -7
- data/lib/mongoid/persistable/pushable.rb +1 -7
- data/lib/mongoid/persistable/renamable.rb +1 -5
- data/lib/mongoid/persistable/savable.rb +14 -8
- data/lib/mongoid/persistable/settable.rb +1 -5
- data/lib/mongoid/persistable/unsettable.rb +3 -7
- data/lib/mongoid/persistable/updatable.rb +114 -28
- data/lib/mongoid/persistable/upsertable.rb +33 -8
- data/lib/mongoid/persistable.rb +17 -27
- data/lib/mongoid/persistence_context.rb +111 -43
- data/lib/mongoid/positional.rb +1 -5
- data/lib/mongoid/railtie.rb +23 -15
- data/lib/mongoid/railties/bson_object_id_serializer.rb +39 -0
- data/lib/mongoid/railties/console_sandbox.rb +42 -0
- data/lib/mongoid/railties/controller_runtime.rb +21 -6
- data/lib/mongoid/railties/database.rake +19 -2
- data/lib/mongoid/reloadable.rb +45 -42
- data/lib/mongoid/scopable.rb +25 -53
- data/lib/mongoid/search_indexable.rb +167 -0
- data/lib/mongoid/selectable.rb +6 -17
- data/lib/mongoid/serializable.rb +11 -21
- data/lib/mongoid/shardable.rb +50 -16
- data/lib/mongoid/stateful.rb +66 -22
- data/lib/mongoid/stringified_symbol.rb +19 -7
- data/lib/mongoid/tasks/database.rake +25 -0
- data/lib/mongoid/tasks/database.rb +84 -8
- data/lib/mongoid/tasks/encryption.rake +59 -0
- data/lib/mongoid/tasks/encryption.rb +108 -0
- data/lib/mongoid/threaded/lifecycle.rb +6 -26
- data/lib/mongoid/threaded.rb +131 -92
- data/lib/mongoid/timestamps/created/short.rb +1 -1
- data/lib/mongoid/timestamps/created.rb +4 -4
- data/lib/mongoid/timestamps/short.rb +1 -1
- data/lib/mongoid/timestamps/timeless.rb +29 -7
- data/lib/mongoid/timestamps/updated/short.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +3 -5
- data/lib/mongoid/timestamps.rb +1 -1
- data/lib/mongoid/touchable.rb +155 -29
- data/lib/mongoid/traversable.rb +180 -125
- data/lib/mongoid/utils.rb +52 -0
- data/lib/mongoid/validatable/associated.rb +97 -21
- data/lib/mongoid/validatable/format.rb +1 -1
- data/lib/mongoid/validatable/length.rb +1 -1
- data/lib/mongoid/validatable/localizable.rb +2 -4
- data/lib/mongoid/validatable/macros.rb +10 -14
- data/lib/mongoid/validatable/presence.rb +7 -13
- data/lib/mongoid/validatable/queryable.rb +9 -3
- data/lib/mongoid/validatable/uniqueness.rb +26 -39
- data/lib/mongoid/validatable.rb +20 -29
- data/lib/mongoid/version.rb +2 -2
- data/lib/mongoid/warnings.rb +37 -0
- data/lib/mongoid.rb +56 -22
- data/lib/rails/generators/mongoid/config/config_generator.rb +25 -5
- data/lib/rails/generators/mongoid/config/templates/mongoid.rb +25 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +44 -64
- data/lib/rails/generators/mongoid/model/model_generator.rb +4 -1
- data/lib/rails/generators/mongoid_generator.rb +13 -1
- data/lib/rails/mongoid.rb +4 -32
- data/spec/config/mongoid.yml +16 -1
- data/spec/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/active_job_spec.rb +32 -0
- data/spec/integration/app_spec.rb +180 -89
- data/spec/integration/associations/belongs_to_spec.rb +19 -1
- data/spec/integration/associations/embedded_dirty_spec.rb +58 -0
- data/spec/integration/associations/embedded_spec.rb +90 -7
- data/spec/integration/associations/embeds_many_spec.rb +197 -1
- data/spec/integration/associations/embeds_one_spec.rb +19 -1
- data/spec/integration/associations/foreign_key_spec.rb +10 -1
- data/spec/integration/associations/foreign_key_spec_models.rb +1 -1
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +62 -0
- data/spec/integration/associations/has_many_spec.rb +1 -1
- data/spec/integration/associations/has_one_spec.rb +145 -1
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +1 -1
- data/spec/integration/associations/reverse_population_spec.rb +1 -1
- data/spec/integration/associations/reverse_population_spec_models.rb +1 -1
- data/spec/integration/associations/scope_option_spec.rb +102 -0
- data/spec/integration/atomic/modifiers_spec.rb +1 -1
- data/spec/integration/bson_regexp_raw_spec.rb +1 -1
- data/spec/integration/callbacks_models.rb +147 -3
- data/spec/integration/callbacks_spec.rb +398 -8
- data/spec/integration/contextual/empty_spec.rb +142 -0
- data/spec/integration/criteria/alias_query_spec.rb +98 -0
- data/spec/integration/criteria/date_field_spec.rb +2 -2
- data/spec/integration/criteria/default_scope_spec.rb +52 -0
- data/spec/integration/criteria/logical_spec.rb +12 -0
- data/spec/integration/criteria/range_spec.rb +358 -0
- data/spec/integration/criteria/raw_value_spec.rb +525 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +126 -15
- data/spec/integration/discriminator_key_spec.rb +119 -81
- data/spec/integration/discriminator_value_spec.rb +1 -1
- data/spec/integration/document_spec.rb +31 -1
- data/spec/integration/dots_and_dollars_spec.rb +278 -0
- data/spec/integration/encryption_spec.rb +100 -0
- data/spec/integration/i18n_fallbacks_spec.rb +10 -52
- data/spec/integration/matcher_examples_spec.rb +21 -14
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +144 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +144 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +144 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +144 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +46 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +96 -0
- data/spec/integration/matcher_operator_data/in.yml +16 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/size.yml +0 -3
- data/spec/integration/matcher_operator_data/type.yml +64 -0
- data/spec/integration/matcher_operator_data/type_array.yml +15 -0
- data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
- data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
- data/spec/integration/matcher_operator_data/type_code.yml +26 -0
- data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
- data/spec/integration/matcher_operator_data/type_date.yml +39 -0
- data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
- data/spec/integration/matcher_operator_data/type_decimal.yml +37 -0
- data/spec/integration/matcher_operator_data/type_double.yml +15 -0
- data/spec/integration/matcher_operator_data/type_int32.yml +33 -0
- data/spec/integration/matcher_operator_data/type_int64.yml +33 -0
- data/spec/integration/matcher_operator_data/type_max_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_min_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_null.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object_id.yml +25 -0
- data/spec/integration/matcher_operator_data/type_regex.yml +44 -0
- data/spec/integration/matcher_operator_data/type_string.yml +15 -0
- data/spec/integration/matcher_operator_data/type_symbol.yml +32 -0
- data/spec/integration/matcher_operator_data/type_timestamp.yml +25 -0
- data/spec/integration/matcher_operator_data/type_undefined.yml +17 -0
- data/spec/integration/matcher_operator_spec.rb +26 -3
- data/spec/integration/matcher_spec.rb +50 -1
- data/spec/integration/persistence/range_field_spec.rb +351 -0
- data/spec/integration/server_query_spec.rb +1 -1
- data/spec/integration/shardable_spec.rb +1 -1
- data/spec/integration/stringified_symbol_field_spec.rb +17 -3
- data/spec/lite_spec_helper.rb +47 -14
- data/spec/mongoid/association/accessors_spec.rb +31 -19
- data/spec/mongoid/association/auto_save_spec.rb +73 -34
- data/spec/mongoid/association/builders_spec.rb +2 -2
- data/spec/mongoid/association/constrainable_spec.rb +1 -1
- data/spec/mongoid/association/counter_cache_spec.rb +34 -34
- data/spec/mongoid/association/depending_spec.rb +397 -358
- data/spec/mongoid/association/eager_spec.rb +56 -6
- data/spec/mongoid/association/embedded/cyclic_spec.rb +3 -3
- data/spec/mongoid/association/embedded/dirty_spec.rb +3 -3
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +3 -2
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +55 -1
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +110 -23
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +19 -8
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +1 -1
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +113 -1
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +712 -203
- data/spec/mongoid/association/embedded/embeds_many_models.rb +189 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +14 -2
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +69 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +1 -1
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +26 -1
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +37 -24
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +1 -1
- data/spec/mongoid/association/embedded/embeds_one_models.rb +25 -2
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +2 -2
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +29 -1
- data/spec/mongoid/association/macros_spec.rb +10 -10
- data/spec/mongoid/association/nested/many_spec.rb +1 -1
- data/spec/mongoid/association/nested/one_spec.rb +17 -13
- data/spec/mongoid/association/options_spec.rb +1 -1
- data/spec/mongoid/association/polymorphic_spec.rb +1 -1
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +3 -2
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +110 -17
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +51 -15
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +113 -59
- data/spec/mongoid/association/referenced/belongs_to_models.rb +12 -0
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +22 -2
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +27 -22
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +28 -3
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +32 -3
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +1 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +386 -376
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +44 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +57 -3
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +131 -1
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +24 -7
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +313 -134
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +1 -1
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +1313 -2109
- data/spec/mongoid/association/referenced/has_many_models.rb +39 -2
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_many_spec.rb +47 -1
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +1 -1
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +54 -10
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +18 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +134 -28
- data/spec/mongoid/association/referenced/has_one_models.rb +43 -1
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_one_spec.rb +22 -1
- data/spec/mongoid/association/reflections_spec.rb +1 -1
- data/spec/mongoid/association/syncable_spec.rb +47 -33
- data/spec/mongoid/association_spec.rb +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +1 -1
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +1 -1
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +1 -1
- data/spec/mongoid/atomic/paths/root_spec.rb +1 -1
- data/spec/mongoid/atomic/paths_spec.rb +65 -27
- data/spec/mongoid/atomic_spec.rb +29 -7
- data/spec/mongoid/atomic_update_preparer_spec.rb +83 -0
- data/spec/mongoid/attributes/dynamic_spec.rb +1 -1
- data/spec/mongoid/attributes/embedded_spec.rb +118 -0
- data/spec/mongoid/attributes/nested_spec.rb +147 -78
- data/spec/mongoid/attributes/nested_spec_models.rb +49 -0
- data/spec/mongoid/attributes/projector_data/embedded.yml +105 -0
- data/spec/mongoid/attributes/projector_data/fields.yml +93 -0
- data/spec/mongoid/attributes/projector_spec.rb +41 -0
- data/spec/mongoid/attributes/readonly_spec.rb +23 -23
- data/spec/mongoid/attributes_spec.rb +921 -69
- data/spec/mongoid/cacheable_spec.rb +5 -5
- data/spec/mongoid/changeable_spec.rb +468 -76
- data/spec/mongoid/clients/factory_spec.rb +152 -30
- data/spec/mongoid/clients/options_spec.rb +24 -12
- data/spec/mongoid/clients/sessions_spec.rb +49 -71
- data/spec/mongoid/clients/transactions_spec.rb +971 -176
- data/spec/mongoid/clients/transactions_spec_models.rb +159 -0
- data/spec/mongoid/clients_spec.rb +230 -22
- data/spec/mongoid/collection_configurable_spec.rb +159 -0
- data/spec/mongoid/composable_spec.rb +1 -1
- data/spec/mongoid/config/defaults_spec.rb +99 -0
- data/spec/mongoid/config/encryption_spec.rb +152 -0
- data/spec/mongoid/config/environment_spec.rb +126 -39
- data/spec/mongoid/config/introspection_spec.rb +114 -0
- data/spec/mongoid/config/options_spec.rb +1 -1
- data/spec/mongoid/config_spec.rb +375 -43
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +432 -154
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +63 -0
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +95 -20
- data/spec/mongoid/contextual/aggregable/none_spec.rb +49 -0
- data/spec/mongoid/contextual/atomic_spec.rb +329 -87
- data/spec/mongoid/contextual/map_reduce_spec.rb +5 -19
- data/spec/mongoid/contextual/memory_spec.rb +1479 -127
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +194 -0
- data/spec/mongoid/contextual/mongo_spec.rb +3374 -1254
- data/spec/mongoid/contextual/none_spec.rb +79 -68
- data/spec/mongoid/copyable_spec.rb +465 -23
- data/spec/mongoid/copyable_spec_models.rb +1 -1
- data/spec/mongoid/criteria/findable_spec.rb +295 -229
- data/spec/mongoid/criteria/includable_spec.rb +1493 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +55 -0
- data/spec/mongoid/criteria/inspectable_spec.rb +1 -1
- data/spec/mongoid/criteria/marshalable_spec.rb +19 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +38 -38
- data/spec/mongoid/criteria/options_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +2 -2
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +1 -74
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +8 -20
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +135 -27
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +2 -2
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +32 -12
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +12 -1
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +1 -16
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +74 -8
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +238 -179
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +1 -12
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +1 -12
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +48 -132
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +5 -60
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +12 -1
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +12 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +106 -8
- data/spec/mongoid/criteria/queryable/optional_spec.rb +17 -486
- data/spec/mongoid/criteria/queryable/options_spec.rb +2 -2
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +2 -2
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +700 -26
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +39 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +149 -683
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +590 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +186 -6
- data/spec/mongoid/criteria/queryable/smash_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/storable_spec.rb +87 -1
- data/spec/mongoid/criteria/scopable_spec.rb +128 -1
- data/spec/mongoid/criteria/translator_spec.rb +133 -0
- data/spec/mongoid/criteria_projection_spec.rb +407 -0
- data/spec/mongoid/criteria_spec.rb +1029 -1806
- data/spec/mongoid/document_fields_spec.rb +180 -5
- data/spec/mongoid/document_persistence_context_spec.rb +77 -1
- data/spec/mongoid/document_query_spec.rb +55 -4
- data/spec/mongoid/document_spec.rb +43 -172
- data/spec/mongoid/equality_spec.rb +7 -8
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +1 -1
- data/spec/mongoid/errors/attribute_not_loaded_spec.rb +32 -0
- data/spec/mongoid/errors/callback_spec.rb +1 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +2 -2
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +1 -1
- data/spec/mongoid/errors/document_not_found_spec.rb +77 -1
- data/spec/mongoid/errors/invalid_collection_spec.rb +1 -1
- data/spec/mongoid/errors/{eager_load_spec.rb → invalid_config_file_spec.rb} +6 -6
- data/spec/mongoid/errors/invalid_config_option_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_option_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_spec.rb +2 -2
- data/spec/mongoid/errors/invalid_field_type_spec.rb +56 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_includes_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_index_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_options_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_path_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_relation_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_scope_spec.rb +2 -2
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_time_spec.rb +1 -1
- data/spec/mongoid/errors/inverse_not_found_spec.rb +1 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +1 -1
- data/spec/mongoid/errors/mixed_relations_spec.rb +1 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +4 -4
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +1 -1
- data/spec/mongoid/errors/no_client_config_spec.rb +1 -1
- data/spec/mongoid/errors/no_client_database_spec.rb +1 -1
- data/spec/mongoid/errors/no_client_hosts_spec.rb +1 -1
- data/spec/mongoid/errors/no_clients_config_spec.rb +1 -1
- data/spec/mongoid/errors/no_environment_spec.rb +4 -4
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +1 -1
- data/spec/mongoid/errors/no_metadata_spec.rb +1 -1
- data/spec/mongoid/errors/no_parent_spec.rb +1 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +1 -1
- data/spec/mongoid/errors/readonly_document_spec.rb +3 -3
- data/spec/mongoid/errors/scope_overwrite_spec.rb +1 -1
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +2 -2
- data/spec/mongoid/errors/unknown_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/unsaved_document_spec.rb +1 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +1 -1
- data/spec/mongoid/errors/validations_spec.rb +1 -1
- data/spec/mongoid/extensions/array_spec.rb +19 -265
- data/spec/mongoid/extensions/big_decimal_spec.rb +713 -213
- data/spec/mongoid/extensions/binary_spec.rb +45 -10
- data/spec/mongoid/extensions/boolean_spec.rb +69 -83
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +15 -11
- data/spec/mongoid/extensions/date_spec.rb +74 -22
- data/spec/mongoid/extensions/date_time_spec.rb +18 -19
- data/spec/mongoid/extensions/decimal128_spec.rb +1 -1
- data/spec/mongoid/extensions/false_class_spec.rb +2 -9
- data/spec/mongoid/extensions/float_spec.rb +56 -84
- data/spec/mongoid/extensions/hash_spec.rb +45 -219
- data/spec/mongoid/extensions/integer_spec.rb +53 -73
- data/spec/mongoid/extensions/module_spec.rb +1 -1
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +1 -1
- data/spec/mongoid/extensions/object_spec.rb +1 -177
- data/spec/mongoid/extensions/range_spec.rb +254 -64
- data/spec/mongoid/extensions/raw_value_spec.rb +67 -0
- data/spec/mongoid/extensions/regexp_spec.rb +59 -34
- data/spec/mongoid/extensions/set_spec.rb +105 -1
- data/spec/mongoid/extensions/string_spec.rb +21 -104
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +1 -1
- data/spec/mongoid/extensions/symbol_spec.rb +15 -53
- data/spec/mongoid/extensions/time_spec.rb +345 -131
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -107
- data/spec/mongoid/extensions/true_class_spec.rb +2 -9
- data/spec/mongoid/factory_spec.rb +63 -2
- data/spec/mongoid/fields/foreign_key_spec.rb +282 -120
- data/spec/mongoid/fields/localized_spec.rb +85 -42
- data/spec/mongoid/fields/standard_spec.rb +1 -1
- data/spec/mongoid/fields_spec.rb +826 -121
- data/spec/mongoid/findable_spec.rb +442 -80
- data/spec/mongoid/indexable/specification_spec.rb +132 -14
- data/spec/mongoid/indexable_spec.rb +361 -23
- data/spec/mongoid/inspectable_spec.rb +93 -5
- data/spec/mongoid/interceptable_spec.rb +926 -116
- data/spec/mongoid/interceptable_spec_models.rb +236 -4
- data/spec/mongoid/loading_spec.rb +110 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +68 -88
- data/spec/mongoid/matcher/extract_attribute_spec.rb +5 -15
- data/spec/mongoid/mongoizable_spec.rb +286 -0
- data/spec/mongoid/monkey_patches_spec.rb +211 -0
- data/spec/mongoid/persistable/creatable_spec.rb +5 -5
- data/spec/mongoid/persistable/deletable_spec.rb +267 -27
- data/spec/mongoid/persistable/destroyable_spec.rb +409 -24
- data/spec/mongoid/persistable/incrementable_spec.rb +46 -9
- data/spec/mongoid/persistable/logical_spec.rb +42 -5
- data/spec/mongoid/persistable/maxable_spec.rb +147 -0
- data/spec/mongoid/persistable/minable_spec.rb +147 -0
- data/spec/mongoid/persistable/multipliable_spec.rb +227 -0
- data/spec/mongoid/persistable/poppable_spec.rb +41 -5
- data/spec/mongoid/persistable/pullable_spec.rb +81 -9
- data/spec/mongoid/persistable/pushable_spec.rb +81 -9
- data/spec/mongoid/persistable/renamable_spec.rb +40 -4
- data/spec/mongoid/persistable/savable_spec.rb +114 -20
- data/spec/mongoid/persistable/settable_spec.rb +77 -10
- data/spec/mongoid/persistable/unsettable_spec.rb +41 -5
- data/spec/mongoid/persistable/updatable_spec.rb +64 -52
- data/spec/mongoid/persistable/upsertable_spec.rb +124 -4
- data/spec/mongoid/persistable_spec.rb +4 -4
- data/spec/mongoid/persistence_context_spec.rb +58 -59
- data/spec/mongoid/positional_spec.rb +1 -1
- data/spec/mongoid/railties/bson_object_id_serializer_spec.rb +24 -0
- data/spec/mongoid/railties/console_sandbox_spec.rb +44 -0
- data/spec/mongoid/relations/proxy_spec.rb +7 -7
- data/spec/mongoid/reloadable_spec.rb +255 -30
- data/spec/mongoid/scopable_spec.rb +198 -58
- data/spec/mongoid/search_indexable_spec.rb +147 -0
- data/spec/mongoid/selectable_spec.rb +7 -7
- data/spec/mongoid/serializable_spec.rb +19 -40
- data/spec/mongoid/shardable_models.rb +15 -0
- data/spec/mongoid/shardable_spec.rb +181 -31
- data/spec/mongoid/stateful_spec.rb +152 -10
- data/spec/mongoid/tasks/database_rake_spec.rb +193 -42
- data/spec/mongoid/tasks/database_spec.rb +175 -2
- data/spec/mongoid/tasks/encryption_spec.rb +187 -0
- data/spec/mongoid/threaded_spec.rb +40 -3
- data/spec/mongoid/timestamps/created/short_spec.rb +2 -2
- data/spec/mongoid/timestamps/created_spec.rb +2 -2
- data/spec/mongoid/timestamps/timeless_spec.rb +3 -3
- data/spec/mongoid/timestamps/updated/short_spec.rb +4 -4
- data/spec/mongoid/timestamps/updated_spec.rb +4 -4
- data/spec/mongoid/timestamps_spec.rb +399 -11
- data/spec/mongoid/timestamps_spec_models.rb +68 -0
- data/spec/mongoid/touchable_spec.rb +971 -54
- data/spec/mongoid/touchable_spec_models.rb +154 -0
- data/spec/mongoid/traversable_spec.rb +79 -37
- data/spec/mongoid/validatable/associated_spec.rb +14 -31
- data/spec/mongoid/validatable/format_spec.rb +1 -1
- data/spec/mongoid/validatable/length_spec.rb +1 -1
- data/spec/mongoid/validatable/numericality_spec.rb +1 -1
- data/spec/mongoid/validatable/presence_spec.rb +27 -23
- data/spec/mongoid/validatable/uniqueness_spec.rb +170 -99
- data/spec/mongoid/validatable_spec.rb +4 -4
- data/spec/mongoid/warnings_spec.rb +36 -0
- data/spec/mongoid_spec.rb +61 -11
- data/spec/rails/controller_extension/controller_runtime_spec.rb +3 -3
- data/spec/rails/mongoid_spec.rb +28 -132
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/cluster_config.rb +24 -4
- data/spec/shared/lib/mrss/constraints.rb +77 -29
- data/spec/shared/lib/mrss/docker_runner.rb +40 -4
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +64 -1
- data/spec/shared/lib/mrss/server_version_registry.rb +78 -34
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +32 -2
- data/spec/shared/lib/mrss/utils.rb +37 -0
- data/spec/shared/share/Dockerfile.erb +123 -71
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +187 -40
- data/spec/shared/shlib/set_env.sh +49 -31
- data/spec/spec_helper.rb +46 -49
- data/spec/support/authorization.rb +1 -1
- data/spec/support/client_registry.rb +10 -0
- data/spec/support/constraints.rb +25 -1
- data/spec/support/crypt/models.rb +50 -0
- data/spec/support/crypt.rb +80 -0
- data/spec/support/expectations.rb +1 -1
- data/spec/support/feature_sandbox.rb +72 -0
- data/spec/support/helpers.rb +1 -0
- data/spec/support/immutable_ids.rb +119 -0
- data/spec/support/macros.rb +107 -1
- data/spec/support/models/account.rb +2 -2
- data/spec/support/models/acolyte.rb +1 -1
- data/spec/support/models/actor.rb +1 -1
- data/spec/support/models/actress.rb +1 -1
- data/spec/support/models/address.rb +7 -1
- data/spec/support/models/address_component.rb +1 -1
- data/spec/support/models/address_number.rb +1 -1
- data/spec/support/models/agency.rb +1 -1
- data/spec/support/models/agent.rb +1 -1
- data/spec/support/models/album.rb +1 -1
- data/spec/support/models/alert.rb +1 -1
- data/spec/support/models/animal.rb +1 -1
- data/spec/support/models/answer.rb +1 -1
- data/spec/support/models/appointment.rb +1 -1
- data/spec/support/models/armrest.rb +1 -1
- data/spec/support/models/array_field.rb +1 -1
- data/spec/support/models/article.rb +1 -1
- data/spec/support/models/artist.rb +3 -2
- data/spec/support/models/artwork.rb +1 -1
- data/spec/support/models/audible_sound.rb +4 -0
- data/spec/support/models/audio.rb +1 -1
- data/spec/support/models/augmentation.rb +13 -1
- data/spec/support/models/author.rb +1 -1
- data/spec/support/models/baby.rb +1 -1
- data/spec/support/models/band.rb +13 -1
- data/spec/support/models/bar.rb +1 -1
- data/spec/support/models/basic.rb +1 -1
- data/spec/support/models/bed.rb +1 -1
- data/spec/support/models/big_palette.rb +1 -1
- data/spec/support/models/birthday.rb +1 -1
- data/spec/support/models/bolt.rb +8 -0
- data/spec/support/models/bomb.rb +1 -1
- data/spec/support/models/book.rb +2 -1
- data/spec/support/models/breed.rb +1 -1
- data/spec/support/models/browser.rb +1 -1
- data/spec/support/models/building.rb +3 -1
- data/spec/support/models/building_address.rb +1 -1
- data/spec/support/models/bus.rb +1 -1
- data/spec/support/models/business.rb +1 -1
- data/spec/support/models/callback_test.rb +1 -1
- data/spec/support/models/canvas.rb +1 -1
- data/spec/support/models/car.rb +1 -1
- data/spec/support/models/cat.rb +1 -1
- data/spec/support/models/catalog.rb +25 -0
- data/spec/support/models/category.rb +1 -1
- data/spec/support/models/child.rb +1 -1
- data/spec/support/models/child_doc.rb +4 -4
- data/spec/support/models/church.rb +1 -1
- data/spec/support/models/circle.rb +1 -1
- data/spec/support/models/circuit.rb +1 -1
- data/spec/support/models/circus.rb +4 -1
- data/spec/support/models/code.rb +3 -1
- data/spec/support/models/coding/pull_request.rb +1 -1
- data/spec/support/models/coding.rb +1 -1
- data/spec/support/models/comment.rb +1 -1
- data/spec/support/models/company.rb +1 -1
- data/spec/support/models/consumption_period.rb +1 -1
- data/spec/support/models/contextable_item.rb +1 -1
- data/spec/support/models/contractor.rb +1 -1
- data/spec/support/models/cookie.rb +1 -1
- data/spec/support/models/country_code.rb +3 -1
- data/spec/support/models/courier_job.rb +1 -1
- data/spec/support/models/cover.rb +11 -0
- data/spec/support/models/crate.rb +1 -1
- data/spec/support/models/customer.rb +1 -1
- data/spec/support/models/customer_address.rb +1 -1
- data/spec/support/models/deed.rb +1 -1
- data/spec/support/models/definition.rb +1 -1
- data/spec/support/models/delegating_patient.rb +1 -1
- data/spec/support/models/description.rb +1 -1
- data/spec/support/models/dictionary.rb +1 -1
- data/spec/support/models/division.rb +1 -1
- data/spec/support/models/doctor.rb +1 -1
- data/spec/support/models/dog.rb +1 -1
- data/spec/support/models/dokument.rb +1 -1
- data/spec/support/models/draft.rb +1 -1
- data/spec/support/models/dragon.rb +1 -1
- data/spec/support/models/driver.rb +1 -1
- data/spec/support/models/drug.rb +1 -1
- data/spec/support/models/dungeon.rb +1 -1
- data/spec/support/models/edit.rb +1 -1
- data/spec/support/models/email.rb +1 -1
- data/spec/support/models/employer.rb +1 -1
- data/spec/support/models/entry.rb +1 -1
- data/spec/support/models/eraser.rb +1 -1
- data/spec/support/models/even.rb +1 -1
- data/spec/support/models/event.rb +1 -1
- data/spec/support/models/exhibition.rb +1 -1
- data/spec/support/models/exhibitor.rb +1 -1
- data/spec/support/models/explosion.rb +1 -1
- data/spec/support/models/eye.rb +1 -1
- data/spec/support/models/eye_bowl.rb +1 -1
- data/spec/support/models/face.rb +1 -1
- data/spec/support/models/fanatic.rb +9 -0
- data/spec/support/models/favorite.rb +8 -2
- data/spec/support/models/filesystem.rb +1 -1
- data/spec/support/models/fire_hydrant.rb +1 -1
- data/spec/support/models/firefox.rb +1 -1
- data/spec/support/models/fish.rb +1 -1
- data/spec/support/models/folder.rb +1 -1
- data/spec/support/models/folder_item.rb +1 -1
- data/spec/support/models/fruits.rb +1 -1
- data/spec/support/models/game.rb +1 -1
- data/spec/support/models/ghost.rb +1 -1
- data/spec/support/models/guitar.rb +1 -1
- data/spec/support/models/hole.rb +13 -0
- data/spec/support/models/home.rb +1 -1
- data/spec/support/models/house.rb +1 -1
- data/spec/support/models/html_writer.rb +1 -1
- data/spec/support/models/id_key.rb +1 -1
- data/spec/support/models/idnodef.rb +1 -1
- data/spec/support/models/image.rb +1 -1
- data/spec/support/models/implant.rb +10 -1
- data/spec/support/models/instrument.rb +1 -1
- data/spec/support/models/item.rb +1 -1
- data/spec/support/models/jar.rb +1 -1
- data/spec/support/models/kaleidoscope.rb +1 -1
- data/spec/support/models/kangaroo.rb +1 -1
- data/spec/support/models/label.rb +5 -2
- data/spec/support/models/language.rb +1 -1
- data/spec/support/models/lat_lng.rb +1 -1
- data/spec/support/models/league.rb +1 -1
- data/spec/support/models/learner.rb +1 -1
- data/spec/support/models/line_item.rb +1 -1
- data/spec/support/models/location.rb +1 -1
- data/spec/support/models/login.rb +1 -1
- data/spec/support/models/manufacturer.rb +1 -1
- data/spec/support/models/meat.rb +1 -1
- data/spec/support/models/membership.rb +2 -1
- data/spec/support/models/message.rb +1 -1
- data/spec/support/models/minim.rb +1 -1
- data/spec/support/models/mixed_drink.rb +1 -1
- data/spec/support/models/mop.rb +10 -1
- data/spec/support/models/movie.rb +1 -1
- data/spec/support/models/my_hash.rb +1 -1
- data/spec/support/models/name.rb +11 -1
- data/spec/support/models/name_only.rb +1 -1
- data/spec/support/models/node.rb +1 -1
- data/spec/support/models/note.rb +1 -1
- data/spec/support/models/nut.rb +8 -0
- data/spec/support/models/odd.rb +1 -1
- data/spec/support/models/order.rb +3 -1
- data/spec/support/models/ordered_post.rb +2 -2
- data/spec/support/models/ordered_preference.rb +1 -1
- data/spec/support/models/oscar.rb +1 -1
- data/spec/support/models/other_owner_object.rb +1 -1
- data/spec/support/models/override.rb +1 -1
- data/spec/support/models/ownable.rb +1 -1
- data/spec/support/models/owner.rb +1 -1
- data/spec/support/models/pack.rb +1 -1
- data/spec/support/models/page.rb +1 -1
- data/spec/support/models/page_question.rb +1 -1
- data/spec/support/models/palette.rb +1 -1
- data/spec/support/models/parent.rb +1 -1
- data/spec/support/models/parent_doc.rb +1 -1
- data/spec/support/models/passport.rb +15 -1
- data/spec/support/models/patient.rb +1 -1
- data/spec/support/models/pdf_writer.rb +1 -1
- data/spec/support/models/pencil.rb +1 -1
- data/spec/support/models/person.rb +19 -1
- data/spec/support/models/pet.rb +1 -1
- data/spec/support/models/pet_owner.rb +1 -1
- data/spec/support/models/phone.rb +3 -2
- data/spec/support/models/piano.rb +1 -1
- data/spec/support/models/pizza.rb +1 -1
- data/spec/support/models/player.rb +3 -1
- data/spec/support/models/post.rb +1 -1
- data/spec/support/models/post_genre.rb +1 -1
- data/spec/support/models/powerup.rb +13 -1
- data/spec/support/models/preference.rb +1 -1
- data/spec/support/models/princess.rb +1 -1
- data/spec/support/models/product.rb +2 -1
- data/spec/support/models/profile.rb +1 -1
- data/spec/support/models/pronunciation.rb +1 -1
- data/spec/support/models/pub.rb +1 -1
- data/spec/support/models/publication/encyclopedia.rb +1 -1
- data/spec/support/models/publication/review.rb +1 -1
- data/spec/support/models/publication.rb +1 -1
- data/spec/support/models/purchase.rb +1 -1
- data/spec/support/models/purchased_item.rb +11 -0
- data/spec/support/models/purse.rb +9 -0
- data/spec/support/models/question.rb +1 -1
- data/spec/support/models/quiz.rb +1 -1
- data/spec/support/models/rating.rb +1 -1
- data/spec/support/models/record.rb +1 -1
- data/spec/support/models/registry.rb +2 -1
- data/spec/support/models/role.rb +1 -1
- data/spec/support/models/root_category.rb +1 -1
- data/spec/support/models/sandbox/app/models/app_models_message.rb +4 -0
- data/spec/support/models/sandbox/lib/models/lib_models_message.rb +4 -0
- data/spec/support/models/sandbox/sandbox_message.rb +4 -0
- data/spec/support/models/sandbox/sandbox_user.rb +4 -0
- data/spec/support/models/sandbox/subdir/sandbox_comment.rb +4 -0
- data/spec/support/models/sandwich.rb +1 -1
- data/spec/support/models/scheduler.rb +1 -1
- data/spec/support/models/school.rb +15 -0
- data/spec/support/models/scribe.rb +1 -1
- data/spec/support/models/sealer.rb +8 -0
- data/spec/support/models/seat.rb +1 -1
- data/spec/support/models/seo.rb +1 -1
- data/spec/support/models/series.rb +1 -1
- data/spec/support/models/server.rb +1 -1
- data/spec/support/models/service.rb +1 -1
- data/spec/support/models/shape.rb +1 -1
- data/spec/support/models/shelf.rb +1 -1
- data/spec/support/models/shield.rb +19 -0
- data/spec/support/models/shipment_address.rb +1 -1
- data/spec/support/models/shipping_container.rb +1 -1
- data/spec/support/models/shipping_pack.rb +1 -1
- data/spec/support/models/shirt.rb +12 -0
- data/spec/support/models/shop.rb +1 -1
- data/spec/support/models/short_agent.rb +1 -1
- data/spec/support/models/short_quiz.rb +1 -1
- data/spec/support/models/simple.rb +1 -1
- data/spec/support/models/slave.rb +1 -1
- data/spec/support/models/song.rb +1 -1
- data/spec/support/models/sound.rb +1 -1
- data/spec/support/models/spacer.rb +8 -0
- data/spec/support/models/square.rb +1 -1
- data/spec/support/models/staff.rb +1 -1
- data/spec/support/models/store_as_dup_test1.rb +1 -1
- data/spec/support/models/store_as_dup_test2.rb +1 -1
- data/spec/support/models/store_as_dup_test3.rb +1 -1
- data/spec/support/models/store_as_dup_test4.rb +1 -1
- data/spec/support/models/strategy.rb +1 -1
- data/spec/support/models/student.rb +15 -0
- data/spec/support/models/sub_item.rb +1 -1
- data/spec/support/models/subscription.rb +1 -1
- data/spec/support/models/survey.rb +1 -1
- data/spec/support/models/symptom.rb +1 -1
- data/spec/support/models/system_role.rb +1 -0
- data/spec/support/models/tag.rb +1 -1
- data/spec/support/models/target.rb +1 -1
- data/spec/support/models/template.rb +1 -1
- data/spec/support/models/thing.rb +1 -1
- data/spec/support/models/threadlocker.rb +8 -0
- data/spec/support/models/title.rb +1 -1
- data/spec/support/models/tool.rb +1 -1
- data/spec/support/models/topping.rb +1 -1
- data/spec/support/models/toy.rb +1 -1
- data/spec/support/models/track.rb +1 -1
- data/spec/support/models/translation.rb +1 -1
- data/spec/support/models/tree.rb +1 -1
- data/spec/support/models/truck.rb +1 -1
- data/spec/support/models/updatable.rb +1 -1
- data/spec/support/models/user.rb +1 -1
- data/spec/support/models/user_account.rb +1 -1
- data/spec/support/models/validation_callback.rb +1 -1
- data/spec/support/models/vehicle.rb +1 -1
- data/spec/support/models/version.rb +1 -1
- data/spec/support/models/vertex.rb +1 -1
- data/spec/support/models/vet_visit.rb +1 -1
- data/spec/support/models/video.rb +1 -1
- data/spec/support/models/video_game.rb +1 -1
- data/spec/support/models/washer.rb +8 -0
- data/spec/support/models/weapon.rb +13 -1
- data/spec/support/models/wiki_page.rb +1 -1
- data/spec/support/models/word.rb +1 -1
- data/spec/support/models/word_origin.rb +1 -1
- data/spec/support/models/writer.rb +1 -1
- data/spec/support/rails_mock.rb +32 -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/shared/time.rb +3 -22
- data/spec/support/sinatra_mock.rb +7 -0
- data/spec/support/spec_config.rb +42 -7
- data.tar.gz.sig +0 -0
- metadata +883 -562
- metadata.gz.sig +0 -0
- data/lib/mongoid/association/referenced/eager.rb +0 -184
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +0 -128
- data/lib/mongoid/contextual/geo_near.rb +0 -269
- data/lib/mongoid/errors/eager_load.rb +0 -26
- data/lib/mongoid/errors/invalid_session_use.rb +0 -26
- data/lib/mongoid/errors/invalid_storage_parent.rb +0 -28
- data/lib/mongoid/errors/invalid_value.rb +0 -18
- data/lib/mongoid/query_cache.rb +0 -333
- data/lib/support/ruby_version.rb +0 -29
- data/spec/mongoid/contextual/geo_near_spec.rb +0 -472
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -61
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -61
- data/spec/mongoid/extensions_spec.rb +0 -32
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -61
- data/spec/mongoid/query_cache_spec.rb +0 -978
- data/spec/support/cluster_config.rb +0 -158
- data/spec/support/session_registry.rb +0 -50
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
|
-
#
|
|
2
|
+
# rubocop:todo all
|
|
3
3
|
|
|
4
4
|
require "spec_helper"
|
|
5
5
|
|
|
@@ -10,11 +10,11 @@ describe Mongoid::Criteria::Findable do
|
|
|
10
10
|
context "when finding by a document" do
|
|
11
11
|
|
|
12
12
|
let(:band) do
|
|
13
|
-
Band.create(name: "Tool")
|
|
13
|
+
Band.create!(name: "Tool")
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
let!(:record) do
|
|
17
|
-
band.records.create(name: "Undertow")
|
|
17
|
+
band.records.create!(name: "Undertow")
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
context "when the document is the root" do
|
|
@@ -41,7 +41,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
41
41
|
|
|
42
42
|
context 'when criteria has additional conditions' do
|
|
43
43
|
let(:band) do
|
|
44
|
-
Band.create(name: "Tool")
|
|
44
|
+
Band.create!(name: "Tool")
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
let(:found) do
|
|
@@ -51,17 +51,17 @@ describe Mongoid::Criteria::Findable do
|
|
|
51
51
|
it 'respects conditions' do
|
|
52
52
|
expect do
|
|
53
53
|
found
|
|
54
|
-
end.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
54
|
+
end.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
55
55
|
end
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
context 'when criteria has additional conditions on id' do
|
|
59
59
|
let(:band) do
|
|
60
|
-
Band.create(name: "Tool")
|
|
60
|
+
Band.create!(name: "Tool")
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
let(:other) do
|
|
64
|
-
Band.create(name: "Other")
|
|
64
|
+
Band.create!(name: "Other")
|
|
65
65
|
end
|
|
66
66
|
|
|
67
67
|
let(:found) do
|
|
@@ -71,7 +71,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
71
71
|
it 'respects both conditions' do
|
|
72
72
|
expect do
|
|
73
73
|
found
|
|
74
|
-
end.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
74
|
+
end.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
75
75
|
end
|
|
76
76
|
end
|
|
77
77
|
end
|
|
@@ -79,7 +79,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
79
79
|
context "when using object ids" do
|
|
80
80
|
|
|
81
81
|
let!(:band) do
|
|
82
|
-
Band.create
|
|
82
|
+
Band.create!
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
context "when providing a single id" do
|
|
@@ -109,10 +109,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
109
109
|
context "when the id does not match" do
|
|
110
110
|
|
|
111
111
|
context "when raising a not found error" do
|
|
112
|
-
|
|
113
|
-
before do
|
|
114
|
-
Mongoid.raise_not_found_error = true
|
|
115
|
-
end
|
|
112
|
+
config_override :raise_not_found_error, true
|
|
116
113
|
|
|
117
114
|
let(:found) do
|
|
118
115
|
Band.find(BSON::ObjectId.new)
|
|
@@ -121,19 +118,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
121
118
|
it "raises an error" do
|
|
122
119
|
expect {
|
|
123
120
|
found
|
|
124
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
121
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
125
122
|
end
|
|
126
123
|
end
|
|
127
124
|
|
|
128
125
|
context "when raising no error" do
|
|
129
|
-
|
|
130
|
-
before do
|
|
131
|
-
Mongoid.raise_not_found_error = false
|
|
132
|
-
end
|
|
133
|
-
|
|
134
|
-
after do
|
|
135
|
-
Mongoid.raise_not_found_error = true
|
|
136
|
-
end
|
|
126
|
+
config_override :raise_not_found_error, false
|
|
137
127
|
|
|
138
128
|
let(:found) do
|
|
139
129
|
Band.find(BSON::ObjectId.new)
|
|
@@ -149,7 +139,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
149
139
|
context "when providing a splat of ids" do
|
|
150
140
|
|
|
151
141
|
let!(:band_two) do
|
|
152
|
-
Band.create(name: "Tool")
|
|
142
|
+
Band.create!(name: "Tool")
|
|
153
143
|
end
|
|
154
144
|
|
|
155
145
|
context "when all ids match" do
|
|
@@ -181,10 +171,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
181
171
|
context "when any id does not match" do
|
|
182
172
|
|
|
183
173
|
context "when raising a not found error" do
|
|
184
|
-
|
|
185
|
-
before do
|
|
186
|
-
Mongoid.raise_not_found_error = true
|
|
187
|
-
end
|
|
174
|
+
config_override :raise_not_found_error, true
|
|
188
175
|
|
|
189
176
|
let(:found) do
|
|
190
177
|
Band.find(band.id, BSON::ObjectId.new)
|
|
@@ -193,19 +180,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
193
180
|
it "raises an error" do
|
|
194
181
|
expect {
|
|
195
182
|
found
|
|
196
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
183
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
197
184
|
end
|
|
198
185
|
end
|
|
199
186
|
|
|
200
187
|
context "when raising no error" do
|
|
201
|
-
|
|
202
|
-
before do
|
|
203
|
-
Mongoid.raise_not_found_error = false
|
|
204
|
-
end
|
|
205
|
-
|
|
206
|
-
after do
|
|
207
|
-
Mongoid.raise_not_found_error = true
|
|
208
|
-
end
|
|
188
|
+
config_override :raise_not_found_error, false
|
|
209
189
|
|
|
210
190
|
let(:found) do
|
|
211
191
|
Band.find(band.id, BSON::ObjectId.new)
|
|
@@ -221,7 +201,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
221
201
|
context "when providing an array of ids" do
|
|
222
202
|
|
|
223
203
|
let!(:band_two) do
|
|
224
|
-
Band.create(name: "Tool")
|
|
204
|
+
Band.create!(name: "Tool")
|
|
225
205
|
end
|
|
226
206
|
|
|
227
207
|
context "when all ids match" do
|
|
@@ -253,34 +233,136 @@ describe Mongoid::Criteria::Findable do
|
|
|
253
233
|
context "when any id does not match" do
|
|
254
234
|
|
|
255
235
|
context "when raising a not found error" do
|
|
236
|
+
config_override :raise_not_found_error, true
|
|
256
237
|
|
|
257
|
-
|
|
258
|
-
|
|
238
|
+
let(:found) do
|
|
239
|
+
Band.find([ band.id, BSON::ObjectId.new ])
|
|
259
240
|
end
|
|
260
241
|
|
|
242
|
+
it "raises an error" do
|
|
243
|
+
expect {
|
|
244
|
+
found
|
|
245
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
246
|
+
end
|
|
247
|
+
end
|
|
248
|
+
|
|
249
|
+
context "when raising no error" do
|
|
250
|
+
config_override :raise_not_found_error, false
|
|
251
|
+
|
|
261
252
|
let(:found) do
|
|
262
253
|
Band.find([ band.id, BSON::ObjectId.new ])
|
|
263
254
|
end
|
|
264
255
|
|
|
256
|
+
it "returns only the matching documents" do
|
|
257
|
+
expect(found).to eq([ band ])
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
context "when providing nested arrays of ids" do
|
|
264
|
+
|
|
265
|
+
let!(:band_two) do
|
|
266
|
+
Band.create!(name: "Tool")
|
|
267
|
+
end
|
|
268
|
+
|
|
269
|
+
context "when all ids match" do
|
|
270
|
+
|
|
271
|
+
let(:found) do
|
|
272
|
+
Band.find([ [ band.id ], [ [ band_two.id ] ] ])
|
|
273
|
+
end
|
|
274
|
+
|
|
275
|
+
it "contains the first match" do
|
|
276
|
+
expect(found).to include(band)
|
|
277
|
+
end
|
|
278
|
+
|
|
279
|
+
it "contains the second match" do
|
|
280
|
+
expect(found).to include(band_two)
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
context "when ids are duplicates" do
|
|
284
|
+
|
|
285
|
+
let(:found) do
|
|
286
|
+
Band.find([ [ band.id ], [ [ band.id ] ] ])
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
it "contains only the first match" do
|
|
290
|
+
expect(found).to eq([band])
|
|
291
|
+
end
|
|
292
|
+
end
|
|
293
|
+
end
|
|
294
|
+
|
|
295
|
+
context "when any id does not match" do
|
|
296
|
+
|
|
297
|
+
context "when raising a not found error" do
|
|
298
|
+
config_override :raise_not_found_error, true
|
|
299
|
+
|
|
300
|
+
let(:found) do
|
|
301
|
+
Band.find([ [ band.id ], [ [ BSON::ObjectId.new ] ] ])
|
|
302
|
+
end
|
|
303
|
+
|
|
265
304
|
it "raises an error" do
|
|
266
305
|
expect {
|
|
267
306
|
found
|
|
268
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
307
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
269
308
|
end
|
|
270
309
|
end
|
|
271
310
|
|
|
272
311
|
context "when raising no error" do
|
|
312
|
+
config_override :raise_not_found_error, false
|
|
273
313
|
|
|
274
|
-
|
|
275
|
-
|
|
314
|
+
let(:found) do
|
|
315
|
+
Band.find([ [ band.id ], [ [ BSON::ObjectId.new ] ] ])
|
|
276
316
|
end
|
|
277
317
|
|
|
278
|
-
|
|
279
|
-
|
|
318
|
+
it "returns only the matching documents" do
|
|
319
|
+
expect(found).to eq([ band ])
|
|
280
320
|
end
|
|
321
|
+
end
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
|
|
325
|
+
context "when providing a Set of ids" do
|
|
326
|
+
|
|
327
|
+
let!(:band_two) do
|
|
328
|
+
Band.create!(name: "Tool")
|
|
329
|
+
end
|
|
330
|
+
|
|
331
|
+
context "when all ids match" do
|
|
332
|
+
let(:found) do
|
|
333
|
+
Band.find(Set[ band.id, band_two.id ])
|
|
334
|
+
end
|
|
335
|
+
|
|
336
|
+
it "contains the first match" do
|
|
337
|
+
expect(found).to include(band)
|
|
338
|
+
end
|
|
339
|
+
|
|
340
|
+
it "contains the second match" do
|
|
341
|
+
expect(found).to include(band_two)
|
|
342
|
+
end
|
|
343
|
+
end
|
|
344
|
+
|
|
345
|
+
context "when any id does not match" do
|
|
346
|
+
|
|
347
|
+
context "when raising a not found error" do
|
|
348
|
+
config_override :raise_not_found_error, true
|
|
281
349
|
|
|
282
350
|
let(:found) do
|
|
283
|
-
Band.find([ band.id, BSON::ObjectId.new ])
|
|
351
|
+
Band.find(Set[ band.id, BSON::ObjectId.new ])
|
|
352
|
+
end
|
|
353
|
+
|
|
354
|
+
it "raises an error" do
|
|
355
|
+
expect {
|
|
356
|
+
found
|
|
357
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
358
|
+
end
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
context "when raising no error" do
|
|
362
|
+
config_override :raise_not_found_error, false
|
|
363
|
+
|
|
364
|
+
let(:found) do
|
|
365
|
+
Band.find(Set[ band.id, BSON::ObjectId.new ])
|
|
284
366
|
end
|
|
285
367
|
|
|
286
368
|
it "returns only the matching documents" do
|
|
@@ -290,6 +372,84 @@ describe Mongoid::Criteria::Findable do
|
|
|
290
372
|
end
|
|
291
373
|
end
|
|
292
374
|
|
|
375
|
+
context "when providing a Range of ids" do
|
|
376
|
+
|
|
377
|
+
let!(:band_two) do
|
|
378
|
+
Band.create!(name: "Tool")
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
context "when all ids match" do
|
|
382
|
+
let(:found) do
|
|
383
|
+
Band.find(band.id.to_s..band_two.id.to_s)
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
it "contains the first match" do
|
|
387
|
+
expect(found).to include(band)
|
|
388
|
+
end
|
|
389
|
+
|
|
390
|
+
it "contains the second match" do
|
|
391
|
+
expect(found).to include(band_two)
|
|
392
|
+
end
|
|
393
|
+
|
|
394
|
+
|
|
395
|
+
context "when any id does not match" do
|
|
396
|
+
|
|
397
|
+
context "when raising a not found error" do
|
|
398
|
+
config_override :raise_not_found_error, true
|
|
399
|
+
|
|
400
|
+
let(:found) do
|
|
401
|
+
Band.find(band_two.id.to_s..BSON::ObjectId.new)
|
|
402
|
+
end
|
|
403
|
+
|
|
404
|
+
it "does not raise error and returns only the matching documents" do
|
|
405
|
+
expect(found).to eq([ band_two ])
|
|
406
|
+
end
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
context "when raising no error" do
|
|
410
|
+
config_override :raise_not_found_error, false
|
|
411
|
+
|
|
412
|
+
let(:found) do
|
|
413
|
+
Band.find(band_two.id.to_s..BSON::ObjectId.new)
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
it "returns only the matching documents" do
|
|
417
|
+
expect(found).to eq([ band_two ])
|
|
418
|
+
end
|
|
419
|
+
end
|
|
420
|
+
end
|
|
421
|
+
end
|
|
422
|
+
|
|
423
|
+
context "when all ids do not match" do
|
|
424
|
+
|
|
425
|
+
context "when raising a not found error" do
|
|
426
|
+
config_override :raise_not_found_error, true
|
|
427
|
+
|
|
428
|
+
let(:found) do
|
|
429
|
+
Band.find(BSON::ObjectId.new..BSON::ObjectId.new)
|
|
430
|
+
end
|
|
431
|
+
|
|
432
|
+
it "raises an error" do
|
|
433
|
+
expect {
|
|
434
|
+
found
|
|
435
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
436
|
+
end
|
|
437
|
+
end
|
|
438
|
+
|
|
439
|
+
context "when raising no error" do
|
|
440
|
+
config_override :raise_not_found_error, false
|
|
441
|
+
|
|
442
|
+
let(:found) do
|
|
443
|
+
Band.find(BSON::ObjectId.new..BSON::ObjectId.new)
|
|
444
|
+
end
|
|
445
|
+
|
|
446
|
+
it "returns only the matching documents" do
|
|
447
|
+
expect(found).to eq([])
|
|
448
|
+
end
|
|
449
|
+
end
|
|
450
|
+
end
|
|
451
|
+
end
|
|
452
|
+
|
|
293
453
|
context "when providing a single id as extended json" do
|
|
294
454
|
|
|
295
455
|
context "when the id matches" do
|
|
@@ -306,10 +466,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
306
466
|
context "when the id does not match" do
|
|
307
467
|
|
|
308
468
|
context "when raising a not found error" do
|
|
309
|
-
|
|
310
|
-
before do
|
|
311
|
-
Mongoid.raise_not_found_error = true
|
|
312
|
-
end
|
|
469
|
+
config_override :raise_not_found_error, true
|
|
313
470
|
|
|
314
471
|
let(:found) do
|
|
315
472
|
Band.find(BSON::ObjectId.new.as_json)
|
|
@@ -318,19 +475,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
318
475
|
it "raises an error" do
|
|
319
476
|
expect {
|
|
320
477
|
found
|
|
321
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
478
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
322
479
|
end
|
|
323
480
|
end
|
|
324
481
|
|
|
325
482
|
context "when raising no error" do
|
|
326
|
-
|
|
327
|
-
before do
|
|
328
|
-
Mongoid.raise_not_found_error = false
|
|
329
|
-
end
|
|
330
|
-
|
|
331
|
-
after do
|
|
332
|
-
Mongoid.raise_not_found_error = true
|
|
333
|
-
end
|
|
483
|
+
config_override :raise_not_found_error, false
|
|
334
484
|
|
|
335
485
|
let(:found) do
|
|
336
486
|
Band.find(BSON::ObjectId.new.as_json)
|
|
@@ -346,7 +496,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
346
496
|
context "when providing a splat of extended json ids" do
|
|
347
497
|
|
|
348
498
|
let!(:band_two) do
|
|
349
|
-
Band.create(name: "Tool")
|
|
499
|
+
Band.create!(name: "Tool")
|
|
350
500
|
end
|
|
351
501
|
|
|
352
502
|
context "when all ids match" do
|
|
@@ -378,10 +528,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
378
528
|
context "when any id does not match" do
|
|
379
529
|
|
|
380
530
|
context "when raising a not found error" do
|
|
381
|
-
|
|
382
|
-
before do
|
|
383
|
-
Mongoid.raise_not_found_error = true
|
|
384
|
-
end
|
|
531
|
+
config_override :raise_not_found_error, true
|
|
385
532
|
|
|
386
533
|
let(:found) do
|
|
387
534
|
Band.find(band.id.as_json, BSON::ObjectId.new.as_json)
|
|
@@ -390,19 +537,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
390
537
|
it "raises an error" do
|
|
391
538
|
expect {
|
|
392
539
|
found
|
|
393
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
540
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
394
541
|
end
|
|
395
542
|
end
|
|
396
543
|
|
|
397
544
|
context "when raising no error" do
|
|
398
|
-
|
|
399
|
-
before do
|
|
400
|
-
Mongoid.raise_not_found_error = false
|
|
401
|
-
end
|
|
402
|
-
|
|
403
|
-
after do
|
|
404
|
-
Mongoid.raise_not_found_error = true
|
|
405
|
-
end
|
|
545
|
+
config_override :raise_not_found_error, false
|
|
406
546
|
|
|
407
547
|
let(:found) do
|
|
408
548
|
Band.find(band.id.as_json, BSON::ObjectId.new.as_json)
|
|
@@ -418,7 +558,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
418
558
|
context "when providing an array of extended json ids" do
|
|
419
559
|
|
|
420
560
|
let!(:band_two) do
|
|
421
|
-
Band.create(name: "Tool")
|
|
561
|
+
Band.create!(name: "Tool")
|
|
422
562
|
end
|
|
423
563
|
|
|
424
564
|
context "when all ids match" do
|
|
@@ -450,10 +590,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
450
590
|
context "when any id does not match" do
|
|
451
591
|
|
|
452
592
|
context "when raising a not found error" do
|
|
453
|
-
|
|
454
|
-
before do
|
|
455
|
-
Mongoid.raise_not_found_error = true
|
|
456
|
-
end
|
|
593
|
+
config_override :raise_not_found_error, true
|
|
457
594
|
|
|
458
595
|
let(:found) do
|
|
459
596
|
Band.find([ band.id.as_json, BSON::ObjectId.new.as_json ])
|
|
@@ -462,19 +599,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
462
599
|
it "raises an error" do
|
|
463
600
|
expect {
|
|
464
601
|
found
|
|
465
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
602
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
466
603
|
end
|
|
467
604
|
end
|
|
468
605
|
|
|
469
606
|
context "when raising no error" do
|
|
470
|
-
|
|
471
|
-
before do
|
|
472
|
-
Mongoid.raise_not_found_error = false
|
|
473
|
-
end
|
|
474
|
-
|
|
475
|
-
after do
|
|
476
|
-
Mongoid.raise_not_found_error = true
|
|
477
|
-
end
|
|
607
|
+
config_override :raise_not_found_error, false
|
|
478
608
|
|
|
479
609
|
let(:found) do
|
|
480
610
|
Band.find([ band.id.as_json, BSON::ObjectId.new.as_json ])
|
|
@@ -499,7 +629,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
499
629
|
end
|
|
500
630
|
|
|
501
631
|
let!(:band) do
|
|
502
|
-
Band.create do |band|
|
|
632
|
+
Band.create! do |band|
|
|
503
633
|
band.id = "tool"
|
|
504
634
|
end
|
|
505
635
|
end
|
|
@@ -520,10 +650,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
520
650
|
context "when the id does not match" do
|
|
521
651
|
|
|
522
652
|
context "when raising a not found error" do
|
|
523
|
-
|
|
524
|
-
before do
|
|
525
|
-
Mongoid.raise_not_found_error = true
|
|
526
|
-
end
|
|
653
|
+
config_override :raise_not_found_error, true
|
|
527
654
|
|
|
528
655
|
let(:found) do
|
|
529
656
|
Band.find("depeche-mode")
|
|
@@ -532,19 +659,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
532
659
|
it "raises an error" do
|
|
533
660
|
expect {
|
|
534
661
|
found
|
|
535
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
662
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
536
663
|
end
|
|
537
664
|
end
|
|
538
665
|
|
|
539
666
|
context "when raising no error" do
|
|
540
|
-
|
|
541
|
-
before do
|
|
542
|
-
Mongoid.raise_not_found_error = false
|
|
543
|
-
end
|
|
544
|
-
|
|
545
|
-
after do
|
|
546
|
-
Mongoid.raise_not_found_error = true
|
|
547
|
-
end
|
|
667
|
+
config_override :raise_not_found_error, false
|
|
548
668
|
|
|
549
669
|
let(:found) do
|
|
550
670
|
Band.find("depeche-mode")
|
|
@@ -560,7 +680,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
560
680
|
context "when providing a splat of ids" do
|
|
561
681
|
|
|
562
682
|
let!(:band_two) do
|
|
563
|
-
Band.create do |band|
|
|
683
|
+
Band.create! do |band|
|
|
564
684
|
band.id = "depeche-mode"
|
|
565
685
|
end
|
|
566
686
|
end
|
|
@@ -583,10 +703,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
583
703
|
context "when any id does not match" do
|
|
584
704
|
|
|
585
705
|
context "when raising a not found error" do
|
|
586
|
-
|
|
587
|
-
before do
|
|
588
|
-
Mongoid.raise_not_found_error = true
|
|
589
|
-
end
|
|
706
|
+
config_override :raise_not_found_error, true
|
|
590
707
|
|
|
591
708
|
let(:found) do
|
|
592
709
|
Band.find(band.id, "new-order")
|
|
@@ -595,19 +712,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
595
712
|
it "raises an error" do
|
|
596
713
|
expect {
|
|
597
714
|
found
|
|
598
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
715
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
599
716
|
end
|
|
600
717
|
end
|
|
601
718
|
|
|
602
719
|
context "when raising no error" do
|
|
603
|
-
|
|
604
|
-
before do
|
|
605
|
-
Mongoid.raise_not_found_error = false
|
|
606
|
-
end
|
|
607
|
-
|
|
608
|
-
after do
|
|
609
|
-
Mongoid.raise_not_found_error = true
|
|
610
|
-
end
|
|
720
|
+
config_override :raise_not_found_error, false
|
|
611
721
|
|
|
612
722
|
let(:found) do
|
|
613
723
|
Band.find(band.id, "new-order")
|
|
@@ -623,7 +733,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
623
733
|
context "when providing an array of ids" do
|
|
624
734
|
|
|
625
735
|
let!(:band_two) do
|
|
626
|
-
Band.create do |band|
|
|
736
|
+
Band.create! do |band|
|
|
627
737
|
band.id = "depeche-mode"
|
|
628
738
|
end
|
|
629
739
|
end
|
|
@@ -646,10 +756,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
646
756
|
context "when any id does not match" do
|
|
647
757
|
|
|
648
758
|
context "when raising a not found error" do
|
|
649
|
-
|
|
650
|
-
before do
|
|
651
|
-
Mongoid.raise_not_found_error = true
|
|
652
|
-
end
|
|
759
|
+
config_override :raise_not_found_error, true
|
|
653
760
|
|
|
654
761
|
let(:found) do
|
|
655
762
|
Band.find([ band.id, "new-order" ])
|
|
@@ -658,19 +765,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
658
765
|
it "raises an error" do
|
|
659
766
|
expect {
|
|
660
767
|
found
|
|
661
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
768
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
662
769
|
end
|
|
663
770
|
end
|
|
664
771
|
|
|
665
772
|
context "when raising no error" do
|
|
666
|
-
|
|
667
|
-
before do
|
|
668
|
-
Mongoid.raise_not_found_error = false
|
|
669
|
-
end
|
|
670
|
-
|
|
671
|
-
after do
|
|
672
|
-
Mongoid.raise_not_found_error = true
|
|
673
|
-
end
|
|
773
|
+
config_override :raise_not_found_error, false
|
|
674
774
|
|
|
675
775
|
let(:found) do
|
|
676
776
|
Band.find([ band.id, "new-order" ])
|
|
@@ -695,7 +795,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
695
795
|
end
|
|
696
796
|
|
|
697
797
|
let!(:band) do
|
|
698
|
-
Band.create do |band|
|
|
798
|
+
Band.create! do |band|
|
|
699
799
|
band.id = {"new-order" => true, "Depeche Mode" => false}
|
|
700
800
|
end
|
|
701
801
|
end
|
|
@@ -716,10 +816,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
716
816
|
context "when the id does not match" do
|
|
717
817
|
|
|
718
818
|
context "when raising a not found error" do
|
|
719
|
-
|
|
720
|
-
before do
|
|
721
|
-
Mongoid.raise_not_found_error = true
|
|
722
|
-
end
|
|
819
|
+
config_override :raise_not_found_error, true
|
|
723
820
|
|
|
724
821
|
let(:found) do
|
|
725
822
|
Band.find({"new-order" => false, "Faith no More" => true})
|
|
@@ -728,19 +825,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
728
825
|
it "raises an error" do
|
|
729
826
|
expect {
|
|
730
827
|
found
|
|
731
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
828
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
732
829
|
end
|
|
733
830
|
end
|
|
734
831
|
|
|
735
832
|
context "when raising no error" do
|
|
736
|
-
|
|
737
|
-
before do
|
|
738
|
-
Mongoid.raise_not_found_error = false
|
|
739
|
-
end
|
|
740
|
-
|
|
741
|
-
after do
|
|
742
|
-
Mongoid.raise_not_found_error = true
|
|
743
|
-
end
|
|
833
|
+
config_override :raise_not_found_error, false
|
|
744
834
|
|
|
745
835
|
let(:found) do
|
|
746
836
|
Band.find({"new-order" => false, "Faith no More" => true})
|
|
@@ -756,7 +846,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
756
846
|
context "when providing a splat of ids" do
|
|
757
847
|
|
|
758
848
|
let!(:band_two) do
|
|
759
|
-
Band.create do |band|
|
|
849
|
+
Band.create! do |band|
|
|
760
850
|
band.id = {"Radiohead" => false, "Nirvana"=> true}
|
|
761
851
|
end
|
|
762
852
|
end
|
|
@@ -779,10 +869,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
779
869
|
context "when any id does not match" do
|
|
780
870
|
|
|
781
871
|
context "when raising a not found error" do
|
|
782
|
-
|
|
783
|
-
before do
|
|
784
|
-
Mongoid.raise_not_found_error = true
|
|
785
|
-
end
|
|
872
|
+
config_override :raise_not_found_error, true
|
|
786
873
|
|
|
787
874
|
let(:found) do
|
|
788
875
|
Band.find(band.id, {"Radiohead" => true, "Nirvana"=> false})
|
|
@@ -791,19 +878,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
791
878
|
it "raises an error" do
|
|
792
879
|
expect {
|
|
793
880
|
found
|
|
794
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
881
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
795
882
|
end
|
|
796
883
|
end
|
|
797
884
|
|
|
798
885
|
context "when raising no error" do
|
|
799
|
-
|
|
800
|
-
before do
|
|
801
|
-
Mongoid.raise_not_found_error = false
|
|
802
|
-
end
|
|
803
|
-
|
|
804
|
-
after do
|
|
805
|
-
Mongoid.raise_not_found_error = true
|
|
806
|
-
end
|
|
886
|
+
config_override :raise_not_found_error, false
|
|
807
887
|
|
|
808
888
|
let(:found) do
|
|
809
889
|
Band.find(band.id, {"Radiohead" => true, "Nirvana"=> false})
|
|
@@ -819,7 +899,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
819
899
|
context "when providing an array of ids" do
|
|
820
900
|
|
|
821
901
|
let!(:band_two) do
|
|
822
|
-
Band.create do |band|
|
|
902
|
+
Band.create! do |band|
|
|
823
903
|
band.id = {"Radiohead" => false, "Nirvana"=> true}
|
|
824
904
|
end
|
|
825
905
|
end
|
|
@@ -842,10 +922,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
842
922
|
context "when any id does not match" do
|
|
843
923
|
|
|
844
924
|
context "when raising a not found error" do
|
|
845
|
-
|
|
846
|
-
before do
|
|
847
|
-
Mongoid.raise_not_found_error = true
|
|
848
|
-
end
|
|
925
|
+
config_override :raise_not_found_error, true
|
|
849
926
|
|
|
850
927
|
let(:found) do
|
|
851
928
|
Band.find([ band.id, {"Radiohead" => true, "Nirvana"=> false} ])
|
|
@@ -854,19 +931,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
854
931
|
it "raises an error" do
|
|
855
932
|
expect {
|
|
856
933
|
found
|
|
857
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
934
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
858
935
|
end
|
|
859
936
|
end
|
|
860
937
|
|
|
861
938
|
context "when raising no error" do
|
|
862
|
-
|
|
863
|
-
before do
|
|
864
|
-
Mongoid.raise_not_found_error = false
|
|
865
|
-
end
|
|
866
|
-
|
|
867
|
-
after do
|
|
868
|
-
Mongoid.raise_not_found_error = true
|
|
869
|
-
end
|
|
939
|
+
config_override :raise_not_found_error, false
|
|
870
940
|
|
|
871
941
|
let(:found) do
|
|
872
942
|
Band.find([ band.id, {"Radiohead" => true, "Nirvana"=> false} ])
|
|
@@ -891,7 +961,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
891
961
|
end
|
|
892
962
|
|
|
893
963
|
let!(:band) do
|
|
894
|
-
Band.create do |band|
|
|
964
|
+
Band.create! do |band|
|
|
895
965
|
band.id = 1
|
|
896
966
|
end
|
|
897
967
|
end
|
|
@@ -912,10 +982,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
912
982
|
context "when the id does not match" do
|
|
913
983
|
|
|
914
984
|
context "when raising a not found error" do
|
|
915
|
-
|
|
916
|
-
before do
|
|
917
|
-
Mongoid.raise_not_found_error = true
|
|
918
|
-
end
|
|
985
|
+
config_override :raise_not_found_error, true
|
|
919
986
|
|
|
920
987
|
let(:found) do
|
|
921
988
|
Band.find(3)
|
|
@@ -924,19 +991,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
924
991
|
it "raises an error" do
|
|
925
992
|
expect {
|
|
926
993
|
found
|
|
927
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
994
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
928
995
|
end
|
|
929
996
|
end
|
|
930
997
|
|
|
931
998
|
context "when raising no error" do
|
|
932
|
-
|
|
933
|
-
before do
|
|
934
|
-
Mongoid.raise_not_found_error = false
|
|
935
|
-
end
|
|
936
|
-
|
|
937
|
-
after do
|
|
938
|
-
Mongoid.raise_not_found_error = true
|
|
939
|
-
end
|
|
999
|
+
config_override :raise_not_found_error, false
|
|
940
1000
|
|
|
941
1001
|
let(:found) do
|
|
942
1002
|
Band.find(3)
|
|
@@ -952,7 +1012,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
952
1012
|
context "when providing a splat of ids" do
|
|
953
1013
|
|
|
954
1014
|
let!(:band_two) do
|
|
955
|
-
Band.create do |band|
|
|
1015
|
+
Band.create! do |band|
|
|
956
1016
|
band.id = 2
|
|
957
1017
|
end
|
|
958
1018
|
end
|
|
@@ -975,10 +1035,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
975
1035
|
context "when any id does not match" do
|
|
976
1036
|
|
|
977
1037
|
context "when raising a not found error" do
|
|
978
|
-
|
|
979
|
-
before do
|
|
980
|
-
Mongoid.raise_not_found_error = true
|
|
981
|
-
end
|
|
1038
|
+
config_override :raise_not_found_error, true
|
|
982
1039
|
|
|
983
1040
|
let(:found) do
|
|
984
1041
|
Band.find(band.id, 3)
|
|
@@ -987,19 +1044,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
987
1044
|
it "raises an error" do
|
|
988
1045
|
expect {
|
|
989
1046
|
found
|
|
990
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
1047
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
991
1048
|
end
|
|
992
1049
|
end
|
|
993
1050
|
|
|
994
1051
|
context "when raising no error" do
|
|
995
|
-
|
|
996
|
-
before do
|
|
997
|
-
Mongoid.raise_not_found_error = false
|
|
998
|
-
end
|
|
999
|
-
|
|
1000
|
-
after do
|
|
1001
|
-
Mongoid.raise_not_found_error = true
|
|
1002
|
-
end
|
|
1052
|
+
config_override :raise_not_found_error, false
|
|
1003
1053
|
|
|
1004
1054
|
let(:found) do
|
|
1005
1055
|
Band.find(band.id, 3)
|
|
@@ -1015,7 +1065,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
1015
1065
|
context "when providing an array of ids" do
|
|
1016
1066
|
|
|
1017
1067
|
let!(:band_two) do
|
|
1018
|
-
Band.create do |band|
|
|
1068
|
+
Band.create! do |band|
|
|
1019
1069
|
band.id = 2
|
|
1020
1070
|
end
|
|
1021
1071
|
end
|
|
@@ -1038,10 +1088,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
1038
1088
|
context "when any id does not match" do
|
|
1039
1089
|
|
|
1040
1090
|
context "when raising a not found error" do
|
|
1041
|
-
|
|
1042
|
-
before do
|
|
1043
|
-
Mongoid.raise_not_found_error = true
|
|
1044
|
-
end
|
|
1091
|
+
config_override :raise_not_found_error, true
|
|
1045
1092
|
|
|
1046
1093
|
let(:found) do
|
|
1047
1094
|
Band.find([ band.id, 3 ])
|
|
@@ -1050,19 +1097,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
1050
1097
|
it "raises an error" do
|
|
1051
1098
|
expect {
|
|
1052
1099
|
found
|
|
1053
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
1100
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
1054
1101
|
end
|
|
1055
1102
|
end
|
|
1056
1103
|
|
|
1057
1104
|
context "when raising no error" do
|
|
1058
|
-
|
|
1059
|
-
before do
|
|
1060
|
-
Mongoid.raise_not_found_error = false
|
|
1061
|
-
end
|
|
1062
|
-
|
|
1063
|
-
after do
|
|
1064
|
-
Mongoid.raise_not_found_error = true
|
|
1065
|
-
end
|
|
1105
|
+
config_override :raise_not_found_error, false
|
|
1066
1106
|
|
|
1067
1107
|
let(:found) do
|
|
1068
1108
|
Band.find([ band.id, 3 ])
|
|
@@ -1078,7 +1118,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
1078
1118
|
context "when providing a range" do
|
|
1079
1119
|
|
|
1080
1120
|
let!(:band_two) do
|
|
1081
|
-
Band.create do |band|
|
|
1121
|
+
Band.create! do |band|
|
|
1082
1122
|
band.id = 2
|
|
1083
1123
|
end
|
|
1084
1124
|
end
|
|
@@ -1101,10 +1141,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
1101
1141
|
context "when any id does not match" do
|
|
1102
1142
|
|
|
1103
1143
|
context "when raising a not found error" do
|
|
1104
|
-
|
|
1105
|
-
before do
|
|
1106
|
-
Mongoid.raise_not_found_error = true
|
|
1107
|
-
end
|
|
1144
|
+
config_override :raise_not_found_error, true
|
|
1108
1145
|
|
|
1109
1146
|
let(:found) do
|
|
1110
1147
|
Band.find(1..3)
|
|
@@ -1113,19 +1150,12 @@ describe Mongoid::Criteria::Findable do
|
|
|
1113
1150
|
it "raises an error" do
|
|
1114
1151
|
expect {
|
|
1115
1152
|
found
|
|
1116
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
1153
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Band with id\(s\)/)
|
|
1117
1154
|
end
|
|
1118
1155
|
end
|
|
1119
1156
|
|
|
1120
1157
|
context "when raising no error" do
|
|
1121
|
-
|
|
1122
|
-
before do
|
|
1123
|
-
Mongoid.raise_not_found_error = false
|
|
1124
|
-
end
|
|
1125
|
-
|
|
1126
|
-
after do
|
|
1127
|
-
Mongoid.raise_not_found_error = true
|
|
1128
|
-
end
|
|
1158
|
+
config_override :raise_not_found_error, false
|
|
1129
1159
|
|
|
1130
1160
|
let(:found) do
|
|
1131
1161
|
Band.find(1..3)
|
|
@@ -1150,7 +1180,7 @@ describe Mongoid::Criteria::Findable do
|
|
|
1150
1180
|
context "when using string and object ids" do
|
|
1151
1181
|
|
|
1152
1182
|
let!(:band) do
|
|
1153
|
-
Band.create
|
|
1183
|
+
Band.create!
|
|
1154
1184
|
end
|
|
1155
1185
|
|
|
1156
1186
|
context "when providing multiple ids" do
|
|
@@ -1167,6 +1197,42 @@ describe Mongoid::Criteria::Findable do
|
|
|
1167
1197
|
end
|
|
1168
1198
|
end
|
|
1169
1199
|
end
|
|
1200
|
+
|
|
1201
|
+
context "when passing in a block" do
|
|
1202
|
+
|
|
1203
|
+
let!(:band1) { Band.create!(name: '1') }
|
|
1204
|
+
let!(:band2) { Band.create!(name: '2') }
|
|
1205
|
+
let!(:band3) { Band.create!(name: '2') }
|
|
1206
|
+
|
|
1207
|
+
it "yields the documents to the block" do
|
|
1208
|
+
doc = Band.find { |b| b.name == '2' }
|
|
1209
|
+
expect(doc).to eq(band2)
|
|
1210
|
+
end
|
|
1211
|
+
end
|
|
1212
|
+
|
|
1213
|
+
context "when passing in ids and a block" do
|
|
1214
|
+
|
|
1215
|
+
let!(:band1) { Band.create!(name: '1') }
|
|
1216
|
+
let!(:band2) { Band.create!(name: '2') }
|
|
1217
|
+
let!(:band3) { Band.create!(name: '2') }
|
|
1218
|
+
|
|
1219
|
+
it "acts like findable find" do
|
|
1220
|
+
docs = Band.find(band1.id, band2.id) { |b| b.name == '2' }
|
|
1221
|
+
expect(docs).to eq([ band1, band2 ])
|
|
1222
|
+
end
|
|
1223
|
+
end
|
|
1224
|
+
|
|
1225
|
+
context "when passing in a Proc and a block" do
|
|
1226
|
+
|
|
1227
|
+
let!(:band1) { Band.create!(name: '1') }
|
|
1228
|
+
let!(:band2) { Band.create!(name: '2') }
|
|
1229
|
+
let!(:band3) { Band.create!(name: '2') }
|
|
1230
|
+
|
|
1231
|
+
it "acts like findable find" do
|
|
1232
|
+
docs = Band.find(-> { 'default' }) { |b| b.name == '3' }
|
|
1233
|
+
expect(docs).to eq('default')
|
|
1234
|
+
end
|
|
1235
|
+
end
|
|
1170
1236
|
end
|
|
1171
1237
|
|
|
1172
1238
|
describe "#for_ids" do
|
|
@@ -1190,11 +1256,11 @@ describe Mongoid::Criteria::Findable do
|
|
|
1190
1256
|
describe "#multiple_from__db" do
|
|
1191
1257
|
|
|
1192
1258
|
let!(:band) do
|
|
1193
|
-
Band.create(name: "Depeche Mode")
|
|
1259
|
+
Band.create!(name: "Depeche Mode")
|
|
1194
1260
|
end
|
|
1195
1261
|
|
|
1196
1262
|
let!(:band_two) do
|
|
1197
|
-
Band.create(name: "Tool")
|
|
1263
|
+
Band.create!(name: "Tool")
|
|
1198
1264
|
end
|
|
1199
1265
|
|
|
1200
1266
|
context "when providing a single id" do
|