mongoid 7.0.2 → 8.1.1
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 +33 -33
- data/LICENSE +1 -0
- data/README.md +34 -20
- data/Rakefile +100 -5
- data/lib/config/locales/en.yml +220 -105
- data/lib/mongoid/association/accessors.rb +176 -84
- data/lib/mongoid/association/bindable.rb +57 -28
- data/lib/mongoid/association/builders.rb +9 -15
- data/lib/mongoid/association/constrainable.rb +5 -7
- data/lib/mongoid/association/depending.rb +9 -18
- data/lib/mongoid/association/eager_loadable.rb +31 -10
- data/lib/mongoid/association/embedded/batchable.rb +68 -54
- data/lib/mongoid/association/embedded/cyclic.rb +10 -17
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +27 -9
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +9 -6
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +16 -25
- data/lib/mongoid/association/embedded/embedded_in.rb +9 -28
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +5 -8
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +10 -6
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +156 -135
- data/lib/mongoid/association/embedded/embeds_many.rb +10 -37
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +27 -10
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +64 -30
- data/lib/mongoid/association/embedded/embeds_one.rb +11 -34
- data/lib/mongoid/association/embedded.rb +2 -0
- data/lib/mongoid/association/macros.rb +65 -41
- data/lib/mongoid/association/many.rb +25 -35
- data/lib/mongoid/association/marshalable.rb +3 -6
- data/lib/mongoid/association/nested/many.rb +22 -30
- data/lib/mongoid/association/nested/nested_buildable.rb +9 -15
- data/lib/mongoid/association/nested/one.rb +57 -30
- data/lib/mongoid/association/nested.rb +3 -3
- data/lib/mongoid/association/one.rb +5 -12
- data/lib/mongoid/association/options.rb +16 -46
- data/lib/mongoid/association/proxy.rb +52 -40
- data/lib/mongoid/association/referenced/auto_save.rb +9 -14
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +5 -9
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +11 -9
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +40 -3
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +19 -31
- data/lib/mongoid/association/referenced/belongs_to.rb +16 -38
- data/lib/mongoid/association/referenced/counter_cache.rb +14 -25
- data/lib/mongoid/association/referenced/eager.rb +42 -38
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -11
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +106 -67
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +29 -46
- data/lib/mongoid/association/referenced/has_many/binding.rb +3 -6
- data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +440 -456
- data/lib/mongoid/association/referenced/has_many/proxy.rb +104 -127
- data/lib/mongoid/association/referenced/has_many.rb +21 -45
- data/lib/mongoid/association/referenced/has_one/binding.rb +4 -9
- data/lib/mongoid/association/referenced/has_one/buildable.rb +20 -6
- data/lib/mongoid/association/referenced/has_one/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +16 -29
- data/lib/mongoid/association/referenced/has_one/proxy.rb +25 -30
- data/lib/mongoid/association/referenced/has_one.rb +16 -36
- data/lib/mongoid/association/referenced/syncable.rb +11 -26
- data/lib/mongoid/association/referenced.rb +2 -0
- data/lib/mongoid/association/reflections.rb +7 -6
- data/lib/mongoid/association/relatable.rb +149 -89
- data/lib/mongoid/association.rb +13 -27
- data/lib/mongoid/atomic/modifiers.rb +29 -53
- data/lib/mongoid/atomic/paths/embedded/many.rb +23 -7
- data/lib/mongoid/atomic/paths/embedded/one.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded.rb +3 -4
- data/lib/mongoid/atomic/paths/root.rb +4 -7
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +49 -47
- data/lib/mongoid/attributes/dynamic.rb +22 -36
- data/lib/mongoid/attributes/nested.rb +12 -15
- data/lib/mongoid/attributes/processing.rb +19 -27
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +6 -9
- data/lib/mongoid/attributes.rb +103 -100
- data/lib/mongoid/cacheable.rb +7 -10
- data/lib/mongoid/changeable.rb +152 -73
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +21 -18
- data/lib/mongoid/clients/sessions.rb +10 -10
- data/lib/mongoid/clients/storage_options.rb +9 -17
- data/lib/mongoid/clients/validators/storage.rb +5 -24
- data/lib/mongoid/clients/validators.rb +2 -1
- data/lib/mongoid/clients.rb +3 -10
- data/lib/mongoid/collection_configurable.rb +58 -0
- data/lib/mongoid/composable.rb +7 -9
- data/lib/mongoid/config/defaults.rb +60 -0
- data/lib/mongoid/config/environment.rb +51 -13
- data/lib/mongoid/config/options.rb +20 -23
- data/lib/mongoid/config/validators/async_query_executor.rb +24 -0
- data/lib/mongoid/config/validators/client.rb +8 -23
- data/lib/mongoid/config/validators/option.rb +2 -3
- data/lib/mongoid/config/validators.rb +3 -1
- data/lib/mongoid/config.rb +235 -48
- data/lib/mongoid/contextual/aggregable/memory.rb +40 -27
- data/lib/mongoid/contextual/aggregable/mongo.rb +32 -33
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +29 -31
- data/lib/mongoid/contextual/command.rb +2 -5
- data/lib/mongoid/contextual/geo_near.rb +13 -44
- data/lib/mongoid/contextual/map_reduce.rb +7 -35
- data/lib/mongoid/contextual/memory.rb +387 -81
- data/lib/mongoid/contextual/mongo/documents_loader.rb +177 -0
- data/lib/mongoid/contextual/mongo.rb +641 -283
- data/lib/mongoid/contextual/none.rb +264 -31
- data/lib/mongoid/contextual/queryable.rb +3 -4
- data/lib/mongoid/contextual.rb +21 -11
- data/lib/mongoid/copyable.rb +46 -17
- data/lib/mongoid/criteria/findable.rb +20 -20
- data/lib/mongoid/criteria/includable.rb +32 -34
- data/lib/mongoid/criteria/inspectable.rb +2 -3
- data/lib/mongoid/criteria/marshalable.rb +12 -7
- data/lib/mongoid/criteria/modifiable.rb +15 -21
- data/lib/mongoid/criteria/options.rb +4 -5
- data/lib/mongoid/criteria/permission.rb +3 -2
- data/lib/mongoid/criteria/queryable/aggregable.rb +4 -15
- data/lib/mongoid/criteria/queryable/expandable.rb +68 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +7 -41
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +28 -8
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +5 -6
- data/lib/mongoid/criteria/queryable/extensions/date.rb +9 -9
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +11 -12
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +4 -41
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +4 -21
- data/lib/mongoid/criteria/queryable/extensions/object.rb +6 -30
- data/lib/mongoid/criteria/queryable/extensions/range.rb +49 -17
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +12 -19
- data/lib/mongoid/criteria/queryable/extensions/set.rb +4 -5
- data/lib/mongoid/criteria/queryable/extensions/string.rb +7 -32
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +7 -22
- data/lib/mongoid/criteria/queryable/extensions/time.rb +10 -10
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +19 -7
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -4
- data/lib/mongoid/criteria/queryable/key.rb +105 -31
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +205 -44
- data/lib/mongoid/criteria/queryable/optional.rb +16 -65
- data/lib/mongoid/criteria/queryable/options.rb +4 -21
- data/lib/mongoid/criteria/queryable/pipeline.rb +5 -15
- data/lib/mongoid/criteria/queryable/selectable.rb +471 -168
- data/lib/mongoid/criteria/queryable/selector.rb +133 -58
- data/lib/mongoid/criteria/queryable/smash.rb +42 -18
- data/lib/mongoid/criteria/queryable/storable.rb +237 -0
- data/lib/mongoid/criteria/queryable.rb +18 -15
- data/lib/mongoid/criteria/scopable.rb +29 -21
- data/lib/mongoid/criteria/translator.rb +45 -0
- data/lib/mongoid/criteria.rb +106 -111
- data/lib/mongoid/deprecable.rb +36 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +162 -103
- data/lib/mongoid/equality.rb +35 -18
- data/lib/mongoid/errors/ambiguous_relationship.rb +4 -5
- data/lib/mongoid/errors/callback.rb +2 -3
- data/lib/mongoid/errors/create_collection_failure.rb +33 -0
- data/lib/mongoid/errors/criteria_argument_required.rb +18 -0
- data/lib/mongoid/errors/delete_restriction.rb +10 -13
- data/lib/mongoid/errors/document_not_destroyed.rb +4 -7
- data/lib/mongoid/errors/document_not_found.rb +35 -21
- data/lib/mongoid/errors/drop_collection_failure.rb +27 -0
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/immutable_attribute.rb +26 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -3
- data/lib/mongoid/errors/invalid_async_query_executor.rb +25 -0
- data/lib/mongoid/errors/invalid_collection.rb +2 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +3 -4
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +3 -4
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +24 -0
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +25 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +27 -0
- data/lib/mongoid/errors/invalid_field.rb +8 -7
- data/lib/mongoid/errors/invalid_field_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_field_option.rb +2 -3
- data/lib/mongoid/errors/invalid_field_type.rb +26 -0
- data/lib/mongoid/errors/invalid_find.rb +2 -3
- data/lib/mongoid/errors/invalid_global_executor_concurrency.rb +22 -0
- data/lib/mongoid/errors/invalid_includes.rb +2 -3
- data/lib/mongoid/errors/invalid_index.rb +2 -3
- data/lib/mongoid/errors/invalid_options.rb +4 -5
- data/lib/mongoid/errors/invalid_path.rb +2 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +2 -5
- data/lib/mongoid/errors/invalid_query.rb +40 -0
- data/lib/mongoid/errors/invalid_relation.rb +5 -10
- data/lib/mongoid/errors/invalid_relation_option.rb +4 -5
- data/lib/mongoid/errors/invalid_scope.rb +2 -3
- data/lib/mongoid/errors/invalid_session_use.rb +3 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -5
- data/lib/mongoid/errors/invalid_storage_options.rb +3 -4
- data/lib/mongoid/errors/invalid_storage_parent.rb +4 -3
- data/lib/mongoid/errors/invalid_time.rb +2 -3
- data/lib/mongoid/errors/inverse_not_found.rb +3 -4
- data/lib/mongoid/errors/mixed_client_configuration.rb +2 -3
- data/lib/mongoid/errors/mixed_relations.rb +2 -3
- data/lib/mongoid/errors/mongoid_error.rb +6 -13
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -4
- data/lib/mongoid/errors/no_client_config.rb +4 -5
- data/lib/mongoid/errors/no_client_database.rb +3 -4
- data/lib/mongoid/errors/no_client_hosts.rb +3 -4
- data/lib/mongoid/errors/no_clients_config.rb +2 -3
- data/lib/mongoid/errors/no_default_client.rb +3 -4
- data/lib/mongoid/errors/no_environment.rb +2 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +2 -3
- data/lib/mongoid/errors/no_metadata.rb +2 -3
- data/lib/mongoid/errors/no_parent.rb +2 -3
- data/lib/mongoid/errors/readonly_attribute.rb +3 -4
- data/lib/mongoid/errors/readonly_document.rb +3 -6
- data/lib/mongoid/errors/scope_overwrite.rb +2 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +3 -1
- data/lib/mongoid/errors/unknown_attribute.rb +3 -4
- data/lib/mongoid/errors/unknown_model.rb +2 -3
- data/lib/mongoid/errors/unsaved_document.rb +3 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +2 -3
- data/lib/mongoid/errors/validations.rb +2 -1
- data/lib/mongoid/errors.rb +18 -4
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +37 -44
- data/lib/mongoid/extensions/big_decimal.rb +35 -21
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +10 -6
- data/lib/mongoid/extensions/date.rb +32 -25
- data/lib/mongoid/extensions/date_time.rb +5 -13
- data/lib/mongoid/extensions/decimal128.rb +2 -5
- data/lib/mongoid/extensions/false_class.rb +5 -8
- data/lib/mongoid/extensions/float.rb +12 -14
- data/lib/mongoid/extensions/hash.rb +64 -42
- data/lib/mongoid/extensions/integer.rb +12 -16
- data/lib/mongoid/extensions/module.rb +3 -4
- data/lib/mongoid/extensions/nil_class.rb +2 -5
- data/lib/mongoid/extensions/object.rb +27 -52
- data/lib/mongoid/extensions/object_id.rb +2 -7
- data/lib/mongoid/extensions/range.rb +42 -20
- data/lib/mongoid/extensions/regexp.rb +14 -7
- data/lib/mongoid/extensions/set.rb +13 -11
- data/lib/mongoid/extensions/string.rb +35 -64
- data/lib/mongoid/extensions/symbol.rb +6 -22
- data/lib/mongoid/extensions/time.rb +38 -22
- data/lib/mongoid/extensions/time_with_zone.rb +26 -9
- data/lib/mongoid/extensions/true_class.rb +5 -8
- data/lib/mongoid/extensions.rb +19 -3
- data/lib/mongoid/factory.rb +104 -17
- data/lib/mongoid/fields/foreign_key.rb +14 -26
- data/lib/mongoid/fields/localized.rb +21 -15
- data/lib/mongoid/fields/standard.rb +23 -43
- data/lib/mongoid/fields/validators/macro.rb +32 -20
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +349 -76
- data/lib/mongoid/findable.rb +115 -34
- data/lib/mongoid/indexable/specification.rb +5 -18
- data/lib/mongoid/indexable/validators/options.rb +8 -9
- data/lib/mongoid/indexable.rb +6 -21
- data/lib/mongoid/inspectable.rb +4 -11
- data/lib/mongoid/interceptable.rb +85 -41
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +4 -154
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/bits.rb +41 -0
- data/lib/mongoid/matcher/bits_all_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_all_set.rb +20 -0
- data/lib/mongoid/matcher/bits_any_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_any_set.rb +20 -0
- data/lib/mongoid/matcher/elem_match.rb +36 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
- data/lib/mongoid/matcher/eq.rb +11 -0
- data/lib/mongoid/matcher/eq_impl.rb +67 -0
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +26 -0
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +35 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +62 -0
- data/lib/mongoid/matcher/field_operator.rb +54 -0
- data/lib/mongoid/matcher/gt.rb +17 -0
- data/lib/mongoid/matcher/gte.rb +17 -0
- data/lib/mongoid/matcher/in.rb +25 -0
- data/lib/mongoid/matcher/lt.rb +17 -0
- data/lib/mongoid/matcher/lte.rb +17 -0
- data/lib/mongoid/matcher/mod.rb +17 -0
- data/lib/mongoid/matcher/ne.rb +16 -0
- data/lib/mongoid/matcher/nin.rb +11 -0
- data/lib/mongoid/matcher/nor.rb +25 -0
- data/lib/mongoid/matcher/not.rb +29 -0
- data/lib/mongoid/matcher/or.rb +21 -0
- data/lib/mongoid/matcher/regex.rb +41 -0
- data/lib/mongoid/matcher/size.rb +26 -0
- data/lib/mongoid/matcher/type.rb +99 -0
- data/lib/mongoid/matcher.rb +130 -0
- data/lib/mongoid/persistable/creatable.rb +23 -30
- data/lib/mongoid/persistable/deletable.rb +7 -23
- data/lib/mongoid/persistable/destroyable.rb +12 -11
- data/lib/mongoid/persistable/incrementable.rb +6 -7
- data/lib/mongoid/persistable/logical.rb +4 -6
- data/lib/mongoid/persistable/poppable.rb +3 -6
- data/lib/mongoid/persistable/pullable.rb +3 -8
- data/lib/mongoid/persistable/pushable.rb +14 -10
- data/lib/mongoid/persistable/renamable.rb +10 -8
- data/lib/mongoid/persistable/savable.rb +16 -9
- data/lib/mongoid/persistable/settable.rb +3 -6
- data/lib/mongoid/persistable/unsettable.rb +10 -10
- data/lib/mongoid/persistable/updatable.rb +99 -30
- data/lib/mongoid/persistable/upsertable.rb +23 -9
- data/lib/mongoid/persistable.rb +138 -40
- data/lib/mongoid/persistence_context.rb +107 -52
- data/lib/mongoid/positional.rb +3 -6
- data/lib/mongoid/query_cache.rb +18 -234
- data/lib/mongoid/railtie.rb +20 -16
- data/lib/mongoid/railties/controller_runtime.rb +88 -0
- data/lib/mongoid/railties/database.rake +16 -2
- data/lib/mongoid/reloadable.rb +19 -22
- data/lib/mongoid/scopable.rb +37 -60
- data/lib/mongoid/selectable.rb +8 -18
- data/lib/mongoid/serializable.rb +33 -34
- data/lib/mongoid/shardable.rb +108 -21
- data/lib/mongoid/stateful.rb +60 -20
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +24 -5
- data/lib/mongoid/tasks/database.rb +105 -7
- data/lib/mongoid/threaded/lifecycle.rb +7 -26
- data/lib/mongoid/threaded.rb +80 -67
- data/lib/mongoid/timestamps/created/short.rb +2 -1
- data/lib/mongoid/timestamps/created.rb +4 -3
- data/lib/mongoid/timestamps/short.rb +2 -1
- data/lib/mongoid/timestamps/timeless.rb +6 -9
- data/lib/mongoid/timestamps/updated/short.rb +2 -1
- data/lib/mongoid/timestamps/updated.rb +5 -6
- data/lib/mongoid/timestamps.rb +3 -2
- data/lib/mongoid/touchable.rb +54 -25
- data/lib/mongoid/traversable.rb +185 -61
- data/lib/mongoid/utils.rb +22 -0
- data/lib/mongoid/validatable/associated.rb +5 -6
- data/lib/mongoid/validatable/format.rb +2 -1
- data/lib/mongoid/validatable/length.rb +2 -1
- data/lib/mongoid/validatable/localizable.rb +3 -4
- data/lib/mongoid/validatable/macros.rb +8 -15
- data/lib/mongoid/validatable/presence.rb +10 -15
- data/lib/mongoid/validatable/queryable.rb +2 -3
- data/lib/mongoid/validatable/uniqueness.rb +30 -42
- data/lib/mongoid/validatable.rb +16 -32
- data/lib/mongoid/version.rb +3 -2
- data/lib/mongoid/warnings.rb +44 -0
- data/lib/mongoid.rb +50 -17
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -2
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +53 -32
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -2
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
- data/lib/rails/generators/mongoid_generator.rb +2 -1
- data/lib/rails/mongoid.rb +4 -5
- data/spec/README.md +33 -0
- data/spec/config/mongoid.yml +29 -3
- data/spec/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/app_spec.rb +345 -0
- data/spec/integration/associations/belongs_to_spec.rb +33 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +57 -0
- data/spec/integration/associations/embedded_spec.rb +283 -0
- data/spec/integration/associations/embeds_many_spec.rb +219 -0
- data/spec/integration/associations/embeds_one_spec.rb +41 -0
- data/spec/integration/associations/foreign_key_spec.rb +107 -0
- data/spec/integration/associations/foreign_key_spec_models.rb +64 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
- data/spec/integration/associations/has_many_spec.rb +128 -0
- data/spec/integration/associations/has_one_spec.rb +272 -0
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +115 -0
- data/spec/integration/associations/reverse_population_spec.rb +34 -0
- data/spec/integration/associations/reverse_population_spec_models.rb +36 -0
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +116 -0
- data/spec/integration/bson_regexp_raw_spec.rb +19 -0
- data/spec/integration/callbacks_models.rb +192 -0
- data/spec/integration/callbacks_spec.rb +584 -0
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +40 -0
- data/spec/integration/criteria/default_scope_spec.rb +72 -0
- data/spec/integration/criteria/logical_spec.rb +124 -0
- data/spec/integration/criteria/range_spec.rb +359 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +142 -0
- data/spec/integration/discriminator_key_spec.rb +391 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +51 -0
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +74 -0
- data/spec/integration/matcher_examples_spec.rb +765 -0
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +409 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +112 -0
- data/spec/integration/matcher_operator_data/in.yml +210 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_data/type.yml +70 -0
- data/spec/integration/matcher_operator_data/type_array.yml +16 -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 +41 -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 +122 -0
- data/spec/integration/matcher_spec.rb +283 -0
- data/spec/integration/persistence/range_field_spec.rb +350 -0
- data/spec/integration/server_query_spec.rb +141 -0
- data/spec/integration/shardable_spec.rb +148 -0
- data/spec/integration/stringified_symbol_field_spec.rb +203 -0
- data/spec/lite_spec_helper.rb +83 -0
- data/spec/mongoid/association/accessors_spec.rb +284 -77
- data/spec/mongoid/association/auto_save_spec.rb +74 -33
- data/spec/mongoid/association/builders_spec.rb +3 -1
- data/spec/mongoid/association/constrainable_spec.rb +2 -0
- data/spec/mongoid/association/counter_cache_spec.rb +35 -33
- data/spec/mongoid/association/depending_spec.rb +431 -338
- data/spec/mongoid/association/eager_spec.rb +8 -5
- data/spec/mongoid/association/embedded/cyclic_spec.rb +4 -2
- data/spec/mongoid/association/embedded/dirty_spec.rb +4 -2
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +4 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +56 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +152 -13
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +61 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +114 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +706 -197
- data/spec/mongoid/association/embedded/embeds_many_models.rb +227 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +63 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +81 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +27 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +38 -23
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +8 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +73 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +28 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +77 -1
- data/spec/mongoid/association/macros_spec.rb +11 -9
- data/spec/mongoid/association/nested/many_spec.rb +2 -0
- data/spec/mongoid/association/nested/one_spec.rb +18 -12
- data/spec/mongoid/association/options_spec.rb +2 -0
- data/spec/mongoid/association/polymorphic_spec.rb +2 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +4 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +111 -16
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +266 -17
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +114 -58
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +57 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +96 -29
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +28 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +67 -4
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +76 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +559 -385
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +92 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +39 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +84 -7
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +132 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +40 -9
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +415 -129
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +859 -502
- data/spec/mongoid/association/referenced/has_many_models.rb +97 -0
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +51 -3
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +55 -9
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +34 -4
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +135 -27
- data/spec/mongoid/association/referenced/has_one_models.rb +113 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +87 -7
- data/spec/mongoid/association/reflections_spec.rb +2 -0
- data/spec/mongoid/association/syncable_spec.rb +48 -32
- data/spec/mongoid/association_spec.rb +2 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +49 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +2 -0
- data/spec/mongoid/atomic/paths_spec.rb +93 -12
- data/spec/mongoid/atomic_spec.rb +53 -6
- data/spec/mongoid/attributes/dynamic_spec.rb +152 -0
- data/spec/mongoid/attributes/nested_spec.rb +149 -78
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -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 +40 -0
- data/spec/mongoid/attributes/readonly_spec.rb +24 -22
- data/spec/mongoid/attributes_spec.rb +895 -54
- data/spec/mongoid/cacheable_spec.rb +6 -4
- data/spec/mongoid/changeable_spec.rb +484 -67
- data/spec/mongoid/clients/factory_spec.rb +139 -33
- data/spec/mongoid/clients/options_spec.rb +76 -54
- data/spec/mongoid/clients/sessions_spec.rb +35 -63
- data/spec/mongoid/clients/transactions_spec.rb +87 -41
- data/spec/mongoid/clients_spec.rb +257 -31
- data/spec/mongoid/collection_configurable_spec.rb +158 -0
- data/spec/mongoid/composable_spec.rb +2 -0
- data/spec/mongoid/config/defaults_spec.rb +160 -0
- data/spec/mongoid/config/environment_spec.rb +126 -8
- data/spec/mongoid/config/options_spec.rb +22 -3
- data/spec/mongoid/config_spec.rb +507 -2
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +433 -153
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +122 -20
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +242 -81
- data/spec/mongoid/contextual/geo_near_spec.rb +31 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +22 -19
- data/spec/mongoid/contextual/memory_spec.rb +1828 -303
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
- data/spec/mongoid/contextual/mongo_spec.rb +3505 -1268
- data/spec/mongoid/contextual/none_spec.rb +80 -67
- data/spec/mongoid/copyable_spec.rb +697 -40
- data/spec/mongoid/copyable_spec_models.rb +47 -0
- data/spec/mongoid/criteria/findable_spec.rb +161 -228
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/inspectable_spec.rb +2 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +20 -1
- data/spec/mongoid/criteria/modifiable_spec.rb +100 -48
- data/spec/mongoid/criteria/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +61 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +9 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +136 -26
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +13 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +46 -17
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +2 -15
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +119 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +239 -178
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +9 -7
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +7 -70
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +2 -59
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +53 -23
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +41 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +50 -6
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +145 -12
- data/spec/mongoid/criteria/queryable/optional_spec.rb +18 -485
- data/spec/mongoid/criteria/queryable/options_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +2538 -0
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +38 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1193 -2934
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +56 -5
- data/spec/mongoid/criteria/queryable/smash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +226 -0
- data/spec/mongoid/criteria/scopable_spec.rb +210 -0
- data/spec/mongoid/criteria/translator_spec.rb +132 -0
- data/spec/mongoid/criteria_projection_spec.rb +406 -0
- data/spec/mongoid/criteria_spec.rb +1334 -1719
- data/spec/mongoid/document_fields_spec.rb +262 -0
- data/spec/mongoid/document_persistence_context_spec.rb +32 -0
- data/spec/mongoid/document_query_spec.rb +89 -0
- data/spec/mongoid/document_spec.rb +212 -67
- data/spec/mongoid/equality_spec.rb +144 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +5 -3
- data/spec/mongoid/errors/callback_spec.rb +2 -0
- data/spec/mongoid/errors/delete_restriction_spec.rb +4 -2
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +2 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +78 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +2 -0
- data/spec/mongoid/errors/{eager_load_spec.rb → invalid_config_file_spec.rb} +7 -5
- data/spec/mongoid/errors/invalid_config_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_includes_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_index_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_options_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_path_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_relation_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -1
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +2 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +2 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +2 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +24 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_config_spec.rb +4 -2
- data/spec/mongoid/errors/no_client_database_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_hosts_spec.rb +5 -3
- data/spec/mongoid/errors/no_clients_config_spec.rb +2 -0
- data/spec/mongoid/errors/no_environment_spec.rb +5 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +2 -0
- data/spec/mongoid/errors/no_metadata_spec.rb +4 -2
- data/spec/mongoid/errors/no_parent_spec.rb +3 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +2 -0
- data/spec/mongoid/errors/readonly_document_spec.rb +4 -2
- data/spec/mongoid/errors/scope_overwrite_spec.rb +2 -0
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -1
- data/spec/mongoid/errors/unknown_attribute_spec.rb +4 -2
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +2 -0
- data/spec/mongoid/errors/validations_spec.rb +2 -0
- data/spec/mongoid/extensions/array_spec.rb +41 -45
- data/spec/mongoid/extensions/big_decimal_spec.rb +715 -213
- data/spec/mongoid/extensions/binary_spec.rb +46 -9
- data/spec/mongoid/extensions/boolean_spec.rb +70 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +339 -0
- data/spec/mongoid/extensions/date_spec.rb +58 -140
- data/spec/mongoid/extensions/date_time_spec.rb +32 -69
- data/spec/mongoid/extensions/decimal128_spec.rb +2 -0
- data/spec/mongoid/extensions/false_class_spec.rb +3 -1
- data/spec/mongoid/extensions/float_spec.rb +66 -73
- data/spec/mongoid/extensions/hash_spec.rb +135 -0
- data/spec/mongoid/extensions/integer_spec.rb +61 -63
- data/spec/mongoid/extensions/module_spec.rb +2 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/extensions/object_id_spec.rb +2 -0
- data/spec/mongoid/extensions/object_spec.rb +13 -24
- data/spec/mongoid/extensions/range_spec.rb +257 -54
- data/spec/mongoid/extensions/regexp_spec.rb +70 -20
- data/spec/mongoid/extensions/set_spec.rb +108 -0
- data/spec/mongoid/extensions/string_spec.rb +146 -57
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +84 -0
- data/spec/mongoid/extensions/symbol_spec.rb +20 -25
- data/spec/mongoid/extensions/time_spec.rb +668 -106
- data/spec/mongoid/extensions/time_with_zone_spec.rb +57 -83
- data/spec/mongoid/extensions/true_class_spec.rb +3 -1
- data/spec/mongoid/extensions_spec.rb +16 -2
- data/spec/mongoid/factory_spec.rb +347 -27
- data/spec/mongoid/fields/foreign_key_spec.rb +2 -0
- data/spec/mongoid/fields/localized_spec.rb +86 -41
- data/spec/mongoid/fields/standard_spec.rb +2 -0
- data/spec/mongoid/fields_spec.rb +869 -114
- data/spec/mongoid/findable_spec.rb +521 -65
- data/spec/mongoid/indexable/specification_spec.rb +4 -2
- data/spec/mongoid/indexable_spec.rb +87 -32
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +761 -98
- data/spec/mongoid/interceptable_spec_models.rb +307 -0
- data/spec/mongoid/loggable_spec.rb +2 -0
- data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +239 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +36 -0
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +114 -29
- data/spec/mongoid/persistable/deletable_spec.rb +300 -18
- data/spec/mongoid/persistable/destroyable_spec.rb +228 -18
- data/spec/mongoid/persistable/incrementable_spec.rb +66 -13
- data/spec/mongoid/persistable/logical_spec.rb +56 -3
- data/spec/mongoid/persistable/poppable_spec.rb +55 -3
- data/spec/mongoid/persistable/pullable_spec.rb +108 -6
- data/spec/mongoid/persistable/pushable_spec.rb +163 -7
- data/spec/mongoid/persistable/renamable_spec.rb +54 -2
- data/spec/mongoid/persistable/savable_spec.rb +284 -25
- data/spec/mongoid/persistable/settable_spec.rb +91 -8
- data/spec/mongoid/persistable/unsettable_spec.rb +55 -3
- data/spec/mongoid/persistable/updatable_spec.rb +63 -49
- data/spec/mongoid/persistable/upsertable_spec.rb +93 -3
- data/spec/mongoid/persistable_spec.rb +85 -9
- data/spec/mongoid/persistence_context_spec.rb +60 -59
- data/spec/mongoid/positional_spec.rb +2 -0
- data/spec/mongoid/query_cache_middleware_spec.rb +50 -0
- data/spec/mongoid/query_cache_spec.rb +446 -78
- data/spec/mongoid/relations/proxy_spec.rb +9 -7
- data/spec/mongoid/reloadable_spec.rb +381 -26
- data/spec/mongoid/scopable_spec.rb +206 -38
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +148 -38
- data/spec/mongoid/shardable_models.rb +75 -0
- data/spec/mongoid/shardable_spec.rb +239 -34
- data/spec/mongoid/stateful_spec.rb +153 -9
- data/spec/mongoid/tasks/database_rake_spec.rb +89 -13
- data/spec/mongoid/tasks/database_spec.rb +130 -1
- data/spec/mongoid/threaded_spec.rb +72 -2
- data/spec/mongoid/timestamps/created/short_spec.rb +3 -1
- data/spec/mongoid/timestamps/created_spec.rb +3 -1
- data/spec/mongoid/timestamps/timeless_spec.rb +4 -2
- data/spec/mongoid/timestamps/updated/short_spec.rb +5 -3
- data/spec/mongoid/timestamps/updated_spec.rb +5 -3
- data/spec/mongoid/timestamps_spec.rb +400 -10
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +568 -33
- data/spec/mongoid/touchable_spec_models.rb +59 -0
- data/spec/mongoid/traversable_spec.rb +1145 -1
- data/spec/mongoid/validatable/associated_spec.rb +2 -0
- data/spec/mongoid/validatable/format_spec.rb +2 -0
- data/spec/mongoid/validatable/length_spec.rb +2 -0
- data/spec/mongoid/validatable/numericality_spec.rb +2 -0
- data/spec/mongoid/validatable/presence_spec.rb +28 -22
- data/spec/mongoid/validatable/uniqueness_spec.rb +159 -103
- data/spec/mongoid/validatable_spec.rb +5 -3
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +36 -10
- data/spec/rails/controller_extension/controller_runtime_spec.rb +112 -0
- data/spec/rails/mongoid_spec.rb +8 -18
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +378 -0
- data/spec/shared/lib/mrss/docker_runner.rb +298 -0
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +238 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +113 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +37 -0
- data/spec/shared/share/Dockerfile.erb +321 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +416 -0
- data/spec/shared/shlib/set_env.sh +169 -0
- data/spec/spec_helper.rb +74 -88
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +77 -0
- data/spec/support/expectations.rb +21 -3
- data/spec/support/helpers.rb +11 -0
- data/spec/support/immutable_ids.rb +118 -0
- data/spec/support/macros.rb +129 -0
- data/spec/{app → support}/models/account.rb +3 -1
- data/spec/{app → support}/models/acolyte.rb +2 -0
- data/spec/{app → support}/models/actor.rb +3 -1
- data/spec/support/models/actress.rb +4 -0
- data/spec/{app → support}/models/address.rb +6 -0
- data/spec/{app → support}/models/address_component.rb +2 -0
- data/spec/{app → support}/models/address_number.rb +2 -0
- data/spec/{app → support}/models/agency.rb +2 -0
- data/spec/{app → support}/models/agent.rb +2 -0
- data/spec/{app → support}/models/album.rb +2 -0
- data/spec/{app → support}/models/alert.rb +2 -0
- data/spec/{app → support}/models/animal.rb +2 -0
- data/spec/{app → support}/models/answer.rb +2 -0
- data/spec/{app → support}/models/appointment.rb +2 -0
- data/spec/support/models/armrest.rb +9 -0
- data/spec/{app → support}/models/article.rb +2 -0
- data/spec/{app → support}/models/artist.rb +4 -1
- data/spec/{app → support}/models/artwork.rb +2 -0
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/{app → support}/models/audio.rb +2 -0
- data/spec/support/models/augmentation.rb +25 -0
- data/spec/{app → support}/models/author.rb +2 -0
- data/spec/{app → support}/models/baby.rb +2 -0
- data/spec/{app → support}/models/band.rb +10 -0
- data/spec/{app → support}/models/bar.rb +2 -0
- data/spec/{app → support}/models/basic.rb +2 -0
- data/spec/support/models/bed.rb +3 -0
- data/spec/{app → support}/models/big_palette.rb +2 -0
- data/spec/{app → support}/models/birthday.rb +2 -0
- data/spec/support/models/bolt.rb +7 -0
- data/spec/{app → support}/models/bomb.rb +2 -0
- data/spec/{app → support}/models/book.rb +3 -0
- data/spec/{app → support}/models/breed.rb +2 -0
- data/spec/{app → support}/models/browser.rb +3 -1
- data/spec/{app → support}/models/building.rb +4 -0
- data/spec/{app → support}/models/building_address.rb +2 -0
- data/spec/{app → support}/models/bus.rb +2 -0
- data/spec/{app → support}/models/business.rb +2 -0
- data/spec/{app → support}/models/callback_test.rb +2 -0
- data/spec/{app → support}/models/canvas.rb +3 -1
- data/spec/support/models/car.rb +3 -0
- data/spec/{app → support}/models/cat.rb +2 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/{app → support}/models/category.rb +2 -0
- data/spec/{app → support}/models/child.rb +2 -0
- data/spec/{app → support}/models/child_doc.rb +5 -3
- data/spec/{app → support}/models/church.rb +2 -0
- data/spec/{app → support}/models/circle.rb +2 -0
- data/spec/{app → support}/models/circuit.rb +2 -0
- data/spec/support/models/circus.rb +12 -0
- data/spec/{app → support}/models/code.rb +4 -0
- data/spec/support/models/coding/pull_request.rb +11 -0
- data/spec/support/models/coding.rb +3 -0
- data/spec/{app → support}/models/comment.rb +2 -0
- data/spec/{app → support}/models/company.rb +2 -0
- data/spec/{app → support}/models/consumption_period.rb +2 -0
- data/spec/{app → support}/models/contextable_item.rb +2 -0
- data/spec/{app → support}/models/contractor.rb +2 -0
- data/spec/{app → support}/models/cookie.rb +2 -0
- data/spec/{app → support}/models/country_code.rb +4 -0
- data/spec/{app → support}/models/courier_job.rb +2 -0
- data/spec/support/models/cover.rb +10 -0
- data/spec/support/models/crate.rb +12 -0
- data/spec/support/models/customer.rb +10 -0
- data/spec/support/models/customer_address.rb +11 -0
- data/spec/support/models/deed.rb +7 -0
- data/spec/{app → support}/models/definition.rb +2 -0
- data/spec/support/models/delegating_patient.rb +15 -0
- data/spec/{app → support}/models/description.rb +2 -0
- data/spec/{app → support}/models/dictionary.rb +8 -0
- data/spec/{app → support}/models/division.rb +2 -0
- data/spec/{app → support}/models/doctor.rb +2 -0
- data/spec/{app → support}/models/dog.rb +2 -0
- data/spec/{app → support}/models/dokument.rb +2 -0
- data/spec/{app → support}/models/draft.rb +2 -0
- data/spec/{app → support}/models/dragon.rb +2 -0
- data/spec/{app → support}/models/driver.rb +3 -1
- data/spec/{app → support}/models/drug.rb +2 -0
- data/spec/{app → support}/models/dungeon.rb +2 -0
- data/spec/{app → support}/models/edit.rb +2 -0
- data/spec/{app → support}/models/email.rb +2 -0
- data/spec/{app → support}/models/employer.rb +2 -0
- data/spec/{app → support}/models/entry.rb +2 -0
- data/spec/support/models/eraser.rb +3 -0
- data/spec/{app → support}/models/even.rb +2 -0
- data/spec/{app → support}/models/event.rb +2 -0
- data/spec/{app → support}/models/exhibition.rb +2 -0
- data/spec/{app → support}/models/exhibitor.rb +2 -0
- data/spec/{app → support}/models/explosion.rb +2 -0
- data/spec/{app → support}/models/eye.rb +2 -0
- data/spec/{app → support}/models/eye_bowl.rb +2 -0
- data/spec/{app → support}/models/face.rb +2 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/{app → support}/models/favorite.rb +2 -0
- data/spec/{app → support}/models/filesystem.rb +2 -0
- data/spec/{app → support}/models/fire_hydrant.rb +2 -0
- data/spec/{app → support}/models/firefox.rb +2 -0
- data/spec/{app → support}/models/fish.rb +2 -0
- data/spec/{app → support}/models/folder.rb +2 -0
- data/spec/{app → support}/models/folder_item.rb +2 -0
- data/spec/{app → support}/models/fruits.rb +2 -0
- data/spec/{app → support}/models/game.rb +2 -0
- data/spec/{app → support}/models/ghost.rb +2 -0
- data/spec/support/models/guitar.rb +4 -0
- data/spec/support/models/hole.rb +12 -0
- data/spec/{app → support}/models/home.rb +2 -0
- data/spec/{app → support}/models/house.rb +2 -0
- data/spec/{app → support}/models/html_writer.rb +2 -0
- data/spec/{app → support}/models/id_key.rb +2 -0
- data/spec/support/models/idnodef.rb +7 -0
- data/spec/{app → support}/models/image.rb +2 -0
- data/spec/{app → support}/models/implant.rb +11 -0
- data/spec/support/models/instrument.rb +8 -0
- data/spec/{app → support}/models/item.rb +3 -1
- data/spec/{app → support}/models/jar.rb +2 -0
- data/spec/{app → support}/models/kaleidoscope.rb +2 -0
- data/spec/{app → support}/models/kangaroo.rb +3 -1
- data/spec/{app → support}/models/label.rb +6 -1
- data/spec/{app → support}/models/language.rb +2 -0
- data/spec/{app → support}/models/lat_lng.rb +2 -0
- data/spec/{app → support}/models/league.rb +2 -0
- data/spec/support/models/learner.rb +4 -0
- data/spec/{app → support}/models/line_item.rb +2 -0
- data/spec/{app → support}/models/location.rb +2 -0
- data/spec/{app → support}/models/login.rb +2 -0
- data/spec/{app → support}/models/manufacturer.rb +2 -0
- data/spec/{app → support}/models/meat.rb +2 -0
- data/spec/{app → support}/models/membership.rb +3 -0
- data/spec/{app → support}/models/message.rb +2 -0
- data/spec/support/models/minim.rb +6 -0
- data/spec/{app → support}/models/mixed_drink.rb +2 -0
- data/spec/support/models/mop.rb +24 -0
- data/spec/{app → support}/models/movie.rb +2 -0
- data/spec/support/models/my_hash.rb +4 -0
- data/spec/{app → support}/models/name.rb +2 -0
- data/spec/support/models/name_only.rb +8 -0
- data/spec/{app → support}/models/node.rb +2 -0
- data/spec/{app → support}/models/note.rb +2 -0
- data/spec/support/models/nut.rb +7 -0
- data/spec/{app → support}/models/odd.rb +2 -0
- data/spec/support/models/order.rb +12 -0
- data/spec/{app → support}/models/ordered_post.rb +3 -1
- data/spec/{app → support}/models/ordered_preference.rb +2 -0
- data/spec/{app → support}/models/oscar.rb +2 -0
- data/spec/support/models/other_owner_object.rb +4 -0
- data/spec/{app → support}/models/override.rb +2 -0
- data/spec/{app → support}/models/ownable.rb +2 -0
- data/spec/{app → support}/models/owner.rb +4 -0
- data/spec/{app → support}/models/pack.rb +2 -0
- data/spec/{app → support}/models/page.rb +2 -0
- data/spec/{app → support}/models/page_question.rb +2 -0
- data/spec/{app → support}/models/palette.rb +3 -1
- data/spec/{app → support}/models/parent.rb +2 -0
- data/spec/{app → support}/models/parent_doc.rb +2 -0
- data/spec/support/models/passport.rb +22 -0
- data/spec/{app → support}/models/patient.rb +2 -0
- data/spec/{app → support}/models/pdf_writer.rb +2 -0
- data/spec/support/models/pencil.rb +3 -0
- data/spec/{app → support}/models/person.rb +22 -1
- data/spec/{app → support}/models/pet.rb +2 -0
- data/spec/{app → support}/models/pet_owner.rb +2 -0
- data/spec/{app → support}/models/phone.rb +5 -1
- data/spec/support/models/piano.rb +4 -0
- data/spec/{app → support}/models/pizza.rb +2 -0
- data/spec/{app → support}/models/player.rb +4 -0
- data/spec/{app → support}/models/post.rb +2 -0
- data/spec/{app → support}/models/post_genre.rb +2 -0
- data/spec/support/models/powerup.rb +25 -0
- data/spec/{app → support}/models/preference.rb +2 -0
- data/spec/{app → support}/models/princess.rb +2 -0
- data/spec/{app → support}/models/product.rb +3 -0
- data/spec/support/models/profile.rb +17 -0
- data/spec/{app → support}/models/pronunciation.rb +2 -0
- data/spec/{app → support}/models/pub.rb +2 -0
- data/spec/support/models/publication/encyclopedia.rb +11 -0
- data/spec/support/models/publication/review.rb +13 -0
- data/spec/support/models/publication.rb +4 -0
- data/spec/{app → support}/models/purchase.rb +2 -0
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/{app → support}/models/question.rb +2 -0
- data/spec/{app → support}/models/quiz.rb +2 -0
- data/spec/{app → support}/models/rating.rb +2 -0
- data/spec/{app → support}/models/record.rb +2 -0
- data/spec/{app → support}/models/registry.rb +3 -0
- data/spec/{app → support}/models/role.rb +2 -0
- data/spec/{app → support}/models/root_category.rb +2 -0
- data/spec/{app → support}/models/sandwich.rb +2 -0
- data/spec/{app → support}/models/scheduler.rb +2 -0
- data/spec/support/models/school.rb +14 -0
- data/spec/support/models/scribe.rb +7 -0
- data/spec/support/models/sealer.rb +7 -0
- data/spec/support/models/seat.rb +24 -0
- data/spec/{app → support}/models/seo.rb +2 -0
- data/spec/support/models/series.rb +7 -0
- data/spec/{app → support}/models/server.rb +2 -0
- data/spec/{app → support}/models/service.rb +2 -0
- data/spec/{app → support}/models/shape.rb +4 -2
- data/spec/{app → support}/models/shelf.rb +2 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/{app → support}/models/shipment_address.rb +2 -0
- data/spec/{app → support}/models/shipping_container.rb +2 -0
- data/spec/{app → support}/models/shipping_pack.rb +2 -0
- data/spec/support/models/shirt.rb +11 -0
- data/spec/{app → support}/models/shop.rb +2 -0
- data/spec/{app → support}/models/short_agent.rb +2 -0
- data/spec/{app → support}/models/short_quiz.rb +2 -0
- data/spec/{app → support}/models/simple.rb +2 -0
- data/spec/{app → support}/models/slave.rb +2 -0
- data/spec/{app → support}/models/song.rb +2 -0
- data/spec/{app → support}/models/sound.rb +2 -0
- data/spec/support/models/spacer.rb +7 -0
- data/spec/{app → support}/models/square.rb +2 -0
- data/spec/{app → support}/models/staff.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +2 -0
- data/spec/support/models/store_as_dup_test3.rb +7 -0
- data/spec/support/models/store_as_dup_test4.rb +7 -0
- data/spec/{app → support}/models/strategy.rb +2 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/{app → support}/models/sub_item.rb +2 -0
- data/spec/{app → support}/models/subscription.rb +2 -0
- data/spec/{app → support}/models/survey.rb +2 -0
- data/spec/{app → support}/models/symptom.rb +2 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +2 -0
- data/spec/{app → support}/models/target.rb +2 -0
- data/spec/{app → support}/models/template.rb +2 -0
- data/spec/{app → support}/models/thing.rb +2 -0
- data/spec/support/models/threadlocker.rb +7 -0
- data/spec/{app → support}/models/title.rb +2 -0
- data/spec/{app → support}/models/tool.rb +4 -2
- data/spec/{app → support}/models/topping.rb +2 -0
- data/spec/support/models/toy.rb +9 -0
- data/spec/{app → support}/models/track.rb +2 -0
- data/spec/{app → support}/models/translation.rb +2 -0
- data/spec/{app → support}/models/tree.rb +2 -0
- data/spec/support/models/truck.rb +7 -0
- data/spec/{app → support}/models/user.rb +2 -0
- data/spec/{app → support}/models/user_account.rb +2 -0
- data/spec/{app → support}/models/validation_callback.rb +2 -0
- data/spec/support/models/vehicle.rb +18 -0
- data/spec/{app → support}/models/version.rb +2 -0
- data/spec/{app → support}/models/vertex.rb +3 -1
- data/spec/{app → support}/models/vet_visit.rb +2 -0
- data/spec/{app → support}/models/video.rb +2 -0
- data/spec/support/models/video_game.rb +3 -0
- data/spec/support/models/washer.rb +7 -0
- data/spec/support/models/weapon.rb +25 -0
- data/spec/{app → support}/models/wiki_page.rb +3 -0
- data/spec/{app → support}/models/word.rb +2 -0
- data/spec/{app → support}/models/word_origin.rb +2 -0
- data/spec/{app → support}/models/writer.rb +4 -2
- 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 +53 -0
- data/spec/support/spec_config.rb +64 -0
- data.tar.gz.sig +1 -2
- metadata +1158 -615
- metadata.gz.sig +0 -0
- data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
- data/lib/mongoid/errors/eager_load.rb +0 -22
- data/lib/mongoid/errors/invalid_value.rb +0 -16
- data/lib/mongoid/matchable/all.rb +0 -27
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -72
- data/lib/mongoid/matchable/elem_match.rb +0 -34
- data/lib/mongoid/matchable/exists.rb +0 -23
- data/lib/mongoid/matchable/gt.rb +0 -23
- data/lib/mongoid/matchable/gte.rb +0 -23
- data/lib/mongoid/matchable/in.rb +0 -24
- data/lib/mongoid/matchable/lt.rb +0 -23
- data/lib/mongoid/matchable/lte.rb +0 -23
- data/lib/mongoid/matchable/ne.rb +0 -21
- data/lib/mongoid/matchable/nin.rb +0 -22
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/matchable/or.rb +0 -33
- data/lib/mongoid/matchable/regexp.rb +0 -27
- data/lib/mongoid/matchable/size.rb +0 -21
- data/lib/support/ruby_version.rb +0 -26
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/augmentation.rb +0 -11
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/circus.rb +0 -7
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/passport.rb +0 -5
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/powerup.rb +0 -11
- data/spec/app/models/profile.rb +0 -5
- data/spec/app/models/series.rb +0 -4
- data/spec/app/models/truck.rb +0 -3
- data/spec/app/models/vehicle.rb +0 -11
- data/spec/app/models/video_game.rb +0 -1
- data/spec/app/models/weapon.rb +0 -11
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +0 -58
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -58
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
- data/spec/mongoid/matchable/all_spec.rb +0 -31
- data/spec/mongoid/matchable/and_spec.rb +0 -187
- data/spec/mongoid/matchable/default_spec.rb +0 -130
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -106
- data/spec/mongoid/matchable/exists_spec.rb +0 -57
- data/spec/mongoid/matchable/gt_spec.rb +0 -86
- data/spec/mongoid/matchable/gte_spec.rb +0 -84
- data/spec/mongoid/matchable/in_spec.rb +0 -49
- data/spec/mongoid/matchable/lt_spec.rb +0 -85
- data/spec/mongoid/matchable/lte_spec.rb +0 -85
- data/spec/mongoid/matchable/ne_spec.rb +0 -46
- data/spec/mongoid/matchable/nin_spec.rb +0 -48
- data/spec/mongoid/matchable/nor_spec.rb +0 -209
- data/spec/mongoid/matchable/or_spec.rb +0 -131
- data/spec/mongoid/matchable/regexp_spec.rb +0 -59
- data/spec/mongoid/matchable/size_spec.rb +0 -25
- data/spec/mongoid/matchable_spec.rb +0 -853
- /data/spec/{app → support}/models/array_field.rb +0 -0
- /data/spec/{app → support}/models/updatable.rb +0 -0
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "spec_helper"
|
|
2
4
|
|
|
3
5
|
describe Mongoid::Validatable::UniquenessValidator do
|
|
@@ -20,7 +22,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
20
22
|
|
|
21
23
|
before do
|
|
22
24
|
Dictionary.with(collection: "dicts") do |klass|
|
|
23
|
-
klass.create(name: "websters")
|
|
25
|
+
klass.create!(name: "websters")
|
|
24
26
|
end
|
|
25
27
|
end
|
|
26
28
|
|
|
@@ -78,7 +80,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
78
80
|
context "when the attribute id is unique" do
|
|
79
81
|
|
|
80
82
|
let(:dictionary) do
|
|
81
|
-
Dictionary.create
|
|
83
|
+
Dictionary.create!
|
|
82
84
|
end
|
|
83
85
|
|
|
84
86
|
let(:word) do
|
|
@@ -118,7 +120,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
118
120
|
it "adds the uniqueness error to the aliased field name" do
|
|
119
121
|
dictionary.valid?
|
|
120
122
|
expect(dictionary.errors).to have_key(:language)
|
|
121
|
-
expect(dictionary.errors[:language]).to eq([ "
|
|
123
|
+
expect(dictionary.errors[:language]).to eq([ "has already been taken" ])
|
|
122
124
|
end
|
|
123
125
|
end
|
|
124
126
|
|
|
@@ -135,7 +137,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
135
137
|
it "adds the uniqueness error to the underlying field name" do
|
|
136
138
|
dictionary.valid?
|
|
137
139
|
expect(dictionary.errors).to have_key(:l)
|
|
138
|
-
expect(dictionary.errors[:l]).to eq([ "
|
|
140
|
+
expect(dictionary.errors[:l]).to eq([ "has already been taken" ])
|
|
139
141
|
end
|
|
140
142
|
end
|
|
141
143
|
end
|
|
@@ -170,7 +172,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
170
172
|
context "when a document with no value exists in the database" do
|
|
171
173
|
|
|
172
174
|
before do
|
|
173
|
-
Dictionary.create
|
|
175
|
+
Dictionary.create!
|
|
174
176
|
end
|
|
175
177
|
|
|
176
178
|
let(:dictionary) do
|
|
@@ -188,7 +190,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
188
190
|
context "when single localization" do
|
|
189
191
|
|
|
190
192
|
before do
|
|
191
|
-
Dictionary.create(description: "english")
|
|
193
|
+
Dictionary.create!(description: "english")
|
|
192
194
|
end
|
|
193
195
|
|
|
194
196
|
let(:dictionary) do
|
|
@@ -224,7 +226,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
224
226
|
context "when single localization" do
|
|
225
227
|
|
|
226
228
|
before do
|
|
227
|
-
Dictionary.create(description: "english")
|
|
229
|
+
Dictionary.create!(description: "english")
|
|
228
230
|
end
|
|
229
231
|
|
|
230
232
|
let(:dictionary) do
|
|
@@ -237,7 +239,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
237
239
|
|
|
238
240
|
it "adds the uniqueness error" do
|
|
239
241
|
dictionary.valid?
|
|
240
|
-
expect(dictionary.errors[:description]).to eq([ "
|
|
242
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
|
241
243
|
end
|
|
242
244
|
end
|
|
243
245
|
|
|
@@ -258,7 +260,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
258
260
|
|
|
259
261
|
it "adds the uniqueness error" do
|
|
260
262
|
dictionary.valid?
|
|
261
|
-
expect(dictionary.errors[:description]).to eq([ "
|
|
263
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
|
262
264
|
end
|
|
263
265
|
end
|
|
264
266
|
end
|
|
@@ -280,7 +282,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
280
282
|
context "when there are no special characters" do
|
|
281
283
|
|
|
282
284
|
before do
|
|
283
|
-
Dictionary.create(description: "english")
|
|
285
|
+
Dictionary.create!(description: "english")
|
|
284
286
|
end
|
|
285
287
|
|
|
286
288
|
let(:dictionary) do
|
|
@@ -295,7 +297,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
295
297
|
context "when special characters exist" do
|
|
296
298
|
|
|
297
299
|
before do
|
|
298
|
-
Dictionary.create(description: "english")
|
|
300
|
+
Dictionary.create!(description: "english")
|
|
299
301
|
end
|
|
300
302
|
|
|
301
303
|
let(:dictionary) do
|
|
@@ -315,7 +317,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
315
317
|
context "when signle localization" do
|
|
316
318
|
|
|
317
319
|
before do
|
|
318
|
-
Dictionary.create(description: "english")
|
|
320
|
+
Dictionary.create!(description: "english")
|
|
319
321
|
end
|
|
320
322
|
|
|
321
323
|
let(:dictionary) do
|
|
@@ -328,7 +330,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
328
330
|
|
|
329
331
|
it "adds the uniqueness error" do
|
|
330
332
|
dictionary.valid?
|
|
331
|
-
expect(dictionary.errors[:description]).to eq([ "
|
|
333
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
|
332
334
|
end
|
|
333
335
|
end
|
|
334
336
|
|
|
@@ -349,7 +351,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
349
351
|
|
|
350
352
|
it "adds the uniqueness error" do
|
|
351
353
|
dictionary.valid?
|
|
352
|
-
expect(dictionary.errors[:description]).to eq([ "
|
|
354
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
|
353
355
|
end
|
|
354
356
|
end
|
|
355
357
|
end
|
|
@@ -357,7 +359,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
357
359
|
context "when the document is the match in the database" do
|
|
358
360
|
|
|
359
361
|
let!(:dictionary) do
|
|
360
|
-
Dictionary.create(description: "english")
|
|
362
|
+
Dictionary.create!(description: "english")
|
|
361
363
|
end
|
|
362
364
|
|
|
363
365
|
it "returns true" do
|
|
@@ -397,7 +399,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
397
399
|
|
|
398
400
|
it "adds the uniqueness error" do
|
|
399
401
|
dictionary.valid?
|
|
400
|
-
expect(dictionary.errors[:description]).to eq([ "
|
|
402
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
|
401
403
|
end
|
|
402
404
|
end
|
|
403
405
|
end
|
|
@@ -417,7 +419,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
417
419
|
context "when the attribute is unique" do
|
|
418
420
|
|
|
419
421
|
let!(:oxford) do
|
|
420
|
-
Dictionary.create(name: "Oxford")
|
|
422
|
+
Dictionary.create!(name: "Oxford")
|
|
421
423
|
end
|
|
422
424
|
|
|
423
425
|
let(:dictionary) do
|
|
@@ -445,7 +447,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
445
447
|
context "when the document is not the match" do
|
|
446
448
|
|
|
447
449
|
before do
|
|
448
|
-
Dictionary.create(name: "Oxford")
|
|
450
|
+
Dictionary.create!(name: "Oxford")
|
|
449
451
|
end
|
|
450
452
|
|
|
451
453
|
let!(:dictionary) do
|
|
@@ -458,7 +460,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
458
460
|
|
|
459
461
|
it "adds the uniqueness error" do
|
|
460
462
|
dictionary.valid?
|
|
461
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
463
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
462
464
|
end
|
|
463
465
|
end
|
|
464
466
|
|
|
@@ -467,7 +469,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
467
469
|
context "when the field has changed" do
|
|
468
470
|
|
|
469
471
|
let!(:dictionary) do
|
|
470
|
-
Dictionary.create(name: "Oxford")
|
|
472
|
+
Dictionary.create!(name: "Oxford")
|
|
471
473
|
end
|
|
472
474
|
|
|
473
475
|
it "returns true" do
|
|
@@ -519,7 +521,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
519
521
|
context "when the attribute is not unique" do
|
|
520
522
|
|
|
521
523
|
before do
|
|
522
|
-
Dictionary.create(name: "Oxford")
|
|
524
|
+
Dictionary.create!(name: "Oxford")
|
|
523
525
|
end
|
|
524
526
|
|
|
525
527
|
let(:dictionary) do
|
|
@@ -546,7 +548,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
546
548
|
context "when the attribute is unique" do
|
|
547
549
|
|
|
548
550
|
before do
|
|
549
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
551
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
550
552
|
end
|
|
551
553
|
|
|
552
554
|
let(:dictionary) do
|
|
@@ -561,7 +563,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
561
563
|
context "when the attribute is unique in the scope" do
|
|
562
564
|
|
|
563
565
|
before do
|
|
564
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
566
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
565
567
|
end
|
|
566
568
|
|
|
567
569
|
let(:dictionary) do
|
|
@@ -576,7 +578,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
576
578
|
context "when the attribute is not unique with no scope" do
|
|
577
579
|
|
|
578
580
|
before do
|
|
579
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
581
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
580
582
|
end
|
|
581
583
|
|
|
582
584
|
let(:dictionary) do
|
|
@@ -591,7 +593,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
591
593
|
context "when the attribute is not unique in another scope" do
|
|
592
594
|
|
|
593
595
|
before do
|
|
594
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
596
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
595
597
|
end
|
|
596
598
|
|
|
597
599
|
let(:dictionary) do
|
|
@@ -608,7 +610,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
608
610
|
context "when the document is not the match" do
|
|
609
611
|
|
|
610
612
|
before do
|
|
611
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
613
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
612
614
|
end
|
|
613
615
|
|
|
614
616
|
let(:dictionary) do
|
|
@@ -621,14 +623,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
621
623
|
|
|
622
624
|
it "adds the uniqueness errors" do
|
|
623
625
|
dictionary.valid?
|
|
624
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
626
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
625
627
|
end
|
|
626
628
|
end
|
|
627
629
|
|
|
628
630
|
context "when the document is the match in the database" do
|
|
629
631
|
|
|
630
632
|
let!(:dictionary) do
|
|
631
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
633
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
632
634
|
end
|
|
633
635
|
|
|
634
636
|
it "returns true" do
|
|
@@ -651,7 +653,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
651
653
|
context "when the attribute is unique" do
|
|
652
654
|
|
|
653
655
|
before do
|
|
654
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
656
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
655
657
|
end
|
|
656
658
|
|
|
657
659
|
let(:dictionary) do
|
|
@@ -666,7 +668,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
666
668
|
context "when the attribute is unique in the scope" do
|
|
667
669
|
|
|
668
670
|
before do
|
|
669
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
671
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
670
672
|
end
|
|
671
673
|
|
|
672
674
|
let(:dictionary) do
|
|
@@ -699,14 +701,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
699
701
|
|
|
700
702
|
it "should set an error for associated object not being unique" do
|
|
701
703
|
item.update_attributes(folder_id: personal_folder.id)
|
|
702
|
-
expect(item.errors.messages[:name].first).to eq("
|
|
704
|
+
expect(item.errors.messages[:name].first).to eq("has already been taken")
|
|
703
705
|
end
|
|
704
706
|
end
|
|
705
707
|
|
|
706
708
|
context "when the attribute is not unique with no scope" do
|
|
707
709
|
|
|
708
710
|
before do
|
|
709
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
711
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
710
712
|
end
|
|
711
713
|
|
|
712
714
|
let(:dictionary) do
|
|
@@ -721,7 +723,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
721
723
|
context "when the attribute is not unique in another scope" do
|
|
722
724
|
|
|
723
725
|
before do
|
|
724
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
726
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
725
727
|
end
|
|
726
728
|
|
|
727
729
|
let(:dictionary) do
|
|
@@ -738,7 +740,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
738
740
|
context "when the document is not the match" do
|
|
739
741
|
|
|
740
742
|
before do
|
|
741
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
743
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
742
744
|
end
|
|
743
745
|
|
|
744
746
|
let(:dictionary) do
|
|
@@ -751,14 +753,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
751
753
|
|
|
752
754
|
it "adds the uniqueness errors" do
|
|
753
755
|
dictionary.valid?
|
|
754
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
756
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
755
757
|
end
|
|
756
758
|
end
|
|
757
759
|
|
|
758
760
|
context "when the document is the match in the database" do
|
|
759
761
|
|
|
760
762
|
let!(:dictionary) do
|
|
761
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
763
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
762
764
|
end
|
|
763
765
|
|
|
764
766
|
it "returns true" do
|
|
@@ -769,7 +771,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
769
771
|
context "when one of the scopes is a time" do
|
|
770
772
|
|
|
771
773
|
before do
|
|
772
|
-
Dictionary.create(
|
|
774
|
+
Dictionary.create!(
|
|
773
775
|
name: "Oxford",
|
|
774
776
|
publisher: "Amazon",
|
|
775
777
|
published: 10.days.ago.to_time
|
|
@@ -790,26 +792,53 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
790
792
|
|
|
791
793
|
it "adds the uniqueness errors" do
|
|
792
794
|
dictionary.valid?
|
|
793
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
795
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
794
796
|
end
|
|
795
797
|
end
|
|
796
798
|
end
|
|
797
799
|
end
|
|
798
800
|
|
|
799
|
-
context "when a range
|
|
801
|
+
context "when a range condition is provided" do
|
|
800
802
|
|
|
801
803
|
before do
|
|
802
|
-
Dictionary.validates_uniqueness_of(:name,
|
|
803
|
-
|
|
804
|
-
Dictionary.create(name: "French-English", year: 1960)
|
|
804
|
+
Dictionary.validates_uniqueness_of(:name,
|
|
805
|
+
conditions: -> { Dictionary.where(:year.gte => 1900, :year.lt => 2000) })
|
|
805
806
|
end
|
|
806
807
|
|
|
807
808
|
after do
|
|
808
809
|
Dictionary.reset_callbacks(:validate)
|
|
809
810
|
end
|
|
810
811
|
|
|
811
|
-
|
|
812
|
-
|
|
812
|
+
context 'when multiple documents would match the condition' do
|
|
813
|
+
it "prevents creation of new document" do
|
|
814
|
+
Dictionary.create!(name: "French-English", year: 1950)
|
|
815
|
+
|
|
816
|
+
expect do
|
|
817
|
+
Dictionary.create!(name: "French-English", year: 1960)
|
|
818
|
+
end.to raise_error(Mongoid::Errors::Validations, /Name has already been taken/)
|
|
819
|
+
|
|
820
|
+
expect(Dictionary.all.size).to eq(1)
|
|
821
|
+
end
|
|
822
|
+
end
|
|
823
|
+
|
|
824
|
+
context 'when only new document would match the condition' do
|
|
825
|
+
it 'creates the new document' do
|
|
826
|
+
Dictionary.create!(name: "French-English", year: 950)
|
|
827
|
+
expect do
|
|
828
|
+
Dictionary.create!(name: "French-English", year: 1950)
|
|
829
|
+
end.not_to raise_error
|
|
830
|
+
end
|
|
831
|
+
end
|
|
832
|
+
|
|
833
|
+
context 'when only existing document matches the condition' do
|
|
834
|
+
it 'creates the new document' do
|
|
835
|
+
pending 'https://jira.mongodb.org/browse/MONGOID-4815'
|
|
836
|
+
|
|
837
|
+
Dictionary.create!(name: "French-English", year: 1950)
|
|
838
|
+
expect do
|
|
839
|
+
Dictionary.create!(name: "French-English", year: 950)
|
|
840
|
+
end.not_to raise_error
|
|
841
|
+
end
|
|
813
842
|
end
|
|
814
843
|
end
|
|
815
844
|
|
|
@@ -826,7 +855,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
826
855
|
context "when the attribute is unique" do
|
|
827
856
|
|
|
828
857
|
before do
|
|
829
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
858
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
830
859
|
end
|
|
831
860
|
|
|
832
861
|
let(:dictionary) do
|
|
@@ -841,7 +870,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
841
870
|
context "when the attribute is unique in the scope" do
|
|
842
871
|
|
|
843
872
|
before do
|
|
844
|
-
Dictionary.create(
|
|
873
|
+
Dictionary.create!(
|
|
845
874
|
name: "Oxford",
|
|
846
875
|
publisher: "Amazon",
|
|
847
876
|
year: 2011
|
|
@@ -864,7 +893,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
864
893
|
context "when the attribute is not unique with no scope" do
|
|
865
894
|
|
|
866
895
|
before do
|
|
867
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
896
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
868
897
|
end
|
|
869
898
|
|
|
870
899
|
let(:dictionary) do
|
|
@@ -879,7 +908,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
879
908
|
context "when the attribute is not unique in another scope" do
|
|
880
909
|
|
|
881
910
|
before do
|
|
882
|
-
Dictionary.create(
|
|
911
|
+
Dictionary.create!(
|
|
883
912
|
name: "Oxford",
|
|
884
913
|
publisher: "Amazon",
|
|
885
914
|
year: 1995
|
|
@@ -904,7 +933,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
904
933
|
context "when the document is not the match" do
|
|
905
934
|
|
|
906
935
|
before do
|
|
907
|
-
Dictionary.create(
|
|
936
|
+
Dictionary.create!(
|
|
908
937
|
name: "Oxford",
|
|
909
938
|
publisher: "Amazon",
|
|
910
939
|
year: 1960
|
|
@@ -925,14 +954,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
925
954
|
|
|
926
955
|
it "adds the uniqueness errors" do
|
|
927
956
|
dictionary.valid?
|
|
928
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
957
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
929
958
|
end
|
|
930
959
|
end
|
|
931
960
|
|
|
932
961
|
context "when the document is the match in the database" do
|
|
933
962
|
|
|
934
963
|
let!(:dictionary) do
|
|
935
|
-
Dictionary.create(
|
|
964
|
+
Dictionary.create!(
|
|
936
965
|
name: "Oxford",
|
|
937
966
|
publisher: "Amazon",
|
|
938
967
|
year: 1960
|
|
@@ -959,7 +988,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
959
988
|
context "when the attribute is unique" do
|
|
960
989
|
|
|
961
990
|
before do
|
|
962
|
-
Dictionary.create(name: "Oxford")
|
|
991
|
+
Dictionary.create!(name: "Oxford")
|
|
963
992
|
end
|
|
964
993
|
|
|
965
994
|
let(:dictionary) do
|
|
@@ -976,7 +1005,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
976
1005
|
context "when the document is not the match" do
|
|
977
1006
|
|
|
978
1007
|
before do
|
|
979
|
-
Dictionary.create(name: "Oxford")
|
|
1008
|
+
Dictionary.create!(name: "Oxford")
|
|
980
1009
|
end
|
|
981
1010
|
|
|
982
1011
|
let(:dictionary) do
|
|
@@ -989,14 +1018,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
989
1018
|
|
|
990
1019
|
it "adds the uniqueness error" do
|
|
991
1020
|
dictionary.valid?
|
|
992
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
1021
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
993
1022
|
end
|
|
994
1023
|
end
|
|
995
1024
|
|
|
996
1025
|
context "when the document is the match in the database" do
|
|
997
1026
|
|
|
998
1027
|
let!(:dictionary) do
|
|
999
|
-
Dictionary.create(name: "Oxford")
|
|
1028
|
+
Dictionary.create!(name: "Oxford")
|
|
1000
1029
|
end
|
|
1001
1030
|
|
|
1002
1031
|
it "returns true" do
|
|
@@ -1021,7 +1050,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1021
1050
|
context "when there are no special characters" do
|
|
1022
1051
|
|
|
1023
1052
|
before do
|
|
1024
|
-
Dictionary.create(name: "Oxford")
|
|
1053
|
+
Dictionary.create!(name: "Oxford")
|
|
1025
1054
|
end
|
|
1026
1055
|
|
|
1027
1056
|
let(:dictionary) do
|
|
@@ -1036,7 +1065,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1036
1065
|
context "when special characters exist" do
|
|
1037
1066
|
|
|
1038
1067
|
before do
|
|
1039
|
-
Dictionary.create(name: "Oxford")
|
|
1068
|
+
Dictionary.create!(name: "Oxford")
|
|
1040
1069
|
end
|
|
1041
1070
|
|
|
1042
1071
|
let(:dictionary) do
|
|
@@ -1054,7 +1083,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1054
1083
|
context "when the document is not the match" do
|
|
1055
1084
|
|
|
1056
1085
|
before do
|
|
1057
|
-
Dictionary.create(name: "Oxford")
|
|
1086
|
+
Dictionary.create!(name: "Oxford")
|
|
1058
1087
|
end
|
|
1059
1088
|
|
|
1060
1089
|
let(:dictionary) do
|
|
@@ -1067,14 +1096,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1067
1096
|
|
|
1068
1097
|
it "adds the uniqueness error" do
|
|
1069
1098
|
dictionary.valid?
|
|
1070
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
1099
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
1071
1100
|
end
|
|
1072
1101
|
end
|
|
1073
1102
|
|
|
1074
1103
|
context "when the document is the match in the database" do
|
|
1075
1104
|
|
|
1076
1105
|
let!(:dictionary) do
|
|
1077
|
-
Dictionary.create(name: "Oxford")
|
|
1106
|
+
Dictionary.create!(name: "Oxford")
|
|
1078
1107
|
end
|
|
1079
1108
|
|
|
1080
1109
|
it "returns true" do
|
|
@@ -1104,7 +1133,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1104
1133
|
context "when the attribute is nil" do
|
|
1105
1134
|
|
|
1106
1135
|
before do
|
|
1107
|
-
Dictionary.create
|
|
1136
|
+
Dictionary.create!
|
|
1108
1137
|
end
|
|
1109
1138
|
|
|
1110
1139
|
let(:dictionary) do
|
|
@@ -1130,7 +1159,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1130
1159
|
context "when the attribute is blank" do
|
|
1131
1160
|
|
|
1132
1161
|
before do
|
|
1133
|
-
Dictionary.create(name: "")
|
|
1162
|
+
Dictionary.create!(name: "")
|
|
1134
1163
|
end
|
|
1135
1164
|
|
|
1136
1165
|
let(:dictionary) do
|
|
@@ -1159,7 +1188,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1159
1188
|
context "when the attribute is unique" do
|
|
1160
1189
|
|
|
1161
1190
|
before do
|
|
1162
|
-
Login.create(username: "Oxford")
|
|
1191
|
+
Login.create!(username: "Oxford")
|
|
1163
1192
|
end
|
|
1164
1193
|
|
|
1165
1194
|
let(:login) do
|
|
@@ -1176,7 +1205,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1176
1205
|
context "when the document is not the match" do
|
|
1177
1206
|
|
|
1178
1207
|
before do
|
|
1179
|
-
Login.create(username: "Oxford")
|
|
1208
|
+
Login.create!(username: "Oxford")
|
|
1180
1209
|
end
|
|
1181
1210
|
|
|
1182
1211
|
let(:login) do
|
|
@@ -1189,14 +1218,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1189
1218
|
|
|
1190
1219
|
it "adds the uniqueness error" do
|
|
1191
1220
|
login.valid?
|
|
1192
|
-
expect(login.errors[:username]).to eq([ "
|
|
1221
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
|
1193
1222
|
end
|
|
1194
1223
|
end
|
|
1195
1224
|
|
|
1196
1225
|
context "when the document is the match in the database" do
|
|
1197
1226
|
|
|
1198
1227
|
let!(:login) do
|
|
1199
|
-
Login.create(username: "Oxford")
|
|
1228
|
+
Login.create!(username: "Oxford")
|
|
1200
1229
|
end
|
|
1201
1230
|
|
|
1202
1231
|
it "returns true" do
|
|
@@ -1219,7 +1248,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1219
1248
|
context "when the attribute is unique" do
|
|
1220
1249
|
|
|
1221
1250
|
before do
|
|
1222
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1251
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1223
1252
|
end
|
|
1224
1253
|
|
|
1225
1254
|
let(:login) do
|
|
@@ -1234,7 +1263,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1234
1263
|
context "when the attribute is unique in the scope" do
|
|
1235
1264
|
|
|
1236
1265
|
before do
|
|
1237
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1266
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1238
1267
|
end
|
|
1239
1268
|
|
|
1240
1269
|
let(:login) do
|
|
@@ -1249,7 +1278,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1249
1278
|
context "when the attribute is not unique with no scope" do
|
|
1250
1279
|
|
|
1251
1280
|
before do
|
|
1252
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1281
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1253
1282
|
end
|
|
1254
1283
|
|
|
1255
1284
|
let(:login) do
|
|
@@ -1264,7 +1293,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1264
1293
|
context "when the attribute is not unique in another scope" do
|
|
1265
1294
|
|
|
1266
1295
|
before do
|
|
1267
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1296
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1268
1297
|
end
|
|
1269
1298
|
|
|
1270
1299
|
let(:login) do
|
|
@@ -1281,7 +1310,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1281
1310
|
context "when the document is not the match" do
|
|
1282
1311
|
|
|
1283
1312
|
before do
|
|
1284
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1313
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1285
1314
|
end
|
|
1286
1315
|
|
|
1287
1316
|
let(:login) do
|
|
@@ -1294,14 +1323,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1294
1323
|
|
|
1295
1324
|
it "adds the uniqueness errors" do
|
|
1296
1325
|
login.valid?
|
|
1297
|
-
expect(login.errors[:username]).to eq([ "
|
|
1326
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
|
1298
1327
|
end
|
|
1299
1328
|
end
|
|
1300
1329
|
|
|
1301
1330
|
context "when the document is the match in the database" do
|
|
1302
1331
|
|
|
1303
1332
|
let!(:login) do
|
|
1304
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1333
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1305
1334
|
end
|
|
1306
1335
|
|
|
1307
1336
|
it "returns true" do
|
|
@@ -1324,7 +1353,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1324
1353
|
context "when the attribute is unique" do
|
|
1325
1354
|
|
|
1326
1355
|
before do
|
|
1327
|
-
Login.create(username: "Oxford")
|
|
1356
|
+
Login.create!(username: "Oxford")
|
|
1328
1357
|
end
|
|
1329
1358
|
|
|
1330
1359
|
let(:login) do
|
|
@@ -1341,7 +1370,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1341
1370
|
context "when the document is not the match" do
|
|
1342
1371
|
|
|
1343
1372
|
before do
|
|
1344
|
-
Login.create(username: "Oxford")
|
|
1373
|
+
Login.create!(username: "Oxford")
|
|
1345
1374
|
end
|
|
1346
1375
|
|
|
1347
1376
|
let(:login) do
|
|
@@ -1354,14 +1383,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1354
1383
|
|
|
1355
1384
|
it "adds the uniqueness error" do
|
|
1356
1385
|
login.valid?
|
|
1357
|
-
expect(login.errors[:username]).to eq([ "
|
|
1386
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
|
1358
1387
|
end
|
|
1359
1388
|
end
|
|
1360
1389
|
|
|
1361
1390
|
context "when the document is the match in the database" do
|
|
1362
1391
|
|
|
1363
1392
|
let!(:login) do
|
|
1364
|
-
Login.create(username: "Oxford")
|
|
1393
|
+
Login.create!(username: "Oxford")
|
|
1365
1394
|
end
|
|
1366
1395
|
|
|
1367
1396
|
it "returns true" do
|
|
@@ -1386,7 +1415,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1386
1415
|
context "when there are no special characters" do
|
|
1387
1416
|
|
|
1388
1417
|
before do
|
|
1389
|
-
Login.create(username: "Oxford")
|
|
1418
|
+
Login.create!(username: "Oxford")
|
|
1390
1419
|
end
|
|
1391
1420
|
|
|
1392
1421
|
let(:login) do
|
|
@@ -1401,7 +1430,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1401
1430
|
context "when special characters exist" do
|
|
1402
1431
|
|
|
1403
1432
|
before do
|
|
1404
|
-
Login.create(username: "Oxford")
|
|
1433
|
+
Login.create!(username: "Oxford")
|
|
1405
1434
|
end
|
|
1406
1435
|
|
|
1407
1436
|
let(:login) do
|
|
@@ -1419,7 +1448,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1419
1448
|
context "when the document is not the match" do
|
|
1420
1449
|
|
|
1421
1450
|
before do
|
|
1422
|
-
Login.create(username: "Oxford")
|
|
1451
|
+
Login.create!(username: "Oxford")
|
|
1423
1452
|
end
|
|
1424
1453
|
|
|
1425
1454
|
let(:login) do
|
|
@@ -1432,14 +1461,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1432
1461
|
|
|
1433
1462
|
it "adds the uniqueness error" do
|
|
1434
1463
|
login.valid?
|
|
1435
|
-
expect(login.errors[:username]).to eq([ "
|
|
1464
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
|
1436
1465
|
end
|
|
1437
1466
|
end
|
|
1438
1467
|
|
|
1439
1468
|
context "when the document is the match in the database" do
|
|
1440
1469
|
|
|
1441
1470
|
let!(:login) do
|
|
1442
|
-
Login.create(username: "Oxford")
|
|
1471
|
+
Login.create!(username: "Oxford")
|
|
1443
1472
|
end
|
|
1444
1473
|
|
|
1445
1474
|
it "returns true" do
|
|
@@ -1462,7 +1491,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1462
1491
|
context "when the attribute is nil" do
|
|
1463
1492
|
|
|
1464
1493
|
before do
|
|
1465
|
-
Login.create
|
|
1494
|
+
Login.create!
|
|
1466
1495
|
end
|
|
1467
1496
|
|
|
1468
1497
|
let(:login) do
|
|
@@ -1488,7 +1517,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1488
1517
|
context "when the attribute is blank" do
|
|
1489
1518
|
|
|
1490
1519
|
before do
|
|
1491
|
-
Login.create(username: "")
|
|
1520
|
+
Login.create!(username: "")
|
|
1492
1521
|
end
|
|
1493
1522
|
|
|
1494
1523
|
let(:login) do
|
|
@@ -1515,7 +1544,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1515
1544
|
context "when the attribute is unique" do
|
|
1516
1545
|
|
|
1517
1546
|
before do
|
|
1518
|
-
Bar.create(lat_lng: LatLng.new(52.30, 13.25))
|
|
1547
|
+
Bar.create!(lat_lng: LatLng.new(52.30, 13.25))
|
|
1519
1548
|
end
|
|
1520
1549
|
|
|
1521
1550
|
let(:unique_bar) do
|
|
@@ -1531,7 +1560,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1531
1560
|
context "when the attribute is not unique" do
|
|
1532
1561
|
|
|
1533
1562
|
before do
|
|
1534
|
-
Bar.create(lat_lng: LatLng.new(52.30, 13.25))
|
|
1563
|
+
Bar.create!(lat_lng: LatLng.new(52.30, 13.25))
|
|
1535
1564
|
end
|
|
1536
1565
|
|
|
1537
1566
|
let(:non_unique_bar) do
|
|
@@ -1558,7 +1587,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1558
1587
|
context "when the attribute is unique" do
|
|
1559
1588
|
|
|
1560
1589
|
before do
|
|
1561
|
-
Band.create(name: 'Foo', active: false)
|
|
1590
|
+
Band.create!(name: 'Foo', active: false)
|
|
1562
1591
|
end
|
|
1563
1592
|
|
|
1564
1593
|
let(:unique_band) do
|
|
@@ -1574,7 +1603,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1574
1603
|
context "when the attribute is not unique" do
|
|
1575
1604
|
|
|
1576
1605
|
before do
|
|
1577
|
-
Band.create(name: 'Foo')
|
|
1606
|
+
Band.create!(name: 'Foo')
|
|
1578
1607
|
end
|
|
1579
1608
|
|
|
1580
1609
|
let(:non_unique_band) do
|
|
@@ -1592,17 +1621,17 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1592
1621
|
context "when the document is embedded" do
|
|
1593
1622
|
|
|
1594
1623
|
let(:word) do
|
|
1595
|
-
Word.create(name: "Schadenfreude")
|
|
1624
|
+
Word.create!(name: "Schadenfreude")
|
|
1596
1625
|
end
|
|
1597
1626
|
|
|
1598
1627
|
context "when in an embeds_many" do
|
|
1599
1628
|
|
|
1600
1629
|
let!(:def_one) do
|
|
1601
|
-
word.definitions.create(description: "1")
|
|
1630
|
+
word.definitions.create!(description: "1")
|
|
1602
1631
|
end
|
|
1603
1632
|
|
|
1604
1633
|
let!(:def_two) do
|
|
1605
|
-
word.definitions.create(description: "2")
|
|
1634
|
+
word.definitions.create!(description: "2")
|
|
1606
1635
|
end
|
|
1607
1636
|
|
|
1608
1637
|
context "when a document is being destroyed" do
|
|
@@ -1681,7 +1710,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1681
1710
|
|
|
1682
1711
|
it "adds the uniqueness error" do
|
|
1683
1712
|
definition.valid?
|
|
1684
|
-
expect(definition.errors[:description]).to eq([ "
|
|
1713
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
1685
1714
|
end
|
|
1686
1715
|
end
|
|
1687
1716
|
|
|
@@ -1809,7 +1838,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1809
1838
|
|
|
1810
1839
|
it "adds the uniqueness errors" do
|
|
1811
1840
|
definition.valid?
|
|
1812
|
-
expect(definition.errors[:description]).to eq([ "
|
|
1841
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
1813
1842
|
end
|
|
1814
1843
|
end
|
|
1815
1844
|
|
|
@@ -1947,7 +1976,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1947
1976
|
|
|
1948
1977
|
it "adds the uniqueness errors" do
|
|
1949
1978
|
definition.valid?
|
|
1950
|
-
expect(definition.errors[:description]).to eq([ "
|
|
1979
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
1951
1980
|
end
|
|
1952
1981
|
end
|
|
1953
1982
|
|
|
@@ -2011,7 +2040,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2011
2040
|
|
|
2012
2041
|
it "adds the uniqueness error" do
|
|
2013
2042
|
definition.valid?
|
|
2014
|
-
expect(definition.errors[:description]).to eq([ "
|
|
2043
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
2015
2044
|
end
|
|
2016
2045
|
end
|
|
2017
2046
|
|
|
@@ -2089,7 +2118,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2089
2118
|
|
|
2090
2119
|
it "adds the uniqueness error" do
|
|
2091
2120
|
definition.valid?
|
|
2092
|
-
expect(definition.errors[:description]).to eq([ "
|
|
2121
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
2093
2122
|
end
|
|
2094
2123
|
end
|
|
2095
2124
|
|
|
@@ -2185,7 +2214,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2185
2214
|
it "adds the uniqueness error to the aliased field name" do
|
|
2186
2215
|
definition.valid?
|
|
2187
2216
|
expect(definition.errors).to have_key(:part)
|
|
2188
|
-
expect(definition.errors[:part]).to eq([ "
|
|
2217
|
+
expect(definition.errors[:part]).to eq([ "has already been taken" ])
|
|
2189
2218
|
end
|
|
2190
2219
|
end
|
|
2191
2220
|
|
|
@@ -2202,7 +2231,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2202
2231
|
it "adds the uniqueness error to the underlying field name" do
|
|
2203
2232
|
definition.valid?
|
|
2204
2233
|
expect(definition.errors).to have_key(:p)
|
|
2205
|
-
expect(definition.errors[:p]).to eq([ "
|
|
2234
|
+
expect(definition.errors[:p]).to eq([ "has already been taken" ])
|
|
2206
2235
|
end
|
|
2207
2236
|
end
|
|
2208
2237
|
|
|
@@ -2221,7 +2250,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2221
2250
|
it "adds the uniqueness error to the aliased field name" do
|
|
2222
2251
|
definition.valid?
|
|
2223
2252
|
expect(definition.errors).to have_key(:synonyms)
|
|
2224
|
-
expect(definition.errors[:synonyms]).to eq([ "
|
|
2253
|
+
expect(definition.errors[:synonyms]).to eq([ "has already been taken" ])
|
|
2225
2254
|
end
|
|
2226
2255
|
end
|
|
2227
2256
|
|
|
@@ -2238,7 +2267,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2238
2267
|
it "adds the uniqueness error to the aliased field name" do
|
|
2239
2268
|
definition.valid?
|
|
2240
2269
|
expect(definition.errors).to have_key(:syn)
|
|
2241
|
-
expect(definition.errors[:syn]).to eq([ "
|
|
2270
|
+
expect(definition.errors[:syn]).to eq([ "has already been taken" ])
|
|
2242
2271
|
end
|
|
2243
2272
|
end
|
|
2244
2273
|
end
|
|
@@ -2290,7 +2319,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2290
2319
|
|
|
2291
2320
|
it "adds the uniqueness error" do
|
|
2292
2321
|
word_origin.valid?
|
|
2293
|
-
expect(word_origin.errors[:origin_id]).to eq([ "
|
|
2322
|
+
expect(word_origin.errors[:origin_id]).to eq([ "has already been taken" ])
|
|
2294
2323
|
end
|
|
2295
2324
|
end
|
|
2296
2325
|
|
|
@@ -2415,7 +2444,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2415
2444
|
it "should be invalid" do
|
|
2416
2445
|
subclass_document_with_duplicated_name.tap do |d|
|
|
2417
2446
|
expect(d).to be_invalid
|
|
2418
|
-
expect(d.errors[:name]).to eq([ "
|
|
2447
|
+
expect(d.errors[:name]).to eq([ "has already been taken" ])
|
|
2419
2448
|
end
|
|
2420
2449
|
end
|
|
2421
2450
|
end
|
|
@@ -2429,7 +2458,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2429
2458
|
end
|
|
2430
2459
|
|
|
2431
2460
|
let!(:person) do
|
|
2432
|
-
Person.create(ssn: "132-11-1111", username: "aaasdaffff")
|
|
2461
|
+
Person.create!(ssn: "132-11-1111", username: "aaasdaffff")
|
|
2433
2462
|
end
|
|
2434
2463
|
|
|
2435
2464
|
after do
|
|
@@ -2443,4 +2472,31 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2443
2472
|
}.to raise_error(Mongo::Error::OperationFailure)
|
|
2444
2473
|
end
|
|
2445
2474
|
end
|
|
2475
|
+
|
|
2476
|
+
describe "i18n" do
|
|
2477
|
+
|
|
2478
|
+
context 'when using a different locale' do
|
|
2479
|
+
with_default_i18n_configs
|
|
2480
|
+
|
|
2481
|
+
before do
|
|
2482
|
+
I18n.locale = :fr
|
|
2483
|
+
# Translation key location is as per rails-i18n gem.
|
|
2484
|
+
# See: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml
|
|
2485
|
+
I18n.backend.store_translations(:fr, { errors: { messages: { taken: 'est déjà utilisé(e)' } } })
|
|
2486
|
+
end
|
|
2487
|
+
|
|
2488
|
+
after do
|
|
2489
|
+
# i18n 1.0 requires +send+ because +translations+ aren't public.
|
|
2490
|
+
# Newer i18n versions have it as public.
|
|
2491
|
+
I18n.backend.send(:translations).delete(:fr)
|
|
2492
|
+
end
|
|
2493
|
+
|
|
2494
|
+
it "correctly translates the error message" do
|
|
2495
|
+
Circus.create!(slogan: 'The Greatest Show on Mars')
|
|
2496
|
+
dict = Circus.new(slogan: 'The Greatest Show on Mars')
|
|
2497
|
+
dict.valid?
|
|
2498
|
+
expect(dict.errors.messages[:slogan]).to eq(["est déjà utilisé(e)"])
|
|
2499
|
+
end
|
|
2500
|
+
end
|
|
2501
|
+
end
|
|
2446
2502
|
end
|