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,7 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "spec_helper"
|
|
4
|
+
require_relative './interceptable_spec_models'
|
|
2
5
|
|
|
3
6
|
describe Mongoid::Interceptable do
|
|
4
7
|
|
|
8
|
+
before do
|
|
9
|
+
# The find and initialize callbacks I added were causing failures
|
|
10
|
+
# because they were causing updates when we were asserting no updates
|
|
11
|
+
# happened.
|
|
12
|
+
Label.reset_callbacks(:initialize)
|
|
13
|
+
Label.reset_callbacks(:find)
|
|
14
|
+
end
|
|
15
|
+
|
|
5
16
|
class TestClass
|
|
6
17
|
include Mongoid::Interceptable
|
|
7
18
|
|
|
@@ -74,7 +85,7 @@ describe Mongoid::Interceptable do
|
|
|
74
85
|
describe ".after_find" do
|
|
75
86
|
|
|
76
87
|
let!(:player) do
|
|
77
|
-
Player.create
|
|
88
|
+
Player.create!
|
|
78
89
|
end
|
|
79
90
|
|
|
80
91
|
context "when the callback is on a root document" do
|
|
@@ -127,7 +138,7 @@ describe Mongoid::Interceptable do
|
|
|
127
138
|
context "when the callback is on an embedded document" do
|
|
128
139
|
|
|
129
140
|
let!(:implant) do
|
|
130
|
-
player.implants.create
|
|
141
|
+
player.implants.create!
|
|
131
142
|
end
|
|
132
143
|
|
|
133
144
|
context "when when the document is instantiated" do
|
|
@@ -197,7 +208,7 @@ describe Mongoid::Interceptable do
|
|
|
197
208
|
]
|
|
198
209
|
})
|
|
199
210
|
book.id = '123'
|
|
200
|
-
book.save
|
|
211
|
+
book.save!
|
|
201
212
|
book
|
|
202
213
|
end
|
|
203
214
|
|
|
@@ -209,7 +220,7 @@ describe Mongoid::Interceptable do
|
|
|
209
220
|
book.pages.each do | page |
|
|
210
221
|
page.notes.destroy_all
|
|
211
222
|
page.notes.new(message: new_message)
|
|
212
|
-
page.save
|
|
223
|
+
page.save!
|
|
213
224
|
end
|
|
214
225
|
end
|
|
215
226
|
|
|
@@ -272,7 +283,7 @@ describe Mongoid::Interceptable do
|
|
|
272
283
|
|
|
273
284
|
before do
|
|
274
285
|
expect(artist).to receive(:before_create_stub).once.and_return(true)
|
|
275
|
-
artist.save
|
|
286
|
+
artist.save!
|
|
276
287
|
end
|
|
277
288
|
|
|
278
289
|
it "gets saved" do
|
|
@@ -280,13 +291,18 @@ describe Mongoid::Interceptable do
|
|
|
280
291
|
end
|
|
281
292
|
end
|
|
282
293
|
|
|
283
|
-
context "callback
|
|
294
|
+
context "callback aborts the callback chain" do
|
|
284
295
|
|
|
285
296
|
before do
|
|
286
|
-
|
|
297
|
+
Artist.before_create(:before_create_fail_stub)
|
|
298
|
+
expect(artist).to receive(:before_create_fail_stub).once.and_call_original
|
|
287
299
|
artist.save
|
|
288
300
|
end
|
|
289
301
|
|
|
302
|
+
after do
|
|
303
|
+
Artist.reset_callbacks(:create)
|
|
304
|
+
end
|
|
305
|
+
|
|
290
306
|
it "does not get saved" do
|
|
291
307
|
expect(artist.persisted?).to be false
|
|
292
308
|
end
|
|
@@ -312,17 +328,22 @@ describe Mongoid::Interceptable do
|
|
|
312
328
|
end
|
|
313
329
|
|
|
314
330
|
it "the save returns true" do
|
|
315
|
-
expect(artist.save).to be true
|
|
331
|
+
expect(artist.save!).to be true
|
|
316
332
|
end
|
|
317
333
|
end
|
|
318
334
|
|
|
319
|
-
context "when callback
|
|
335
|
+
context "when callback halts the callback chain" do
|
|
320
336
|
|
|
321
337
|
before do
|
|
322
|
-
|
|
338
|
+
Artist.before_save(:before_save_fail_stub)
|
|
339
|
+
end
|
|
340
|
+
|
|
341
|
+
after do
|
|
342
|
+
Artist.reset_callbacks(:save)
|
|
323
343
|
end
|
|
324
344
|
|
|
325
345
|
it "the save returns false" do
|
|
346
|
+
expect(artist).to receive(:before_save_fail_stub).once.and_call_original
|
|
326
347
|
expect(artist.save).to be false
|
|
327
348
|
end
|
|
328
349
|
end
|
|
@@ -331,7 +352,7 @@ describe Mongoid::Interceptable do
|
|
|
331
352
|
context "when updating" do
|
|
332
353
|
|
|
333
354
|
let(:artist) do
|
|
334
|
-
Artist.create(name: "Depeche Mode").tap do |artist|
|
|
355
|
+
Artist.create!(name: "Depeche Mode").tap do |artist|
|
|
335
356
|
artist.name = "The Mountain Goats"
|
|
336
357
|
end
|
|
337
358
|
end
|
|
@@ -343,21 +364,26 @@ describe Mongoid::Interceptable do
|
|
|
343
364
|
context "when the callback returns true" do
|
|
344
365
|
|
|
345
366
|
before do
|
|
346
|
-
expect(artist).to receive(:
|
|
367
|
+
expect(artist).to receive(:before_update_stub).once.and_return(true)
|
|
347
368
|
end
|
|
348
369
|
|
|
349
370
|
it "the save returns true" do
|
|
350
|
-
expect(artist.save).to be true
|
|
371
|
+
expect(artist.save!).to be true
|
|
351
372
|
end
|
|
352
373
|
end
|
|
353
374
|
|
|
354
|
-
context "when the callback
|
|
375
|
+
context "when the callback halts the callback chain" do
|
|
355
376
|
|
|
356
377
|
before do
|
|
357
|
-
|
|
378
|
+
Artist.before_update(:before_update_fail_stub)
|
|
379
|
+
end
|
|
380
|
+
|
|
381
|
+
after do
|
|
382
|
+
Artist.reset_callbacks(:update)
|
|
358
383
|
end
|
|
359
384
|
|
|
360
385
|
it "the save returns false" do
|
|
386
|
+
expect(artist).to receive(:before_update_fail_stub).once.and_call_original
|
|
361
387
|
expect(artist.save).to be false
|
|
362
388
|
end
|
|
363
389
|
end
|
|
@@ -367,7 +393,7 @@ describe Mongoid::Interceptable do
|
|
|
367
393
|
describe ".before_destroy" do
|
|
368
394
|
|
|
369
395
|
let(:artist) do
|
|
370
|
-
Artist.create(name: "Depeche Mode")
|
|
396
|
+
Artist.create!(name: "Depeche Mode")
|
|
371
397
|
end
|
|
372
398
|
|
|
373
399
|
before do
|
|
@@ -389,13 +415,18 @@ describe Mongoid::Interceptable do
|
|
|
389
415
|
end
|
|
390
416
|
end
|
|
391
417
|
|
|
392
|
-
context "when the callback
|
|
418
|
+
context "when the callback halts the callback chain" do
|
|
393
419
|
|
|
394
420
|
before do
|
|
395
|
-
|
|
421
|
+
Artist.before_destroy(:before_destroy_fail_stub)
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
after do
|
|
425
|
+
Artist.reset_callbacks(:destroy)
|
|
396
426
|
end
|
|
397
427
|
|
|
398
428
|
it "the destroy returns false" do
|
|
429
|
+
expect(artist).to receive(:before_destroy_fail_stub).once.and_call_original
|
|
399
430
|
expect(artist.destroy).to be false
|
|
400
431
|
end
|
|
401
432
|
end
|
|
@@ -407,7 +438,7 @@ describe Mongoid::Interceptable do
|
|
|
407
438
|
end
|
|
408
439
|
|
|
409
440
|
let!(:record) do
|
|
410
|
-
moderat.records.create(name: "Moderat")
|
|
441
|
+
moderat.records.create!(name: "Moderat")
|
|
411
442
|
end
|
|
412
443
|
|
|
413
444
|
before do
|
|
@@ -464,32 +495,40 @@ describe Mongoid::Interceptable do
|
|
|
464
495
|
|
|
465
496
|
context "when the child does not have the same callback defined" do
|
|
466
497
|
|
|
467
|
-
let(:
|
|
468
|
-
|
|
498
|
+
let(:exhibition) do
|
|
499
|
+
Exhibition.new
|
|
469
500
|
end
|
|
470
501
|
|
|
471
|
-
let!(:
|
|
472
|
-
|
|
502
|
+
let!(:exhibitor) do
|
|
503
|
+
exhibition.exhibitors.build
|
|
473
504
|
end
|
|
474
505
|
|
|
475
506
|
context "when running the callbacks directly" do
|
|
476
507
|
|
|
477
508
|
before(:all) do
|
|
478
|
-
|
|
479
|
-
|
|
509
|
+
Exhibition.define_model_callbacks(:rearrange)
|
|
510
|
+
Exhibition.after_rearrange { }
|
|
480
511
|
end
|
|
481
512
|
|
|
482
513
|
after(:all) do
|
|
483
|
-
|
|
514
|
+
Exhibition.reset_callbacks(:rearrange)
|
|
484
515
|
end
|
|
485
516
|
|
|
486
517
|
it "does not cascade to the child" do
|
|
487
|
-
expect(
|
|
518
|
+
expect(exhibition.run_callbacks(:rearrange)).to be true
|
|
488
519
|
end
|
|
489
520
|
end
|
|
490
521
|
|
|
491
522
|
context "when the callbacks get triggered by a destroy" do
|
|
492
523
|
|
|
524
|
+
let(:band) do
|
|
525
|
+
Band.new
|
|
526
|
+
end
|
|
527
|
+
|
|
528
|
+
let!(:record) do
|
|
529
|
+
band.records.build
|
|
530
|
+
end
|
|
531
|
+
|
|
493
532
|
before(:all) do
|
|
494
533
|
Band.define_model_callbacks(:rearrange)
|
|
495
534
|
Band.set_callback(:validation, :before) do
|
|
@@ -498,7 +537,9 @@ describe Mongoid::Interceptable do
|
|
|
498
537
|
end
|
|
499
538
|
|
|
500
539
|
after(:all) do
|
|
501
|
-
Band
|
|
540
|
+
# ActiveSupport may raise an error when trying to reset callbacks on all of Band's
|
|
541
|
+
# descendants, regardless of whether they have a particular callback defined.
|
|
542
|
+
begin; Band.reset_callbacks(:rearrange); rescue; end
|
|
502
543
|
end
|
|
503
544
|
|
|
504
545
|
let(:attributes) do
|
|
@@ -511,7 +552,7 @@ describe Mongoid::Interceptable do
|
|
|
511
552
|
|
|
512
553
|
it "does not cascade to the child" do
|
|
513
554
|
Band.accepts_nested_attributes_for :records, allow_destroy: true
|
|
514
|
-
expect(band.update_attributes(attributes)).to be true
|
|
555
|
+
expect(band.update_attributes!(attributes)).to be true
|
|
515
556
|
end
|
|
516
557
|
end
|
|
517
558
|
end
|
|
@@ -542,7 +583,7 @@ describe Mongoid::Interceptable do
|
|
|
542
583
|
|
|
543
584
|
it "only executes the callbacks once for each embed" do
|
|
544
585
|
expect(note).to receive(:update_saved).twice
|
|
545
|
-
band.save
|
|
586
|
+
band.save!
|
|
546
587
|
end
|
|
547
588
|
end
|
|
548
589
|
end
|
|
@@ -551,7 +592,7 @@ describe Mongoid::Interceptable do
|
|
|
551
592
|
context "when cascading after initialize" do
|
|
552
593
|
|
|
553
594
|
let!(:person) do
|
|
554
|
-
Person.create
|
|
595
|
+
Person.create!
|
|
555
596
|
end
|
|
556
597
|
|
|
557
598
|
before do
|
|
@@ -569,7 +610,7 @@ describe Mongoid::Interceptable do
|
|
|
569
610
|
it "raises an error" do
|
|
570
611
|
expect {
|
|
571
612
|
Band.has_and_belongs_to_many :tags, cascade_callbacks: true
|
|
572
|
-
}.to raise_error(Mongoid::Errors::
|
|
613
|
+
}.to raise_error(Mongoid::Errors::InvalidRelationOption)
|
|
573
614
|
end
|
|
574
615
|
end
|
|
575
616
|
|
|
@@ -590,7 +631,7 @@ describe Mongoid::Interceptable do
|
|
|
590
631
|
end
|
|
591
632
|
|
|
592
633
|
before do
|
|
593
|
-
band.save
|
|
634
|
+
band.save!
|
|
594
635
|
end
|
|
595
636
|
|
|
596
637
|
it "executes the callback" do
|
|
@@ -601,7 +642,7 @@ describe Mongoid::Interceptable do
|
|
|
601
642
|
context "when the parent is persisted" do
|
|
602
643
|
|
|
603
644
|
let(:band) do
|
|
604
|
-
Band.create(name: "Moderat")
|
|
645
|
+
Band.create!(name: "Moderat")
|
|
605
646
|
end
|
|
606
647
|
|
|
607
648
|
let!(:label) do
|
|
@@ -609,7 +650,7 @@ describe Mongoid::Interceptable do
|
|
|
609
650
|
end
|
|
610
651
|
|
|
611
652
|
before do
|
|
612
|
-
band.save
|
|
653
|
+
band.save!
|
|
613
654
|
end
|
|
614
655
|
|
|
615
656
|
it "executes the callback" do
|
|
@@ -621,7 +662,7 @@ describe Mongoid::Interceptable do
|
|
|
621
662
|
context "when the child is persisted" do
|
|
622
663
|
|
|
623
664
|
let(:band) do
|
|
624
|
-
Band.create(name: "Moderat")
|
|
665
|
+
Band.create!(name: "Moderat")
|
|
625
666
|
end
|
|
626
667
|
|
|
627
668
|
let!(:label) do
|
|
@@ -630,7 +671,7 @@ describe Mongoid::Interceptable do
|
|
|
630
671
|
|
|
631
672
|
before do
|
|
632
673
|
label.after_create_called = false
|
|
633
|
-
band.save
|
|
674
|
+
band.save!
|
|
634
675
|
end
|
|
635
676
|
|
|
636
677
|
it "does not execute the callback" do
|
|
@@ -654,7 +695,7 @@ describe Mongoid::Interceptable do
|
|
|
654
695
|
end
|
|
655
696
|
|
|
656
697
|
before do
|
|
657
|
-
band.save
|
|
698
|
+
band.save!
|
|
658
699
|
end
|
|
659
700
|
|
|
660
701
|
it "executes the callback" do
|
|
@@ -665,7 +706,7 @@ describe Mongoid::Interceptable do
|
|
|
665
706
|
context "when the parent is persisted" do
|
|
666
707
|
|
|
667
708
|
let(:band) do
|
|
668
|
-
Band.create(name: "Moderat")
|
|
709
|
+
Band.create!(name: "Moderat")
|
|
669
710
|
end
|
|
670
711
|
|
|
671
712
|
let!(:label) do
|
|
@@ -673,7 +714,7 @@ describe Mongoid::Interceptable do
|
|
|
673
714
|
end
|
|
674
715
|
|
|
675
716
|
before do
|
|
676
|
-
band.save
|
|
717
|
+
band.save!
|
|
677
718
|
end
|
|
678
719
|
|
|
679
720
|
it "executes the callback" do
|
|
@@ -685,7 +726,7 @@ describe Mongoid::Interceptable do
|
|
|
685
726
|
context "when the child is persisted" do
|
|
686
727
|
|
|
687
728
|
let(:band) do
|
|
688
|
-
Band.create(name: "Moderat")
|
|
729
|
+
Band.create!(name: "Moderat")
|
|
689
730
|
end
|
|
690
731
|
|
|
691
732
|
let!(:label) do
|
|
@@ -693,7 +734,7 @@ describe Mongoid::Interceptable do
|
|
|
693
734
|
end
|
|
694
735
|
|
|
695
736
|
before do
|
|
696
|
-
band.save
|
|
737
|
+
band.save!
|
|
697
738
|
end
|
|
698
739
|
|
|
699
740
|
it "executes the callback" do
|
|
@@ -717,7 +758,7 @@ describe Mongoid::Interceptable do
|
|
|
717
758
|
end
|
|
718
759
|
|
|
719
760
|
before do
|
|
720
|
-
band.save
|
|
761
|
+
band.save!
|
|
721
762
|
end
|
|
722
763
|
|
|
723
764
|
it "does not execute the callback" do
|
|
@@ -728,7 +769,7 @@ describe Mongoid::Interceptable do
|
|
|
728
769
|
context "when the parent is persisted" do
|
|
729
770
|
|
|
730
771
|
let(:band) do
|
|
731
|
-
Band.create(name: "Moderat")
|
|
772
|
+
Band.create!(name: "Moderat")
|
|
732
773
|
end
|
|
733
774
|
|
|
734
775
|
let!(:label) do
|
|
@@ -736,7 +777,7 @@ describe Mongoid::Interceptable do
|
|
|
736
777
|
end
|
|
737
778
|
|
|
738
779
|
before do
|
|
739
|
-
band.save
|
|
780
|
+
band.save!
|
|
740
781
|
end
|
|
741
782
|
|
|
742
783
|
it "does not execute the callback" do
|
|
@@ -748,7 +789,7 @@ describe Mongoid::Interceptable do
|
|
|
748
789
|
context "when the child is persisted" do
|
|
749
790
|
|
|
750
791
|
let(:band) do
|
|
751
|
-
Band.create(name: "Moderat")
|
|
792
|
+
Band.create!(name: "Moderat")
|
|
752
793
|
end
|
|
753
794
|
|
|
754
795
|
context "when the child is dirty" do
|
|
@@ -759,7 +800,7 @@ describe Mongoid::Interceptable do
|
|
|
759
800
|
|
|
760
801
|
before do
|
|
761
802
|
label.name = "Nothing"
|
|
762
|
-
band.save
|
|
803
|
+
band.save!
|
|
763
804
|
end
|
|
764
805
|
|
|
765
806
|
it "executes the callback" do
|
|
@@ -774,7 +815,7 @@ describe Mongoid::Interceptable do
|
|
|
774
815
|
end
|
|
775
816
|
|
|
776
817
|
before do
|
|
777
|
-
band.save
|
|
818
|
+
band.save!
|
|
778
819
|
end
|
|
779
820
|
|
|
780
821
|
it "does not execute the callback" do
|
|
@@ -799,7 +840,7 @@ describe Mongoid::Interceptable do
|
|
|
799
840
|
end
|
|
800
841
|
|
|
801
842
|
before do
|
|
802
|
-
band.save
|
|
843
|
+
band.save!
|
|
803
844
|
end
|
|
804
845
|
|
|
805
846
|
it "executes the callback" do
|
|
@@ -810,7 +851,7 @@ describe Mongoid::Interceptable do
|
|
|
810
851
|
context "when the parent is persisted" do
|
|
811
852
|
|
|
812
853
|
let(:band) do
|
|
813
|
-
Band.create(name: "Moderat")
|
|
854
|
+
Band.create!(name: "Moderat")
|
|
814
855
|
end
|
|
815
856
|
|
|
816
857
|
let!(:label) do
|
|
@@ -818,7 +859,7 @@ describe Mongoid::Interceptable do
|
|
|
818
859
|
end
|
|
819
860
|
|
|
820
861
|
before do
|
|
821
|
-
band.save
|
|
862
|
+
band.save!
|
|
822
863
|
end
|
|
823
864
|
|
|
824
865
|
it "executes the callback" do
|
|
@@ -830,7 +871,7 @@ describe Mongoid::Interceptable do
|
|
|
830
871
|
context "when the child is persisted" do
|
|
831
872
|
|
|
832
873
|
let(:band) do
|
|
833
|
-
Band.create(name: "Moderat")
|
|
874
|
+
Band.create!(name: "Moderat")
|
|
834
875
|
end
|
|
835
876
|
|
|
836
877
|
let!(:label) do
|
|
@@ -838,7 +879,7 @@ describe Mongoid::Interceptable do
|
|
|
838
879
|
end
|
|
839
880
|
|
|
840
881
|
before do
|
|
841
|
-
band.save
|
|
882
|
+
band.save!
|
|
842
883
|
end
|
|
843
884
|
|
|
844
885
|
it "executes the callback" do
|
|
@@ -862,7 +903,7 @@ describe Mongoid::Interceptable do
|
|
|
862
903
|
end
|
|
863
904
|
|
|
864
905
|
before do
|
|
865
|
-
band.save
|
|
906
|
+
band.save!
|
|
866
907
|
end
|
|
867
908
|
|
|
868
909
|
it "executes the callback" do
|
|
@@ -873,7 +914,7 @@ describe Mongoid::Interceptable do
|
|
|
873
914
|
context "when the parent is persisted" do
|
|
874
915
|
|
|
875
916
|
let(:band) do
|
|
876
|
-
Band.create(name: "Moderat")
|
|
917
|
+
Band.create!(name: "Moderat")
|
|
877
918
|
end
|
|
878
919
|
|
|
879
920
|
let!(:record) do
|
|
@@ -881,7 +922,7 @@ describe Mongoid::Interceptable do
|
|
|
881
922
|
end
|
|
882
923
|
|
|
883
924
|
before do
|
|
884
|
-
band.save
|
|
925
|
+
band.save!
|
|
885
926
|
end
|
|
886
927
|
|
|
887
928
|
it "executes the callback" do
|
|
@@ -893,16 +934,16 @@ describe Mongoid::Interceptable do
|
|
|
893
934
|
context "when the child is persisted" do
|
|
894
935
|
|
|
895
936
|
let(:band) do
|
|
896
|
-
Band.create(name: "Moderat")
|
|
937
|
+
Band.create!(name: "Moderat")
|
|
897
938
|
end
|
|
898
939
|
|
|
899
940
|
let!(:record) do
|
|
900
|
-
band.records.create(name: "Moderat")
|
|
941
|
+
band.records.create!(name: "Moderat")
|
|
901
942
|
end
|
|
902
943
|
|
|
903
944
|
before do
|
|
904
945
|
record.before_create_called = false
|
|
905
|
-
band.save
|
|
946
|
+
band.save!
|
|
906
947
|
end
|
|
907
948
|
|
|
908
949
|
it "does not execute the callback" do
|
|
@@ -926,7 +967,7 @@ describe Mongoid::Interceptable do
|
|
|
926
967
|
end
|
|
927
968
|
|
|
928
969
|
before do
|
|
929
|
-
band.save
|
|
970
|
+
band.save!
|
|
930
971
|
end
|
|
931
972
|
|
|
932
973
|
it "executes the callback" do
|
|
@@ -941,7 +982,7 @@ describe Mongoid::Interceptable do
|
|
|
941
982
|
context "when the parent is persisted" do
|
|
942
983
|
|
|
943
984
|
let(:band) do
|
|
944
|
-
Band.create(name: "Moderat")
|
|
985
|
+
Band.create!(name: "Moderat")
|
|
945
986
|
end
|
|
946
987
|
|
|
947
988
|
let!(:record) do
|
|
@@ -949,7 +990,7 @@ describe Mongoid::Interceptable do
|
|
|
949
990
|
end
|
|
950
991
|
|
|
951
992
|
before do
|
|
952
|
-
band.save
|
|
993
|
+
band.save!
|
|
953
994
|
end
|
|
954
995
|
|
|
955
996
|
it "executes the callback" do
|
|
@@ -965,15 +1006,15 @@ describe Mongoid::Interceptable do
|
|
|
965
1006
|
context "when the child is persisted" do
|
|
966
1007
|
|
|
967
1008
|
let(:band) do
|
|
968
|
-
Band.create(name: "Moderat")
|
|
1009
|
+
Band.create!(name: "Moderat")
|
|
969
1010
|
end
|
|
970
1011
|
|
|
971
1012
|
let!(:record) do
|
|
972
|
-
band.records.create(name: "Moderat")
|
|
1013
|
+
band.records.create!(name: "Moderat")
|
|
973
1014
|
end
|
|
974
1015
|
|
|
975
1016
|
before do
|
|
976
|
-
band.save
|
|
1017
|
+
band.save!
|
|
977
1018
|
end
|
|
978
1019
|
|
|
979
1020
|
it "executes the callback" do
|
|
@@ -988,7 +1029,7 @@ describe Mongoid::Interceptable do
|
|
|
988
1029
|
context "when the child is created" do
|
|
989
1030
|
|
|
990
1031
|
let!(:band) do
|
|
991
|
-
Band.create
|
|
1032
|
+
Band.create!
|
|
992
1033
|
end
|
|
993
1034
|
|
|
994
1035
|
let!(:label) do
|
|
@@ -1016,7 +1057,7 @@ describe Mongoid::Interceptable do
|
|
|
1016
1057
|
end
|
|
1017
1058
|
|
|
1018
1059
|
before do
|
|
1019
|
-
band.save
|
|
1060
|
+
band.save!
|
|
1020
1061
|
end
|
|
1021
1062
|
|
|
1022
1063
|
it "does not execute the callback" do
|
|
@@ -1027,7 +1068,7 @@ describe Mongoid::Interceptable do
|
|
|
1027
1068
|
context "when the parent is persisted" do
|
|
1028
1069
|
|
|
1029
1070
|
let(:band) do
|
|
1030
|
-
Band.create(name: "Moderat")
|
|
1071
|
+
Band.create!(name: "Moderat")
|
|
1031
1072
|
end
|
|
1032
1073
|
|
|
1033
1074
|
let!(:record) do
|
|
@@ -1035,7 +1076,7 @@ describe Mongoid::Interceptable do
|
|
|
1035
1076
|
end
|
|
1036
1077
|
|
|
1037
1078
|
before do
|
|
1038
|
-
band.save
|
|
1079
|
+
band.save!
|
|
1039
1080
|
end
|
|
1040
1081
|
|
|
1041
1082
|
it "does not execute the callback" do
|
|
@@ -1047,18 +1088,18 @@ describe Mongoid::Interceptable do
|
|
|
1047
1088
|
context "when the child is persisted" do
|
|
1048
1089
|
|
|
1049
1090
|
let(:band) do
|
|
1050
|
-
Band.create(name: "Moderat")
|
|
1091
|
+
Band.create!(name: "Moderat")
|
|
1051
1092
|
end
|
|
1052
1093
|
|
|
1053
1094
|
let!(:record) do
|
|
1054
|
-
band.records.create(name: "Moderat")
|
|
1095
|
+
band.records.create!(name: "Moderat")
|
|
1055
1096
|
end
|
|
1056
1097
|
|
|
1057
1098
|
context "when the child is dirty" do
|
|
1058
1099
|
|
|
1059
1100
|
before do
|
|
1060
1101
|
record.name = "Nothing"
|
|
1061
|
-
band.save
|
|
1102
|
+
band.save!
|
|
1062
1103
|
end
|
|
1063
1104
|
|
|
1064
1105
|
it "executes the callback" do
|
|
@@ -1073,7 +1114,7 @@ describe Mongoid::Interceptable do
|
|
|
1073
1114
|
context "when the child is not dirty" do
|
|
1074
1115
|
|
|
1075
1116
|
before do
|
|
1076
|
-
band.save
|
|
1117
|
+
band.save!
|
|
1077
1118
|
end
|
|
1078
1119
|
|
|
1079
1120
|
it "does not execute the callback" do
|
|
@@ -1098,7 +1139,7 @@ describe Mongoid::Interceptable do
|
|
|
1098
1139
|
end
|
|
1099
1140
|
|
|
1100
1141
|
before do
|
|
1101
|
-
band.save
|
|
1142
|
+
band.save!
|
|
1102
1143
|
end
|
|
1103
1144
|
|
|
1104
1145
|
it "executes the callback" do
|
|
@@ -1113,7 +1154,7 @@ describe Mongoid::Interceptable do
|
|
|
1113
1154
|
context "when the parent is persisted" do
|
|
1114
1155
|
|
|
1115
1156
|
let(:band) do
|
|
1116
|
-
Band.create(name: "Moderat")
|
|
1157
|
+
Band.create!(name: "Moderat")
|
|
1117
1158
|
end
|
|
1118
1159
|
|
|
1119
1160
|
let!(:record) do
|
|
@@ -1121,7 +1162,7 @@ describe Mongoid::Interceptable do
|
|
|
1121
1162
|
end
|
|
1122
1163
|
|
|
1123
1164
|
before do
|
|
1124
|
-
band.save
|
|
1165
|
+
band.save!
|
|
1125
1166
|
end
|
|
1126
1167
|
|
|
1127
1168
|
it "executes the callback" do
|
|
@@ -1132,20 +1173,58 @@ describe Mongoid::Interceptable do
|
|
|
1132
1173
|
expect(band.reload.records.first.before_validation_called).to be true
|
|
1133
1174
|
end
|
|
1134
1175
|
end
|
|
1176
|
+
|
|
1177
|
+
context 'when the parent is updated' do
|
|
1178
|
+
|
|
1179
|
+
let(:band) do
|
|
1180
|
+
Band.create!(name: "Moderat")
|
|
1181
|
+
end
|
|
1182
|
+
|
|
1183
|
+
before do
|
|
1184
|
+
band.update(records: [ { name: 'Black on Both Sides' }])
|
|
1185
|
+
end
|
|
1186
|
+
|
|
1187
|
+
it 'executes the callback' do
|
|
1188
|
+
expect(band.records.first.before_validation_called).to be true
|
|
1189
|
+
end
|
|
1190
|
+
|
|
1191
|
+
it 'persists the change' do
|
|
1192
|
+
expect(band.reload.records.first.before_validation_called).to be true
|
|
1193
|
+
end
|
|
1194
|
+
end
|
|
1195
|
+
end
|
|
1196
|
+
|
|
1197
|
+
context 'when the parent is updated' do
|
|
1198
|
+
|
|
1199
|
+
let(:band) do
|
|
1200
|
+
Band.create!(name: "Moderat")
|
|
1201
|
+
end
|
|
1202
|
+
|
|
1203
|
+
before do
|
|
1204
|
+
band.update(records: [ { name: 'Black on Both Sides' }])
|
|
1205
|
+
end
|
|
1206
|
+
|
|
1207
|
+
it 'executes the callback' do
|
|
1208
|
+
expect(band.records.first.before_validation_called).to be true
|
|
1209
|
+
end
|
|
1210
|
+
|
|
1211
|
+
it 'persists the change' do
|
|
1212
|
+
expect(band.reload.records.first.before_validation_called).to be true
|
|
1213
|
+
end
|
|
1135
1214
|
end
|
|
1136
1215
|
|
|
1137
1216
|
context "when the child is persisted" do
|
|
1138
1217
|
|
|
1139
1218
|
let(:band) do
|
|
1140
|
-
Band.create(name: "Moderat")
|
|
1219
|
+
Band.create!(name: "Moderat")
|
|
1141
1220
|
end
|
|
1142
1221
|
|
|
1143
1222
|
let!(:record) do
|
|
1144
|
-
band.records.create(name: "Moderat")
|
|
1223
|
+
band.records.create!(name: "Moderat")
|
|
1145
1224
|
end
|
|
1146
1225
|
|
|
1147
1226
|
before do
|
|
1148
|
-
band.save
|
|
1227
|
+
band.save!
|
|
1149
1228
|
end
|
|
1150
1229
|
|
|
1151
1230
|
it "executes the callback" do
|
|
@@ -1180,7 +1259,7 @@ describe Mongoid::Interceptable do
|
|
|
1180
1259
|
end
|
|
1181
1260
|
|
|
1182
1261
|
before do
|
|
1183
|
-
band.save
|
|
1262
|
+
band.save!
|
|
1184
1263
|
end
|
|
1185
1264
|
|
|
1186
1265
|
it "executes the callback" do
|
|
@@ -1191,7 +1270,7 @@ describe Mongoid::Interceptable do
|
|
|
1191
1270
|
context "when the root is persisted" do
|
|
1192
1271
|
|
|
1193
1272
|
let(:band) do
|
|
1194
|
-
Band.create(name: "Moderat")
|
|
1273
|
+
Band.create!(name: "Moderat")
|
|
1195
1274
|
end
|
|
1196
1275
|
|
|
1197
1276
|
let!(:record) do
|
|
@@ -1203,7 +1282,7 @@ describe Mongoid::Interceptable do
|
|
|
1203
1282
|
end
|
|
1204
1283
|
|
|
1205
1284
|
before do
|
|
1206
|
-
band.save
|
|
1285
|
+
band.save!
|
|
1207
1286
|
end
|
|
1208
1287
|
|
|
1209
1288
|
it "executes the callback" do
|
|
@@ -1215,20 +1294,20 @@ describe Mongoid::Interceptable do
|
|
|
1215
1294
|
context "when the child is persisted" do
|
|
1216
1295
|
|
|
1217
1296
|
let(:band) do
|
|
1218
|
-
Band.create(name: "Moderat")
|
|
1297
|
+
Band.create!(name: "Moderat")
|
|
1219
1298
|
end
|
|
1220
1299
|
|
|
1221
1300
|
let!(:record) do
|
|
1222
|
-
band.records.create(name: "Moderat")
|
|
1301
|
+
band.records.create!(name: "Moderat")
|
|
1223
1302
|
end
|
|
1224
1303
|
|
|
1225
1304
|
let!(:track) do
|
|
1226
|
-
record.tracks.create(name: "Berlin")
|
|
1305
|
+
record.tracks.create!(name: "Berlin")
|
|
1227
1306
|
end
|
|
1228
1307
|
|
|
1229
1308
|
before do
|
|
1230
1309
|
track.before_create_called = false
|
|
1231
|
-
band.save
|
|
1310
|
+
band.save!
|
|
1232
1311
|
end
|
|
1233
1312
|
|
|
1234
1313
|
it "does not execute the callback" do
|
|
@@ -1256,7 +1335,7 @@ describe Mongoid::Interceptable do
|
|
|
1256
1335
|
end
|
|
1257
1336
|
|
|
1258
1337
|
before do
|
|
1259
|
-
band.save
|
|
1338
|
+
band.save!
|
|
1260
1339
|
end
|
|
1261
1340
|
|
|
1262
1341
|
let(:reloaded) do
|
|
@@ -1275,7 +1354,7 @@ describe Mongoid::Interceptable do
|
|
|
1275
1354
|
context "when the parent is persisted" do
|
|
1276
1355
|
|
|
1277
1356
|
let(:band) do
|
|
1278
|
-
Band.create(name: "Moderat")
|
|
1357
|
+
Band.create!(name: "Moderat")
|
|
1279
1358
|
end
|
|
1280
1359
|
|
|
1281
1360
|
let!(:record) do
|
|
@@ -1287,7 +1366,7 @@ describe Mongoid::Interceptable do
|
|
|
1287
1366
|
end
|
|
1288
1367
|
|
|
1289
1368
|
before do
|
|
1290
|
-
band.save
|
|
1369
|
+
band.save!
|
|
1291
1370
|
end
|
|
1292
1371
|
|
|
1293
1372
|
let(:reloaded) do
|
|
@@ -1307,19 +1386,19 @@ describe Mongoid::Interceptable do
|
|
|
1307
1386
|
context "when the child is persisted" do
|
|
1308
1387
|
|
|
1309
1388
|
let(:band) do
|
|
1310
|
-
Band.create(name: "Moderat")
|
|
1389
|
+
Band.create!(name: "Moderat")
|
|
1311
1390
|
end
|
|
1312
1391
|
|
|
1313
1392
|
let!(:record) do
|
|
1314
|
-
band.records.create(name: "Moderat")
|
|
1393
|
+
band.records.create!(name: "Moderat")
|
|
1315
1394
|
end
|
|
1316
1395
|
|
|
1317
1396
|
let!(:track) do
|
|
1318
|
-
record.tracks.create(name: "Berlin")
|
|
1397
|
+
record.tracks.create!(name: "Berlin")
|
|
1319
1398
|
end
|
|
1320
1399
|
|
|
1321
1400
|
before do
|
|
1322
|
-
band.save
|
|
1401
|
+
band.save!
|
|
1323
1402
|
end
|
|
1324
1403
|
|
|
1325
1404
|
let(:reloaded) do
|
|
@@ -1355,7 +1434,7 @@ describe Mongoid::Interceptable do
|
|
|
1355
1434
|
end
|
|
1356
1435
|
|
|
1357
1436
|
before do
|
|
1358
|
-
band.save
|
|
1437
|
+
band.save!
|
|
1359
1438
|
end
|
|
1360
1439
|
|
|
1361
1440
|
it "does not execute the callback" do
|
|
@@ -1366,7 +1445,7 @@ describe Mongoid::Interceptable do
|
|
|
1366
1445
|
context "when the parent is persisted" do
|
|
1367
1446
|
|
|
1368
1447
|
let(:band) do
|
|
1369
|
-
Band.create(name: "Moderat")
|
|
1448
|
+
Band.create!(name: "Moderat")
|
|
1370
1449
|
end
|
|
1371
1450
|
|
|
1372
1451
|
let!(:record) do
|
|
@@ -1378,7 +1457,7 @@ describe Mongoid::Interceptable do
|
|
|
1378
1457
|
end
|
|
1379
1458
|
|
|
1380
1459
|
before do
|
|
1381
|
-
band.save
|
|
1460
|
+
band.save!
|
|
1382
1461
|
end
|
|
1383
1462
|
|
|
1384
1463
|
it "does not execute the callback" do
|
|
@@ -1390,22 +1469,22 @@ describe Mongoid::Interceptable do
|
|
|
1390
1469
|
context "when the child is persisted" do
|
|
1391
1470
|
|
|
1392
1471
|
let(:band) do
|
|
1393
|
-
Band.create(name: "Moderat")
|
|
1472
|
+
Band.create!(name: "Moderat")
|
|
1394
1473
|
end
|
|
1395
1474
|
|
|
1396
1475
|
let!(:record) do
|
|
1397
|
-
band.records.create(name: "Moderat")
|
|
1476
|
+
band.records.create!(name: "Moderat")
|
|
1398
1477
|
end
|
|
1399
1478
|
|
|
1400
1479
|
let!(:track) do
|
|
1401
|
-
record.tracks.create(name: "Berlin")
|
|
1480
|
+
record.tracks.create!(name: "Berlin")
|
|
1402
1481
|
end
|
|
1403
1482
|
|
|
1404
1483
|
context "when the child is dirty" do
|
|
1405
1484
|
|
|
1406
1485
|
before do
|
|
1407
1486
|
track.name = "Rusty Nails"
|
|
1408
|
-
band.save
|
|
1487
|
+
band.save!
|
|
1409
1488
|
end
|
|
1410
1489
|
|
|
1411
1490
|
let(:reloaded) do
|
|
@@ -1424,7 +1503,7 @@ describe Mongoid::Interceptable do
|
|
|
1424
1503
|
context "when the child is not dirty" do
|
|
1425
1504
|
|
|
1426
1505
|
before do
|
|
1427
|
-
band.save
|
|
1506
|
+
band.save!
|
|
1428
1507
|
end
|
|
1429
1508
|
|
|
1430
1509
|
it "does not execute the callback" do
|
|
@@ -1434,6 +1513,25 @@ describe Mongoid::Interceptable do
|
|
|
1434
1513
|
end
|
|
1435
1514
|
end
|
|
1436
1515
|
|
|
1516
|
+
describe '#after_destroy' do
|
|
1517
|
+
|
|
1518
|
+
context 'when the parent is updated in a child after_destroy callback' do
|
|
1519
|
+
|
|
1520
|
+
let!(:person) do
|
|
1521
|
+
Person.create!(ordered_posts: [OrderedPost.new])
|
|
1522
|
+
end
|
|
1523
|
+
|
|
1524
|
+
before do
|
|
1525
|
+
post = OrderedPost.first
|
|
1526
|
+
post.destroy
|
|
1527
|
+
end
|
|
1528
|
+
|
|
1529
|
+
it 'updates the parent' do
|
|
1530
|
+
expect(person.reload.title).to eq('Minus one ordered post.')
|
|
1531
|
+
end
|
|
1532
|
+
end
|
|
1533
|
+
end
|
|
1534
|
+
|
|
1437
1535
|
describe "#before_validation" do
|
|
1438
1536
|
|
|
1439
1537
|
context "when the child is new" do
|
|
@@ -1453,7 +1551,7 @@ describe Mongoid::Interceptable do
|
|
|
1453
1551
|
end
|
|
1454
1552
|
|
|
1455
1553
|
before do
|
|
1456
|
-
band.save
|
|
1554
|
+
band.save!
|
|
1457
1555
|
end
|
|
1458
1556
|
|
|
1459
1557
|
it "executes the callback" do
|
|
@@ -1464,7 +1562,7 @@ describe Mongoid::Interceptable do
|
|
|
1464
1562
|
context "when the parent is persisted" do
|
|
1465
1563
|
|
|
1466
1564
|
let(:band) do
|
|
1467
|
-
Band.create(name: "Moderat")
|
|
1565
|
+
Band.create!(name: "Moderat")
|
|
1468
1566
|
end
|
|
1469
1567
|
|
|
1470
1568
|
let!(:record) do
|
|
@@ -1476,7 +1574,7 @@ describe Mongoid::Interceptable do
|
|
|
1476
1574
|
end
|
|
1477
1575
|
|
|
1478
1576
|
before do
|
|
1479
|
-
band.save
|
|
1577
|
+
band.save!
|
|
1480
1578
|
end
|
|
1481
1579
|
|
|
1482
1580
|
it "executes the callback" do
|
|
@@ -1488,19 +1586,19 @@ describe Mongoid::Interceptable do
|
|
|
1488
1586
|
context "when the child is persisted" do
|
|
1489
1587
|
|
|
1490
1588
|
let(:band) do
|
|
1491
|
-
Band.create(name: "Moderat")
|
|
1589
|
+
Band.create!(name: "Moderat")
|
|
1492
1590
|
end
|
|
1493
1591
|
|
|
1494
1592
|
let!(:record) do
|
|
1495
|
-
band.records.create(name: "Moderat")
|
|
1593
|
+
band.records.create!(name: "Moderat")
|
|
1496
1594
|
end
|
|
1497
1595
|
|
|
1498
1596
|
let!(:track) do
|
|
1499
|
-
record.tracks.create(name: "Berlin")
|
|
1597
|
+
record.tracks.create!(name: "Berlin")
|
|
1500
1598
|
end
|
|
1501
1599
|
|
|
1502
1600
|
before do
|
|
1503
|
-
band.save
|
|
1601
|
+
band.save!
|
|
1504
1602
|
end
|
|
1505
1603
|
|
|
1506
1604
|
it "executes the callback" do
|
|
@@ -1527,11 +1625,11 @@ describe Mongoid::Interceptable do
|
|
|
1527
1625
|
end
|
|
1528
1626
|
|
|
1529
1627
|
before do
|
|
1530
|
-
parent.save
|
|
1628
|
+
parent.save!
|
|
1531
1629
|
end
|
|
1532
1630
|
|
|
1533
1631
|
it "does not duplicate the child documents" do
|
|
1534
|
-
parent.children.create(position: 1)
|
|
1632
|
+
parent.children.create!(position: 1)
|
|
1535
1633
|
expect(ParentDoc.find(parent.id).children.size).to eq(1)
|
|
1536
1634
|
end
|
|
1537
1635
|
end
|
|
@@ -1544,7 +1642,7 @@ describe Mongoid::Interceptable do
|
|
|
1544
1642
|
|
|
1545
1643
|
before(:all) do
|
|
1546
1644
|
Person.before_save do |doc|
|
|
1547
|
-
doc.mode
|
|
1645
|
+
throw(:abort) if doc.mode == :prevent_save
|
|
1548
1646
|
end
|
|
1549
1647
|
end
|
|
1550
1648
|
|
|
@@ -1582,7 +1680,7 @@ describe Mongoid::Interceptable do
|
|
|
1582
1680
|
context "when updating a document" do
|
|
1583
1681
|
|
|
1584
1682
|
let(:person) do
|
|
1585
|
-
Person.create
|
|
1683
|
+
Person.create!.tap do |person|
|
|
1586
1684
|
person.attributes = {
|
|
1587
1685
|
mode: :prevent_save,
|
|
1588
1686
|
title: "Associate",
|
|
@@ -1616,8 +1714,8 @@ describe Mongoid::Interceptable do
|
|
|
1616
1714
|
context "when loading a model multiple times" do
|
|
1617
1715
|
|
|
1618
1716
|
before do
|
|
1619
|
-
load "
|
|
1620
|
-
load "
|
|
1717
|
+
load File.join(MODELS, "callback_test.rb")
|
|
1718
|
+
load File.join(MODELS, "callback_test.rb")
|
|
1621
1719
|
end
|
|
1622
1720
|
|
|
1623
1721
|
let(:callback) do
|
|
@@ -1632,4 +1730,65 @@ describe Mongoid::Interceptable do
|
|
|
1632
1730
|
end
|
|
1633
1731
|
end
|
|
1634
1732
|
end
|
|
1733
|
+
|
|
1734
|
+
context 'when creating a parent and embedded child' do
|
|
1735
|
+
let(:registry) { InterceptableSpec::CallbackRegistry.new }
|
|
1736
|
+
let(:parent) do
|
|
1737
|
+
InterceptableSpec::CbParent.new(registry).tap do |parent|
|
|
1738
|
+
parent.cb_children << InterceptableSpec::CbChild.new(registry, cb_parent: parent)
|
|
1739
|
+
end
|
|
1740
|
+
end
|
|
1741
|
+
|
|
1742
|
+
let(:expected) do
|
|
1743
|
+
[
|
|
1744
|
+
[InterceptableSpec::CbParent, :before_validation],
|
|
1745
|
+
[InterceptableSpec::CbChild, :before_validation],
|
|
1746
|
+
[InterceptableSpec::CbChild, :after_validation],
|
|
1747
|
+
[InterceptableSpec::CbParent, :after_validation],
|
|
1748
|
+
[InterceptableSpec::CbParent, :before_save],
|
|
1749
|
+
[InterceptableSpec::CbParent, :before_create],
|
|
1750
|
+
[InterceptableSpec::CbParent, :after_create],
|
|
1751
|
+
[InterceptableSpec::CbParent, :after_save],
|
|
1752
|
+
]
|
|
1753
|
+
end
|
|
1754
|
+
|
|
1755
|
+
it 'calls callbacks in the right order' do
|
|
1756
|
+
parent.save!
|
|
1757
|
+
expect(registry.calls).to eq expected
|
|
1758
|
+
end
|
|
1759
|
+
end
|
|
1760
|
+
|
|
1761
|
+
context 'when creating a parent and embedded child with cascading callbacks' do
|
|
1762
|
+
let(:registry) { InterceptableSpec::CallbackRegistry.new }
|
|
1763
|
+
let(:parent) do
|
|
1764
|
+
InterceptableSpec::CbParent.new(registry).tap do |parent|
|
|
1765
|
+
parent.cb_cascaded_children <<
|
|
1766
|
+
InterceptableSpec::CbCascadedChild.new(registry, cb_parent: parent)
|
|
1767
|
+
end
|
|
1768
|
+
end
|
|
1769
|
+
|
|
1770
|
+
let(:expected) do
|
|
1771
|
+
[
|
|
1772
|
+
[InterceptableSpec::CbParent, :before_validation],
|
|
1773
|
+
[InterceptableSpec::CbCascadedChild, :before_validation],
|
|
1774
|
+
[InterceptableSpec::CbCascadedChild, :after_validation],
|
|
1775
|
+
[InterceptableSpec::CbParent, :after_validation],
|
|
1776
|
+
[InterceptableSpec::CbParent, :before_save],
|
|
1777
|
+
[InterceptableSpec::CbCascadedChild, :before_save],
|
|
1778
|
+
[InterceptableSpec::CbParent, :before_create],
|
|
1779
|
+
[InterceptableSpec::CbCascadedChild, :before_create],
|
|
1780
|
+
[InterceptableSpec::CbParent, :after_create],
|
|
1781
|
+
[InterceptableSpec::CbCascadedChild, :after_create],
|
|
1782
|
+
[InterceptableSpec::CbParent, :after_save],
|
|
1783
|
+
[InterceptableSpec::CbCascadedChild, :after_save],
|
|
1784
|
+
]
|
|
1785
|
+
end
|
|
1786
|
+
|
|
1787
|
+
it 'calls callbacks in the right order' do
|
|
1788
|
+
pending 'MONGOID-3795'
|
|
1789
|
+
|
|
1790
|
+
parent.save!
|
|
1791
|
+
expect(registry.calls).to eq expected
|
|
1792
|
+
end
|
|
1793
|
+
end
|
|
1635
1794
|
end
|