mongoid 5.4.1 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +30 -30
- data/LICENSE +1 -0
- data/README.md +33 -19
- data/Rakefile +75 -5
- data/lib/config/locales/en.yml +180 -64
- data/lib/mongoid/association/accessors.rb +402 -0
- data/lib/mongoid/association/bindable.rb +179 -0
- data/lib/mongoid/association/builders.rb +84 -0
- data/lib/mongoid/association/constrainable.rb +43 -0
- data/lib/mongoid/association/depending.rb +128 -0
- data/lib/mongoid/association/eager_loadable.rb +35 -0
- data/lib/mongoid/association/embedded/batchable.rb +358 -0
- data/lib/mongoid/association/embedded/cyclic.rb +102 -0
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +52 -0
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +38 -0
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +111 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +134 -0
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +41 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +45 -0
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +549 -0
- data/lib/mongoid/association/embedded/embeds_many.rb +183 -0
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +43 -0
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +39 -0
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +145 -0
- data/lib/mongoid/association/embedded/embeds_one.rb +150 -0
- data/lib/mongoid/association/embedded.rb +6 -0
- data/lib/mongoid/association/macros.rb +207 -0
- data/lib/mongoid/association/many.rb +198 -0
- data/lib/mongoid/association/marshalable.rb +31 -0
- data/lib/mongoid/association/nested/many.rb +191 -0
- data/lib/mongoid/association/nested/nested_buildable.rb +66 -0
- data/lib/mongoid/association/nested/one.rb +116 -0
- data/lib/mongoid/association/nested.rb +15 -0
- data/lib/mongoid/association/one.rb +53 -0
- data/lib/mongoid/association/options.rb +122 -0
- data/lib/mongoid/association/proxy.rb +189 -0
- data/lib/mongoid/association/referenced/auto_save.rb +73 -0
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +82 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +48 -0
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +73 -0
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +125 -0
- data/lib/mongoid/association/referenced/belongs_to.rb +226 -0
- data/lib/mongoid/association/referenced/counter_cache.rb +152 -0
- data/lib/mongoid/association/referenced/eager.rb +163 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +72 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +40 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +53 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +292 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +270 -0
- data/lib/mongoid/association/referenced/has_many/binding.rb +36 -0
- data/lib/mongoid/association/referenced/has_many/buildable.rb +38 -0
- data/lib/mongoid/association/referenced/has_many/eager.rb +44 -0
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +498 -0
- data/lib/mongoid/association/referenced/has_many/proxy.rb +545 -0
- data/lib/mongoid/association/referenced/has_many.rb +251 -0
- data/lib/mongoid/association/referenced/has_one/binding.rb +42 -0
- data/lib/mongoid/association/referenced/has_one/buildable.rb +74 -0
- data/lib/mongoid/association/referenced/has_one/eager.rb +36 -0
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +113 -0
- data/lib/mongoid/association/referenced/has_one/proxy.rb +111 -0
- data/lib/mongoid/association/referenced/has_one.rb +184 -0
- data/lib/mongoid/association/referenced/syncable.rb +155 -0
- data/lib/mongoid/association/referenced.rb +9 -0
- data/lib/mongoid/association/reflections.rb +69 -0
- data/lib/mongoid/association/relatable.rb +455 -0
- data/lib/mongoid/association.rb +135 -0
- data/lib/mongoid/atomic/modifiers.rb +29 -53
- data/lib/mongoid/atomic/paths/embedded/many.rb +5 -8
- data/lib/mongoid/atomic/paths/embedded/one.rb +5 -8
- data/lib/mongoid/atomic/paths/embedded.rb +3 -4
- data/lib/mongoid/atomic/paths/root.rb +4 -7
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +47 -52
- data/lib/mongoid/attributes/dynamic.rb +19 -33
- data/lib/mongoid/attributes/nested.rb +29 -21
- data/lib/mongoid/attributes/processing.rb +11 -26
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +24 -7
- data/lib/mongoid/attributes.rb +110 -106
- data/lib/mongoid/cacheable.rb +33 -0
- data/lib/mongoid/changeable.rb +39 -57
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +62 -258
- data/lib/mongoid/clients/sessions.rb +125 -0
- data/lib/mongoid/clients/storage_options.rb +9 -81
- data/lib/mongoid/clients/validators/storage.rb +2 -9
- data/lib/mongoid/clients/validators.rb +2 -1
- data/lib/mongoid/clients.rb +13 -73
- data/lib/mongoid/composable.rb +33 -10
- data/lib/mongoid/config/environment.rb +36 -14
- data/lib/mongoid/config/options.rb +20 -23
- data/lib/mongoid/config/validators/client.rb +2 -17
- data/lib/mongoid/config/validators/option.rb +2 -3
- data/lib/mongoid/config/validators.rb +2 -1
- data/lib/mongoid/config.rb +112 -39
- data/lib/mongoid/contextual/aggregable/memory.rb +17 -12
- data/lib/mongoid/contextual/aggregable/mongo.rb +26 -27
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +31 -33
- data/lib/mongoid/contextual/command.rb +2 -5
- data/lib/mongoid/contextual/geo_near.rb +7 -38
- data/lib/mongoid/contextual/map_reduce.rb +12 -36
- data/lib/mongoid/contextual/memory.rb +34 -64
- data/lib/mongoid/contextual/mongo.rb +228 -113
- data/lib/mongoid/contextual/none.rb +51 -23
- data/lib/mongoid/contextual/queryable.rb +2 -3
- data/lib/mongoid/contextual.rb +7 -9
- data/lib/mongoid/copyable.rb +32 -19
- data/lib/mongoid/criteria/findable.rb +12 -15
- data/lib/mongoid/criteria/includable.rb +21 -28
- data/lib/mongoid/criteria/inspectable.rb +2 -3
- data/lib/mongoid/criteria/marshalable.rb +4 -7
- data/lib/mongoid/criteria/modifiable.rb +38 -24
- data/lib/mongoid/criteria/options.rb +24 -0
- data/lib/mongoid/criteria/permission.rb +2 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +109 -0
- data/lib/mongoid/criteria/queryable/expandable.rb +68 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +162 -0
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +36 -0
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +33 -0
- data/lib/mongoid/criteria/queryable/extensions/date.rb +58 -0
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +47 -0
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +177 -0
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +75 -0
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +81 -0
- data/lib/mongoid/criteria/queryable/extensions/object.rb +181 -0
- data/lib/mongoid/criteria/queryable/extensions/range.rb +94 -0
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +72 -0
- data/lib/mongoid/criteria/queryable/extensions/set.rb +33 -0
- data/lib/mongoid/criteria/queryable/extensions/string.rb +122 -0
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +72 -0
- data/lib/mongoid/criteria/queryable/extensions/time.rb +55 -0
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +61 -0
- data/lib/mongoid/criteria/queryable/extensions.rb +25 -0
- data/lib/mongoid/criteria/queryable/key.rb +177 -0
- data/lib/mongoid/criteria/queryable/macroable.rb +26 -0
- data/lib/mongoid/criteria/queryable/mergeable.rb +413 -0
- data/lib/mongoid/criteria/queryable/optional.rb +386 -0
- data/lib/mongoid/criteria/queryable/options.rb +136 -0
- data/lib/mongoid/criteria/queryable/pipeline.rb +106 -0
- data/lib/mongoid/criteria/queryable/selectable.rb +943 -0
- data/lib/mongoid/criteria/queryable/selector.rb +202 -0
- data/lib/mongoid/criteria/queryable/smash.rb +95 -0
- data/lib/mongoid/criteria/queryable/storable.rb +237 -0
- data/lib/mongoid/criteria/queryable.rb +85 -0
- data/lib/mongoid/criteria/scopable.rb +27 -19
- data/lib/mongoid/criteria.rb +93 -76
- data/lib/mongoid/document.rb +62 -109
- data/lib/mongoid/equality.rb +29 -12
- data/lib/mongoid/errors/ambiguous_relationship.rb +5 -6
- 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 +2 -9
- data/lib/mongoid/errors/eager_load.rb +6 -5
- 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 +2 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +31 -0
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +24 -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 +4 -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_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 +26 -0
- data/lib/mongoid/errors/invalid_query.rb +40 -0
- data/lib/mongoid/errors/invalid_relation.rb +61 -0
- data/lib/mongoid/errors/invalid_relation_option.rb +28 -0
- data/lib/mongoid/errors/invalid_scope.rb +2 -3
- data/lib/mongoid/errors/invalid_session_use.rb +21 -0
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -5
- data/lib/mongoid/errors/invalid_storage_options.rb +2 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -3
- data/lib/mongoid/errors/invalid_time.rb +2 -3
- data/lib/mongoid/errors/invalid_value.rb +2 -1
- 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 +3 -10
- 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 +2 -3
- data/lib/mongoid/errors/no_client_hosts.rb +2 -3
- 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 +2 -3
- 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 +2 -0
- data/lib/mongoid/errors/unknown_attribute.rb +2 -3
- data/lib/mongoid/errors/unknown_model.rb +24 -0
- data/lib/mongoid/errors/unsaved_document.rb +3 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +2 -3
- data/lib/mongoid/errors/validations.rb +2 -1
- data/lib/mongoid/errors.rb +18 -1
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +33 -42
- data/lib/mongoid/extensions/big_decimal.rb +17 -17
- data/lib/mongoid/extensions/boolean.rb +3 -5
- data/lib/mongoid/extensions/date.rb +17 -13
- data/lib/mongoid/extensions/date_time.rb +4 -12
- data/lib/mongoid/extensions/decimal128.rb +3 -6
- data/lib/mongoid/extensions/false_class.rb +4 -7
- data/lib/mongoid/extensions/float.rb +5 -10
- data/lib/mongoid/extensions/hash.rb +57 -38
- data/lib/mongoid/extensions/integer.rb +5 -12
- data/lib/mongoid/extensions/module.rb +2 -3
- data/lib/mongoid/extensions/nil_class.rb +2 -5
- data/lib/mongoid/extensions/object.rb +21 -48
- data/lib/mongoid/extensions/object_id.rb +2 -7
- data/lib/mongoid/extensions/range.rb +3 -11
- data/lib/mongoid/extensions/regexp.rb +4 -4
- data/lib/mongoid/extensions/set.rb +2 -7
- data/lib/mongoid/extensions/string.rb +27 -44
- data/lib/mongoid/extensions/symbol.rb +2 -7
- data/lib/mongoid/extensions/time.rb +16 -10
- data/lib/mongoid/extensions/time_with_zone.rb +25 -7
- data/lib/mongoid/extensions/true_class.rb +4 -7
- data/lib/mongoid/extensions.rb +18 -11
- data/lib/mongoid/factory.rb +60 -10
- data/lib/mongoid/fields/foreign_key.rb +8 -27
- data/lib/mongoid/fields/localized.rb +2 -11
- data/lib/mongoid/fields/standard.rb +8 -50
- data/lib/mongoid/fields/validators/macro.rb +50 -14
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +118 -67
- data/lib/mongoid/findable.rb +60 -24
- data/lib/mongoid/indexable/specification.rb +3 -16
- data/lib/mongoid/indexable/validators/options.rb +2 -7
- data/lib/mongoid/indexable.rb +26 -36
- data/lib/mongoid/inspectable.rb +4 -11
- data/lib/mongoid/interceptable.rb +27 -57
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +5 -146
- 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 +110 -0
- data/lib/mongoid/persistable/creatable.rb +9 -24
- data/lib/mongoid/persistable/deletable.rb +16 -29
- data/lib/mongoid/persistable/destroyable.rb +12 -15
- data/lib/mongoid/persistable/incrementable.rb +7 -8
- data/lib/mongoid/persistable/logical.rb +5 -7
- data/lib/mongoid/persistable/poppable.rb +3 -6
- data/lib/mongoid/persistable/pullable.rb +3 -8
- data/lib/mongoid/persistable/pushable.rb +14 -10
- data/lib/mongoid/persistable/renamable.rb +10 -8
- data/lib/mongoid/persistable/savable.rb +3 -8
- data/lib/mongoid/persistable/settable.rb +61 -19
- data/lib/mongoid/persistable/unsettable.rb +8 -8
- data/lib/mongoid/persistable/updatable.rb +38 -33
- data/lib/mongoid/persistable/upsertable.rb +5 -9
- data/lib/mongoid/persistable.rb +137 -45
- data/lib/mongoid/persistence_context.rb +222 -0
- data/lib/mongoid/positional.rb +3 -6
- data/lib/mongoid/query_cache.rb +141 -110
- data/lib/mongoid/railtie.rb +20 -17
- data/lib/mongoid/railties/controller_runtime.rb +88 -0
- data/lib/mongoid/railties/database.rake +9 -0
- data/lib/mongoid/reloadable.rb +14 -19
- data/lib/mongoid/scopable.rb +11 -38
- data/lib/mongoid/selectable.rb +8 -17
- data/lib/mongoid/serializable.rb +29 -34
- data/lib/mongoid/shardable.rb +80 -17
- data/lib/mongoid/stateful.rb +4 -10
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +12 -5
- data/lib/mongoid/tasks/database.rb +88 -7
- data/lib/mongoid/threaded/lifecycle.rb +2 -21
- data/lib/mongoid/threaded.rb +70 -49
- data/lib/mongoid/timestamps/created/short.rb +2 -1
- data/lib/mongoid/timestamps/created.rb +3 -2
- 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 +3 -4
- data/lib/mongoid/timestamps.rb +3 -2
- data/lib/mongoid/touchable.rb +132 -0
- data/lib/mongoid/traversable.rb +181 -61
- data/lib/mongoid/validatable/associated.rb +5 -6
- data/lib/mongoid/validatable/format.rb +2 -1
- data/lib/mongoid/validatable/length.rb +2 -1
- data/lib/mongoid/validatable/localizable.rb +2 -3
- data/lib/mongoid/validatable/macros.rb +3 -8
- data/lib/mongoid/validatable/presence.rb +10 -15
- data/lib/mongoid/validatable/queryable.rb +2 -3
- data/lib/mongoid/validatable/uniqueness.rb +26 -40
- data/lib/mongoid/validatable.rb +16 -35
- data/lib/mongoid/version.rb +3 -2
- data/lib/mongoid.rb +35 -17
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -2
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +54 -21
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -2
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
- data/lib/rails/generators/mongoid_generator.rb +2 -1
- data/lib/rails/mongoid.rb +4 -5
- data/spec/README.md +33 -0
- data/spec/config/mongoid.yml +28 -2
- data/spec/integration/app_spec.rb +343 -0
- data/spec/integration/associations/belongs_to_spec.rb +15 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +268 -0
- data/spec/integration/associations/embeds_many_spec.rb +206 -0
- data/spec/integration/associations/embeds_one_spec.rb +23 -0
- data/spec/integration/associations/foreign_key_spec.rb +98 -0
- data/spec/integration/associations/foreign_key_spec_models.rb +64 -0
- data/spec/integration/associations/has_many_spec.rb +128 -0
- data/spec/integration/associations/has_one_spec.rb +176 -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 +61 -0
- data/spec/integration/callbacks_spec.rb +228 -0
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +40 -0
- data/spec/integration/criteria/default_scope_spec.rb +72 -0
- data/spec/integration/criteria/logical_spec.rb +124 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +142 -0
- data/spec/integration/discriminator_key_spec.rb +353 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +51 -0
- data/spec/integration/i18n_fallbacks_spec.rb +89 -0
- data/spec/integration/matcher_examples_spec.rb +758 -0
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +409 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +112 -0
- data/spec/integration/matcher_operator_data/in.yml +210 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_data/type.yml +70 -0
- data/spec/integration/matcher_operator_data/type_array.yml +16 -0
- data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
- data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
- data/spec/integration/matcher_operator_data/type_code.yml +26 -0
- data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
- data/spec/integration/matcher_operator_data/type_date.yml +39 -0
- data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
- data/spec/integration/matcher_operator_data/type_decimal.yml +40 -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 +124 -0
- data/spec/integration/matcher_spec.rb +283 -0
- data/spec/integration/server_query_spec.rb +141 -0
- data/spec/integration/shardable_spec.rb +148 -0
- data/spec/integration/stringified_symbol_field_spec.rb +203 -0
- data/spec/lite_spec_helper.rb +83 -0
- data/spec/mongoid/association/accessors_spec.rb +1067 -0
- data/spec/mongoid/association/auto_save_spec.rb +403 -0
- data/spec/mongoid/association/builders_spec.rb +255 -0
- data/spec/mongoid/association/constrainable_spec.rb +117 -0
- data/spec/mongoid/association/counter_cache_spec.rb +452 -0
- data/spec/mongoid/association/depending_spec.rb +959 -0
- data/spec/mongoid/association/eager_spec.rb +281 -0
- data/spec/mongoid/association/embedded/cyclic_spec.rb +180 -0
- data/spec/mongoid/association/embedded/dirty_spec.rb +67 -0
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +173 -0
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +36 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +559 -0
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +903 -0
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +56 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +106 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +4652 -0
- data/spec/mongoid/association/embedded/embeds_many_models.rb +69 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +51 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +864 -0
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +79 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +81 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +1025 -0
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +8 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +54 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +28 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +956 -0
- data/spec/mongoid/association/macros_spec.rb +1116 -0
- data/spec/mongoid/association/nested/many_spec.rb +232 -0
- data/spec/mongoid/association/nested/one_spec.rb +253 -0
- data/spec/mongoid/association/options_spec.rb +1323 -0
- data/spec/mongoid/association/polymorphic_spec.rb +162 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +243 -0
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +238 -0
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +412 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +1373 -0
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +57 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2046 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +180 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +148 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +196 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +76 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +3773 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +67 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +39 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1071 -0
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +155 -0
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +142 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +290 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2232 -0
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +4092 -0
- data/spec/mongoid/association/referenced/has_many_models.rb +95 -0
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +1248 -0
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +133 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +159 -0
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +193 -0
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +1142 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +97 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +1383 -0
- data/spec/mongoid/association/reflections_spec.rb +92 -0
- data/spec/mongoid/association/syncable_spec.rb +499 -0
- data/spec/mongoid/association_spec.rb +191 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +52 -3
- 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 +107 -12
- data/spec/mongoid/atomic_spec.rb +36 -11
- data/spec/mongoid/attributes/dynamic_spec.rb +152 -0
- data/spec/mongoid/attributes/nested_spec.rb +115 -91
- 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 +44 -0
- data/spec/mongoid/attributes/readonly_spec.rb +111 -111
- data/spec/mongoid/attributes_spec.rb +501 -33
- data/spec/mongoid/cacheable_spec.rb +114 -0
- data/spec/mongoid/changeable_spec.rb +118 -35
- data/spec/mongoid/clients/factory_spec.rb +176 -34
- data/spec/mongoid/clients/options_spec.rb +431 -98
- data/spec/mongoid/clients/sessions_spec.rb +335 -0
- data/spec/mongoid/clients/transactions_spec.rb +415 -0
- data/spec/mongoid/clients_spec.rb +318 -114
- data/spec/mongoid/composable_spec.rb +9 -0
- data/spec/mongoid/config/environment_spec.rb +88 -8
- data/spec/mongoid/config/options_spec.rb +22 -3
- data/spec/mongoid/config_spec.rb +371 -13
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +53 -11
- 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 +245 -84
- data/spec/mongoid/contextual/geo_near_spec.rb +31 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +24 -7
- data/spec/mongoid/contextual/memory_spec.rb +44 -23
- data/spec/mongoid/contextual/mongo_spec.rb +780 -155
- data/spec/mongoid/contextual/none_spec.rb +14 -71
- data/spec/mongoid/copyable_spec.rb +297 -23
- data/spec/mongoid/copyable_spec_models.rb +47 -0
- data/spec/mongoid/criteria/findable_spec.rb +77 -20
- data/spec/mongoid/criteria/inspectable_spec.rb +2 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +2 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +506 -50
- data/spec/mongoid/criteria/options_spec.rb +31 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +372 -0
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +61 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +525 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +61 -0
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +60 -0
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +215 -0
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +332 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +423 -0
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +60 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +67 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +329 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +67 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +79 -0
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +53 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +110 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +370 -0
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +91 -0
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +92 -0
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +41 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +347 -0
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +169 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +395 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +376 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +96 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +182 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1801 -0
- data/spec/mongoid/criteria/queryable/options_spec.rb +362 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +214 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +139 -0
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +2069 -0
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +38 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +2297 -0
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +883 -0
- data/spec/mongoid/criteria/queryable/smash_spec.rb +32 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +226 -0
- data/spec/mongoid/criteria/scopable_spec.rb +210 -0
- data/spec/mongoid/criteria_projection_spec.rb +410 -0
- data/spec/mongoid/criteria_spec.rb +876 -402
- data/spec/mongoid/document_fields_spec.rb +113 -0
- data/spec/mongoid/document_persistence_context_spec.rb +32 -0
- data/spec/mongoid/document_query_spec.rb +89 -0
- data/spec/mongoid/document_spec.rb +214 -104
- 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 +2 -0
- data/spec/mongoid/errors/eager_load_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- 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 +2 -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 +39 -0
- 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 +28 -11
- 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 +2 -0
- 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 +2 -0
- 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 +36 -58
- data/spec/mongoid/extensions/big_decimal_spec.rb +323 -19
- data/spec/mongoid/extensions/binary_spec.rb +2 -0
- data/spec/mongoid/extensions/boolean_spec.rb +16 -0
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +335 -0
- data/spec/mongoid/extensions/date_spec.rb +8 -164
- data/spec/mongoid/extensions/date_time_spec.rb +19 -66
- data/spec/mongoid/extensions/decimal128_spec.rb +3 -1
- data/spec/mongoid/extensions/false_class_spec.rb +3 -1
- data/spec/mongoid/extensions/float_spec.rb +25 -4
- data/spec/mongoid/extensions/hash_spec.rb +138 -1
- data/spec/mongoid/extensions/integer_spec.rb +22 -3
- 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 +27 -31
- data/spec/mongoid/extensions/range_spec.rb +9 -0
- data/spec/mongoid/extensions/regexp_spec.rb +25 -0
- data/spec/mongoid/extensions/set_spec.rb +2 -0
- data/spec/mongoid/extensions/string_spec.rb +113 -31
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +84 -0
- data/spec/mongoid/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/extensions/time_spec.rb +31 -6
- data/spec/mongoid/extensions/time_with_zone_spec.rb +35 -6
- data/spec/mongoid/extensions/true_class_spec.rb +3 -1
- data/spec/mongoid/extensions_spec.rb +16 -2
- data/spec/mongoid/factory_spec.rb +304 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +26 -32
- data/spec/mongoid/fields/localized_spec.rb +6 -4
- data/spec/mongoid/fields/standard_spec.rb +2 -0
- data/spec/mongoid/fields_spec.rb +420 -38
- data/spec/mongoid/findable_spec.rb +98 -19
- data/spec/mongoid/indexable/specification_spec.rb +2 -0
- data/spec/mongoid/indexable_spec.rb +69 -17
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +273 -114
- data/spec/mongoid/interceptable_spec_models.rb +76 -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 +40 -0
- data/spec/mongoid/persistable/creatable_spec.rb +119 -29
- data/spec/mongoid/persistable/deletable_spec.rb +307 -11
- data/spec/mongoid/persistable/destroyable_spec.rb +225 -12
- data/spec/mongoid/persistable/incrementable_spec.rb +29 -13
- 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 +91 -7
- data/spec/mongoid/persistable/renamable_spec.rb +18 -2
- data/spec/mongoid/persistable/savable_spec.rb +218 -50
- data/spec/mongoid/persistable/settable_spec.rb +213 -32
- data/spec/mongoid/persistable/unsettable_spec.rb +19 -3
- data/spec/mongoid/persistable/updatable_spec.rb +222 -21
- data/spec/mongoid/persistable/upsertable_spec.rb +4 -2
- data/spec/mongoid/persistable_spec.rb +116 -25
- data/spec/mongoid/persistence_context_spec.rb +696 -0
- data/spec/mongoid/positional_spec.rb +3 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +68 -0
- data/spec/mongoid/query_cache_spec.rb +647 -45
- data/spec/mongoid/relations/proxy_spec.rb +126 -98
- data/spec/mongoid/reloadable_spec.rb +346 -17
- data/spec/mongoid/scopable_spec.rb +82 -22
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +160 -79
- data/spec/mongoid/shardable_models.rb +61 -0
- data/spec/mongoid/shardable_spec.rb +145 -26
- data/spec/mongoid/stateful_spec.rb +3 -1
- data/spec/mongoid/tasks/database_rake_spec.rb +15 -13
- data/spec/mongoid/tasks/database_spec.rb +3 -1
- data/spec/mongoid/threaded_spec.rb +72 -2
- data/spec/mongoid/timestamps/created/short_spec.rb +3 -1
- data/spec/mongoid/timestamps/created_spec.rb +3 -1
- data/spec/mongoid/timestamps/timeless_spec.rb +4 -2
- data/spec/mongoid/timestamps/updated/short_spec.rb +5 -3
- data/spec/mongoid/timestamps/updated_spec.rb +5 -3
- data/spec/mongoid/timestamps_spec.rb +8 -6
- data/spec/mongoid/touchable_spec.rb +588 -0
- data/spec/mongoid/touchable_spec_models.rb +53 -0
- data/spec/mongoid/traversable_spec.rb +1167 -1
- data/spec/mongoid/validatable/associated_spec.rb +3 -1
- 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 +33 -26
- data/spec/mongoid/validatable/uniqueness_spec.rb +119 -81
- data/spec/mongoid/validatable_spec.rb +21 -3
- data/spec/mongoid_spec.rb +2 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +112 -0
- data/spec/rails/mongoid_spec.rb +4 -2
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +386 -0
- data/spec/shared/lib/mrss/docker_runner.rb +271 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +199 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +120 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +339 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +379 -0
- data/spec/shared/shlib/set_env.sh +132 -0
- data/spec/spec_helper.rb +133 -53
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +53 -0
- data/spec/support/expectations.rb +21 -3
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +42 -0
- data/spec/support/models/account.rb +38 -0
- data/spec/support/models/acolyte.rb +19 -0
- data/spec/support/models/actor.rb +20 -0
- data/spec/support/models/actress.rb +4 -0
- data/spec/support/models/address.rb +85 -0
- data/spec/support/models/address_component.rb +7 -0
- data/spec/support/models/address_number.rb +8 -0
- data/spec/support/models/agency.rb +7 -0
- data/spec/support/models/agent.rb +18 -0
- data/spec/support/models/album.rb +20 -0
- data/spec/support/models/alert.rb +9 -0
- data/spec/support/models/animal.rb +28 -0
- data/spec/support/models/answer.rb +8 -0
- data/spec/support/models/appointment.rb +9 -0
- data/spec/support/models/armrest.rb +9 -0
- data/spec/support/models/array_field.rb +7 -0
- data/spec/support/models/article.rb +14 -0
- data/spec/support/models/artist.rb +91 -0
- data/spec/support/models/artwork.rb +6 -0
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/support/models/audio.rb +7 -0
- data/spec/support/models/augmentation.rb +13 -0
- data/spec/support/models/author.rb +8 -0
- data/spec/support/models/baby.rb +6 -0
- data/spec/support/models/band.rb +37 -0
- data/spec/support/models/bar.rb +12 -0
- data/spec/support/models/basic.rb +8 -0
- data/spec/support/models/bed.rb +3 -0
- data/spec/support/models/big_palette.rb +4 -0
- data/spec/support/models/birthday.rb +15 -0
- data/spec/support/models/bolt.rb +7 -0
- data/spec/support/models/bomb.rb +6 -0
- data/spec/support/models/book.rb +18 -0
- data/spec/support/models/breed.rb +6 -0
- data/spec/support/models/browser.rb +8 -0
- data/spec/support/models/building.rb +8 -0
- data/spec/support/models/building_address.rb +9 -0
- data/spec/support/models/bus.rb +9 -0
- data/spec/support/models/business.rb +7 -0
- data/spec/support/models/callback_test.rb +11 -0
- data/spec/support/models/canvas.rb +27 -0
- data/spec/support/models/car.rb +3 -0
- data/spec/support/models/cat.rb +10 -0
- data/spec/support/models/category.rb +10 -0
- data/spec/support/models/child.rb +6 -0
- data/spec/support/models/child_doc.rb +24 -0
- data/spec/support/models/church.rb +8 -0
- data/spec/support/models/circle.rb +5 -0
- data/spec/support/models/circuit.rb +6 -0
- data/spec/support/models/circus.rb +9 -0
- data/spec/support/models/code.rb +13 -0
- data/spec/support/models/coding/pull_request.rb +11 -0
- data/spec/support/models/coding.rb +3 -0
- data/spec/support/models/comment.rb +18 -0
- data/spec/support/models/company.rb +7 -0
- data/spec/support/models/consumption_period.rb +9 -0
- data/spec/support/models/contextable_item.rb +7 -0
- data/spec/support/models/contractor.rb +7 -0
- data/spec/support/models/cookie.rb +8 -0
- data/spec/support/models/country_code.rb +12 -0
- data/spec/support/models/courier_job.rb +6 -0
- data/spec/support/models/crate.rb +12 -0
- data/spec/support/models/customer.rb +10 -0
- data/spec/support/models/customer_address.rb +11 -0
- data/spec/support/models/deed.rb +7 -0
- data/spec/support/models/definition.rb +11 -0
- data/spec/support/models/delegating_patient.rb +15 -0
- data/spec/support/models/description.rb +13 -0
- data/spec/support/models/dictionary.rb +18 -0
- data/spec/support/models/division.rb +12 -0
- data/spec/support/models/doctor.rb +14 -0
- data/spec/support/models/dog.rb +9 -0
- data/spec/support/models/dokument.rb +8 -0
- data/spec/support/models/draft.rb +11 -0
- data/spec/support/models/dragon.rb +6 -0
- data/spec/support/models/driver.rb +9 -0
- data/spec/support/models/drug.rb +8 -0
- data/spec/support/models/dungeon.rb +6 -0
- data/spec/support/models/edit.rb +7 -0
- data/spec/support/models/email.rb +8 -0
- data/spec/support/models/employer.rb +7 -0
- data/spec/support/models/entry.rb +8 -0
- data/spec/support/models/eraser.rb +3 -0
- data/spec/support/models/even.rb +9 -0
- data/spec/support/models/event.rb +24 -0
- data/spec/support/models/exhibition.rb +6 -0
- data/spec/support/models/exhibitor.rb +8 -0
- data/spec/support/models/explosion.rb +6 -0
- data/spec/support/models/eye.rb +11 -0
- data/spec/support/models/eye_bowl.rb +11 -0
- data/spec/support/models/face.rb +10 -0
- data/spec/support/models/favorite.rb +8 -0
- data/spec/support/models/filesystem.rb +7 -0
- data/spec/support/models/fire_hydrant.rb +8 -0
- data/spec/support/models/firefox.rb +6 -0
- data/spec/support/models/fish.rb +9 -0
- data/spec/support/models/folder.rb +9 -0
- data/spec/support/models/folder_item.rb +11 -0
- data/spec/support/models/fruits.rb +36 -0
- data/spec/support/models/game.rb +21 -0
- data/spec/support/models/ghost.rb +9 -0
- data/spec/support/models/guitar.rb +4 -0
- data/spec/support/models/hole.rb +12 -0
- data/spec/support/models/home.rb +6 -0
- data/spec/support/models/house.rb +8 -0
- data/spec/support/models/html_writer.rb +5 -0
- data/spec/support/models/id_key.rb +8 -0
- data/spec/support/models/idnodef.rb +7 -0
- data/spec/support/models/image.rb +24 -0
- data/spec/support/models/implant.rb +18 -0
- data/spec/support/models/instrument.rb +8 -0
- data/spec/support/models/item.rb +10 -0
- data/spec/support/models/jar.rb +9 -0
- data/spec/support/models/kaleidoscope.rb +8 -0
- data/spec/support/models/kangaroo.rb +6 -0
- data/spec/support/models/label.rb +50 -0
- data/spec/support/models/language.rb +7 -0
- data/spec/support/models/lat_lng.rb +17 -0
- data/spec/support/models/league.rb +13 -0
- data/spec/support/models/learner.rb +4 -0
- data/spec/support/models/line_item.rb +8 -0
- data/spec/support/models/location.rb +10 -0
- data/spec/support/models/login.rb +10 -0
- data/spec/support/models/manufacturer.rb +9 -0
- data/spec/support/models/meat.rb +6 -0
- data/spec/support/models/membership.rb +6 -0
- data/spec/support/models/message.rb +13 -0
- data/spec/support/models/minim.rb +6 -0
- data/spec/support/models/mixed_drink.rb +6 -0
- data/spec/support/models/mop.rb +24 -0
- data/spec/support/models/movie.rb +15 -0
- data/spec/support/models/my_hash.rb +4 -0
- data/spec/support/models/name.rb +26 -0
- data/spec/support/models/name_only.rb +8 -0
- data/spec/support/models/node.rb +7 -0
- data/spec/support/models/note.rb +19 -0
- data/spec/support/models/nut.rb +7 -0
- data/spec/support/models/odd.rb +9 -0
- data/spec/support/models/order.rb +12 -0
- data/spec/support/models/ordered_post.rb +13 -0
- data/spec/support/models/ordered_preference.rb +8 -0
- data/spec/support/models/oscar.rb +16 -0
- data/spec/support/models/other_owner_object.rb +4 -0
- data/spec/support/models/override.rb +18 -0
- data/spec/support/models/ownable.rb +8 -0
- data/spec/support/models/owner.rb +10 -0
- data/spec/support/models/pack.rb +5 -0
- data/spec/support/models/page.rb +18 -0
- data/spec/support/models/page_question.rb +6 -0
- data/spec/support/models/palette.rb +9 -0
- data/spec/support/models/parent.rb +7 -0
- data/spec/support/models/parent_doc.rb +8 -0
- data/spec/support/models/passport.rb +13 -0
- data/spec/support/models/patient.rb +11 -0
- data/spec/support/models/pdf_writer.rb +5 -0
- data/spec/support/models/pencil.rb +3 -0
- data/spec/support/models/person.rb +230 -0
- data/spec/support/models/pet.rb +25 -0
- data/spec/support/models/pet_owner.rb +8 -0
- data/spec/support/models/phone.rb +13 -0
- data/spec/support/models/piano.rb +4 -0
- data/spec/support/models/pizza.rb +9 -0
- data/spec/support/models/player.rb +37 -0
- data/spec/support/models/post.rb +52 -0
- data/spec/support/models/post_genre.rb +8 -0
- data/spec/support/models/powerup.rb +13 -0
- data/spec/support/models/preference.rb +11 -0
- data/spec/support/models/princess.rb +12 -0
- data/spec/support/models/product.rb +19 -0
- data/spec/support/models/profile.rb +17 -0
- data/spec/support/models/pronunciation.rb +7 -0
- data/spec/support/models/pub.rb +8 -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/support/models/purchase.rb +6 -0
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/support/models/question.rb +10 -0
- data/spec/support/models/quiz.rb +9 -0
- data/spec/support/models/rating.rb +10 -0
- data/spec/support/models/record.rb +54 -0
- data/spec/support/models/registry.rb +6 -0
- data/spec/support/models/role.rb +9 -0
- data/spec/support/models/root_category.rb +6 -0
- data/spec/support/models/sandwich.rb +11 -0
- data/spec/support/models/scheduler.rb +9 -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/support/models/seo.rb +9 -0
- data/spec/support/models/series.rb +7 -0
- data/spec/support/models/server.rb +15 -0
- data/spec/support/models/service.rb +24 -0
- data/spec/support/models/shape.rb +14 -0
- data/spec/support/models/shelf.rb +7 -0
- data/spec/support/models/shipment_address.rb +5 -0
- data/spec/support/models/shipping_container.rb +7 -0
- data/spec/support/models/shipping_pack.rb +5 -0
- data/spec/support/models/shirt.rb +11 -0
- data/spec/support/models/shop.rb +8 -0
- data/spec/support/models/short_agent.rb +6 -0
- data/spec/support/models/short_quiz.rb +7 -0
- data/spec/support/models/simple.rb +7 -0
- data/spec/support/models/slave.rb +8 -0
- data/spec/support/models/song.rb +10 -0
- data/spec/support/models/sound.rb +7 -0
- data/spec/support/models/spacer.rb +7 -0
- data/spec/support/models/square.rb +6 -0
- data/spec/support/models/staff.rb +9 -0
- data/spec/support/models/store_as_dup_test1.rb +7 -0
- data/spec/support/models/store_as_dup_test2.rb +7 -0
- data/spec/support/models/store_as_dup_test3.rb +7 -0
- data/spec/support/models/store_as_dup_test4.rb +7 -0
- data/spec/support/models/strategy.rb +5 -0
- data/spec/support/models/sub_item.rb +5 -0
- data/spec/support/models/subscription.rb +7 -0
- data/spec/support/models/survey.rb +7 -0
- data/spec/support/models/symptom.rb +8 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/support/models/tag.rb +10 -0
- data/spec/support/models/target.rb +7 -0
- data/spec/support/models/template.rb +7 -0
- data/spec/support/models/thing.rb +11 -0
- data/spec/support/models/threadlocker.rb +7 -0
- data/spec/support/models/title.rb +5 -0
- data/spec/support/models/tool.rb +10 -0
- data/spec/support/models/topping.rb +7 -0
- data/spec/support/models/toy.rb +9 -0
- data/spec/support/models/track.rb +40 -0
- data/spec/support/models/translation.rb +7 -0
- data/spec/support/models/tree.rb +11 -0
- data/spec/support/models/truck.rb +7 -0
- data/spec/support/models/updatable.rb +7 -0
- data/spec/support/models/user.rb +23 -0
- data/spec/support/models/user_account.rb +12 -0
- data/spec/support/models/validation_callback.rb +12 -0
- data/spec/support/models/vehicle.rb +18 -0
- data/spec/support/models/version.rb +7 -0
- data/spec/support/models/vertex.rb +8 -0
- data/spec/support/models/vet_visit.rb +7 -0
- data/spec/support/models/video.rb +15 -0
- data/spec/support/models/video_game.rb +3 -0
- data/spec/support/models/washer.rb +7 -0
- data/spec/support/models/weapon.rb +13 -0
- data/spec/support/models/wiki_page.rb +17 -0
- data/spec/support/models/word.rb +17 -0
- data/spec/support/models/word_origin.rb +13 -0
- data/spec/support/models/writer.rb +13 -0
- data/spec/support/shared/time.rb +53 -0
- data/spec/support/spec_config.rb +60 -0
- data.tar.gz.sig +0 -0
- metadata +1347 -813
- metadata.gz.sig +0 -0
- data/lib/mongoid/clients/thread_options.rb +0 -19
- data/lib/mongoid/extensions/origin/regexp_raw.rb +0 -43
- data/lib/mongoid/matchable/all.rb +0 -27
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -72
- data/lib/mongoid/matchable/exists.rb +0 -23
- data/lib/mongoid/matchable/gt.rb +0 -21
- data/lib/mongoid/matchable/gte.rb +0 -21
- data/lib/mongoid/matchable/in.rb +0 -24
- data/lib/mongoid/matchable/lt.rb +0 -21
- data/lib/mongoid/matchable/lte.rb +0 -21
- data/lib/mongoid/matchable/ne.rb +0 -21
- data/lib/mongoid/matchable/nin.rb +0 -22
- 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/mongoid/railties/document.rb +0 -12
- data/lib/mongoid/relations/accessors.rb +0 -264
- data/lib/mongoid/relations/auto_save.rb +0 -86
- data/lib/mongoid/relations/binding.rb +0 -218
- data/lib/mongoid/relations/bindings/embedded/in.rb +0 -59
- data/lib/mongoid/relations/bindings/embedded/many.rb +0 -43
- data/lib/mongoid/relations/bindings/embedded/one.rb +0 -45
- data/lib/mongoid/relations/bindings/referenced/in.rb +0 -65
- data/lib/mongoid/relations/bindings/referenced/many.rb +0 -38
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +0 -70
- data/lib/mongoid/relations/bindings/referenced/one.rb +0 -44
- data/lib/mongoid/relations/bindings.rb +0 -9
- data/lib/mongoid/relations/builder.rb +0 -57
- data/lib/mongoid/relations/builders/embedded/in.rb +0 -29
- data/lib/mongoid/relations/builders/embedded/many.rb +0 -36
- data/lib/mongoid/relations/builders/embedded/one.rb +0 -30
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +0 -199
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +0 -126
- data/lib/mongoid/relations/builders/referenced/in.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +0 -39
- data/lib/mongoid/relations/builders/referenced/one.rb +0 -26
- data/lib/mongoid/relations/builders.rb +0 -106
- data/lib/mongoid/relations/cascading/delete.rb +0 -44
- data/lib/mongoid/relations/cascading/destroy.rb +0 -43
- data/lib/mongoid/relations/cascading/nullify.rb +0 -35
- data/lib/mongoid/relations/cascading/restrict.rb +0 -39
- data/lib/mongoid/relations/cascading.rb +0 -56
- data/lib/mongoid/relations/constraint.rb +0 -55
- data/lib/mongoid/relations/conversions.rb +0 -34
- data/lib/mongoid/relations/counter_cache.rb +0 -150
- data/lib/mongoid/relations/cyclic.rb +0 -107
- data/lib/mongoid/relations/eager/base.rb +0 -153
- data/lib/mongoid/relations/eager/belongs_to.rb +0 -31
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +0 -47
- data/lib/mongoid/relations/eager/has_many.rb +0 -38
- data/lib/mongoid/relations/eager/has_one.rb +0 -30
- data/lib/mongoid/relations/eager.rb +0 -41
- data/lib/mongoid/relations/embedded/batchable.rb +0 -382
- data/lib/mongoid/relations/embedded/in.rb +0 -229
- data/lib/mongoid/relations/embedded/many.rb +0 -642
- data/lib/mongoid/relations/embedded/one.rb +0 -222
- data/lib/mongoid/relations/macros.rb +0 -359
- data/lib/mongoid/relations/many.rb +0 -238
- data/lib/mongoid/relations/marshalable.rb +0 -32
- data/lib/mongoid/relations/metadata.rb +0 -1179
- data/lib/mongoid/relations/nested_builder.rb +0 -74
- data/lib/mongoid/relations/one.rb +0 -60
- data/lib/mongoid/relations/options.rb +0 -49
- data/lib/mongoid/relations/polymorphic.rb +0 -39
- data/lib/mongoid/relations/proxy.rb +0 -245
- data/lib/mongoid/relations/referenced/in.rb +0 -295
- data/lib/mongoid/relations/referenced/many.rb +0 -808
- data/lib/mongoid/relations/referenced/many_to_many.rb +0 -472
- data/lib/mongoid/relations/referenced/one.rb +0 -276
- data/lib/mongoid/relations/reflections.rb +0 -64
- data/lib/mongoid/relations/synchronization.rb +0 -169
- data/lib/mongoid/relations/targets/enumerable.rb +0 -473
- data/lib/mongoid/relations/targets.rb +0 -2
- data/lib/mongoid/relations/touchable.rb +0 -94
- data/lib/mongoid/relations.rb +0 -148
- data/lib/support/ruby_version.rb +0 -26
- data/spec/app/models/account.rb +0 -36
- data/spec/app/models/acolyte.rb +0 -17
- data/spec/app/models/actor.rb +0 -18
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/address.rb +0 -79
- data/spec/app/models/address_component.rb +0 -5
- data/spec/app/models/address_number.rb +0 -6
- data/spec/app/models/agency.rb +0 -5
- data/spec/app/models/agent.rb +0 -14
- data/spec/app/models/album.rb +0 -14
- data/spec/app/models/alert.rb +0 -7
- data/spec/app/models/animal.rb +0 -25
- data/spec/app/models/answer.rb +0 -6
- data/spec/app/models/appointment.rb +0 -7
- data/spec/app/models/article.rb +0 -12
- data/spec/app/models/artist.rb +0 -66
- data/spec/app/models/artwork.rb +0 -4
- data/spec/app/models/audio.rb +0 -5
- data/spec/app/models/augmentation.rb +0 -11
- data/spec/app/models/author.rb +0 -6
- data/spec/app/models/baby.rb +0 -4
- data/spec/app/models/band.rb +0 -28
- data/spec/app/models/bar.rb +0 -10
- data/spec/app/models/basic.rb +0 -6
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/big_palette.rb +0 -2
- data/spec/app/models/birthday.rb +0 -13
- data/spec/app/models/bomb.rb +0 -4
- data/spec/app/models/book.rb +0 -15
- data/spec/app/models/breed.rb +0 -4
- data/spec/app/models/browser.rb +0 -6
- data/spec/app/models/building.rb +0 -6
- data/spec/app/models/building_address.rb +0 -7
- data/spec/app/models/bus.rb +0 -7
- data/spec/app/models/business.rb +0 -5
- data/spec/app/models/callback_test.rb +0 -9
- data/spec/app/models/canvas.rb +0 -25
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/cat.rb +0 -8
- data/spec/app/models/category.rb +0 -8
- data/spec/app/models/child.rb +0 -4
- data/spec/app/models/child_doc.rb +0 -22
- data/spec/app/models/church.rb +0 -6
- data/spec/app/models/circle.rb +0 -3
- data/spec/app/models/circuit.rb +0 -4
- data/spec/app/models/circus.rb +0 -7
- data/spec/app/models/code.rb +0 -11
- data/spec/app/models/comment.rb +0 -16
- data/spec/app/models/company.rb +0 -5
- data/spec/app/models/consumption_period.rb +0 -7
- data/spec/app/models/contextable_item.rb +0 -5
- data/spec/app/models/contractor.rb +0 -5
- data/spec/app/models/cookie.rb +0 -6
- data/spec/app/models/country_code.rb +0 -8
- data/spec/app/models/courier_job.rb +0 -4
- data/spec/app/models/definition.rb +0 -9
- data/spec/app/models/description.rb +0 -11
- data/spec/app/models/dictionary.rb +0 -10
- data/spec/app/models/division.rb +0 -10
- data/spec/app/models/doctor.rb +0 -12
- data/spec/app/models/dog.rb +0 -7
- data/spec/app/models/dokument.rb +0 -5
- data/spec/app/models/draft.rb +0 -9
- data/spec/app/models/dragon.rb +0 -4
- data/spec/app/models/driver.rb +0 -7
- data/spec/app/models/drug.rb +0 -6
- data/spec/app/models/dungeon.rb +0 -4
- data/spec/app/models/edit.rb +0 -5
- data/spec/app/models/email.rb +0 -6
- data/spec/app/models/employer.rb +0 -5
- data/spec/app/models/entry.rb +0 -6
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/even.rb +0 -7
- data/spec/app/models/event.rb +0 -22
- data/spec/app/models/exhibition.rb +0 -4
- data/spec/app/models/exhibitor.rb +0 -6
- data/spec/app/models/explosion.rb +0 -4
- data/spec/app/models/eye.rb +0 -9
- data/spec/app/models/eye_bowl.rb +0 -9
- data/spec/app/models/face.rb +0 -8
- data/spec/app/models/favorite.rb +0 -6
- data/spec/app/models/filesystem.rb +0 -5
- data/spec/app/models/fire_hydrant.rb +0 -6
- data/spec/app/models/firefox.rb +0 -4
- data/spec/app/models/fish.rb +0 -7
- data/spec/app/models/folder.rb +0 -7
- data/spec/app/models/folder_item.rb +0 -9
- data/spec/app/models/fruits.rb +0 -34
- data/spec/app/models/game.rb +0 -19
- data/spec/app/models/ghost.rb +0 -7
- data/spec/app/models/home.rb +0 -4
- data/spec/app/models/house.rb +0 -6
- data/spec/app/models/html_writer.rb +0 -3
- data/spec/app/models/id_key.rb +0 -6
- data/spec/app/models/image.rb +0 -22
- data/spec/app/models/implant.rb +0 -16
- data/spec/app/models/item.rb +0 -8
- data/spec/app/models/jar.rb +0 -7
- data/spec/app/models/kaleidoscope.rb +0 -6
- data/spec/app/models/kangaroo.rb +0 -4
- data/spec/app/models/label.rb +0 -47
- data/spec/app/models/language.rb +0 -5
- data/spec/app/models/lat_lng.rb +0 -15
- data/spec/app/models/league.rb +0 -11
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/line_item.rb +0 -6
- data/spec/app/models/location.rb +0 -8
- data/spec/app/models/login.rb +0 -8
- data/spec/app/models/manufacturer.rb +0 -7
- data/spec/app/models/meat.rb +0 -4
- data/spec/app/models/membership.rb +0 -4
- data/spec/app/models/message.rb +0 -11
- data/spec/app/models/mixed_drink.rb +0 -4
- data/spec/app/models/movie.rb +0 -13
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/name.rb +0 -24
- data/spec/app/models/node.rb +0 -5
- data/spec/app/models/note.rb +0 -17
- data/spec/app/models/odd.rb +0 -7
- data/spec/app/models/ordered_post.rb +0 -6
- data/spec/app/models/ordered_preference.rb +0 -6
- data/spec/app/models/oscar.rb +0 -15
- data/spec/app/models/override.rb +0 -16
- data/spec/app/models/ownable.rb +0 -6
- data/spec/app/models/owner.rb +0 -6
- data/spec/app/models/pack.rb +0 -3
- data/spec/app/models/page.rb +0 -16
- data/spec/app/models/page_question.rb +0 -4
- data/spec/app/models/palette.rb +0 -7
- data/spec/app/models/parent.rb +0 -5
- data/spec/app/models/parent_doc.rb +0 -6
- data/spec/app/models/passport.rb +0 -5
- data/spec/app/models/patient.rb +0 -9
- data/spec/app/models/pdf_writer.rb +0 -3
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/person.rb +0 -207
- data/spec/app/models/pet.rb +0 -23
- data/spec/app/models/pet_owner.rb +0 -6
- data/spec/app/models/phone.rb +0 -9
- data/spec/app/models/pizza.rb +0 -7
- data/spec/app/models/player.rb +0 -35
- data/spec/app/models/post.rb +0 -50
- data/spec/app/models/post_genre.rb +0 -6
- data/spec/app/models/powerup.rb +0 -11
- data/spec/app/models/preference.rb +0 -9
- data/spec/app/models/princess.rb +0 -8
- data/spec/app/models/product.rb +0 -17
- data/spec/app/models/profile.rb +0 -5
- data/spec/app/models/pronunciation.rb +0 -5
- data/spec/app/models/pub.rb +0 -6
- data/spec/app/models/purchase.rb +0 -4
- data/spec/app/models/question.rb +0 -8
- data/spec/app/models/quiz.rb +0 -7
- data/spec/app/models/rating.rb +0 -8
- data/spec/app/models/record.rb +0 -51
- data/spec/app/models/registry.rb +0 -4
- data/spec/app/models/role.rb +0 -7
- data/spec/app/models/root_category.rb +0 -4
- data/spec/app/models/sandwich.rb +0 -9
- data/spec/app/models/scheduler.rb +0 -7
- data/spec/app/models/seo.rb +0 -7
- data/spec/app/models/series.rb +0 -4
- data/spec/app/models/server.rb +0 -13
- data/spec/app/models/service.rb +0 -22
- data/spec/app/models/shape.rb +0 -12
- data/spec/app/models/shelf.rb +0 -5
- data/spec/app/models/shipment_address.rb +0 -2
- data/spec/app/models/shipping_container.rb +0 -5
- data/spec/app/models/shipping_pack.rb +0 -3
- data/spec/app/models/shop.rb +0 -6
- data/spec/app/models/short_agent.rb +0 -4
- data/spec/app/models/short_quiz.rb +0 -5
- data/spec/app/models/simple.rb +0 -5
- data/spec/app/models/slave.rb +0 -6
- data/spec/app/models/song.rb +0 -8
- data/spec/app/models/sound.rb +0 -5
- data/spec/app/models/square.rb +0 -4
- data/spec/app/models/staff.rb +0 -7
- data/spec/app/models/store_as_dup_test1.rb +0 -5
- data/spec/app/models/store_as_dup_test2.rb +0 -5
- data/spec/app/models/strategy.rb +0 -3
- data/spec/app/models/sub_item.rb +0 -3
- data/spec/app/models/subscription.rb +0 -4
- data/spec/app/models/survey.rb +0 -5
- data/spec/app/models/symptom.rb +0 -6
- data/spec/app/models/tag.rb +0 -8
- data/spec/app/models/target.rb +0 -5
- data/spec/app/models/template.rb +0 -5
- data/spec/app/models/thing.rb +0 -9
- data/spec/app/models/title.rb +0 -3
- data/spec/app/models/tool.rb +0 -8
- data/spec/app/models/topping.rb +0 -5
- data/spec/app/models/track.rb +0 -38
- data/spec/app/models/translation.rb +0 -5
- data/spec/app/models/tree.rb +0 -9
- data/spec/app/models/truck.rb +0 -3
- data/spec/app/models/user.rb +0 -21
- data/spec/app/models/user_account.rb +0 -10
- data/spec/app/models/validation_callback.rb +0 -10
- data/spec/app/models/vehicle.rb +0 -11
- data/spec/app/models/version.rb +0 -5
- data/spec/app/models/vet_visit.rb +0 -5
- data/spec/app/models/video.rb +0 -13
- data/spec/app/models/video_game.rb +0 -1
- data/spec/app/models/weapon.rb +0 -11
- data/spec/app/models/wiki_page.rb +0 -14
- data/spec/app/models/word.rb +0 -15
- data/spec/app/models/word_origin.rb +0 -11
- data/spec/app/models/writer.rb +0 -11
- data/spec/mongoid/extensions/origin/regexp_raw_spec.rb +0 -89
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +0 -184
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +0 -201
- data/spec/mongoid/matchable/all_spec.rb +0 -31
- data/spec/mongoid/matchable/and_spec.rb +0 -187
- data/spec/mongoid/matchable/default_spec.rb +0 -130
- data/spec/mongoid/matchable/exists_spec.rb +0 -57
- data/spec/mongoid/matchable/gt_spec.rb +0 -75
- data/spec/mongoid/matchable/gte_spec.rb +0 -74
- data/spec/mongoid/matchable/in_spec.rb +0 -49
- data/spec/mongoid/matchable/lt_spec.rb +0 -74
- data/spec/mongoid/matchable/lte_spec.rb +0 -74
- data/spec/mongoid/matchable/ne_spec.rb +0 -46
- data/spec/mongoid/matchable/nin_spec.rb +0 -48
- 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 -708
- data/spec/mongoid/railties/document_spec.rb +0 -24
- data/spec/mongoid/relations/accessors_spec.rb +0 -821
- data/spec/mongoid/relations/auto_save_spec.rb +0 -281
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +0 -171
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +0 -54
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +0 -77
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +0 -241
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +0 -153
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +0 -178
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +0 -131
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +0 -34
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +0 -132
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +0 -99
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +0 -233
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +0 -250
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +0 -230
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +0 -137
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +0 -178
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +0 -111
- data/spec/mongoid/relations/builders_spec.rb +0 -226
- data/spec/mongoid/relations/cascading/delete_spec.rb +0 -101
- data/spec/mongoid/relations/cascading/destroy_spec.rb +0 -47
- data/spec/mongoid/relations/cascading/nullify_spec.rb +0 -32
- data/spec/mongoid/relations/cascading/restrict_spec.rb +0 -68
- data/spec/mongoid/relations/cascading_spec.rb +0 -355
- data/spec/mongoid/relations/constraint_spec.rb +0 -75
- data/spec/mongoid/relations/conversions_spec.rb +0 -128
- data/spec/mongoid/relations/counter_cache_spec.rb +0 -389
- data/spec/mongoid/relations/cyclic_spec.rb +0 -178
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +0 -163
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +0 -117
- data/spec/mongoid/relations/eager/has_many_spec.rb +0 -244
- data/spec/mongoid/relations/eager/has_one_spec.rb +0 -163
- data/spec/mongoid/relations/eager_spec.rb +0 -239
- data/spec/mongoid/relations/embedded/dirty_spec.rb +0 -65
- data/spec/mongoid/relations/embedded/in_spec.rb +0 -579
- data/spec/mongoid/relations/embedded/many_spec.rb +0 -4166
- data/spec/mongoid/relations/embedded/one_spec.rb +0 -1067
- data/spec/mongoid/relations/macros_spec.rb +0 -631
- data/spec/mongoid/relations/metadata_spec.rb +0 -1971
- data/spec/mongoid/relations/options_spec.rb +0 -35
- data/spec/mongoid/relations/polymorphic_spec.rb +0 -128
- data/spec/mongoid/relations/referenced/in_spec.rb +0 -1326
- data/spec/mongoid/relations/referenced/many_spec.rb +0 -3806
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +0 -3589
- data/spec/mongoid/relations/referenced/one_spec.rb +0 -1240
- data/spec/mongoid/relations/reflections_spec.rb +0 -101
- data/spec/mongoid/relations/synchronization_spec.rb +0 -449
- data/spec/mongoid/relations/targets/enumerable_spec.rb +0 -1717
- data/spec/mongoid/relations/touchable_spec.rb +0 -362
- data/spec/mongoid/relations_spec.rb +0 -189
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "spec_helper"
|
|
2
4
|
|
|
3
5
|
describe Mongoid::Validatable::UniquenessValidator do
|
|
@@ -19,34 +21,41 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
19
21
|
context "when persisting to another collection" do
|
|
20
22
|
|
|
21
23
|
before do
|
|
22
|
-
Dictionary.with(collection: "dicts")
|
|
24
|
+
Dictionary.with(collection: "dicts") do |klass|
|
|
25
|
+
klass.create!(name: "websters")
|
|
26
|
+
end
|
|
23
27
|
end
|
|
24
28
|
|
|
25
29
|
context "when the document is not valid" do
|
|
26
30
|
|
|
27
31
|
let(:websters) do
|
|
28
|
-
|
|
32
|
+
object = nil
|
|
33
|
+
valid = Dictionary.with(collection: "dicts") do |klass|
|
|
34
|
+
object = klass.new(name: "websters")
|
|
35
|
+
object.valid?
|
|
36
|
+
end
|
|
37
|
+
{ :valid => valid, :object => object }
|
|
29
38
|
end
|
|
30
39
|
|
|
31
40
|
it "performs the validation on the correct collection" do
|
|
32
|
-
expect(websters).
|
|
41
|
+
expect(websters[:valid]).to be(false)
|
|
33
42
|
end
|
|
34
43
|
|
|
35
44
|
it "adds the uniqueness error" do
|
|
36
|
-
websters.
|
|
37
|
-
expect(websters.errors[:name]).to_not be_nil
|
|
45
|
+
expect(websters[:object].errors[:name]).to_not be_nil
|
|
38
46
|
end
|
|
39
47
|
|
|
40
48
|
it "clears the persistence options in the thread local" do
|
|
41
|
-
|
|
42
|
-
expect(Dictionary.persistence_options).to be_nil
|
|
49
|
+
expect(Dictionary.persistence_context).to eq(Mongoid::PersistenceContext.new(Dictionary))
|
|
43
50
|
end
|
|
44
51
|
end
|
|
45
52
|
|
|
46
53
|
context "when the document is valid" do
|
|
47
54
|
|
|
48
55
|
let(:oxford) do
|
|
49
|
-
Dictionary.with(collection: "dicts")
|
|
56
|
+
Dictionary.with(collection: "dicts") do |klass|
|
|
57
|
+
klass.new(name: "oxford")
|
|
58
|
+
end
|
|
50
59
|
end
|
|
51
60
|
|
|
52
61
|
it "performs the validation on the correct collection" do
|
|
@@ -71,7 +80,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
71
80
|
context "when the attribute id is unique" do
|
|
72
81
|
|
|
73
82
|
let(:dictionary) do
|
|
74
|
-
Dictionary.create
|
|
83
|
+
Dictionary.create!
|
|
75
84
|
end
|
|
76
85
|
|
|
77
86
|
let(:word) do
|
|
@@ -163,7 +172,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
163
172
|
context "when a document with no value exists in the database" do
|
|
164
173
|
|
|
165
174
|
before do
|
|
166
|
-
Dictionary.create
|
|
175
|
+
Dictionary.create!
|
|
167
176
|
end
|
|
168
177
|
|
|
169
178
|
let(:dictionary) do
|
|
@@ -181,7 +190,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
181
190
|
context "when single localization" do
|
|
182
191
|
|
|
183
192
|
before do
|
|
184
|
-
Dictionary.create(description: "english")
|
|
193
|
+
Dictionary.create!(description: "english")
|
|
185
194
|
end
|
|
186
195
|
|
|
187
196
|
let(:dictionary) do
|
|
@@ -217,7 +226,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
217
226
|
context "when single localization" do
|
|
218
227
|
|
|
219
228
|
before do
|
|
220
|
-
Dictionary.create(description: "english")
|
|
229
|
+
Dictionary.create!(description: "english")
|
|
221
230
|
end
|
|
222
231
|
|
|
223
232
|
let(:dictionary) do
|
|
@@ -273,7 +282,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
273
282
|
context "when there are no special characters" do
|
|
274
283
|
|
|
275
284
|
before do
|
|
276
|
-
Dictionary.create(description: "english")
|
|
285
|
+
Dictionary.create!(description: "english")
|
|
277
286
|
end
|
|
278
287
|
|
|
279
288
|
let(:dictionary) do
|
|
@@ -288,7 +297,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
288
297
|
context "when special characters exist" do
|
|
289
298
|
|
|
290
299
|
before do
|
|
291
|
-
Dictionary.create(description: "english")
|
|
300
|
+
Dictionary.create!(description: "english")
|
|
292
301
|
end
|
|
293
302
|
|
|
294
303
|
let(:dictionary) do
|
|
@@ -308,7 +317,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
308
317
|
context "when signle localization" do
|
|
309
318
|
|
|
310
319
|
before do
|
|
311
|
-
Dictionary.create(description: "english")
|
|
320
|
+
Dictionary.create!(description: "english")
|
|
312
321
|
end
|
|
313
322
|
|
|
314
323
|
let(:dictionary) do
|
|
@@ -350,7 +359,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
350
359
|
context "when the document is the match in the database" do
|
|
351
360
|
|
|
352
361
|
let!(:dictionary) do
|
|
353
|
-
Dictionary.create(description: "english")
|
|
362
|
+
Dictionary.create!(description: "english")
|
|
354
363
|
end
|
|
355
364
|
|
|
356
365
|
it "returns true" do
|
|
@@ -410,7 +419,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
410
419
|
context "when the attribute is unique" do
|
|
411
420
|
|
|
412
421
|
let!(:oxford) do
|
|
413
|
-
Dictionary.create(name: "Oxford")
|
|
422
|
+
Dictionary.create!(name: "Oxford")
|
|
414
423
|
end
|
|
415
424
|
|
|
416
425
|
let(:dictionary) do
|
|
@@ -438,7 +447,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
438
447
|
context "when the document is not the match" do
|
|
439
448
|
|
|
440
449
|
before do
|
|
441
|
-
Dictionary.create(name: "Oxford")
|
|
450
|
+
Dictionary.create!(name: "Oxford")
|
|
442
451
|
end
|
|
443
452
|
|
|
444
453
|
let!(:dictionary) do
|
|
@@ -460,7 +469,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
460
469
|
context "when the field has changed" do
|
|
461
470
|
|
|
462
471
|
let!(:dictionary) do
|
|
463
|
-
Dictionary.create(name: "Oxford")
|
|
472
|
+
Dictionary.create!(name: "Oxford")
|
|
464
473
|
end
|
|
465
474
|
|
|
466
475
|
it "returns true" do
|
|
@@ -512,7 +521,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
512
521
|
context "when the attribute is not unique" do
|
|
513
522
|
|
|
514
523
|
before do
|
|
515
|
-
Dictionary.create(name: "Oxford")
|
|
524
|
+
Dictionary.create!(name: "Oxford")
|
|
516
525
|
end
|
|
517
526
|
|
|
518
527
|
let(:dictionary) do
|
|
@@ -539,7 +548,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
539
548
|
context "when the attribute is unique" do
|
|
540
549
|
|
|
541
550
|
before do
|
|
542
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
551
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
543
552
|
end
|
|
544
553
|
|
|
545
554
|
let(:dictionary) do
|
|
@@ -554,7 +563,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
554
563
|
context "when the attribute is unique in the scope" do
|
|
555
564
|
|
|
556
565
|
before do
|
|
557
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
566
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
558
567
|
end
|
|
559
568
|
|
|
560
569
|
let(:dictionary) do
|
|
@@ -569,7 +578,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
569
578
|
context "when the attribute is not unique with no scope" do
|
|
570
579
|
|
|
571
580
|
before do
|
|
572
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
581
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
573
582
|
end
|
|
574
583
|
|
|
575
584
|
let(:dictionary) do
|
|
@@ -584,7 +593,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
584
593
|
context "when the attribute is not unique in another scope" do
|
|
585
594
|
|
|
586
595
|
before do
|
|
587
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
596
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
588
597
|
end
|
|
589
598
|
|
|
590
599
|
let(:dictionary) do
|
|
@@ -601,7 +610,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
601
610
|
context "when the document is not the match" do
|
|
602
611
|
|
|
603
612
|
before do
|
|
604
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
613
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
605
614
|
end
|
|
606
615
|
|
|
607
616
|
let(:dictionary) do
|
|
@@ -621,7 +630,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
621
630
|
context "when the document is the match in the database" do
|
|
622
631
|
|
|
623
632
|
let!(:dictionary) do
|
|
624
|
-
Dictionary.create(name: "Oxford", language: "English")
|
|
633
|
+
Dictionary.create!(name: "Oxford", language: "English")
|
|
625
634
|
end
|
|
626
635
|
|
|
627
636
|
it "returns true" do
|
|
@@ -644,7 +653,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
644
653
|
context "when the attribute is unique" do
|
|
645
654
|
|
|
646
655
|
before do
|
|
647
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
656
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
648
657
|
end
|
|
649
658
|
|
|
650
659
|
let(:dictionary) do
|
|
@@ -659,7 +668,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
659
668
|
context "when the attribute is unique in the scope" do
|
|
660
669
|
|
|
661
670
|
before do
|
|
662
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
671
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
663
672
|
end
|
|
664
673
|
|
|
665
674
|
let(:dictionary) do
|
|
@@ -699,7 +708,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
699
708
|
context "when the attribute is not unique with no scope" do
|
|
700
709
|
|
|
701
710
|
before do
|
|
702
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
711
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
703
712
|
end
|
|
704
713
|
|
|
705
714
|
let(:dictionary) do
|
|
@@ -714,7 +723,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
714
723
|
context "when the attribute is not unique in another scope" do
|
|
715
724
|
|
|
716
725
|
before do
|
|
717
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
726
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
718
727
|
end
|
|
719
728
|
|
|
720
729
|
let(:dictionary) do
|
|
@@ -731,7 +740,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
731
740
|
context "when the document is not the match" do
|
|
732
741
|
|
|
733
742
|
before do
|
|
734
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
743
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
735
744
|
end
|
|
736
745
|
|
|
737
746
|
let(:dictionary) do
|
|
@@ -751,7 +760,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
751
760
|
context "when the document is the match in the database" do
|
|
752
761
|
|
|
753
762
|
let!(:dictionary) do
|
|
754
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
763
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
755
764
|
end
|
|
756
765
|
|
|
757
766
|
it "returns true" do
|
|
@@ -762,7 +771,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
762
771
|
context "when one of the scopes is a time" do
|
|
763
772
|
|
|
764
773
|
before do
|
|
765
|
-
Dictionary.create(
|
|
774
|
+
Dictionary.create!(
|
|
766
775
|
name: "Oxford",
|
|
767
776
|
publisher: "Amazon",
|
|
768
777
|
published: 10.days.ago.to_time
|
|
@@ -789,20 +798,47 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
789
798
|
end
|
|
790
799
|
end
|
|
791
800
|
|
|
792
|
-
context "when a range
|
|
801
|
+
context "when a range condition is provided" do
|
|
793
802
|
|
|
794
803
|
before do
|
|
795
|
-
Dictionary.validates_uniqueness_of(:name,
|
|
796
|
-
|
|
797
|
-
Dictionary.create(name: "French-English", year: 1960)
|
|
804
|
+
Dictionary.validates_uniqueness_of(:name,
|
|
805
|
+
conditions: -> { Dictionary.where(:year.gte => 1900, :year.lt => 2000) })
|
|
798
806
|
end
|
|
799
807
|
|
|
800
808
|
after do
|
|
801
809
|
Dictionary.reset_callbacks(:validate)
|
|
802
810
|
end
|
|
803
811
|
|
|
804
|
-
|
|
805
|
-
|
|
812
|
+
context 'when multiple documents would match the condition' do
|
|
813
|
+
it "prevents creation of new document" do
|
|
814
|
+
Dictionary.create!(name: "French-English", year: 1950)
|
|
815
|
+
|
|
816
|
+
expect do
|
|
817
|
+
Dictionary.create!(name: "French-English", year: 1960)
|
|
818
|
+
end.to raise_error(Mongoid::Errors::Validations, /Name is already taken/)
|
|
819
|
+
|
|
820
|
+
expect(Dictionary.all.size).to eq(1)
|
|
821
|
+
end
|
|
822
|
+
end
|
|
823
|
+
|
|
824
|
+
context 'when only new document would match the condition' do
|
|
825
|
+
it 'creates the new document' do
|
|
826
|
+
Dictionary.create!(name: "French-English", year: 950)
|
|
827
|
+
expect do
|
|
828
|
+
Dictionary.create!(name: "French-English", year: 1950)
|
|
829
|
+
end.not_to raise_error
|
|
830
|
+
end
|
|
831
|
+
end
|
|
832
|
+
|
|
833
|
+
context 'when only existing document matches the condition' do
|
|
834
|
+
it 'creates the new document' do
|
|
835
|
+
pending 'https://jira.mongodb.org/browse/MONGOID-4815'
|
|
836
|
+
|
|
837
|
+
Dictionary.create!(name: "French-English", year: 1950)
|
|
838
|
+
expect do
|
|
839
|
+
Dictionary.create!(name: "French-English", year: 950)
|
|
840
|
+
end.not_to raise_error
|
|
841
|
+
end
|
|
806
842
|
end
|
|
807
843
|
end
|
|
808
844
|
|
|
@@ -819,7 +855,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
819
855
|
context "when the attribute is unique" do
|
|
820
856
|
|
|
821
857
|
before do
|
|
822
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
858
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
823
859
|
end
|
|
824
860
|
|
|
825
861
|
let(:dictionary) do
|
|
@@ -834,7 +870,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
834
870
|
context "when the attribute is unique in the scope" do
|
|
835
871
|
|
|
836
872
|
before do
|
|
837
|
-
Dictionary.create(
|
|
873
|
+
Dictionary.create!(
|
|
838
874
|
name: "Oxford",
|
|
839
875
|
publisher: "Amazon",
|
|
840
876
|
year: 2011
|
|
@@ -857,7 +893,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
857
893
|
context "when the attribute is not unique with no scope" do
|
|
858
894
|
|
|
859
895
|
before do
|
|
860
|
-
Dictionary.create(name: "Oxford", publisher: "Amazon")
|
|
896
|
+
Dictionary.create!(name: "Oxford", publisher: "Amazon")
|
|
861
897
|
end
|
|
862
898
|
|
|
863
899
|
let(:dictionary) do
|
|
@@ -872,7 +908,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
872
908
|
context "when the attribute is not unique in another scope" do
|
|
873
909
|
|
|
874
910
|
before do
|
|
875
|
-
Dictionary.create(
|
|
911
|
+
Dictionary.create!(
|
|
876
912
|
name: "Oxford",
|
|
877
913
|
publisher: "Amazon",
|
|
878
914
|
year: 1995
|
|
@@ -897,7 +933,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
897
933
|
context "when the document is not the match" do
|
|
898
934
|
|
|
899
935
|
before do
|
|
900
|
-
Dictionary.create(
|
|
936
|
+
Dictionary.create!(
|
|
901
937
|
name: "Oxford",
|
|
902
938
|
publisher: "Amazon",
|
|
903
939
|
year: 1960
|
|
@@ -925,7 +961,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
925
961
|
context "when the document is the match in the database" do
|
|
926
962
|
|
|
927
963
|
let!(:dictionary) do
|
|
928
|
-
Dictionary.create(
|
|
964
|
+
Dictionary.create!(
|
|
929
965
|
name: "Oxford",
|
|
930
966
|
publisher: "Amazon",
|
|
931
967
|
year: 1960
|
|
@@ -952,7 +988,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
952
988
|
context "when the attribute is unique" do
|
|
953
989
|
|
|
954
990
|
before do
|
|
955
|
-
Dictionary.create(name: "Oxford")
|
|
991
|
+
Dictionary.create!(name: "Oxford")
|
|
956
992
|
end
|
|
957
993
|
|
|
958
994
|
let(:dictionary) do
|
|
@@ -969,7 +1005,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
969
1005
|
context "when the document is not the match" do
|
|
970
1006
|
|
|
971
1007
|
before do
|
|
972
|
-
Dictionary.create(name: "Oxford")
|
|
1008
|
+
Dictionary.create!(name: "Oxford")
|
|
973
1009
|
end
|
|
974
1010
|
|
|
975
1011
|
let(:dictionary) do
|
|
@@ -989,7 +1025,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
989
1025
|
context "when the document is the match in the database" do
|
|
990
1026
|
|
|
991
1027
|
let!(:dictionary) do
|
|
992
|
-
Dictionary.create(name: "Oxford")
|
|
1028
|
+
Dictionary.create!(name: "Oxford")
|
|
993
1029
|
end
|
|
994
1030
|
|
|
995
1031
|
it "returns true" do
|
|
@@ -1014,7 +1050,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1014
1050
|
context "when there are no special characters" do
|
|
1015
1051
|
|
|
1016
1052
|
before do
|
|
1017
|
-
Dictionary.create(name: "Oxford")
|
|
1053
|
+
Dictionary.create!(name: "Oxford")
|
|
1018
1054
|
end
|
|
1019
1055
|
|
|
1020
1056
|
let(:dictionary) do
|
|
@@ -1029,7 +1065,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1029
1065
|
context "when special characters exist" do
|
|
1030
1066
|
|
|
1031
1067
|
before do
|
|
1032
|
-
Dictionary.create(name: "Oxford")
|
|
1068
|
+
Dictionary.create!(name: "Oxford")
|
|
1033
1069
|
end
|
|
1034
1070
|
|
|
1035
1071
|
let(:dictionary) do
|
|
@@ -1047,7 +1083,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1047
1083
|
context "when the document is not the match" do
|
|
1048
1084
|
|
|
1049
1085
|
before do
|
|
1050
|
-
Dictionary.create(name: "Oxford")
|
|
1086
|
+
Dictionary.create!(name: "Oxford")
|
|
1051
1087
|
end
|
|
1052
1088
|
|
|
1053
1089
|
let(:dictionary) do
|
|
@@ -1067,7 +1103,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1067
1103
|
context "when the document is the match in the database" do
|
|
1068
1104
|
|
|
1069
1105
|
let!(:dictionary) do
|
|
1070
|
-
Dictionary.create(name: "Oxford")
|
|
1106
|
+
Dictionary.create!(name: "Oxford")
|
|
1071
1107
|
end
|
|
1072
1108
|
|
|
1073
1109
|
it "returns true" do
|
|
@@ -1097,7 +1133,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1097
1133
|
context "when the attribute is nil" do
|
|
1098
1134
|
|
|
1099
1135
|
before do
|
|
1100
|
-
Dictionary.create
|
|
1136
|
+
Dictionary.create!
|
|
1101
1137
|
end
|
|
1102
1138
|
|
|
1103
1139
|
let(:dictionary) do
|
|
@@ -1123,7 +1159,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1123
1159
|
context "when the attribute is blank" do
|
|
1124
1160
|
|
|
1125
1161
|
before do
|
|
1126
|
-
Dictionary.create(name: "")
|
|
1162
|
+
Dictionary.create!(name: "")
|
|
1127
1163
|
end
|
|
1128
1164
|
|
|
1129
1165
|
let(:dictionary) do
|
|
@@ -1152,7 +1188,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1152
1188
|
context "when the attribute is unique" do
|
|
1153
1189
|
|
|
1154
1190
|
before do
|
|
1155
|
-
Login.create(username: "Oxford")
|
|
1191
|
+
Login.create!(username: "Oxford")
|
|
1156
1192
|
end
|
|
1157
1193
|
|
|
1158
1194
|
let(:login) do
|
|
@@ -1169,7 +1205,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1169
1205
|
context "when the document is not the match" do
|
|
1170
1206
|
|
|
1171
1207
|
before do
|
|
1172
|
-
Login.create(username: "Oxford")
|
|
1208
|
+
Login.create!(username: "Oxford")
|
|
1173
1209
|
end
|
|
1174
1210
|
|
|
1175
1211
|
let(:login) do
|
|
@@ -1189,7 +1225,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1189
1225
|
context "when the document is the match in the database" do
|
|
1190
1226
|
|
|
1191
1227
|
let!(:login) do
|
|
1192
|
-
Login.create(username: "Oxford")
|
|
1228
|
+
Login.create!(username: "Oxford")
|
|
1193
1229
|
end
|
|
1194
1230
|
|
|
1195
1231
|
it "returns true" do
|
|
@@ -1212,7 +1248,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1212
1248
|
context "when the attribute is unique" do
|
|
1213
1249
|
|
|
1214
1250
|
before do
|
|
1215
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1251
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1216
1252
|
end
|
|
1217
1253
|
|
|
1218
1254
|
let(:login) do
|
|
@@ -1227,7 +1263,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1227
1263
|
context "when the attribute is unique in the scope" do
|
|
1228
1264
|
|
|
1229
1265
|
before do
|
|
1230
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1266
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1231
1267
|
end
|
|
1232
1268
|
|
|
1233
1269
|
let(:login) do
|
|
@@ -1242,7 +1278,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1242
1278
|
context "when the attribute is not unique with no scope" do
|
|
1243
1279
|
|
|
1244
1280
|
before do
|
|
1245
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1281
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1246
1282
|
end
|
|
1247
1283
|
|
|
1248
1284
|
let(:login) do
|
|
@@ -1257,7 +1293,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1257
1293
|
context "when the attribute is not unique in another scope" do
|
|
1258
1294
|
|
|
1259
1295
|
before do
|
|
1260
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1296
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1261
1297
|
end
|
|
1262
1298
|
|
|
1263
1299
|
let(:login) do
|
|
@@ -1274,7 +1310,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1274
1310
|
context "when the document is not the match" do
|
|
1275
1311
|
|
|
1276
1312
|
before do
|
|
1277
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1313
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1278
1314
|
end
|
|
1279
1315
|
|
|
1280
1316
|
let(:login) do
|
|
@@ -1294,7 +1330,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1294
1330
|
context "when the document is the match in the database" do
|
|
1295
1331
|
|
|
1296
1332
|
let!(:login) do
|
|
1297
|
-
Login.create(username: "Oxford", application_id: 1)
|
|
1333
|
+
Login.create!(username: "Oxford", application_id: 1)
|
|
1298
1334
|
end
|
|
1299
1335
|
|
|
1300
1336
|
it "returns true" do
|
|
@@ -1317,7 +1353,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1317
1353
|
context "when the attribute is unique" do
|
|
1318
1354
|
|
|
1319
1355
|
before do
|
|
1320
|
-
Login.create(username: "Oxford")
|
|
1356
|
+
Login.create!(username: "Oxford")
|
|
1321
1357
|
end
|
|
1322
1358
|
|
|
1323
1359
|
let(:login) do
|
|
@@ -1334,7 +1370,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1334
1370
|
context "when the document is not the match" do
|
|
1335
1371
|
|
|
1336
1372
|
before do
|
|
1337
|
-
Login.create(username: "Oxford")
|
|
1373
|
+
Login.create!(username: "Oxford")
|
|
1338
1374
|
end
|
|
1339
1375
|
|
|
1340
1376
|
let(:login) do
|
|
@@ -1354,7 +1390,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1354
1390
|
context "when the document is the match in the database" do
|
|
1355
1391
|
|
|
1356
1392
|
let!(:login) do
|
|
1357
|
-
Login.create(username: "Oxford")
|
|
1393
|
+
Login.create!(username: "Oxford")
|
|
1358
1394
|
end
|
|
1359
1395
|
|
|
1360
1396
|
it "returns true" do
|
|
@@ -1379,7 +1415,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1379
1415
|
context "when there are no special characters" do
|
|
1380
1416
|
|
|
1381
1417
|
before do
|
|
1382
|
-
Login.create(username: "Oxford")
|
|
1418
|
+
Login.create!(username: "Oxford")
|
|
1383
1419
|
end
|
|
1384
1420
|
|
|
1385
1421
|
let(:login) do
|
|
@@ -1394,7 +1430,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1394
1430
|
context "when special characters exist" do
|
|
1395
1431
|
|
|
1396
1432
|
before do
|
|
1397
|
-
Login.create(username: "Oxford")
|
|
1433
|
+
Login.create!(username: "Oxford")
|
|
1398
1434
|
end
|
|
1399
1435
|
|
|
1400
1436
|
let(:login) do
|
|
@@ -1412,7 +1448,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1412
1448
|
context "when the document is not the match" do
|
|
1413
1449
|
|
|
1414
1450
|
before do
|
|
1415
|
-
Login.create(username: "Oxford")
|
|
1451
|
+
Login.create!(username: "Oxford")
|
|
1416
1452
|
end
|
|
1417
1453
|
|
|
1418
1454
|
let(:login) do
|
|
@@ -1432,7 +1468,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1432
1468
|
context "when the document is the match in the database" do
|
|
1433
1469
|
|
|
1434
1470
|
let!(:login) do
|
|
1435
|
-
Login.create(username: "Oxford")
|
|
1471
|
+
Login.create!(username: "Oxford")
|
|
1436
1472
|
end
|
|
1437
1473
|
|
|
1438
1474
|
it "returns true" do
|
|
@@ -1455,7 +1491,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1455
1491
|
context "when the attribute is nil" do
|
|
1456
1492
|
|
|
1457
1493
|
before do
|
|
1458
|
-
Login.create
|
|
1494
|
+
Login.create!
|
|
1459
1495
|
end
|
|
1460
1496
|
|
|
1461
1497
|
let(:login) do
|
|
@@ -1481,7 +1517,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1481
1517
|
context "when the attribute is blank" do
|
|
1482
1518
|
|
|
1483
1519
|
before do
|
|
1484
|
-
Login.create(username: "")
|
|
1520
|
+
Login.create!(username: "")
|
|
1485
1521
|
end
|
|
1486
1522
|
|
|
1487
1523
|
let(:login) do
|
|
@@ -1508,7 +1544,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1508
1544
|
context "when the attribute is unique" do
|
|
1509
1545
|
|
|
1510
1546
|
before do
|
|
1511
|
-
Bar.create(lat_lng: LatLng.new(52.30, 13.25))
|
|
1547
|
+
Bar.create!(lat_lng: LatLng.new(52.30, 13.25))
|
|
1512
1548
|
end
|
|
1513
1549
|
|
|
1514
1550
|
let(:unique_bar) do
|
|
@@ -1524,7 +1560,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1524
1560
|
context "when the attribute is not unique" do
|
|
1525
1561
|
|
|
1526
1562
|
before do
|
|
1527
|
-
Bar.create(lat_lng: LatLng.new(52.30, 13.25))
|
|
1563
|
+
Bar.create!(lat_lng: LatLng.new(52.30, 13.25))
|
|
1528
1564
|
end
|
|
1529
1565
|
|
|
1530
1566
|
let(:non_unique_bar) do
|
|
@@ -1551,7 +1587,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1551
1587
|
context "when the attribute is unique" do
|
|
1552
1588
|
|
|
1553
1589
|
before do
|
|
1554
|
-
Band.create(name: 'Foo', active: false)
|
|
1590
|
+
Band.create!(name: 'Foo', active: false)
|
|
1555
1591
|
end
|
|
1556
1592
|
|
|
1557
1593
|
let(:unique_band) do
|
|
@@ -1567,7 +1603,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1567
1603
|
context "when the attribute is not unique" do
|
|
1568
1604
|
|
|
1569
1605
|
before do
|
|
1570
|
-
Band.create(name: 'Foo')
|
|
1606
|
+
Band.create!(name: 'Foo')
|
|
1571
1607
|
end
|
|
1572
1608
|
|
|
1573
1609
|
let(:non_unique_band) do
|
|
@@ -1585,17 +1621,17 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
1585
1621
|
context "when the document is embedded" do
|
|
1586
1622
|
|
|
1587
1623
|
let(:word) do
|
|
1588
|
-
Word.create(name: "Schadenfreude")
|
|
1624
|
+
Word.create!(name: "Schadenfreude")
|
|
1589
1625
|
end
|
|
1590
1626
|
|
|
1591
1627
|
context "when in an embeds_many" do
|
|
1592
1628
|
|
|
1593
1629
|
let!(:def_one) do
|
|
1594
|
-
word.definitions.create(description: "1")
|
|
1630
|
+
word.definitions.create!(description: "1")
|
|
1595
1631
|
end
|
|
1596
1632
|
|
|
1597
1633
|
let!(:def_two) do
|
|
1598
|
-
word.definitions.create(description: "2")
|
|
1634
|
+
word.definitions.create!(description: "2")
|
|
1599
1635
|
end
|
|
1600
1636
|
|
|
1601
1637
|
context "when a document is being destroyed" do
|
|
@@ -2417,21 +2453,23 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
2417
2453
|
|
|
2418
2454
|
before do
|
|
2419
2455
|
Person.validates_uniqueness_of(:username)
|
|
2456
|
+
Person.index({ ssn: 1 }, { unique: true })
|
|
2420
2457
|
Person.create_indexes
|
|
2421
2458
|
end
|
|
2422
2459
|
|
|
2423
2460
|
let!(:person) do
|
|
2424
|
-
Person.create(ssn: "132-11-1111", username: "aaasdaffff")
|
|
2461
|
+
Person.create!(ssn: "132-11-1111", username: "aaasdaffff")
|
|
2425
2462
|
end
|
|
2426
2463
|
|
|
2427
2464
|
after do
|
|
2428
2465
|
Person.reset_callbacks(:validate)
|
|
2466
|
+
Person.collection.drop
|
|
2429
2467
|
end
|
|
2430
2468
|
|
|
2431
2469
|
it "transfers the options to the cloned client" do
|
|
2432
2470
|
expect {
|
|
2433
2471
|
Person.create!(ssn: "132-11-1111", username: "asdfsdfA")
|
|
2434
|
-
}.to raise_error
|
|
2472
|
+
}.to raise_error(Mongo::Error::OperationFailure)
|
|
2435
2473
|
end
|
|
2436
2474
|
end
|
|
2437
2475
|
end
|