mongoid 7.0.13 → 8.0.8
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 +30 -30
- data/README.md +32 -19
- data/Rakefile +43 -0
- data/lib/config/locales/en.yml +178 -95
- data/lib/mongoid/association/accessors.rb +175 -83
- data/lib/mongoid/association/bindable.rb +57 -28
- data/lib/mongoid/association/builders.rb +8 -14
- 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 +67 -53
- 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 +7 -4
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +14 -24
- 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 +8 -5
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +143 -122
- data/lib/mongoid/association/embedded/embeds_many.rb +8 -36
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +26 -9
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +63 -29
- data/lib/mongoid/association/embedded/embeds_one.rb +9 -33
- data/lib/mongoid/association/embedded.rb +2 -0
- data/lib/mongoid/association/macros.rb +71 -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 +19 -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 +37 -38
- 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 +41 -40
- 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 +105 -68
- 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 +101 -124
- 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 +62 -84
- 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 +2 -3
- data/lib/mongoid/atomic/paths/root.rb +4 -7
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +45 -51
- data/lib/mongoid/attributes/dynamic.rb +6 -21
- data/lib/mongoid/attributes/nested.rb +11 -14
- data/lib/mongoid/attributes/processing.rb +46 -30
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +5 -8
- data/lib/mongoid/attributes.rb +80 -98
- data/lib/mongoid/cacheable.rb +7 -10
- data/lib/mongoid/changeable.rb +49 -70
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +15 -14
- data/lib/mongoid/clients/sessions.rb +4 -20
- data/lib/mongoid/clients/storage_options.rb +7 -12
- data/lib/mongoid/clients/validators/storage.rb +5 -12
- data/lib/mongoid/clients/validators.rb +2 -1
- data/lib/mongoid/clients.rb +3 -10
- data/lib/mongoid/composable.rb +5 -9
- data/lib/mongoid/config/environment.rb +30 -5
- data/lib/mongoid/config/options.rb +23 -23
- data/lib/mongoid/config/validators/client.rb +8 -23
- data/lib/mongoid/config/validators/option.rb +2 -3
- data/lib/mongoid/config/validators.rb +2 -1
- data/lib/mongoid/config.rb +164 -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 +187 -81
- data/lib/mongoid/contextual/mongo.rb +360 -239
- data/lib/mongoid/contextual/none.rb +109 -31
- data/lib/mongoid/contextual/queryable.rb +3 -4
- data/lib/mongoid/contextual.rb +9 -11
- data/lib/mongoid/copyable.rb +42 -17
- data/lib/mongoid/criteria/findable.rb +19 -19
- data/lib/mongoid/criteria/includable.rb +30 -33
- data/lib/mongoid/criteria/inspectable.rb +2 -3
- data/lib/mongoid/criteria/marshalable.rb +12 -7
- data/lib/mongoid/criteria/modifiable.rb +2 -19
- data/lib/mongoid/criteria/options.rb +2 -3
- 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 +9 -16
- 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 +9 -9
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +9 -9
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -4
- data/lib/mongoid/criteria/queryable/key.rb +39 -24
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +200 -40
- data/lib/mongoid/criteria/queryable/optional.rb +10 -59
- 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 +417 -171
- data/lib/mongoid/criteria/queryable/selector.rb +127 -30
- 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 +95 -107
- data/lib/mongoid/deprecable.rb +37 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +148 -97
- 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/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/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -3
- 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_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 +2 -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 +14 -3
- 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 +87 -45
- 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 +25 -50
- data/lib/mongoid/extensions/object_id.rb +2 -7
- data/lib/mongoid/extensions/range.rb +42 -20
- data/lib/mongoid/extensions/regexp.rb +13 -7
- data/lib/mongoid/extensions/set.rb +13 -11
- data/lib/mongoid/extensions/string.rb +30 -61
- data/lib/mongoid/extensions/symbol.rb +6 -22
- data/lib/mongoid/extensions/time.rb +37 -23
- 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 +11 -15
- data/lib/mongoid/fields/standard.rb +13 -43
- data/lib/mongoid/fields/validators/macro.rb +32 -20
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +328 -85
- data/lib/mongoid/findable.rb +90 -33
- 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 +191 -41
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +3 -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 +22 -30
- data/lib/mongoid/persistable/deletable.rb +6 -22
- 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 +3 -8
- data/lib/mongoid/persistable/renamable.rb +10 -8
- data/lib/mongoid/persistable/savable.rb +5 -10
- data/lib/mongoid/persistable/settable.rb +3 -6
- data/lib/mongoid/persistable/unsettable.rb +9 -9
- data/lib/mongoid/persistable/updatable.rb +50 -31
- data/lib/mongoid/persistable/upsertable.rb +5 -10
- data/lib/mongoid/persistable.rb +135 -40
- data/lib/mongoid/persistence_context.rb +85 -45
- data/lib/mongoid/positional.rb +2 -5
- data/lib/mongoid/query_cache.rb +13 -280
- data/lib/mongoid/railtie.rb +3 -16
- data/lib/mongoid/railties/controller_runtime.rb +4 -2
- data/lib/mongoid/railties/database.rake +9 -0
- data/lib/mongoid/reloadable.rb +19 -22
- data/lib/mongoid/scopable.rb +34 -57
- 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 +38 -19
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +12 -5
- data/lib/mongoid/tasks/database.rb +85 -7
- data/lib/mongoid/threaded/lifecycle.rb +7 -26
- data/lib/mongoid/threaded.rb +44 -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/validatable/associated.rb +99 -22
- 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 +2 -9
- data/lib/mongoid/validatable/presence.rb +10 -15
- data/lib/mongoid/validatable/queryable.rb +2 -3
- data/lib/mongoid/validatable/uniqueness.rb +29 -41
- data/lib/mongoid/validatable.rb +22 -33
- data/lib/mongoid/version.rb +2 -2
- data/lib/mongoid/warnings.rb +28 -0
- data/lib/mongoid.rb +34 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +2 -1
- 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_generator.rb +2 -1
- data/lib/rails/mongoid.rb +4 -5
- data/spec/README.md +19 -4
- data/spec/config/mongoid.yml +17 -0
- data/spec/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/app_spec.rb +31 -27
- data/spec/integration/associations/belongs_to_spec.rb +20 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +57 -0
- data/spec/integration/associations/embedded_spec.rb +162 -55
- 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 +61 -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 +107 -1
- data/spec/integration/callbacks_spec.rb +262 -8
- 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 +1 -2
- 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 +125 -15
- data/spec/integration/discriminator_key_spec.rb +392 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +30 -1
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +73 -0
- data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +130 -45
- 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 +18 -6
- 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 +84 -22
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +3 -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 +687 -173
- data/spec/mongoid/association/embedded/embeds_many_models.rb +174 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +63 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +71 -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 +23 -21
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +22 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +28 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +31 -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 +242 -12
- 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 +26 -3
- 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 +46 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +25 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +418 -361
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +68 -2
- 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 +81 -4
- 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 +314 -133
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +848 -451
- data/spec/mongoid/association/referenced/has_many_models.rb +61 -1
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +48 -0
- 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 +65 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +24 -1
- data/spec/mongoid/association/reflections_spec.rb +2 -0
- data/spec/mongoid/association/syncable_spec.rb +47 -31
- 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 +66 -26
- data/spec/mongoid/atomic_spec.rb +53 -6
- data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
- 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 +683 -65
- data/spec/mongoid/cacheable_spec.rb +6 -4
- data/spec/mongoid/changeable_spec.rb +185 -43
- data/spec/mongoid/clients/factory_spec.rb +128 -28
- data/spec/mongoid/clients/options_spec.rb +45 -26
- data/spec/mongoid/clients/sessions_spec.rb +25 -66
- data/spec/mongoid/clients/transactions_spec.rb +54 -29
- data/spec/mongoid/clients_spec.rb +65 -8
- data/spec/mongoid/composable_spec.rb +2 -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 +377 -1
- 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 +205 -67
- data/spec/mongoid/contextual/geo_near_spec.rb +20 -18
- data/spec/mongoid/contextual/map_reduce_spec.rb +6 -18
- data/spec/mongoid/contextual/memory_spec.rb +1360 -91
- data/spec/mongoid/contextual/mongo_spec.rb +1871 -544
- data/spec/mongoid/contextual/none_spec.rb +39 -73
- data/spec/mongoid/copyable_spec.rb +657 -26
- data/spec/mongoid/copyable_spec_models.rb +30 -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 +43 -40
- 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/bignum_spec.rb +2 -0
- 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/fixnum_spec.rb +2 -0
- 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 +73 -8
- 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 +2 -0
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +2 -59
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +2 -59
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +34 -16
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +13 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +2 -0
- 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 +2 -0
- 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 +1643 -286
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +38 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1191 -2752
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +91 -4
- data/spec/mongoid/criteria/queryable/smash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +298 -0
- data/spec/mongoid/criteria/scopable_spec.rb +129 -0
- data/spec/mongoid/criteria/translator_spec.rb +132 -0
- data/spec/mongoid/criteria_projection_spec.rb +409 -0
- data/spec/mongoid/criteria_spec.rb +1322 -1723
- data/spec/mongoid/document_fields_spec.rb +179 -5
- data/spec/mongoid/document_persistence_context_spec.rb +0 -1
- data/spec/mongoid/document_query_spec.rb +89 -0
- data/spec/mongoid/document_spec.rb +153 -87
- 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 +2 -0
- 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 +714 -212
- 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 +138 -3
- 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 +60 -33
- data/spec/mongoid/extensions/set_spec.rb +108 -0
- data/spec/mongoid/extensions/string_spec.rb +111 -50
- 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 +663 -66
- data/spec/mongoid/extensions/time_with_zone_spec.rb +50 -31
- 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 +43 -16
- data/spec/mongoid/fields/standard_spec.rb +2 -0
- data/spec/mongoid/fields_spec.rb +776 -80
- data/spec/mongoid/findable_spec.rb +133 -34
- data/spec/mongoid/indexable/specification_spec.rb +4 -2
- data/spec/mongoid/indexable_spec.rb +65 -18
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +955 -103
- 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 +274 -12
- data/spec/mongoid/persistable/destroyable_spec.rb +202 -12
- data/spec/mongoid/persistable/incrementable_spec.rb +23 -7
- data/spec/mongoid/persistable/logical_spec.rb +19 -3
- data/spec/mongoid/persistable/poppable_spec.rb +19 -3
- data/spec/mongoid/persistable/pullable_spec.rb +36 -6
- data/spec/mongoid/persistable/pushable_spec.rb +36 -6
- data/spec/mongoid/persistable/renamable_spec.rb +18 -2
- data/spec/mongoid/persistable/savable_spec.rb +188 -25
- data/spec/mongoid/persistable/settable_spec.rb +24 -8
- data/spec/mongoid/persistable/unsettable_spec.rb +19 -3
- data/spec/mongoid/persistable/updatable_spec.rb +45 -23
- data/spec/mongoid/persistable/upsertable_spec.rb +18 -2
- data/spec/mongoid/persistable_spec.rb +85 -9
- data/spec/mongoid/persistence_context_spec.rb +52 -1
- 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 +339 -87
- data/spec/mongoid/relations/proxy_spec.rb +8 -6
- data/spec/mongoid/reloadable_spec.rb +357 -22
- data/spec/mongoid/scopable_spec.rb +121 -37
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +160 -29
- data/spec/mongoid/shardable_models.rb +75 -0
- data/spec/mongoid/shardable_spec.rb +239 -34
- data/spec/mongoid/stateful_spec.rb +31 -1
- data/spec/mongoid/tasks/database_rake_spec.rb +2 -0
- data/spec/mongoid/tasks/database_spec.rb +2 -0
- data/spec/mongoid/threaded_spec.rb +4 -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 +398 -6
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +296 -33
- data/spec/mongoid/touchable_spec_models.rb +57 -0
- data/spec/mongoid/traversable_spec.rb +1160 -1
- data/spec/mongoid/validatable/associated_spec.rb +15 -30
- 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 +128 -98
- data/spec/mongoid/validatable_spec.rb +5 -3
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +3 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +5 -3
- data/spec/rails/mongoid_spec.rb +8 -18
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/cluster_config.rb +14 -4
- data/spec/shared/lib/mrss/constraints.rb +51 -27
- data/spec/shared/lib/mrss/docker_runner.rb +37 -4
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +48 -1
- data/spec/shared/lib/mrss/server_version_registry.rb +16 -18
- 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 +18 -1
- data/spec/shared/lib/mrss/utils.rb +28 -6
- data/spec/shared/share/Dockerfile.erb +156 -66
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +171 -45
- data/spec/shared/shlib/set_env.sh +47 -6
- data/spec/spec_helper.rb +38 -36
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +39 -8
- data/spec/support/expectations.rb +5 -1
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +77 -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 -0
- 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 +9 -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 +2 -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 +2 -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/crate.rb +12 -0
- data/spec/{app → support}/models/customer.rb +0 -1
- data/spec/{app → support}/models/customer_address.rb +0 -1
- data/spec/support/models/deed.rb +7 -0
- data/spec/{app → support}/models/definition.rb +2 -0
- data/spec/{app → support}/models/delegating_patient.rb +0 -1
- 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/{app → support}/models/minim.rb +0 -1
- 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 +12 -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 +23 -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 +2 -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/support/models/purse.rb +9 -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/{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 +12 -3
- data.tar.gz.sig +0 -0
- metadata +1162 -764
- 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 -28
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -119
- data/lib/mongoid/matchable/elem_match.rb +0 -34
- data/lib/mongoid/matchable/eq.rb +0 -22
- 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/other_owner_object.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/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 -137
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -106
- data/spec/mongoid/matchable/eq_spec.rb +0 -48
- 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/support/cluster_config.rb +0 -158
- data/spec/support/session_registry.rb +0 -50
- /data/spec/{app → support}/models/array_field.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test4.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,7 +792,7 @@ 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
|
|
@@ -813,7 +815,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
813
815
|
|
|
814
816
|
expect do
|
|
815
817
|
Dictionary.create!(name: "French-English", year: 1960)
|
|
816
|
-
end.to raise_error(Mongoid::Errors::Validations, /Name
|
|
818
|
+
end.to raise_error(Mongoid::Errors::Validations, /Name has already been taken/)
|
|
817
819
|
|
|
818
820
|
expect(Dictionary.all.size).to eq(1)
|
|
819
821
|
end
|
|
@@ -853,7 +855,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
853
855
|
context "when the attribute is unique" do
|
|
854
856
|
|
|
855
857
|
before do
|
|
856
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
858
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
857
859
|
end
|
|
858
860
|
|
|
859
861
|
let(:dictionary) do
|
|
@@ -868,7 +870,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
868
870
|
context "when the attribute is unique in the scope" do
|
|
869
871
|
|
|
870
872
|
before do
|
|
871
|
-
Dictionary.create(
|
|
873
|
+
Dictionary.create!(
|
|
872
874
|
name: "Oxford",
|
|
873
875
|
publisher: "Amazon",
|
|
874
876
|
year: 2011
|
|
@@ -891,7 +893,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
891
893
|
context "when the attribute is not unique with no scope" do
|
|
892
894
|
|
|
893
895
|
before do
|
|
894
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
896
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
895
897
|
end
|
|
896
898
|
|
|
897
899
|
let(:dictionary) do
|
|
@@ -906,7 +908,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
906
908
|
context "when the attribute is not unique in another scope" do
|
|
907
909
|
|
|
908
910
|
before do
|
|
909
|
-
Dictionary.create(
|
|
911
|
+
Dictionary.create!(
|
|
910
912
|
name: "Oxford",
|
|
911
913
|
publisher: "Amazon",
|
|
912
914
|
year: 1995
|
|
@@ -931,7 +933,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
931
933
|
context "when the document is not the match" do
|
|
932
934
|
|
|
933
935
|
before do
|
|
934
|
-
Dictionary.create(
|
|
936
|
+
Dictionary.create!(
|
|
935
937
|
name: "Oxford",
|
|
936
938
|
publisher: "Amazon",
|
|
937
939
|
year: 1960
|
|
@@ -952,14 +954,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
952
954
|
|
|
953
955
|
it "adds the uniqueness errors" do
|
|
954
956
|
dictionary.valid?
|
|
955
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
957
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
956
958
|
end
|
|
957
959
|
end
|
|
958
960
|
|
|
959
961
|
context "when the document is the match in the database" do
|
|
960
962
|
|
|
961
963
|
let!(:dictionary) do
|
|
962
|
-
Dictionary.create(
|
|
964
|
+
Dictionary.create!(
|
|
963
965
|
name: "Oxford",
|
|
964
966
|
publisher: "Amazon",
|
|
965
967
|
year: 1960
|
|
@@ -986,7 +988,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
986
988
|
context "when the attribute is unique" do
|
|
987
989
|
|
|
988
990
|
before do
|
|
989
|
-
Dictionary.create(name: "Oxford")
|
|
991
|
+
Dictionary.create!(name: "Oxford")
|
|
990
992
|
end
|
|
991
993
|
|
|
992
994
|
let(:dictionary) do
|
|
@@ -1003,7 +1005,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1003
1005
|
context "when the document is not the match" do
|
|
1004
1006
|
|
|
1005
1007
|
before do
|
|
1006
|
-
Dictionary.create(name: "Oxford")
|
|
1008
|
+
Dictionary.create!(name: "Oxford")
|
|
1007
1009
|
end
|
|
1008
1010
|
|
|
1009
1011
|
let(:dictionary) do
|
|
@@ -1016,14 +1018,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1016
1018
|
|
|
1017
1019
|
it "adds the uniqueness error" do
|
|
1018
1020
|
dictionary.valid?
|
|
1019
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
1021
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
1020
1022
|
end
|
|
1021
1023
|
end
|
|
1022
1024
|
|
|
1023
1025
|
context "when the document is the match in the database" do
|
|
1024
1026
|
|
|
1025
1027
|
let!(:dictionary) do
|
|
1026
|
-
Dictionary.create(name: "Oxford")
|
|
1028
|
+
Dictionary.create!(name: "Oxford")
|
|
1027
1029
|
end
|
|
1028
1030
|
|
|
1029
1031
|
it "returns true" do
|
|
@@ -1048,7 +1050,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1048
1050
|
context "when there are no special characters" do
|
|
1049
1051
|
|
|
1050
1052
|
before do
|
|
1051
|
-
Dictionary.create(name: "Oxford")
|
|
1053
|
+
Dictionary.create!(name: "Oxford")
|
|
1052
1054
|
end
|
|
1053
1055
|
|
|
1054
1056
|
let(:dictionary) do
|
|
@@ -1063,7 +1065,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1063
1065
|
context "when special characters exist" do
|
|
1064
1066
|
|
|
1065
1067
|
before do
|
|
1066
|
-
Dictionary.create(name: "Oxford")
|
|
1068
|
+
Dictionary.create!(name: "Oxford")
|
|
1067
1069
|
end
|
|
1068
1070
|
|
|
1069
1071
|
let(:dictionary) do
|
|
@@ -1081,7 +1083,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1081
1083
|
context "when the document is not the match" do
|
|
1082
1084
|
|
|
1083
1085
|
before do
|
|
1084
|
-
Dictionary.create(name: "Oxford")
|
|
1086
|
+
Dictionary.create!(name: "Oxford")
|
|
1085
1087
|
end
|
|
1086
1088
|
|
|
1087
1089
|
let(:dictionary) do
|
|
@@ -1094,14 +1096,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1094
1096
|
|
|
1095
1097
|
it "adds the uniqueness error" do
|
|
1096
1098
|
dictionary.valid?
|
|
1097
|
-
expect(dictionary.errors[:name]).to eq([ "
|
|
1099
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
|
1098
1100
|
end
|
|
1099
1101
|
end
|
|
1100
1102
|
|
|
1101
1103
|
context "when the document is the match in the database" do
|
|
1102
1104
|
|
|
1103
1105
|
let!(:dictionary) do
|
|
1104
|
-
Dictionary.create(name: "Oxford")
|
|
1106
|
+
Dictionary.create!(name: "Oxford")
|
|
1105
1107
|
end
|
|
1106
1108
|
|
|
1107
1109
|
it "returns true" do
|
|
@@ -1131,7 +1133,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1131
1133
|
context "when the attribute is nil" do
|
|
1132
1134
|
|
|
1133
1135
|
before do
|
|
1134
|
-
Dictionary.create
|
|
1136
|
+
Dictionary.create!
|
|
1135
1137
|
end
|
|
1136
1138
|
|
|
1137
1139
|
let(:dictionary) do
|
|
@@ -1157,7 +1159,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1157
1159
|
context "when the attribute is blank" do
|
|
1158
1160
|
|
|
1159
1161
|
before do
|
|
1160
|
-
Dictionary.create(name: "")
|
|
1162
|
+
Dictionary.create!(name: "")
|
|
1161
1163
|
end
|
|
1162
1164
|
|
|
1163
1165
|
let(:dictionary) do
|
|
@@ -1186,7 +1188,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1186
1188
|
context "when the attribute is unique" do
|
|
1187
1189
|
|
|
1188
1190
|
before do
|
|
1189
|
-
Login.create(username: "Oxford")
|
|
1191
|
+
Login.create!(username: "Oxford")
|
|
1190
1192
|
end
|
|
1191
1193
|
|
|
1192
1194
|
let(:login) do
|
|
@@ -1203,7 +1205,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1203
1205
|
context "when the document is not the match" do
|
|
1204
1206
|
|
|
1205
1207
|
before do
|
|
1206
|
-
Login.create(username: "Oxford")
|
|
1208
|
+
Login.create!(username: "Oxford")
|
|
1207
1209
|
end
|
|
1208
1210
|
|
|
1209
1211
|
let(:login) do
|
|
@@ -1216,14 +1218,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1216
1218
|
|
|
1217
1219
|
it "adds the uniqueness error" do
|
|
1218
1220
|
login.valid?
|
|
1219
|
-
expect(login.errors[:username]).to eq([ "
|
|
1221
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
|
1220
1222
|
end
|
|
1221
1223
|
end
|
|
1222
1224
|
|
|
1223
1225
|
context "when the document is the match in the database" do
|
|
1224
1226
|
|
|
1225
1227
|
let!(:login) do
|
|
1226
|
-
Login.create(username: "Oxford")
|
|
1228
|
+
Login.create!(username: "Oxford")
|
|
1227
1229
|
end
|
|
1228
1230
|
|
|
1229
1231
|
it "returns true" do
|
|
@@ -1246,7 +1248,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1246
1248
|
context "when the attribute is unique" do
|
|
1247
1249
|
|
|
1248
1250
|
before do
|
|
1249
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1251
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1250
1252
|
end
|
|
1251
1253
|
|
|
1252
1254
|
let(:login) do
|
|
@@ -1261,7 +1263,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1261
1263
|
context "when the attribute is unique in the scope" do
|
|
1262
1264
|
|
|
1263
1265
|
before do
|
|
1264
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1266
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1265
1267
|
end
|
|
1266
1268
|
|
|
1267
1269
|
let(:login) do
|
|
@@ -1276,7 +1278,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1276
1278
|
context "when the attribute is not unique with no scope" do
|
|
1277
1279
|
|
|
1278
1280
|
before do
|
|
1279
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1281
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1280
1282
|
end
|
|
1281
1283
|
|
|
1282
1284
|
let(:login) do
|
|
@@ -1291,7 +1293,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1291
1293
|
context "when the attribute is not unique in another scope" do
|
|
1292
1294
|
|
|
1293
1295
|
before do
|
|
1294
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1296
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1295
1297
|
end
|
|
1296
1298
|
|
|
1297
1299
|
let(:login) do
|
|
@@ -1308,7 +1310,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1308
1310
|
context "when the document is not the match" do
|
|
1309
1311
|
|
|
1310
1312
|
before do
|
|
1311
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1313
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1312
1314
|
end
|
|
1313
1315
|
|
|
1314
1316
|
let(:login) do
|
|
@@ -1321,14 +1323,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1321
1323
|
|
|
1322
1324
|
it "adds the uniqueness errors" do
|
|
1323
1325
|
login.valid?
|
|
1324
|
-
expect(login.errors[:username]).to eq([ "
|
|
1326
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
|
1325
1327
|
end
|
|
1326
1328
|
end
|
|
1327
1329
|
|
|
1328
1330
|
context "when the document is the match in the database" do
|
|
1329
1331
|
|
|
1330
1332
|
let!(:login) do
|
|
1331
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1333
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1332
1334
|
end
|
|
1333
1335
|
|
|
1334
1336
|
it "returns true" do
|
|
@@ -1351,7 +1353,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1351
1353
|
context "when the attribute is unique" do
|
|
1352
1354
|
|
|
1353
1355
|
before do
|
|
1354
|
-
Login.create(username: "Oxford")
|
|
1356
|
+
Login.create!(username: "Oxford")
|
|
1355
1357
|
end
|
|
1356
1358
|
|
|
1357
1359
|
let(:login) do
|
|
@@ -1368,7 +1370,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1368
1370
|
context "when the document is not the match" do
|
|
1369
1371
|
|
|
1370
1372
|
before do
|
|
1371
|
-
Login.create(username: "Oxford")
|
|
1373
|
+
Login.create!(username: "Oxford")
|
|
1372
1374
|
end
|
|
1373
1375
|
|
|
1374
1376
|
let(:login) do
|
|
@@ -1381,14 +1383,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1381
1383
|
|
|
1382
1384
|
it "adds the uniqueness error" do
|
|
1383
1385
|
login.valid?
|
|
1384
|
-
expect(login.errors[:username]).to eq([ "
|
|
1386
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
|
1385
1387
|
end
|
|
1386
1388
|
end
|
|
1387
1389
|
|
|
1388
1390
|
context "when the document is the match in the database" do
|
|
1389
1391
|
|
|
1390
1392
|
let!(:login) do
|
|
1391
|
-
Login.create(username: "Oxford")
|
|
1393
|
+
Login.create!(username: "Oxford")
|
|
1392
1394
|
end
|
|
1393
1395
|
|
|
1394
1396
|
it "returns true" do
|
|
@@ -1413,7 +1415,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1413
1415
|
context "when there are no special characters" do
|
|
1414
1416
|
|
|
1415
1417
|
before do
|
|
1416
|
-
Login.create(username: "Oxford")
|
|
1418
|
+
Login.create!(username: "Oxford")
|
|
1417
1419
|
end
|
|
1418
1420
|
|
|
1419
1421
|
let(:login) do
|
|
@@ -1428,7 +1430,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1428
1430
|
context "when special characters exist" do
|
|
1429
1431
|
|
|
1430
1432
|
before do
|
|
1431
|
-
Login.create(username: "Oxford")
|
|
1433
|
+
Login.create!(username: "Oxford")
|
|
1432
1434
|
end
|
|
1433
1435
|
|
|
1434
1436
|
let(:login) do
|
|
@@ -1446,7 +1448,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1446
1448
|
context "when the document is not the match" do
|
|
1447
1449
|
|
|
1448
1450
|
before do
|
|
1449
|
-
Login.create(username: "Oxford")
|
|
1451
|
+
Login.create!(username: "Oxford")
|
|
1450
1452
|
end
|
|
1451
1453
|
|
|
1452
1454
|
let(:login) do
|
|
@@ -1459,14 +1461,14 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1459
1461
|
|
|
1460
1462
|
it "adds the uniqueness error" do
|
|
1461
1463
|
login.valid?
|
|
1462
|
-
expect(login.errors[:username]).to eq([ "
|
|
1464
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
|
1463
1465
|
end
|
|
1464
1466
|
end
|
|
1465
1467
|
|
|
1466
1468
|
context "when the document is the match in the database" do
|
|
1467
1469
|
|
|
1468
1470
|
let!(:login) do
|
|
1469
|
-
Login.create(username: "Oxford")
|
|
1471
|
+
Login.create!(username: "Oxford")
|
|
1470
1472
|
end
|
|
1471
1473
|
|
|
1472
1474
|
it "returns true" do
|
|
@@ -1489,7 +1491,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1489
1491
|
context "when the attribute is nil" do
|
|
1490
1492
|
|
|
1491
1493
|
before do
|
|
1492
|
-
Login.create
|
|
1494
|
+
Login.create!
|
|
1493
1495
|
end
|
|
1494
1496
|
|
|
1495
1497
|
let(:login) do
|
|
@@ -1515,7 +1517,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1515
1517
|
context "when the attribute is blank" do
|
|
1516
1518
|
|
|
1517
1519
|
before do
|
|
1518
|
-
Login.create(username: "")
|
|
1520
|
+
Login.create!(username: "")
|
|
1519
1521
|
end
|
|
1520
1522
|
|
|
1521
1523
|
let(:login) do
|
|
@@ -1542,7 +1544,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1542
1544
|
context "when the attribute is unique" do
|
|
1543
1545
|
|
|
1544
1546
|
before do
|
|
1545
|
-
Bar.create(lat_lng: LatLng.new(52.30, 13.25))
|
|
1547
|
+
Bar.create!(lat_lng: LatLng.new(52.30, 13.25))
|
|
1546
1548
|
end
|
|
1547
1549
|
|
|
1548
1550
|
let(:unique_bar) do
|
|
@@ -1558,7 +1560,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1558
1560
|
context "when the attribute is not unique" do
|
|
1559
1561
|
|
|
1560
1562
|
before do
|
|
1561
|
-
Bar.create(lat_lng: LatLng.new(52.30, 13.25))
|
|
1563
|
+
Bar.create!(lat_lng: LatLng.new(52.30, 13.25))
|
|
1562
1564
|
end
|
|
1563
1565
|
|
|
1564
1566
|
let(:non_unique_bar) do
|
|
@@ -1585,7 +1587,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1585
1587
|
context "when the attribute is unique" do
|
|
1586
1588
|
|
|
1587
1589
|
before do
|
|
1588
|
-
Band.create(name: 'Foo', active: false)
|
|
1590
|
+
Band.create!(name: 'Foo', active: false)
|
|
1589
1591
|
end
|
|
1590
1592
|
|
|
1591
1593
|
let(:unique_band) do
|
|
@@ -1601,7 +1603,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1601
1603
|
context "when the attribute is not unique" do
|
|
1602
1604
|
|
|
1603
1605
|
before do
|
|
1604
|
-
Band.create(name: 'Foo')
|
|
1606
|
+
Band.create!(name: 'Foo')
|
|
1605
1607
|
end
|
|
1606
1608
|
|
|
1607
1609
|
let(:non_unique_band) do
|
|
@@ -1619,17 +1621,17 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1619
1621
|
context "when the document is embedded" do
|
|
1620
1622
|
|
|
1621
1623
|
let(:word) do
|
|
1622
|
-
Word.create(name: "Schadenfreude")
|
|
1624
|
+
Word.create!(name: "Schadenfreude")
|
|
1623
1625
|
end
|
|
1624
1626
|
|
|
1625
1627
|
context "when in an embeds_many" do
|
|
1626
1628
|
|
|
1627
1629
|
let!(:def_one) do
|
|
1628
|
-
word.definitions.create(description: "1")
|
|
1630
|
+
word.definitions.create!(description: "1")
|
|
1629
1631
|
end
|
|
1630
1632
|
|
|
1631
1633
|
let!(:def_two) do
|
|
1632
|
-
word.definitions.create(description: "2")
|
|
1634
|
+
word.definitions.create!(description: "2")
|
|
1633
1635
|
end
|
|
1634
1636
|
|
|
1635
1637
|
context "when a document is being destroyed" do
|
|
@@ -1708,7 +1710,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1708
1710
|
|
|
1709
1711
|
it "adds the uniqueness error" do
|
|
1710
1712
|
definition.valid?
|
|
1711
|
-
expect(definition.errors[:description]).to eq([ "
|
|
1713
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
1712
1714
|
end
|
|
1713
1715
|
end
|
|
1714
1716
|
|
|
@@ -1836,7 +1838,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1836
1838
|
|
|
1837
1839
|
it "adds the uniqueness errors" do
|
|
1838
1840
|
definition.valid?
|
|
1839
|
-
expect(definition.errors[:description]).to eq([ "
|
|
1841
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
1840
1842
|
end
|
|
1841
1843
|
end
|
|
1842
1844
|
|
|
@@ -1974,7 +1976,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1974
1976
|
|
|
1975
1977
|
it "adds the uniqueness errors" do
|
|
1976
1978
|
definition.valid?
|
|
1977
|
-
expect(definition.errors[:description]).to eq([ "
|
|
1979
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
1978
1980
|
end
|
|
1979
1981
|
end
|
|
1980
1982
|
|
|
@@ -2038,7 +2040,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2038
2040
|
|
|
2039
2041
|
it "adds the uniqueness error" do
|
|
2040
2042
|
definition.valid?
|
|
2041
|
-
expect(definition.errors[:description]).to eq([ "
|
|
2043
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
2042
2044
|
end
|
|
2043
2045
|
end
|
|
2044
2046
|
|
|
@@ -2116,7 +2118,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2116
2118
|
|
|
2117
2119
|
it "adds the uniqueness error" do
|
|
2118
2120
|
definition.valid?
|
|
2119
|
-
expect(definition.errors[:description]).to eq([ "
|
|
2121
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
|
2120
2122
|
end
|
|
2121
2123
|
end
|
|
2122
2124
|
|
|
@@ -2212,7 +2214,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2212
2214
|
it "adds the uniqueness error to the aliased field name" do
|
|
2213
2215
|
definition.valid?
|
|
2214
2216
|
expect(definition.errors).to have_key(:part)
|
|
2215
|
-
expect(definition.errors[:part]).to eq([ "
|
|
2217
|
+
expect(definition.errors[:part]).to eq([ "has already been taken" ])
|
|
2216
2218
|
end
|
|
2217
2219
|
end
|
|
2218
2220
|
|
|
@@ -2229,7 +2231,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2229
2231
|
it "adds the uniqueness error to the underlying field name" do
|
|
2230
2232
|
definition.valid?
|
|
2231
2233
|
expect(definition.errors).to have_key(:p)
|
|
2232
|
-
expect(definition.errors[:p]).to eq([ "
|
|
2234
|
+
expect(definition.errors[:p]).to eq([ "has already been taken" ])
|
|
2233
2235
|
end
|
|
2234
2236
|
end
|
|
2235
2237
|
|
|
@@ -2248,7 +2250,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2248
2250
|
it "adds the uniqueness error to the aliased field name" do
|
|
2249
2251
|
definition.valid?
|
|
2250
2252
|
expect(definition.errors).to have_key(:synonyms)
|
|
2251
|
-
expect(definition.errors[:synonyms]).to eq([ "
|
|
2253
|
+
expect(definition.errors[:synonyms]).to eq([ "has already been taken" ])
|
|
2252
2254
|
end
|
|
2253
2255
|
end
|
|
2254
2256
|
|
|
@@ -2265,7 +2267,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2265
2267
|
it "adds the uniqueness error to the aliased field name" do
|
|
2266
2268
|
definition.valid?
|
|
2267
2269
|
expect(definition.errors).to have_key(:syn)
|
|
2268
|
-
expect(definition.errors[:syn]).to eq([ "
|
|
2270
|
+
expect(definition.errors[:syn]).to eq([ "has already been taken" ])
|
|
2269
2271
|
end
|
|
2270
2272
|
end
|
|
2271
2273
|
end
|
|
@@ -2317,7 +2319,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2317
2319
|
|
|
2318
2320
|
it "adds the uniqueness error" do
|
|
2319
2321
|
word_origin.valid?
|
|
2320
|
-
expect(word_origin.errors[:origin_id]).to eq([ "
|
|
2322
|
+
expect(word_origin.errors[:origin_id]).to eq([ "has already been taken" ])
|
|
2321
2323
|
end
|
|
2322
2324
|
end
|
|
2323
2325
|
|
|
@@ -2442,7 +2444,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2442
2444
|
it "should be invalid" do
|
|
2443
2445
|
subclass_document_with_duplicated_name.tap do |d|
|
|
2444
2446
|
expect(d).to be_invalid
|
|
2445
|
-
expect(d.errors[:name]).to eq([ "
|
|
2447
|
+
expect(d.errors[:name]).to eq([ "has already been taken" ])
|
|
2446
2448
|
end
|
|
2447
2449
|
end
|
|
2448
2450
|
end
|
|
@@ -2456,7 +2458,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2456
2458
|
end
|
|
2457
2459
|
|
|
2458
2460
|
let!(:person) do
|
|
2459
|
-
Person.create(ssn: "132-11-1111", username: "aaasdaffff")
|
|
2461
|
+
Person.create!(ssn: "132-11-1111", username: "aaasdaffff")
|
|
2460
2462
|
end
|
|
2461
2463
|
|
|
2462
2464
|
after do
|
|
@@ -2470,4 +2472,32 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2470
2472
|
}.to raise_error(Mongo::Error::OperationFailure)
|
|
2471
2473
|
end
|
|
2472
2474
|
end
|
|
2475
|
+
|
|
2476
|
+
describe "i18n" do
|
|
2477
|
+
|
|
2478
|
+
context 'when using a different locale' do
|
|
2479
|
+
around do |example|
|
|
2480
|
+
I18n.with_locale(:fr) { example.run }
|
|
2481
|
+
end
|
|
2482
|
+
|
|
2483
|
+
before do
|
|
2484
|
+
# Translation key location is as per rails-i18n gem.
|
|
2485
|
+
# See: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml
|
|
2486
|
+
I18n.backend.store_translations(:fr, { errors: { messages: { taken: 'est déjà utilisé(e)' } } })
|
|
2487
|
+
end
|
|
2488
|
+
|
|
2489
|
+
after do
|
|
2490
|
+
# i18n 1.0 requires +send+ because +translations+ aren't public.
|
|
2491
|
+
# Newer i18n versions have it as public.
|
|
2492
|
+
I18n.backend.send(:translations).delete(:fr)
|
|
2493
|
+
end
|
|
2494
|
+
|
|
2495
|
+
it "correctly translates the error message" do
|
|
2496
|
+
Circus.create!(slogan: 'The Greatest Show on Mars')
|
|
2497
|
+
dict = Circus.new(slogan: 'The Greatest Show on Mars')
|
|
2498
|
+
dict.valid?
|
|
2499
|
+
expect(dict.errors.messages[:slogan]).to eq(["est déjà utilisé(e)"])
|
|
2500
|
+
end
|
|
2501
|
+
end
|
|
2502
|
+
end
|
|
2473
2503
|
end
|