mongoid 7.0.10 → 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/README.md +32 -19
- data/Rakefile +51 -7
- data/lib/config/locales/en.yml +129 -70
- data/lib/mongoid/association/accessors.rb +143 -80
- data/lib/mongoid/association/bindable.rb +7 -26
- data/lib/mongoid/association/builders.rb +4 -12
- data/lib/mongoid/association/constrainable.rb +5 -6
- data/lib/mongoid/association/depending.rb +9 -18
- data/lib/mongoid/association/eager_loadable.rb +2 -3
- data/lib/mongoid/association/embedded/batchable.rb +16 -42
- data/lib/mongoid/association/embedded/cyclic.rb +10 -17
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +3 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +7 -4
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +14 -24
- data/lib/mongoid/association/embedded/embedded_in.rb +6 -26
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +8 -5
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +90 -93
- data/lib/mongoid/association/embedded/embeds_many.rb +6 -34
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +9 -6
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +42 -27
- data/lib/mongoid/association/embedded/embeds_one.rb +6 -30
- data/lib/mongoid/association/embedded.rb +2 -0
- data/lib/mongoid/association/macros.rb +44 -41
- data/lib/mongoid/association/many.rb +16 -30
- data/lib/mongoid/association/marshalable.rb +3 -6
- data/lib/mongoid/association/nested/many.rb +18 -27
- data/lib/mongoid/association/nested/nested_buildable.rb +5 -11
- data/lib/mongoid/association/nested/one.rb +16 -27
- data/lib/mongoid/association/nested.rb +3 -3
- data/lib/mongoid/association/one.rb +4 -11
- data/lib/mongoid/association/options.rb +8 -38
- data/lib/mongoid/association/proxy.rb +37 -36
- data/lib/mongoid/association/referenced/auto_save.rb +5 -11
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +4 -9
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +11 -9
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +40 -3
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -27
- data/lib/mongoid/association/referenced/belongs_to.rb +14 -36
- data/lib/mongoid/association/referenced/counter_cache.rb +4 -15
- data/lib/mongoid/association/referenced/eager.rb +39 -38
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -11
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +37 -57
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +23 -43
- data/lib/mongoid/association/referenced/has_many/binding.rb +3 -6
- data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +444 -456
- data/lib/mongoid/association/referenced/has_many/proxy.rb +74 -107
- data/lib/mongoid/association/referenced/has_many.rb +18 -42
- data/lib/mongoid/association/referenced/has_one/binding.rb +4 -9
- data/lib/mongoid/association/referenced/has_one/buildable.rb +20 -6
- data/lib/mongoid/association/referenced/has_one/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +13 -26
- data/lib/mongoid/association/referenced/has_one/proxy.rb +23 -25
- data/lib/mongoid/association/referenced/has_one.rb +13 -33
- data/lib/mongoid/association/referenced/syncable.rb +7 -22
- data/lib/mongoid/association/referenced.rb +2 -0
- data/lib/mongoid/association/reflections.rb +7 -6
- data/lib/mongoid/association/relatable.rb +18 -74
- data/lib/mongoid/association.rb +8 -22
- data/lib/mongoid/atomic/modifiers.rb +27 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded/one.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded.rb +2 -3
- data/lib/mongoid/atomic/paths/root.rb +4 -7
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +29 -44
- data/lib/mongoid/attributes/dynamic.rb +3 -18
- data/lib/mongoid/attributes/nested.rb +7 -10
- data/lib/mongoid/attributes/processing.rb +9 -24
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +3 -6
- data/lib/mongoid/attributes.rb +46 -60
- data/lib/mongoid/cacheable.rb +6 -9
- data/lib/mongoid/changeable.rb +6 -60
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +10 -13
- data/lib/mongoid/clients/sessions.rb +2 -6
- data/lib/mongoid/clients/storage_options.rb +7 -12
- data/lib/mongoid/clients/validators/storage.rb +2 -9
- data/lib/mongoid/clients/validators.rb +2 -1
- data/lib/mongoid/clients.rb +3 -10
- data/lib/mongoid/composable.rb +5 -9
- data/lib/mongoid/config/environment.rb +15 -6
- 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 -41
- data/lib/mongoid/contextual/aggregable/memory.rb +17 -12
- data/lib/mongoid/contextual/aggregable/mongo.rb +25 -26
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +29 -31
- data/lib/mongoid/contextual/command.rb +2 -5
- data/lib/mongoid/contextual/geo_near.rb +6 -37
- data/lib/mongoid/contextual/map_reduce.rb +5 -33
- data/lib/mongoid/contextual/memory.rb +8 -61
- data/lib/mongoid/contextual/mongo.rb +160 -82
- data/lib/mongoid/contextual/none.rb +44 -28
- data/lib/mongoid/contextual/queryable.rb +2 -3
- data/lib/mongoid/contextual.rb +7 -9
- data/lib/mongoid/copyable.rb +11 -10
- data/lib/mongoid/criteria/findable.rb +12 -15
- data/lib/mongoid/criteria/includable.rb +8 -15
- data/lib/mongoid/criteria/inspectable.rb +2 -3
- data/lib/mongoid/criteria/marshalable.rb +2 -5
- data/lib/mongoid/criteria/modifiable.rb +2 -19
- data/lib/mongoid/criteria/options.rb +2 -3
- data/lib/mongoid/criteria/permission.rb +2 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -13
- data/lib/mongoid/criteria/queryable/expandable.rb +68 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +4 -27
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/date.rb +3 -8
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +5 -11
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -26
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +3 -12
- data/lib/mongoid/criteria/queryable/extensions/object.rb +4 -29
- data/lib/mongoid/criteria/queryable/extensions/range.rb +41 -17
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +6 -13
- data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -18
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -10
- data/lib/mongoid/criteria/queryable/extensions/time.rb +3 -8
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +3 -8
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -4
- data/lib/mongoid/criteria/queryable/key.rb +36 -21
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +179 -40
- data/lib/mongoid/criteria/queryable/optional.rb +5 -48
- data/lib/mongoid/criteria/queryable/options.rb +2 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +5 -15
- data/lib/mongoid/criteria/queryable/selectable.rb +414 -162
- data/lib/mongoid/criteria/queryable/selector.rb +36 -24
- data/lib/mongoid/criteria/queryable/smash.rb +2 -11
- data/lib/mongoid/criteria/queryable/storable.rb +237 -0
- data/lib/mongoid/criteria/queryable.rb +7 -9
- data/lib/mongoid/criteria/scopable.rb +27 -19
- data/lib/mongoid/criteria.rb +79 -72
- data/lib/mongoid/document.rb +24 -73
- data/lib/mongoid/equality.rb +29 -12
- data/lib/mongoid/errors/ambiguous_relationship.rb +4 -5
- data/lib/mongoid/errors/callback.rb +2 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +18 -0
- data/lib/mongoid/errors/delete_restriction.rb +10 -13
- data/lib/mongoid/errors/document_not_destroyed.rb +4 -7
- data/lib/mongoid/errors/document_not_found.rb +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 +2 -3
- 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 +2 -5
- 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 +2 -5
- data/lib/mongoid/errors/invalid_query.rb +40 -0
- data/lib/mongoid/errors/invalid_relation.rb +4 -9
- data/lib/mongoid/errors/invalid_relation_option.rb +4 -5
- data/lib/mongoid/errors/invalid_scope.rb +2 -3
- data/lib/mongoid/errors/invalid_session_use.rb +3 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -5
- data/lib/mongoid/errors/invalid_storage_options.rb +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 +2 -3
- data/lib/mongoid/errors/unsaved_document.rb +3 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +2 -3
- data/lib/mongoid/errors/validations.rb +2 -1
- data/lib/mongoid/errors.rb +12 -1
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +28 -37
- data/lib/mongoid/extensions/big_decimal.rb +2 -11
- data/lib/mongoid/extensions/boolean.rb +3 -5
- data/lib/mongoid/extensions/date.rb +13 -12
- data/lib/mongoid/extensions/date_time.rb +4 -12
- data/lib/mongoid/extensions/decimal128.rb +2 -5
- data/lib/mongoid/extensions/false_class.rb +4 -7
- data/lib/mongoid/extensions/float.rb +5 -10
- data/lib/mongoid/extensions/hash.rb +47 -34
- 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 +17 -44
- data/lib/mongoid/extensions/object_id.rb +2 -7
- data/lib/mongoid/extensions/range.rb +2 -11
- data/lib/mongoid/extensions/regexp.rb +2 -3
- data/lib/mongoid/extensions/set.rb +2 -7
- data/lib/mongoid/extensions/string.rb +19 -39
- data/lib/mongoid/extensions/symbol.rb +2 -7
- data/lib/mongoid/extensions/time.rb +12 -9
- 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 -3
- data/lib/mongoid/factory.rb +52 -13
- data/lib/mongoid/fields/foreign_key.rb +3 -22
- data/lib/mongoid/fields/localized.rb +2 -11
- data/lib/mongoid/fields/standard.rb +6 -36
- data/lib/mongoid/fields/validators/macro.rb +36 -18
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +113 -63
- data/lib/mongoid/findable.rb +59 -23
- data/lib/mongoid/indexable/specification.rb +3 -16
- data/lib/mongoid/indexable/validators/options.rb +2 -7
- data/lib/mongoid/indexable.rb +6 -21
- data/lib/mongoid/inspectable.rb +4 -11
- data/lib/mongoid/interceptable.rb +13 -30
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +2 -153
- 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 +4 -21
- data/lib/mongoid/persistable/deletable.rb +5 -21
- data/lib/mongoid/persistable/destroyable.rb +11 -10
- data/lib/mongoid/persistable/incrementable.rb +6 -7
- data/lib/mongoid/persistable/logical.rb +4 -6
- data/lib/mongoid/persistable/poppable.rb +3 -6
- data/lib/mongoid/persistable/pullable.rb +3 -8
- data/lib/mongoid/persistable/pushable.rb +3 -8
- data/lib/mongoid/persistable/renamable.rb +10 -8
- data/lib/mongoid/persistable/savable.rb +3 -8
- data/lib/mongoid/persistable/settable.rb +3 -6
- data/lib/mongoid/persistable/unsettable.rb +8 -8
- data/lib/mongoid/persistable/updatable.rb +32 -20
- data/lib/mongoid/persistable/upsertable.rb +3 -8
- data/lib/mongoid/persistable.rb +133 -38
- data/lib/mongoid/persistence_context.rb +23 -36
- data/lib/mongoid/positional.rb +2 -5
- data/lib/mongoid/query_cache.rb +118 -103
- data/lib/mongoid/railtie.rb +3 -16
- data/lib/mongoid/railties/controller_runtime.rb +3 -1
- data/lib/mongoid/railties/database.rake +9 -0
- data/lib/mongoid/reloadable.rb +14 -19
- data/lib/mongoid/scopable.rb +8 -35
- data/lib/mongoid/selectable.rb +8 -17
- data/lib/mongoid/serializable.rb +24 -29
- data/lib/mongoid/shardable.rb +80 -17
- data/lib/mongoid/stateful.rb +3 -10
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +12 -5
- data/lib/mongoid/tasks/database.rb +85 -5
- data/lib/mongoid/threaded/lifecycle.rb +2 -21
- data/lib/mongoid/threaded.rb +2 -55
- 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 +53 -23
- data/lib/mongoid/traversable.rb +177 -57
- 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 +2 -7
- data/lib/mongoid/validatable/presence.rb +8 -13
- data/lib/mongoid/validatable/queryable.rb +2 -3
- data/lib/mongoid/validatable/uniqueness.rb +20 -33
- data/lib/mongoid/validatable.rb +8 -27
- data/lib/mongoid/version.rb +2 -2
- data/lib/mongoid.rb +32 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -2
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +45 -30
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -2
- data/lib/rails/generators/mongoid_generator.rb +2 -1
- data/lib/rails/mongoid.rb +4 -5
- data/spec/README.md +19 -4
- data/spec/config/mongoid.yml +1 -0
- data/spec/integration/app_spec.rb +246 -95
- data/spec/integration/associations/belongs_to_spec.rb +2 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +207 -1
- 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 +1 -2
- data/spec/integration/criteria/default_scope_spec.rb +72 -0
- data/spec/integration/criteria/logical_spec.rb +124 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
- data/spec/integration/discriminator_key_spec.rb +353 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +30 -1
- data/spec/integration/i18n_fallbacks_spec.rb +89 -0
- data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -42
- 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 +22 -5
- data/spec/mongoid/association/accessors_spec.rb +284 -77
- data/spec/mongoid/association/auto_save_spec.rb +74 -33
- data/spec/mongoid/association/builders_spec.rb +3 -1
- data/spec/mongoid/association/constrainable_spec.rb +2 -0
- data/spec/mongoid/association/counter_cache_spec.rb +34 -32
- data/spec/mongoid/association/depending_spec.rb +426 -333
- data/spec/mongoid/association/eager_spec.rb +6 -4
- data/spec/mongoid/association/embedded/cyclic_spec.rb +4 -2
- data/spec/mongoid/association/embedded/dirty_spec.rb +4 -2
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +65 -13
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +3 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +431 -133
- data/spec/mongoid/association/embedded/embeds_many_models.rb +17 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +51 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +3 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +23 -21
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +3 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +28 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +3 -1
- data/spec/mongoid/association/macros_spec.rb +11 -9
- data/spec/mongoid/association/nested/many_spec.rb +2 -0
- data/spec/mongoid/association/nested/one_spec.rb +18 -12
- data/spec/mongoid/association/options_spec.rb +2 -0
- data/spec/mongoid/association/polymorphic_spec.rb +2 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +57 -16
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +242 -12
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +99 -58
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +57 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +24 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +28 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +46 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +25 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +215 -167
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +43 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +39 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +46 -2
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +40 -9
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +306 -125
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +679 -339
- data/spec/mongoid/association/referenced/has_many_models.rb +58 -0
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +53 -7
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +34 -4
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +28 -26
- data/spec/mongoid/association/referenced/has_one_models.rb +49 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +24 -1
- data/spec/mongoid/association/reflections_spec.rb +2 -0
- data/spec/mongoid/association/syncable_spec.rb +33 -31
- data/spec/mongoid/association_spec.rb +2 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +49 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +2 -0
- data/spec/mongoid/atomic/paths_spec.rb +107 -12
- data/spec/mongoid/atomic_spec.rb +31 -6
- data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
- data/spec/mongoid/attributes/nested_spec.rb +69 -67
- 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 +24 -22
- data/spec/mongoid/attributes_spec.rb +363 -28
- data/spec/mongoid/cacheable_spec.rb +3 -1
- data/spec/mongoid/changeable_spec.rb +60 -35
- data/spec/mongoid/clients/factory_spec.rb +136 -28
- data/spec/mongoid/clients/options_spec.rb +44 -26
- data/spec/mongoid/clients/sessions_spec.rb +25 -28
- data/spec/mongoid/clients/transactions_spec.rb +54 -29
- data/spec/mongoid/clients_spec.rb +8 -6
- data/spec/mongoid/composable_spec.rb +2 -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 +277 -1
- 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 +222 -71
- data/spec/mongoid/contextual/geo_near_spec.rb +20 -18
- data/spec/mongoid/contextual/map_reduce_spec.rb +4 -2
- data/spec/mongoid/contextual/memory_spec.rb +25 -23
- data/spec/mongoid/contextual/mongo_spec.rb +413 -92
- data/spec/mongoid/contextual/none_spec.rb +9 -81
- data/spec/mongoid/copyable_spec.rb +207 -26
- data/spec/mongoid/copyable_spec_models.rb +30 -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 +43 -40
- data/spec/mongoid/criteria/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +61 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +35 -17
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +239 -178
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +23 -16
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +145 -12
- data/spec/mongoid/criteria/queryable/optional_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +1593 -286
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +38 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1010 -2736
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/smash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +226 -0
- data/spec/mongoid/criteria/scopable_spec.rb +129 -0
- data/spec/mongoid/criteria_projection_spec.rb +410 -0
- data/spec/mongoid/criteria_spec.rb +782 -459
- data/spec/mongoid/document_fields_spec.rb +26 -1
- data/spec/mongoid/document_persistence_context_spec.rb +0 -1
- data/spec/mongoid/document_query_spec.rb +89 -0
- data/spec/mongoid/document_spec.rb +123 -48
- 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 +4 -2
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -1
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +2 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +2 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +2 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +22 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_config_spec.rb +4 -2
- data/spec/mongoid/errors/no_client_database_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_hosts_spec.rb +5 -3
- data/spec/mongoid/errors/no_clients_config_spec.rb +2 -0
- data/spec/mongoid/errors/no_environment_spec.rb +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 +25 -43
- data/spec/mongoid/extensions/big_decimal_spec.rb +2 -0
- data/spec/mongoid/extensions/binary_spec.rb +2 -0
- data/spec/mongoid/extensions/boolean_spec.rb +2 -0
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +335 -0
- data/spec/mongoid/extensions/date_spec.rb +8 -160
- data/spec/mongoid/extensions/date_time_spec.rb +17 -60
- data/spec/mongoid/extensions/decimal128_spec.rb +2 -0
- data/spec/mongoid/extensions/false_class_spec.rb +3 -1
- data/spec/mongoid/extensions/float_spec.rb +17 -3
- data/spec/mongoid/extensions/hash_spec.rb +105 -0
- data/spec/mongoid/extensions/integer_spec.rb +14 -2
- data/spec/mongoid/extensions/module_spec.rb +2 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/extensions/object_id_spec.rb +2 -0
- data/spec/mongoid/extensions/object_spec.rb +13 -24
- data/spec/mongoid/extensions/range_spec.rb +2 -0
- data/spec/mongoid/extensions/regexp_spec.rb +2 -0
- data/spec/mongoid/extensions/set_spec.rb +2 -0
- data/spec/mongoid/extensions/string_spec.rb +60 -27
- 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 +29 -0
- data/spec/mongoid/extensions/time_with_zone_spec.rb +33 -0
- data/spec/mongoid/extensions/true_class_spec.rb +3 -1
- data/spec/mongoid/extensions_spec.rb +16 -2
- data/spec/mongoid/factory_spec.rb +287 -27
- data/spec/mongoid/fields/foreign_key_spec.rb +2 -0
- data/spec/mongoid/fields/localized_spec.rb +6 -4
- data/spec/mongoid/fields/standard_spec.rb +2 -0
- data/spec/mongoid/fields_spec.rb +418 -36
- data/spec/mongoid/findable_spec.rb +53 -19
- data/spec/mongoid/indexable/specification_spec.rb +2 -0
- data/spec/mongoid/indexable_spec.rb +30 -2
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +168 -96
- 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 +112 -27
- data/spec/mongoid/persistable/deletable_spec.rb +273 -11
- data/spec/mongoid/persistable/destroyable_spec.rb +201 -11
- data/spec/mongoid/persistable/incrementable_spec.rb +23 -7
- data/spec/mongoid/persistable/logical_spec.rb +19 -3
- data/spec/mongoid/persistable/poppable_spec.rb +19 -3
- data/spec/mongoid/persistable/pullable_spec.rb +36 -6
- data/spec/mongoid/persistable/pushable_spec.rb +36 -6
- data/spec/mongoid/persistable/renamable_spec.rb +18 -2
- data/spec/mongoid/persistable/savable_spec.rb +188 -25
- data/spec/mongoid/persistable/settable_spec.rb +54 -8
- data/spec/mongoid/persistable/unsettable_spec.rb +19 -3
- data/spec/mongoid/persistable/updatable_spec.rb +45 -23
- data/spec/mongoid/persistable/upsertable_spec.rb +4 -2
- data/spec/mongoid/persistable_spec.rb +85 -9
- data/spec/mongoid/persistence_context_spec.rb +2 -0
- data/spec/mongoid/positional_spec.rb +2 -0
- data/spec/mongoid/query_cache_middleware_spec.rb +68 -0
- data/spec/mongoid/query_cache_spec.rb +501 -81
- data/spec/mongoid/relations/proxy_spec.rb +8 -6
- data/spec/mongoid/reloadable_spec.rb +298 -20
- data/spec/mongoid/scopable_spec.rb +67 -21
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +160 -29
- data/spec/mongoid/shardable_models.rb +61 -0
- data/spec/mongoid/shardable_spec.rb +116 -17
- data/spec/mongoid/stateful_spec.rb +3 -1
- data/spec/mongoid/tasks/database_rake_spec.rb +2 -0
- data/spec/mongoid/tasks/database_spec.rb +2 -0
- data/spec/mongoid/threaded_spec.rb +4 -2
- data/spec/mongoid/timestamps/created/short_spec.rb +3 -1
- data/spec/mongoid/timestamps/created_spec.rb +3 -1
- data/spec/mongoid/timestamps/timeless_spec.rb +4 -2
- data/spec/mongoid/timestamps/updated/short_spec.rb +5 -3
- data/spec/mongoid/timestamps/updated_spec.rb +5 -3
- data/spec/mongoid/timestamps_spec.rb +8 -6
- data/spec/mongoid/touchable_spec.rb +180 -33
- data/spec/mongoid/touchable_spec_models.rb +53 -0
- data/spec/mongoid/traversable_spec.rb +1167 -1
- data/spec/mongoid/validatable/associated_spec.rb +2 -0
- data/spec/mongoid/validatable/format_spec.rb +2 -0
- data/spec/mongoid/validatable/length_spec.rb +2 -0
- data/spec/mongoid/validatable/numericality_spec.rb +2 -0
- data/spec/mongoid/validatable/presence_spec.rb +28 -22
- data/spec/mongoid/validatable/uniqueness_spec.rb +69 -67
- data/spec/mongoid/validatable_spec.rb +5 -3
- data/spec/mongoid_spec.rb +2 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +3 -1
- 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 +39 -35
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +15 -234
- data/spec/support/expectations.rb +5 -1
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +22 -0
- data/spec/{app → support}/models/account.rb +3 -1
- data/spec/{app → support}/models/acolyte.rb +2 -0
- data/spec/{app → support}/models/actor.rb +3 -1
- data/spec/support/models/actress.rb +4 -0
- data/spec/{app → support}/models/address.rb +6 -0
- data/spec/{app → support}/models/address_component.rb +2 -0
- data/spec/{app → support}/models/address_number.rb +2 -0
- data/spec/{app → support}/models/agency.rb +2 -0
- data/spec/{app → support}/models/agent.rb +2 -0
- data/spec/{app → support}/models/album.rb +2 -0
- data/spec/{app → support}/models/alert.rb +2 -0
- data/spec/{app → support}/models/animal.rb +2 -0
- data/spec/{app → support}/models/answer.rb +2 -0
- data/spec/{app → support}/models/appointment.rb +2 -0
- data/spec/support/models/armrest.rb +9 -0
- data/spec/{app → support}/models/article.rb +2 -0
- data/spec/{app → support}/models/artist.rb +4 -0
- data/spec/{app → support}/models/artwork.rb +2 -0
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/{app → support}/models/audio.rb +2 -0
- data/spec/{app → support}/models/augmentation.rb +2 -0
- data/spec/{app → support}/models/author.rb +2 -0
- data/spec/{app → support}/models/baby.rb +2 -0
- data/spec/{app → support}/models/band.rb +6 -0
- data/spec/{app → support}/models/bar.rb +2 -0
- data/spec/{app → support}/models/basic.rb +2 -0
- data/spec/support/models/bed.rb +3 -0
- data/spec/{app → support}/models/big_palette.rb +2 -0
- data/spec/{app → support}/models/birthday.rb +2 -0
- data/spec/support/models/bolt.rb +7 -0
- data/spec/{app → support}/models/bomb.rb +2 -0
- data/spec/{app → support}/models/book.rb +2 -0
- data/spec/{app → support}/models/breed.rb +2 -0
- data/spec/{app → support}/models/browser.rb +3 -1
- data/spec/{app → support}/models/building.rb +2 -0
- data/spec/{app → support}/models/building_address.rb +2 -0
- data/spec/{app → support}/models/bus.rb +2 -0
- data/spec/{app → support}/models/business.rb +2 -0
- data/spec/{app → support}/models/callback_test.rb +2 -0
- data/spec/{app → support}/models/canvas.rb +3 -1
- data/spec/support/models/car.rb +3 -0
- data/spec/{app → support}/models/cat.rb +2 -0
- data/spec/{app → support}/models/category.rb +2 -0
- data/spec/{app → support}/models/child.rb +2 -0
- data/spec/{app → support}/models/child_doc.rb +5 -3
- data/spec/{app → support}/models/church.rb +2 -0
- data/spec/{app → support}/models/circle.rb +2 -0
- data/spec/{app → support}/models/circuit.rb +2 -0
- data/spec/{app → support}/models/circus.rb +2 -0
- data/spec/{app → support}/models/code.rb +2 -0
- data/spec/support/models/coding/pull_request.rb +11 -0
- data/spec/support/models/coding.rb +3 -0
- data/spec/{app → support}/models/comment.rb +2 -0
- data/spec/{app → support}/models/company.rb +2 -0
- data/spec/{app → support}/models/consumption_period.rb +2 -0
- data/spec/{app → support}/models/contextable_item.rb +2 -0
- data/spec/{app → support}/models/contractor.rb +2 -0
- data/spec/{app → support}/models/cookie.rb +2 -0
- data/spec/{app → support}/models/country_code.rb +4 -0
- data/spec/{app → support}/models/courier_job.rb +2 -0
- data/spec/support/models/crate.rb +12 -0
- data/spec/support/models/customer.rb +10 -0
- data/spec/support/models/customer_address.rb +11 -0
- data/spec/support/models/deed.rb +7 -0
- data/spec/{app → support}/models/definition.rb +2 -0
- data/spec/{app → support}/models/delegating_patient.rb +0 -1
- data/spec/{app → support}/models/description.rb +2 -0
- data/spec/{app → support}/models/dictionary.rb +8 -0
- data/spec/{app → support}/models/division.rb +2 -0
- data/spec/{app → support}/models/doctor.rb +2 -0
- data/spec/{app → support}/models/dog.rb +2 -0
- data/spec/{app → support}/models/dokument.rb +2 -0
- data/spec/{app → support}/models/draft.rb +2 -0
- data/spec/{app → support}/models/dragon.rb +2 -0
- data/spec/{app → support}/models/driver.rb +3 -1
- data/spec/{app → support}/models/drug.rb +2 -0
- data/spec/{app → support}/models/dungeon.rb +2 -0
- data/spec/{app → support}/models/edit.rb +2 -0
- data/spec/{app → support}/models/email.rb +2 -0
- data/spec/{app → support}/models/employer.rb +2 -0
- data/spec/{app → support}/models/entry.rb +2 -0
- data/spec/support/models/eraser.rb +3 -0
- data/spec/{app → support}/models/even.rb +2 -0
- data/spec/{app → support}/models/event.rb +2 -0
- data/spec/{app → support}/models/exhibition.rb +2 -0
- data/spec/{app → support}/models/exhibitor.rb +2 -0
- data/spec/{app → support}/models/explosion.rb +2 -0
- data/spec/{app → support}/models/eye.rb +2 -0
- data/spec/{app → support}/models/eye_bowl.rb +2 -0
- data/spec/{app → support}/models/face.rb +2 -0
- data/spec/{app → support}/models/favorite.rb +2 -0
- data/spec/{app → support}/models/filesystem.rb +2 -0
- data/spec/{app → support}/models/fire_hydrant.rb +2 -0
- data/spec/{app → support}/models/firefox.rb +2 -0
- data/spec/{app → support}/models/fish.rb +2 -0
- data/spec/{app → support}/models/folder.rb +2 -0
- data/spec/{app → support}/models/folder_item.rb +2 -0
- data/spec/{app → support}/models/fruits.rb +2 -0
- data/spec/{app → support}/models/game.rb +2 -0
- data/spec/{app → support}/models/ghost.rb +2 -0
- data/spec/support/models/guitar.rb +4 -0
- data/spec/support/models/hole.rb +12 -0
- data/spec/{app → support}/models/home.rb +2 -0
- data/spec/{app → support}/models/house.rb +2 -0
- data/spec/{app → support}/models/html_writer.rb +2 -0
- data/spec/{app → support}/models/id_key.rb +2 -0
- data/spec/support/models/idnodef.rb +7 -0
- data/spec/{app → support}/models/image.rb +2 -0
- data/spec/{app → support}/models/implant.rb +2 -0
- data/spec/support/models/instrument.rb +8 -0
- data/spec/{app → support}/models/item.rb +3 -1
- data/spec/{app → support}/models/jar.rb +2 -0
- data/spec/{app → support}/models/kaleidoscope.rb +2 -0
- data/spec/{app → support}/models/kangaroo.rb +3 -1
- data/spec/{app → support}/models/label.rb +4 -1
- data/spec/{app → support}/models/language.rb +2 -0
- data/spec/{app → support}/models/lat_lng.rb +2 -0
- data/spec/{app → support}/models/league.rb +2 -0
- data/spec/support/models/learner.rb +4 -0
- data/spec/{app → support}/models/line_item.rb +2 -0
- data/spec/{app → support}/models/location.rb +2 -0
- data/spec/{app → support}/models/login.rb +2 -0
- data/spec/{app → support}/models/manufacturer.rb +2 -0
- data/spec/{app → support}/models/meat.rb +2 -0
- data/spec/{app → support}/models/membership.rb +2 -0
- data/spec/{app → support}/models/message.rb +2 -0
- data/spec/{app → support}/models/minim.rb +0 -1
- data/spec/{app → support}/models/mixed_drink.rb +2 -0
- data/spec/support/models/mop.rb +24 -0
- data/spec/{app → support}/models/movie.rb +2 -0
- data/spec/support/models/my_hash.rb +4 -0
- data/spec/{app → support}/models/name.rb +2 -0
- data/spec/support/models/name_only.rb +8 -0
- data/spec/{app → support}/models/node.rb +2 -0
- data/spec/{app → support}/models/note.rb +2 -0
- data/spec/support/models/nut.rb +7 -0
- data/spec/{app → support}/models/odd.rb +2 -0
- data/spec/support/models/order.rb +12 -0
- data/spec/{app → support}/models/ordered_post.rb +3 -1
- data/spec/{app → support}/models/ordered_preference.rb +2 -0
- data/spec/{app → support}/models/oscar.rb +2 -0
- data/spec/support/models/other_owner_object.rb +4 -0
- data/spec/{app → support}/models/override.rb +2 -0
- data/spec/{app → support}/models/ownable.rb +2 -0
- data/spec/{app → support}/models/owner.rb +4 -0
- data/spec/{app → support}/models/pack.rb +2 -0
- data/spec/{app → support}/models/page.rb +2 -0
- data/spec/{app → support}/models/page_question.rb +2 -0
- data/spec/{app → support}/models/palette.rb +3 -1
- data/spec/{app → support}/models/parent.rb +2 -0
- data/spec/{app → support}/models/parent_doc.rb +2 -0
- data/spec/support/models/passport.rb +13 -0
- data/spec/{app → support}/models/patient.rb +2 -0
- data/spec/{app → support}/models/pdf_writer.rb +2 -0
- data/spec/support/models/pencil.rb +3 -0
- data/spec/{app → support}/models/person.rb +21 -1
- data/spec/{app → support}/models/pet.rb +2 -0
- data/spec/{app → support}/models/pet_owner.rb +2 -0
- data/spec/{app → support}/models/phone.rb +5 -1
- data/spec/support/models/piano.rb +4 -0
- data/spec/{app → support}/models/pizza.rb +2 -0
- data/spec/{app → support}/models/player.rb +2 -0
- data/spec/{app → support}/models/post.rb +2 -0
- data/spec/{app → support}/models/post_genre.rb +2 -0
- data/spec/{app → support}/models/powerup.rb +2 -0
- data/spec/{app → support}/models/preference.rb +2 -0
- data/spec/{app → support}/models/princess.rb +2 -0
- data/spec/{app → support}/models/product.rb +2 -0
- data/spec/support/models/profile.rb +17 -0
- data/spec/{app → support}/models/pronunciation.rb +2 -0
- data/spec/{app → support}/models/pub.rb +2 -0
- data/spec/support/models/publication/encyclopedia.rb +11 -0
- data/spec/support/models/publication/review.rb +13 -0
- data/spec/support/models/publication.rb +4 -0
- data/spec/{app → support}/models/purchase.rb +2 -0
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/{app → support}/models/question.rb +2 -0
- data/spec/{app → support}/models/quiz.rb +2 -0
- data/spec/{app → support}/models/rating.rb +2 -0
- data/spec/{app → support}/models/record.rb +2 -0
- data/spec/{app → support}/models/registry.rb +2 -0
- data/spec/{app → support}/models/role.rb +2 -0
- data/spec/{app → support}/models/root_category.rb +2 -0
- data/spec/{app → support}/models/sandwich.rb +2 -0
- data/spec/{app → support}/models/scheduler.rb +2 -0
- data/spec/support/models/scribe.rb +7 -0
- data/spec/support/models/sealer.rb +7 -0
- data/spec/support/models/seat.rb +24 -0
- data/spec/{app → support}/models/seo.rb +2 -0
- data/spec/support/models/series.rb +7 -0
- data/spec/{app → support}/models/server.rb +2 -0
- data/spec/{app → support}/models/service.rb +2 -0
- data/spec/{app → support}/models/shape.rb +4 -2
- data/spec/{app → support}/models/shelf.rb +2 -0
- data/spec/{app → support}/models/shipment_address.rb +2 -0
- data/spec/{app → support}/models/shipping_container.rb +2 -0
- data/spec/{app → support}/models/shipping_pack.rb +2 -0
- data/spec/support/models/shirt.rb +11 -0
- data/spec/{app → support}/models/shop.rb +2 -0
- data/spec/{app → support}/models/short_agent.rb +2 -0
- data/spec/{app → support}/models/short_quiz.rb +2 -0
- data/spec/{app → support}/models/simple.rb +2 -0
- data/spec/{app → support}/models/slave.rb +2 -0
- data/spec/{app → support}/models/song.rb +2 -0
- data/spec/{app → support}/models/sound.rb +2 -0
- data/spec/support/models/spacer.rb +7 -0
- data/spec/{app → support}/models/square.rb +2 -0
- data/spec/{app → support}/models/staff.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +2 -0
- data/spec/{app → support}/models/strategy.rb +2 -0
- data/spec/{app → support}/models/sub_item.rb +2 -0
- data/spec/{app → support}/models/subscription.rb +2 -0
- data/spec/{app → support}/models/survey.rb +2 -0
- data/spec/{app → support}/models/symptom.rb +2 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +2 -0
- data/spec/{app → support}/models/target.rb +2 -0
- data/spec/{app → support}/models/template.rb +2 -0
- data/spec/{app → support}/models/thing.rb +2 -0
- data/spec/support/models/threadlocker.rb +7 -0
- data/spec/{app → support}/models/title.rb +2 -0
- data/spec/{app → support}/models/tool.rb +4 -2
- data/spec/{app → support}/models/topping.rb +2 -0
- data/spec/support/models/toy.rb +9 -0
- data/spec/{app → support}/models/track.rb +2 -0
- data/spec/{app → support}/models/translation.rb +2 -0
- data/spec/{app → support}/models/tree.rb +2 -0
- data/spec/support/models/truck.rb +7 -0
- data/spec/{app → support}/models/user.rb +2 -0
- data/spec/{app → support}/models/user_account.rb +2 -0
- data/spec/{app → support}/models/validation_callback.rb +2 -0
- data/spec/support/models/vehicle.rb +18 -0
- data/spec/{app → support}/models/version.rb +2 -0
- data/spec/{app → support}/models/vertex.rb +3 -1
- data/spec/{app → support}/models/vet_visit.rb +2 -0
- data/spec/{app → support}/models/video.rb +2 -0
- data/spec/support/models/video_game.rb +3 -0
- data/spec/support/models/washer.rb +7 -0
- data/spec/{app → support}/models/weapon.rb +2 -0
- data/spec/{app → support}/models/wiki_page.rb +3 -0
- data/spec/{app → support}/models/word.rb +2 -0
- data/spec/{app → support}/models/word_origin.rb +2 -0
- data/spec/{app → support}/models/writer.rb +4 -2
- data/spec/support/shared/time.rb +53 -0
- data/spec/support/spec_config.rb +16 -3
- data.tar.gz.sig +0 -0
- metadata +1100 -738
- metadata.gz.sig +0 -0
- data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
- data/lib/mongoid/matchable/all.rb +0 -28
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -119
- data/lib/mongoid/matchable/elem_match.rb +0 -34
- data/lib/mongoid/matchable/eq.rb +0 -22
- data/lib/mongoid/matchable/exists.rb +0 -23
- data/lib/mongoid/matchable/gt.rb +0 -23
- data/lib/mongoid/matchable/gte.rb +0 -23
- data/lib/mongoid/matchable/in.rb +0 -24
- data/lib/mongoid/matchable/lt.rb +0 -23
- data/lib/mongoid/matchable/lte.rb +0 -23
- data/lib/mongoid/matchable/ne.rb +0 -21
- data/lib/mongoid/matchable/nin.rb +0 -22
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/matchable/or.rb +0 -33
- data/lib/mongoid/matchable/regexp.rb +0 -27
- data/lib/mongoid/matchable/size.rb +0 -21
- data/lib/support/ruby_version.rb +0 -26
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/other_owner_object.rb +0 -2
- data/spec/app/models/passport.rb +0 -5
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/profile.rb +0 -5
- data/spec/app/models/series.rb +0 -4
- data/spec/app/models/truck.rb +0 -3
- data/spec/app/models/vehicle.rb +0 -11
- data/spec/app/models/video_game.rb +0 -1
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
- data/spec/mongoid/matchable/all_spec.rb +0 -31
- data/spec/mongoid/matchable/and_spec.rb +0 -187
- data/spec/mongoid/matchable/default_spec.rb +0 -137
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -106
- data/spec/mongoid/matchable/eq_spec.rb +0 -48
- data/spec/mongoid/matchable/exists_spec.rb +0 -57
- data/spec/mongoid/matchable/gt_spec.rb +0 -86
- data/spec/mongoid/matchable/gte_spec.rb +0 -84
- data/spec/mongoid/matchable/in_spec.rb +0 -49
- data/spec/mongoid/matchable/lt_spec.rb +0 -85
- data/spec/mongoid/matchable/lte_spec.rb +0 -85
- data/spec/mongoid/matchable/ne_spec.rb +0 -46
- data/spec/mongoid/matchable/nin_spec.rb +0 -48
- data/spec/mongoid/matchable/nor_spec.rb +0 -209
- data/spec/mongoid/matchable/or_spec.rb +0 -131
- data/spec/mongoid/matchable/regexp_spec.rb +0 -59
- data/spec/mongoid/matchable/size_spec.rb +0 -25
- data/spec/mongoid/matchable_spec.rb +0 -853
- data/spec/support/child_process_helper.rb +0 -76
- data/spec/support/cluster_config.rb +0 -158
- /data/spec/{app → support}/models/array_field.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
- /data/spec/{app → support}/models/updatable.rb +0 -0
|
@@ -1,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
|
|
@@ -317,7 +328,7 @@ describe Mongoid::Interceptable do
|
|
|
317
328
|
end
|
|
318
329
|
|
|
319
330
|
it "the save returns true" do
|
|
320
|
-
expect(artist.save).to be true
|
|
331
|
+
expect(artist.save!).to be true
|
|
321
332
|
end
|
|
322
333
|
end
|
|
323
334
|
|
|
@@ -341,7 +352,7 @@ describe Mongoid::Interceptable do
|
|
|
341
352
|
context "when updating" do
|
|
342
353
|
|
|
343
354
|
let(:artist) do
|
|
344
|
-
Artist.create(name: "Depeche Mode").tap do |artist|
|
|
355
|
+
Artist.create!(name: "Depeche Mode").tap do |artist|
|
|
345
356
|
artist.name = "The Mountain Goats"
|
|
346
357
|
end
|
|
347
358
|
end
|
|
@@ -357,7 +368,7 @@ describe Mongoid::Interceptable do
|
|
|
357
368
|
end
|
|
358
369
|
|
|
359
370
|
it "the save returns true" do
|
|
360
|
-
expect(artist.save).to be true
|
|
371
|
+
expect(artist.save!).to be true
|
|
361
372
|
end
|
|
362
373
|
end
|
|
363
374
|
|
|
@@ -382,7 +393,7 @@ describe Mongoid::Interceptable do
|
|
|
382
393
|
describe ".before_destroy" do
|
|
383
394
|
|
|
384
395
|
let(:artist) do
|
|
385
|
-
Artist.create(name: "Depeche Mode")
|
|
396
|
+
Artist.create!(name: "Depeche Mode")
|
|
386
397
|
end
|
|
387
398
|
|
|
388
399
|
before do
|
|
@@ -427,7 +438,7 @@ describe Mongoid::Interceptable do
|
|
|
427
438
|
end
|
|
428
439
|
|
|
429
440
|
let!(:record) do
|
|
430
|
-
moderat.records.create(name: "Moderat")
|
|
441
|
+
moderat.records.create!(name: "Moderat")
|
|
431
442
|
end
|
|
432
443
|
|
|
433
444
|
before do
|
|
@@ -541,7 +552,7 @@ describe Mongoid::Interceptable do
|
|
|
541
552
|
|
|
542
553
|
it "does not cascade to the child" do
|
|
543
554
|
Band.accepts_nested_attributes_for :records, allow_destroy: true
|
|
544
|
-
expect(band.update_attributes(attributes)).to be true
|
|
555
|
+
expect(band.update_attributes!(attributes)).to be true
|
|
545
556
|
end
|
|
546
557
|
end
|
|
547
558
|
end
|
|
@@ -572,7 +583,7 @@ describe Mongoid::Interceptable do
|
|
|
572
583
|
|
|
573
584
|
it "only executes the callbacks once for each embed" do
|
|
574
585
|
expect(note).to receive(:update_saved).twice
|
|
575
|
-
band.save
|
|
586
|
+
band.save!
|
|
576
587
|
end
|
|
577
588
|
end
|
|
578
589
|
end
|
|
@@ -581,7 +592,7 @@ describe Mongoid::Interceptable do
|
|
|
581
592
|
context "when cascading after initialize" do
|
|
582
593
|
|
|
583
594
|
let!(:person) do
|
|
584
|
-
Person.create
|
|
595
|
+
Person.create!
|
|
585
596
|
end
|
|
586
597
|
|
|
587
598
|
before do
|
|
@@ -620,7 +631,7 @@ describe Mongoid::Interceptable do
|
|
|
620
631
|
end
|
|
621
632
|
|
|
622
633
|
before do
|
|
623
|
-
band.save
|
|
634
|
+
band.save!
|
|
624
635
|
end
|
|
625
636
|
|
|
626
637
|
it "executes the callback" do
|
|
@@ -631,7 +642,7 @@ describe Mongoid::Interceptable do
|
|
|
631
642
|
context "when the parent is persisted" do
|
|
632
643
|
|
|
633
644
|
let(:band) do
|
|
634
|
-
Band.create(name: "Moderat")
|
|
645
|
+
Band.create!(name: "Moderat")
|
|
635
646
|
end
|
|
636
647
|
|
|
637
648
|
let!(:label) do
|
|
@@ -639,7 +650,7 @@ describe Mongoid::Interceptable do
|
|
|
639
650
|
end
|
|
640
651
|
|
|
641
652
|
before do
|
|
642
|
-
band.save
|
|
653
|
+
band.save!
|
|
643
654
|
end
|
|
644
655
|
|
|
645
656
|
it "executes the callback" do
|
|
@@ -651,7 +662,7 @@ describe Mongoid::Interceptable do
|
|
|
651
662
|
context "when the child is persisted" do
|
|
652
663
|
|
|
653
664
|
let(:band) do
|
|
654
|
-
Band.create(name: "Moderat")
|
|
665
|
+
Band.create!(name: "Moderat")
|
|
655
666
|
end
|
|
656
667
|
|
|
657
668
|
let!(:label) do
|
|
@@ -660,7 +671,7 @@ describe Mongoid::Interceptable do
|
|
|
660
671
|
|
|
661
672
|
before do
|
|
662
673
|
label.after_create_called = false
|
|
663
|
-
band.save
|
|
674
|
+
band.save!
|
|
664
675
|
end
|
|
665
676
|
|
|
666
677
|
it "does not execute the callback" do
|
|
@@ -684,7 +695,7 @@ describe Mongoid::Interceptable do
|
|
|
684
695
|
end
|
|
685
696
|
|
|
686
697
|
before do
|
|
687
|
-
band.save
|
|
698
|
+
band.save!
|
|
688
699
|
end
|
|
689
700
|
|
|
690
701
|
it "executes the callback" do
|
|
@@ -695,7 +706,7 @@ describe Mongoid::Interceptable do
|
|
|
695
706
|
context "when the parent is persisted" do
|
|
696
707
|
|
|
697
708
|
let(:band) do
|
|
698
|
-
Band.create(name: "Moderat")
|
|
709
|
+
Band.create!(name: "Moderat")
|
|
699
710
|
end
|
|
700
711
|
|
|
701
712
|
let!(:label) do
|
|
@@ -703,7 +714,7 @@ describe Mongoid::Interceptable do
|
|
|
703
714
|
end
|
|
704
715
|
|
|
705
716
|
before do
|
|
706
|
-
band.save
|
|
717
|
+
band.save!
|
|
707
718
|
end
|
|
708
719
|
|
|
709
720
|
it "executes the callback" do
|
|
@@ -715,7 +726,7 @@ describe Mongoid::Interceptable do
|
|
|
715
726
|
context "when the child is persisted" do
|
|
716
727
|
|
|
717
728
|
let(:band) do
|
|
718
|
-
Band.create(name: "Moderat")
|
|
729
|
+
Band.create!(name: "Moderat")
|
|
719
730
|
end
|
|
720
731
|
|
|
721
732
|
let!(:label) do
|
|
@@ -723,7 +734,7 @@ describe Mongoid::Interceptable do
|
|
|
723
734
|
end
|
|
724
735
|
|
|
725
736
|
before do
|
|
726
|
-
band.save
|
|
737
|
+
band.save!
|
|
727
738
|
end
|
|
728
739
|
|
|
729
740
|
it "executes the callback" do
|
|
@@ -747,7 +758,7 @@ describe Mongoid::Interceptable do
|
|
|
747
758
|
end
|
|
748
759
|
|
|
749
760
|
before do
|
|
750
|
-
band.save
|
|
761
|
+
band.save!
|
|
751
762
|
end
|
|
752
763
|
|
|
753
764
|
it "does not execute the callback" do
|
|
@@ -758,7 +769,7 @@ describe Mongoid::Interceptable do
|
|
|
758
769
|
context "when the parent is persisted" do
|
|
759
770
|
|
|
760
771
|
let(:band) do
|
|
761
|
-
Band.create(name: "Moderat")
|
|
772
|
+
Band.create!(name: "Moderat")
|
|
762
773
|
end
|
|
763
774
|
|
|
764
775
|
let!(:label) do
|
|
@@ -766,7 +777,7 @@ describe Mongoid::Interceptable do
|
|
|
766
777
|
end
|
|
767
778
|
|
|
768
779
|
before do
|
|
769
|
-
band.save
|
|
780
|
+
band.save!
|
|
770
781
|
end
|
|
771
782
|
|
|
772
783
|
it "does not execute the callback" do
|
|
@@ -778,7 +789,7 @@ describe Mongoid::Interceptable do
|
|
|
778
789
|
context "when the child is persisted" do
|
|
779
790
|
|
|
780
791
|
let(:band) do
|
|
781
|
-
Band.create(name: "Moderat")
|
|
792
|
+
Band.create!(name: "Moderat")
|
|
782
793
|
end
|
|
783
794
|
|
|
784
795
|
context "when the child is dirty" do
|
|
@@ -789,7 +800,7 @@ describe Mongoid::Interceptable do
|
|
|
789
800
|
|
|
790
801
|
before do
|
|
791
802
|
label.name = "Nothing"
|
|
792
|
-
band.save
|
|
803
|
+
band.save!
|
|
793
804
|
end
|
|
794
805
|
|
|
795
806
|
it "executes the callback" do
|
|
@@ -804,7 +815,7 @@ describe Mongoid::Interceptable do
|
|
|
804
815
|
end
|
|
805
816
|
|
|
806
817
|
before do
|
|
807
|
-
band.save
|
|
818
|
+
band.save!
|
|
808
819
|
end
|
|
809
820
|
|
|
810
821
|
it "does not execute the callback" do
|
|
@@ -829,7 +840,7 @@ describe Mongoid::Interceptable do
|
|
|
829
840
|
end
|
|
830
841
|
|
|
831
842
|
before do
|
|
832
|
-
band.save
|
|
843
|
+
band.save!
|
|
833
844
|
end
|
|
834
845
|
|
|
835
846
|
it "executes the callback" do
|
|
@@ -840,7 +851,7 @@ describe Mongoid::Interceptable do
|
|
|
840
851
|
context "when the parent is persisted" do
|
|
841
852
|
|
|
842
853
|
let(:band) do
|
|
843
|
-
Band.create(name: "Moderat")
|
|
854
|
+
Band.create!(name: "Moderat")
|
|
844
855
|
end
|
|
845
856
|
|
|
846
857
|
let!(:label) do
|
|
@@ -848,7 +859,7 @@ describe Mongoid::Interceptable do
|
|
|
848
859
|
end
|
|
849
860
|
|
|
850
861
|
before do
|
|
851
|
-
band.save
|
|
862
|
+
band.save!
|
|
852
863
|
end
|
|
853
864
|
|
|
854
865
|
it "executes the callback" do
|
|
@@ -860,7 +871,7 @@ describe Mongoid::Interceptable do
|
|
|
860
871
|
context "when the child is persisted" do
|
|
861
872
|
|
|
862
873
|
let(:band) do
|
|
863
|
-
Band.create(name: "Moderat")
|
|
874
|
+
Band.create!(name: "Moderat")
|
|
864
875
|
end
|
|
865
876
|
|
|
866
877
|
let!(:label) do
|
|
@@ -868,7 +879,7 @@ describe Mongoid::Interceptable do
|
|
|
868
879
|
end
|
|
869
880
|
|
|
870
881
|
before do
|
|
871
|
-
band.save
|
|
882
|
+
band.save!
|
|
872
883
|
end
|
|
873
884
|
|
|
874
885
|
it "executes the callback" do
|
|
@@ -892,7 +903,7 @@ describe Mongoid::Interceptable do
|
|
|
892
903
|
end
|
|
893
904
|
|
|
894
905
|
before do
|
|
895
|
-
band.save
|
|
906
|
+
band.save!
|
|
896
907
|
end
|
|
897
908
|
|
|
898
909
|
it "executes the callback" do
|
|
@@ -903,7 +914,7 @@ describe Mongoid::Interceptable do
|
|
|
903
914
|
context "when the parent is persisted" do
|
|
904
915
|
|
|
905
916
|
let(:band) do
|
|
906
|
-
Band.create(name: "Moderat")
|
|
917
|
+
Band.create!(name: "Moderat")
|
|
907
918
|
end
|
|
908
919
|
|
|
909
920
|
let!(:record) do
|
|
@@ -911,7 +922,7 @@ describe Mongoid::Interceptable do
|
|
|
911
922
|
end
|
|
912
923
|
|
|
913
924
|
before do
|
|
914
|
-
band.save
|
|
925
|
+
band.save!
|
|
915
926
|
end
|
|
916
927
|
|
|
917
928
|
it "executes the callback" do
|
|
@@ -923,16 +934,16 @@ describe Mongoid::Interceptable do
|
|
|
923
934
|
context "when the child is persisted" do
|
|
924
935
|
|
|
925
936
|
let(:band) do
|
|
926
|
-
Band.create(name: "Moderat")
|
|
937
|
+
Band.create!(name: "Moderat")
|
|
927
938
|
end
|
|
928
939
|
|
|
929
940
|
let!(:record) do
|
|
930
|
-
band.records.create(name: "Moderat")
|
|
941
|
+
band.records.create!(name: "Moderat")
|
|
931
942
|
end
|
|
932
943
|
|
|
933
944
|
before do
|
|
934
945
|
record.before_create_called = false
|
|
935
|
-
band.save
|
|
946
|
+
band.save!
|
|
936
947
|
end
|
|
937
948
|
|
|
938
949
|
it "does not execute the callback" do
|
|
@@ -956,7 +967,7 @@ describe Mongoid::Interceptable do
|
|
|
956
967
|
end
|
|
957
968
|
|
|
958
969
|
before do
|
|
959
|
-
band.save
|
|
970
|
+
band.save!
|
|
960
971
|
end
|
|
961
972
|
|
|
962
973
|
it "executes the callback" do
|
|
@@ -971,7 +982,7 @@ describe Mongoid::Interceptable do
|
|
|
971
982
|
context "when the parent is persisted" do
|
|
972
983
|
|
|
973
984
|
let(:band) do
|
|
974
|
-
Band.create(name: "Moderat")
|
|
985
|
+
Band.create!(name: "Moderat")
|
|
975
986
|
end
|
|
976
987
|
|
|
977
988
|
let!(:record) do
|
|
@@ -979,7 +990,7 @@ describe Mongoid::Interceptable do
|
|
|
979
990
|
end
|
|
980
991
|
|
|
981
992
|
before do
|
|
982
|
-
band.save
|
|
993
|
+
band.save!
|
|
983
994
|
end
|
|
984
995
|
|
|
985
996
|
it "executes the callback" do
|
|
@@ -995,15 +1006,15 @@ describe Mongoid::Interceptable do
|
|
|
995
1006
|
context "when the child is persisted" do
|
|
996
1007
|
|
|
997
1008
|
let(:band) do
|
|
998
|
-
Band.create(name: "Moderat")
|
|
1009
|
+
Band.create!(name: "Moderat")
|
|
999
1010
|
end
|
|
1000
1011
|
|
|
1001
1012
|
let!(:record) do
|
|
1002
|
-
band.records.create(name: "Moderat")
|
|
1013
|
+
band.records.create!(name: "Moderat")
|
|
1003
1014
|
end
|
|
1004
1015
|
|
|
1005
1016
|
before do
|
|
1006
|
-
band.save
|
|
1017
|
+
band.save!
|
|
1007
1018
|
end
|
|
1008
1019
|
|
|
1009
1020
|
it "executes the callback" do
|
|
@@ -1018,7 +1029,7 @@ describe Mongoid::Interceptable do
|
|
|
1018
1029
|
context "when the child is created" do
|
|
1019
1030
|
|
|
1020
1031
|
let!(:band) do
|
|
1021
|
-
Band.create
|
|
1032
|
+
Band.create!
|
|
1022
1033
|
end
|
|
1023
1034
|
|
|
1024
1035
|
let!(:label) do
|
|
@@ -1046,7 +1057,7 @@ describe Mongoid::Interceptable do
|
|
|
1046
1057
|
end
|
|
1047
1058
|
|
|
1048
1059
|
before do
|
|
1049
|
-
band.save
|
|
1060
|
+
band.save!
|
|
1050
1061
|
end
|
|
1051
1062
|
|
|
1052
1063
|
it "does not execute the callback" do
|
|
@@ -1057,7 +1068,7 @@ describe Mongoid::Interceptable do
|
|
|
1057
1068
|
context "when the parent is persisted" do
|
|
1058
1069
|
|
|
1059
1070
|
let(:band) do
|
|
1060
|
-
Band.create(name: "Moderat")
|
|
1071
|
+
Band.create!(name: "Moderat")
|
|
1061
1072
|
end
|
|
1062
1073
|
|
|
1063
1074
|
let!(:record) do
|
|
@@ -1065,7 +1076,7 @@ describe Mongoid::Interceptable do
|
|
|
1065
1076
|
end
|
|
1066
1077
|
|
|
1067
1078
|
before do
|
|
1068
|
-
band.save
|
|
1079
|
+
band.save!
|
|
1069
1080
|
end
|
|
1070
1081
|
|
|
1071
1082
|
it "does not execute the callback" do
|
|
@@ -1077,18 +1088,18 @@ describe Mongoid::Interceptable do
|
|
|
1077
1088
|
context "when the child is persisted" do
|
|
1078
1089
|
|
|
1079
1090
|
let(:band) do
|
|
1080
|
-
Band.create(name: "Moderat")
|
|
1091
|
+
Band.create!(name: "Moderat")
|
|
1081
1092
|
end
|
|
1082
1093
|
|
|
1083
1094
|
let!(:record) do
|
|
1084
|
-
band.records.create(name: "Moderat")
|
|
1095
|
+
band.records.create!(name: "Moderat")
|
|
1085
1096
|
end
|
|
1086
1097
|
|
|
1087
1098
|
context "when the child is dirty" do
|
|
1088
1099
|
|
|
1089
1100
|
before do
|
|
1090
1101
|
record.name = "Nothing"
|
|
1091
|
-
band.save
|
|
1102
|
+
band.save!
|
|
1092
1103
|
end
|
|
1093
1104
|
|
|
1094
1105
|
it "executes the callback" do
|
|
@@ -1103,7 +1114,7 @@ describe Mongoid::Interceptable do
|
|
|
1103
1114
|
context "when the child is not dirty" do
|
|
1104
1115
|
|
|
1105
1116
|
before do
|
|
1106
|
-
band.save
|
|
1117
|
+
band.save!
|
|
1107
1118
|
end
|
|
1108
1119
|
|
|
1109
1120
|
it "does not execute the callback" do
|
|
@@ -1128,7 +1139,7 @@ describe Mongoid::Interceptable do
|
|
|
1128
1139
|
end
|
|
1129
1140
|
|
|
1130
1141
|
before do
|
|
1131
|
-
band.save
|
|
1142
|
+
band.save!
|
|
1132
1143
|
end
|
|
1133
1144
|
|
|
1134
1145
|
it "executes the callback" do
|
|
@@ -1143,7 +1154,7 @@ describe Mongoid::Interceptable do
|
|
|
1143
1154
|
context "when the parent is persisted" do
|
|
1144
1155
|
|
|
1145
1156
|
let(:band) do
|
|
1146
|
-
Band.create(name: "Moderat")
|
|
1157
|
+
Band.create!(name: "Moderat")
|
|
1147
1158
|
end
|
|
1148
1159
|
|
|
1149
1160
|
let!(:record) do
|
|
@@ -1151,7 +1162,7 @@ describe Mongoid::Interceptable do
|
|
|
1151
1162
|
end
|
|
1152
1163
|
|
|
1153
1164
|
before do
|
|
1154
|
-
band.save
|
|
1165
|
+
band.save!
|
|
1155
1166
|
end
|
|
1156
1167
|
|
|
1157
1168
|
it "executes the callback" do
|
|
@@ -1166,7 +1177,7 @@ describe Mongoid::Interceptable do
|
|
|
1166
1177
|
context 'when the parent is updated' do
|
|
1167
1178
|
|
|
1168
1179
|
let(:band) do
|
|
1169
|
-
Band.create(name: "Moderat")
|
|
1180
|
+
Band.create!(name: "Moderat")
|
|
1170
1181
|
end
|
|
1171
1182
|
|
|
1172
1183
|
before do
|
|
@@ -1186,7 +1197,7 @@ describe Mongoid::Interceptable do
|
|
|
1186
1197
|
context 'when the parent is updated' do
|
|
1187
1198
|
|
|
1188
1199
|
let(:band) do
|
|
1189
|
-
Band.create(name: "Moderat")
|
|
1200
|
+
Band.create!(name: "Moderat")
|
|
1190
1201
|
end
|
|
1191
1202
|
|
|
1192
1203
|
before do
|
|
@@ -1205,15 +1216,15 @@ describe Mongoid::Interceptable do
|
|
|
1205
1216
|
context "when the child is persisted" do
|
|
1206
1217
|
|
|
1207
1218
|
let(:band) do
|
|
1208
|
-
Band.create(name: "Moderat")
|
|
1219
|
+
Band.create!(name: "Moderat")
|
|
1209
1220
|
end
|
|
1210
1221
|
|
|
1211
1222
|
let!(:record) do
|
|
1212
|
-
band.records.create(name: "Moderat")
|
|
1223
|
+
band.records.create!(name: "Moderat")
|
|
1213
1224
|
end
|
|
1214
1225
|
|
|
1215
1226
|
before do
|
|
1216
|
-
band.save
|
|
1227
|
+
band.save!
|
|
1217
1228
|
end
|
|
1218
1229
|
|
|
1219
1230
|
it "executes the callback" do
|
|
@@ -1248,7 +1259,7 @@ describe Mongoid::Interceptable do
|
|
|
1248
1259
|
end
|
|
1249
1260
|
|
|
1250
1261
|
before do
|
|
1251
|
-
band.save
|
|
1262
|
+
band.save!
|
|
1252
1263
|
end
|
|
1253
1264
|
|
|
1254
1265
|
it "executes the callback" do
|
|
@@ -1259,7 +1270,7 @@ describe Mongoid::Interceptable do
|
|
|
1259
1270
|
context "when the root is persisted" do
|
|
1260
1271
|
|
|
1261
1272
|
let(:band) do
|
|
1262
|
-
Band.create(name: "Moderat")
|
|
1273
|
+
Band.create!(name: "Moderat")
|
|
1263
1274
|
end
|
|
1264
1275
|
|
|
1265
1276
|
let!(:record) do
|
|
@@ -1271,7 +1282,7 @@ describe Mongoid::Interceptable do
|
|
|
1271
1282
|
end
|
|
1272
1283
|
|
|
1273
1284
|
before do
|
|
1274
|
-
band.save
|
|
1285
|
+
band.save!
|
|
1275
1286
|
end
|
|
1276
1287
|
|
|
1277
1288
|
it "executes the callback" do
|
|
@@ -1283,20 +1294,20 @@ describe Mongoid::Interceptable do
|
|
|
1283
1294
|
context "when the child is persisted" do
|
|
1284
1295
|
|
|
1285
1296
|
let(:band) do
|
|
1286
|
-
Band.create(name: "Moderat")
|
|
1297
|
+
Band.create!(name: "Moderat")
|
|
1287
1298
|
end
|
|
1288
1299
|
|
|
1289
1300
|
let!(:record) do
|
|
1290
|
-
band.records.create(name: "Moderat")
|
|
1301
|
+
band.records.create!(name: "Moderat")
|
|
1291
1302
|
end
|
|
1292
1303
|
|
|
1293
1304
|
let!(:track) do
|
|
1294
|
-
record.tracks.create(name: "Berlin")
|
|
1305
|
+
record.tracks.create!(name: "Berlin")
|
|
1295
1306
|
end
|
|
1296
1307
|
|
|
1297
1308
|
before do
|
|
1298
1309
|
track.before_create_called = false
|
|
1299
|
-
band.save
|
|
1310
|
+
band.save!
|
|
1300
1311
|
end
|
|
1301
1312
|
|
|
1302
1313
|
it "does not execute the callback" do
|
|
@@ -1324,7 +1335,7 @@ describe Mongoid::Interceptable do
|
|
|
1324
1335
|
end
|
|
1325
1336
|
|
|
1326
1337
|
before do
|
|
1327
|
-
band.save
|
|
1338
|
+
band.save!
|
|
1328
1339
|
end
|
|
1329
1340
|
|
|
1330
1341
|
let(:reloaded) do
|
|
@@ -1343,7 +1354,7 @@ describe Mongoid::Interceptable do
|
|
|
1343
1354
|
context "when the parent is persisted" do
|
|
1344
1355
|
|
|
1345
1356
|
let(:band) do
|
|
1346
|
-
Band.create(name: "Moderat")
|
|
1357
|
+
Band.create!(name: "Moderat")
|
|
1347
1358
|
end
|
|
1348
1359
|
|
|
1349
1360
|
let!(:record) do
|
|
@@ -1355,7 +1366,7 @@ describe Mongoid::Interceptable do
|
|
|
1355
1366
|
end
|
|
1356
1367
|
|
|
1357
1368
|
before do
|
|
1358
|
-
band.save
|
|
1369
|
+
band.save!
|
|
1359
1370
|
end
|
|
1360
1371
|
|
|
1361
1372
|
let(:reloaded) do
|
|
@@ -1375,19 +1386,19 @@ describe Mongoid::Interceptable do
|
|
|
1375
1386
|
context "when the child is persisted" do
|
|
1376
1387
|
|
|
1377
1388
|
let(:band) do
|
|
1378
|
-
Band.create(name: "Moderat")
|
|
1389
|
+
Band.create!(name: "Moderat")
|
|
1379
1390
|
end
|
|
1380
1391
|
|
|
1381
1392
|
let!(:record) do
|
|
1382
|
-
band.records.create(name: "Moderat")
|
|
1393
|
+
band.records.create!(name: "Moderat")
|
|
1383
1394
|
end
|
|
1384
1395
|
|
|
1385
1396
|
let!(:track) do
|
|
1386
|
-
record.tracks.create(name: "Berlin")
|
|
1397
|
+
record.tracks.create!(name: "Berlin")
|
|
1387
1398
|
end
|
|
1388
1399
|
|
|
1389
1400
|
before do
|
|
1390
|
-
band.save
|
|
1401
|
+
band.save!
|
|
1391
1402
|
end
|
|
1392
1403
|
|
|
1393
1404
|
let(:reloaded) do
|
|
@@ -1423,7 +1434,7 @@ describe Mongoid::Interceptable do
|
|
|
1423
1434
|
end
|
|
1424
1435
|
|
|
1425
1436
|
before do
|
|
1426
|
-
band.save
|
|
1437
|
+
band.save!
|
|
1427
1438
|
end
|
|
1428
1439
|
|
|
1429
1440
|
it "does not execute the callback" do
|
|
@@ -1434,7 +1445,7 @@ describe Mongoid::Interceptable do
|
|
|
1434
1445
|
context "when the parent is persisted" do
|
|
1435
1446
|
|
|
1436
1447
|
let(:band) do
|
|
1437
|
-
Band.create(name: "Moderat")
|
|
1448
|
+
Band.create!(name: "Moderat")
|
|
1438
1449
|
end
|
|
1439
1450
|
|
|
1440
1451
|
let!(:record) do
|
|
@@ -1446,7 +1457,7 @@ describe Mongoid::Interceptable do
|
|
|
1446
1457
|
end
|
|
1447
1458
|
|
|
1448
1459
|
before do
|
|
1449
|
-
band.save
|
|
1460
|
+
band.save!
|
|
1450
1461
|
end
|
|
1451
1462
|
|
|
1452
1463
|
it "does not execute the callback" do
|
|
@@ -1458,22 +1469,22 @@ describe Mongoid::Interceptable do
|
|
|
1458
1469
|
context "when the child is persisted" do
|
|
1459
1470
|
|
|
1460
1471
|
let(:band) do
|
|
1461
|
-
Band.create(name: "Moderat")
|
|
1472
|
+
Band.create!(name: "Moderat")
|
|
1462
1473
|
end
|
|
1463
1474
|
|
|
1464
1475
|
let!(:record) do
|
|
1465
|
-
band.records.create(name: "Moderat")
|
|
1476
|
+
band.records.create!(name: "Moderat")
|
|
1466
1477
|
end
|
|
1467
1478
|
|
|
1468
1479
|
let!(:track) do
|
|
1469
|
-
record.tracks.create(name: "Berlin")
|
|
1480
|
+
record.tracks.create!(name: "Berlin")
|
|
1470
1481
|
end
|
|
1471
1482
|
|
|
1472
1483
|
context "when the child is dirty" do
|
|
1473
1484
|
|
|
1474
1485
|
before do
|
|
1475
1486
|
track.name = "Rusty Nails"
|
|
1476
|
-
band.save
|
|
1487
|
+
band.save!
|
|
1477
1488
|
end
|
|
1478
1489
|
|
|
1479
1490
|
let(:reloaded) do
|
|
@@ -1492,7 +1503,7 @@ describe Mongoid::Interceptable do
|
|
|
1492
1503
|
context "when the child is not dirty" do
|
|
1493
1504
|
|
|
1494
1505
|
before do
|
|
1495
|
-
band.save
|
|
1506
|
+
band.save!
|
|
1496
1507
|
end
|
|
1497
1508
|
|
|
1498
1509
|
it "does not execute the callback" do
|
|
@@ -1540,7 +1551,7 @@ describe Mongoid::Interceptable do
|
|
|
1540
1551
|
end
|
|
1541
1552
|
|
|
1542
1553
|
before do
|
|
1543
|
-
band.save
|
|
1554
|
+
band.save!
|
|
1544
1555
|
end
|
|
1545
1556
|
|
|
1546
1557
|
it "executes the callback" do
|
|
@@ -1551,7 +1562,7 @@ describe Mongoid::Interceptable do
|
|
|
1551
1562
|
context "when the parent is persisted" do
|
|
1552
1563
|
|
|
1553
1564
|
let(:band) do
|
|
1554
|
-
Band.create(name: "Moderat")
|
|
1565
|
+
Band.create!(name: "Moderat")
|
|
1555
1566
|
end
|
|
1556
1567
|
|
|
1557
1568
|
let!(:record) do
|
|
@@ -1563,7 +1574,7 @@ describe Mongoid::Interceptable do
|
|
|
1563
1574
|
end
|
|
1564
1575
|
|
|
1565
1576
|
before do
|
|
1566
|
-
band.save
|
|
1577
|
+
band.save!
|
|
1567
1578
|
end
|
|
1568
1579
|
|
|
1569
1580
|
it "executes the callback" do
|
|
@@ -1575,19 +1586,19 @@ describe Mongoid::Interceptable do
|
|
|
1575
1586
|
context "when the child is persisted" do
|
|
1576
1587
|
|
|
1577
1588
|
let(:band) do
|
|
1578
|
-
Band.create(name: "Moderat")
|
|
1589
|
+
Band.create!(name: "Moderat")
|
|
1579
1590
|
end
|
|
1580
1591
|
|
|
1581
1592
|
let!(:record) do
|
|
1582
|
-
band.records.create(name: "Moderat")
|
|
1593
|
+
band.records.create!(name: "Moderat")
|
|
1583
1594
|
end
|
|
1584
1595
|
|
|
1585
1596
|
let!(:track) do
|
|
1586
|
-
record.tracks.create(name: "Berlin")
|
|
1597
|
+
record.tracks.create!(name: "Berlin")
|
|
1587
1598
|
end
|
|
1588
1599
|
|
|
1589
1600
|
before do
|
|
1590
|
-
band.save
|
|
1601
|
+
band.save!
|
|
1591
1602
|
end
|
|
1592
1603
|
|
|
1593
1604
|
it "executes the callback" do
|
|
@@ -1614,11 +1625,11 @@ describe Mongoid::Interceptable do
|
|
|
1614
1625
|
end
|
|
1615
1626
|
|
|
1616
1627
|
before do
|
|
1617
|
-
parent.save
|
|
1628
|
+
parent.save!
|
|
1618
1629
|
end
|
|
1619
1630
|
|
|
1620
1631
|
it "does not duplicate the child documents" do
|
|
1621
|
-
parent.children.create(position: 1)
|
|
1632
|
+
parent.children.create!(position: 1)
|
|
1622
1633
|
expect(ParentDoc.find(parent.id).children.size).to eq(1)
|
|
1623
1634
|
end
|
|
1624
1635
|
end
|
|
@@ -1669,7 +1680,7 @@ describe Mongoid::Interceptable do
|
|
|
1669
1680
|
context "when updating a document" do
|
|
1670
1681
|
|
|
1671
1682
|
let(:person) do
|
|
1672
|
-
Person.create
|
|
1683
|
+
Person.create!.tap do |person|
|
|
1673
1684
|
person.attributes = {
|
|
1674
1685
|
mode: :prevent_save,
|
|
1675
1686
|
title: "Associate",
|
|
@@ -1703,8 +1714,8 @@ describe Mongoid::Interceptable do
|
|
|
1703
1714
|
context "when loading a model multiple times" do
|
|
1704
1715
|
|
|
1705
1716
|
before do
|
|
1706
|
-
load "
|
|
1707
|
-
load "
|
|
1717
|
+
load File.join(MODELS, "callback_test.rb")
|
|
1718
|
+
load File.join(MODELS, "callback_test.rb")
|
|
1708
1719
|
end
|
|
1709
1720
|
|
|
1710
1721
|
let(:callback) do
|
|
@@ -1719,4 +1730,65 @@ describe Mongoid::Interceptable do
|
|
|
1719
1730
|
end
|
|
1720
1731
|
end
|
|
1721
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
|
|
1722
1794
|
end
|