mongoid 6.4.8 → 7.5.4
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 +34 -20
- data/Rakefile +75 -6
- data/lib/config/locales/en.yml +149 -66
- 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 +375 -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 +227 -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 +502 -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 +27 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +24 -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 +43 -48
- 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 +5 -10
- data/lib/mongoid/attributes.rb +94 -91
- data/lib/mongoid/cacheable.rb +7 -10
- data/lib/mongoid/changeable.rb +7 -61
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +17 -18
- data/lib/mongoid/clients/sessions.rb +22 -10
- 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 +9 -13
- data/lib/mongoid/config/environment.rb +51 -13
- 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 +123 -40
- 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 +7 -38
- data/lib/mongoid/contextual/map_reduce.rb +5 -33
- data/lib/mongoid/contextual/memory.rb +167 -70
- data/lib/mongoid/contextual/mongo.rb +295 -106
- data/lib/mongoid/contextual/none.rb +88 -28
- data/lib/mongoid/contextual/queryable.rb +2 -3
- data/lib/mongoid/contextual.rb +7 -9
- data/lib/mongoid/copyable.rb +20 -14
- 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 +2 -5
- data/lib/mongoid/criteria/modifiable.rb +10 -22
- data/lib/mongoid/criteria/options.rb +4 -5
- 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 +5 -26
- 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 +4 -25
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +4 -13
- 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 +9 -16
- data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/string.rb +4 -19
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -10
- data/lib/mongoid/criteria/queryable/extensions/time.rb +4 -9
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +13 -6
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -4
- data/lib/mongoid/criteria/queryable/key.rb +101 -27
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +205 -44
- data/lib/mongoid/criteria/queryable/optional.rb +5 -48
- data/lib/mongoid/criteria/queryable/options.rb +2 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +14 -19
- data/lib/mongoid/criteria/queryable/selectable.rb +436 -166
- data/lib/mongoid/criteria/queryable/selector.rb +45 -55
- 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 +90 -75
- data/lib/mongoid/document.rb +43 -74
- 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 +25 -15
- 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 +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 +28 -0
- 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 +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 +15 -1
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +33 -42
- 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 +56 -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 +3 -4
- data/lib/mongoid/extensions/set.rb +2 -7
- data/lib/mongoid/extensions/string.rb +21 -41
- 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 -7
- data/lib/mongoid/factory.rb +59 -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 +37 -19
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +245 -70
- data/lib/mongoid/findable.rb +78 -27
- data/lib/mongoid/indexable/specification.rb +3 -16
- data/lib/mongoid/indexable/validators/options.rb +2 -7
- data/lib/mongoid/indexable.rb +10 -22
- data/lib/mongoid/inspectable.rb +4 -11
- data/lib/mongoid/interceptable.rb +18 -35
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +3 -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 +11 -26
- data/lib/mongoid/persistable/destroyable.rb +11 -10
- 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 +60 -18
- data/lib/mongoid/persistable/unsettable.rb +8 -8
- data/lib/mongoid/persistable/updatable.rb +32 -20
- data/lib/mongoid/persistable/upsertable.rb +4 -9
- data/lib/mongoid/persistable.rb +136 -42
- data/lib/mongoid/persistence_context.rb +101 -48
- data/lib/mongoid/positional.rb +3 -6
- data/lib/mongoid/query_cache.rb +117 -130
- 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 +19 -44
- data/lib/mongoid/selectable.rb +8 -17
- data/lib/mongoid/serializable.rb +28 -33
- data/lib/mongoid/shardable.rb +108 -21
- 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 +132 -0
- data/lib/mongoid/traversable.rb +183 -60
- 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 +25 -38
- data/lib/mongoid/validatable.rb +16 -35
- data/lib/mongoid/version.rb +3 -2
- data/lib/mongoid/warnings.rb +29 -0
- data/lib/mongoid.rb +34 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -2
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +53 -29
- 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 +14 -3
- data/spec/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/app_spec.rb +349 -0
- data/spec/integration/associations/belongs_to_spec.rb +15 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +57 -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 +30 -1
- data/spec/integration/i18n_fallbacks_spec.rb +103 -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 +4673 -0
- data/spec/mongoid/association/embedded/embeds_many_models.rb +190 -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 +3803 -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 +2286 -0
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +4112 -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 +51 -2
- 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 +57 -10
- data/spec/mongoid/attributes/dynamic_spec.rb +152 -0
- data/spec/mongoid/attributes/nested_spec.rb +98 -78
- 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 +84 -127
- data/spec/mongoid/attributes_spec.rb +461 -34
- data/spec/mongoid/cacheable_spec.rb +6 -4
- data/spec/mongoid/changeable_spec.rb +60 -35
- data/spec/mongoid/clients/factory_spec.rb +98 -9
- data/spec/mongoid/clients/options_spec.rb +93 -60
- data/spec/mongoid/clients/sessions_spec.rb +34 -33
- data/spec/mongoid/clients/transactions_spec.rb +415 -0
- data/spec/mongoid/clients_spec.rb +108 -16
- data/spec/mongoid/composable_spec.rb +2 -0
- data/spec/mongoid/config/environment_spec.rb +126 -8
- data/spec/mongoid/config/options_spec.rb +22 -3
- data/spec/mongoid/config_spec.rb +357 -2
- 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 +242 -81
- data/spec/mongoid/contextual/geo_near_spec.rb +30 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +24 -7
- data/spec/mongoid/contextual/memory_spec.rb +870 -88
- data/spec/mongoid/contextual/mongo_spec.rb +1339 -184
- data/spec/mongoid/contextual/none_spec.rb +45 -71
- data/spec/mongoid/copyable_spec.rb +294 -29
- 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 +215 -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 +53 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +239 -178
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +9 -7
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +46 -1
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +42 -23
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +30 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +50 -6
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +145 -12
- data/spec/mongoid/criteria/queryable/optional_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +14 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -1
- 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 +1155 -2927
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +114 -2
- data/spec/mongoid/criteria/queryable/smash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +298 -0
- data/spec/mongoid/criteria/scopable_spec.rb +129 -0
- data/spec/mongoid/criteria_projection_spec.rb +410 -0
- data/spec/mongoid/criteria_spec.rb +826 -478
- 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 +131 -31
- 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 +51 -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 +36 -58
- 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 +123 -1
- 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 +20 -35
- data/spec/mongoid/extensions/range_spec.rb +9 -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 +301 -23
- 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 +419 -37
- data/spec/mongoid/findable_spec.rb +83 -19
- data/spec/mongoid/indexable/specification_spec.rb +2 -0
- data/spec/mongoid/indexable_spec.rb +54 -14
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +189 -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 +91 -7
- data/spec/mongoid/persistable/renamable_spec.rb +18 -2
- data/spec/mongoid/persistable/savable_spec.rb +189 -26
- data/spec/mongoid/persistable/settable_spec.rb +149 -18
- 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 +106 -15
- data/spec/mongoid/persistence_context_spec.rb +29 -2
- 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 +529 -85
- data/spec/mongoid/relations/proxy_spec.rb +126 -124
- data/spec/mongoid/reloadable_spec.rb +298 -20
- data/spec/mongoid/scopable_spec.rb +102 -37
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +160 -29
- data/spec/mongoid/shardable_models.rb +75 -0
- data/spec/mongoid/shardable_spec.rb +251 -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 +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 +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 +102 -73
- data/spec/mongoid/validatable_spec.rb +5 -3
- data/spec/mongoid_spec.rb +9 -1
- 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 +378 -0
- data/spec/shared/lib/mrss/docker_runner.rb +291 -0
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +238 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +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 +325 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +392 -0
- data/spec/shared/shlib/set_env.sh +169 -0
- data/spec/spec_helper.rb +70 -83
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +27 -75
- data/spec/support/expectations.rb +21 -3
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +31 -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/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 +15 -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 +7 -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/schema_maps/schema_map_aws.json +17 -0
- data/spec/support/schema_maps/schema_map_aws_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_azure.json +17 -0
- data/spec/support/schema_maps/schema_map_azure_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_gcp.json +17 -0
- data/spec/support/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_kmip.json +17 -0
- data/spec/support/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_local.json +18 -0
- data/spec/support/schema_maps/schema_map_local_key_alt_names.json +12 -0
- data/spec/support/shared/time.rb +53 -0
- data/spec/support/spec_config.rb +28 -6
- data.tar.gz.sig +0 -0
- metadata +1304 -843
- metadata.gz.sig +3 -5
- data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
- data/lib/mongoid/matchable/all.rb +0 -27
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -72
- data/lib/mongoid/matchable/elem_match.rb +0 -28
- 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/mongoid/relations/accessors.rb +0 -267
- data/lib/mongoid/relations/auto_save.rb +0 -94
- 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 -160
- 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 -36
- data/lib/mongoid/relations/embedded/batchable.rb +0 -384
- data/lib/mongoid/relations/embedded/in.rb +0 -241
- data/lib/mongoid/relations/embedded/many.rb +0 -683
- data/lib/mongoid/relations/embedded/one.rb +0 -235
- data/lib/mongoid/relations/macros.rb +0 -367
- data/lib/mongoid/relations/many.rb +0 -242
- 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 -215
- data/lib/mongoid/relations/referenced/in.rb +0 -304
- data/lib/mongoid/relations/referenced/many.rb +0 -812
- data/lib/mongoid/relations/referenced/many_to_many.rb +0 -479
- data/lib/mongoid/relations/referenced/one.rb +0 -290
- data/lib/mongoid/relations/reflections.rb +0 -64
- data/lib/mongoid/relations/synchronization.rb +0 -169
- data/lib/mongoid/relations/targets/enumerable.rb +0 -493
- data/lib/mongoid/relations/targets.rb +0 -2
- data/lib/mongoid/relations/touchable.rb +0 -97
- 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 -16
- data/spec/app/models/album.rb +0 -18
- 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 -87
- 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 -31
- 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 -16
- 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/delegating_patient.rb +0 -16
- 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 -6
- 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 -11
- data/spec/app/models/ordered_preference.rb +0 -6
- data/spec/app/models/oscar.rb +0 -14
- 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 -10
- 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 -52
- 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 -5
- 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/criteria/queryable/forwardable_spec.rb +0 -87
- 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/elem_match_spec.rb +0 -86
- 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/mongoid/relations/accessors_spec.rb +0 -821
- data/spec/mongoid/relations/auto_save_spec.rb +0 -314
- 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 -253
- 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 -450
- 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 -133
- 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 -279
- 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 -4412
- data/spec/mongoid/relations/embedded/one_spec.rb +0 -1068
- data/spec/mongoid/relations/macros_spec.rb +0 -1039
- data/spec/mongoid/relations/metadata_spec.rb +0 -1985
- 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 -1366
- data/spec/mongoid/relations/referenced/many_spec.rb +0 -3816
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +0 -3577
- 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 -495
- data/spec/mongoid/relations/targets/enumerable_spec.rb +0 -1825
- data/spec/mongoid/relations/touchable_spec.rb +0 -402
- data/spec/mongoid/relations_spec.rb +0 -189
- data/spec/support/cluster_config.rb +0 -158
- data/spec/support/session_registry.rb +0 -50
- /data/spec/{app → support}/models/array_field.rb +0 -0
|
@@ -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
|
|
@@ -526,6 +537,8 @@ describe Mongoid::Interceptable do
|
|
|
526
537
|
end
|
|
527
538
|
|
|
528
539
|
after(:all) do
|
|
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.
|
|
529
542
|
begin; Band.reset_callbacks(:rearrange); rescue; end
|
|
530
543
|
end
|
|
531
544
|
|
|
@@ -539,7 +552,7 @@ describe Mongoid::Interceptable do
|
|
|
539
552
|
|
|
540
553
|
it "does not cascade to the child" do
|
|
541
554
|
Band.accepts_nested_attributes_for :records, allow_destroy: true
|
|
542
|
-
expect(band.update_attributes(attributes)).to be true
|
|
555
|
+
expect(band.update_attributes!(attributes)).to be true
|
|
543
556
|
end
|
|
544
557
|
end
|
|
545
558
|
end
|
|
@@ -570,7 +583,7 @@ describe Mongoid::Interceptable do
|
|
|
570
583
|
|
|
571
584
|
it "only executes the callbacks once for each embed" do
|
|
572
585
|
expect(note).to receive(:update_saved).twice
|
|
573
|
-
band.save
|
|
586
|
+
band.save!
|
|
574
587
|
end
|
|
575
588
|
end
|
|
576
589
|
end
|
|
@@ -579,7 +592,7 @@ describe Mongoid::Interceptable do
|
|
|
579
592
|
context "when cascading after initialize" do
|
|
580
593
|
|
|
581
594
|
let!(:person) do
|
|
582
|
-
Person.create
|
|
595
|
+
Person.create!
|
|
583
596
|
end
|
|
584
597
|
|
|
585
598
|
before do
|
|
@@ -597,7 +610,7 @@ describe Mongoid::Interceptable do
|
|
|
597
610
|
it "raises an error" do
|
|
598
611
|
expect {
|
|
599
612
|
Band.has_and_belongs_to_many :tags, cascade_callbacks: true
|
|
600
|
-
}.to raise_error(Mongoid::Errors::
|
|
613
|
+
}.to raise_error(Mongoid::Errors::InvalidRelationOption)
|
|
601
614
|
end
|
|
602
615
|
end
|
|
603
616
|
|
|
@@ -618,7 +631,7 @@ describe Mongoid::Interceptable do
|
|
|
618
631
|
end
|
|
619
632
|
|
|
620
633
|
before do
|
|
621
|
-
band.save
|
|
634
|
+
band.save!
|
|
622
635
|
end
|
|
623
636
|
|
|
624
637
|
it "executes the callback" do
|
|
@@ -629,7 +642,7 @@ describe Mongoid::Interceptable do
|
|
|
629
642
|
context "when the parent is persisted" do
|
|
630
643
|
|
|
631
644
|
let(:band) do
|
|
632
|
-
Band.create(name: "Moderat")
|
|
645
|
+
Band.create!(name: "Moderat")
|
|
633
646
|
end
|
|
634
647
|
|
|
635
648
|
let!(:label) do
|
|
@@ -637,7 +650,7 @@ describe Mongoid::Interceptable do
|
|
|
637
650
|
end
|
|
638
651
|
|
|
639
652
|
before do
|
|
640
|
-
band.save
|
|
653
|
+
band.save!
|
|
641
654
|
end
|
|
642
655
|
|
|
643
656
|
it "executes the callback" do
|
|
@@ -649,7 +662,7 @@ describe Mongoid::Interceptable do
|
|
|
649
662
|
context "when the child is persisted" do
|
|
650
663
|
|
|
651
664
|
let(:band) do
|
|
652
|
-
Band.create(name: "Moderat")
|
|
665
|
+
Band.create!(name: "Moderat")
|
|
653
666
|
end
|
|
654
667
|
|
|
655
668
|
let!(:label) do
|
|
@@ -658,7 +671,7 @@ describe Mongoid::Interceptable do
|
|
|
658
671
|
|
|
659
672
|
before do
|
|
660
673
|
label.after_create_called = false
|
|
661
|
-
band.save
|
|
674
|
+
band.save!
|
|
662
675
|
end
|
|
663
676
|
|
|
664
677
|
it "does not execute the callback" do
|
|
@@ -682,7 +695,7 @@ describe Mongoid::Interceptable do
|
|
|
682
695
|
end
|
|
683
696
|
|
|
684
697
|
before do
|
|
685
|
-
band.save
|
|
698
|
+
band.save!
|
|
686
699
|
end
|
|
687
700
|
|
|
688
701
|
it "executes the callback" do
|
|
@@ -693,7 +706,7 @@ describe Mongoid::Interceptable do
|
|
|
693
706
|
context "when the parent is persisted" do
|
|
694
707
|
|
|
695
708
|
let(:band) do
|
|
696
|
-
Band.create(name: "Moderat")
|
|
709
|
+
Band.create!(name: "Moderat")
|
|
697
710
|
end
|
|
698
711
|
|
|
699
712
|
let!(:label) do
|
|
@@ -701,7 +714,7 @@ describe Mongoid::Interceptable do
|
|
|
701
714
|
end
|
|
702
715
|
|
|
703
716
|
before do
|
|
704
|
-
band.save
|
|
717
|
+
band.save!
|
|
705
718
|
end
|
|
706
719
|
|
|
707
720
|
it "executes the callback" do
|
|
@@ -713,7 +726,7 @@ describe Mongoid::Interceptable do
|
|
|
713
726
|
context "when the child is persisted" do
|
|
714
727
|
|
|
715
728
|
let(:band) do
|
|
716
|
-
Band.create(name: "Moderat")
|
|
729
|
+
Band.create!(name: "Moderat")
|
|
717
730
|
end
|
|
718
731
|
|
|
719
732
|
let!(:label) do
|
|
@@ -721,7 +734,7 @@ describe Mongoid::Interceptable do
|
|
|
721
734
|
end
|
|
722
735
|
|
|
723
736
|
before do
|
|
724
|
-
band.save
|
|
737
|
+
band.save!
|
|
725
738
|
end
|
|
726
739
|
|
|
727
740
|
it "executes the callback" do
|
|
@@ -745,7 +758,7 @@ describe Mongoid::Interceptable do
|
|
|
745
758
|
end
|
|
746
759
|
|
|
747
760
|
before do
|
|
748
|
-
band.save
|
|
761
|
+
band.save!
|
|
749
762
|
end
|
|
750
763
|
|
|
751
764
|
it "does not execute the callback" do
|
|
@@ -756,7 +769,7 @@ describe Mongoid::Interceptable do
|
|
|
756
769
|
context "when the parent is persisted" do
|
|
757
770
|
|
|
758
771
|
let(:band) do
|
|
759
|
-
Band.create(name: "Moderat")
|
|
772
|
+
Band.create!(name: "Moderat")
|
|
760
773
|
end
|
|
761
774
|
|
|
762
775
|
let!(:label) do
|
|
@@ -764,7 +777,7 @@ describe Mongoid::Interceptable do
|
|
|
764
777
|
end
|
|
765
778
|
|
|
766
779
|
before do
|
|
767
|
-
band.save
|
|
780
|
+
band.save!
|
|
768
781
|
end
|
|
769
782
|
|
|
770
783
|
it "does not execute the callback" do
|
|
@@ -776,7 +789,7 @@ describe Mongoid::Interceptable do
|
|
|
776
789
|
context "when the child is persisted" do
|
|
777
790
|
|
|
778
791
|
let(:band) do
|
|
779
|
-
Band.create(name: "Moderat")
|
|
792
|
+
Band.create!(name: "Moderat")
|
|
780
793
|
end
|
|
781
794
|
|
|
782
795
|
context "when the child is dirty" do
|
|
@@ -787,7 +800,7 @@ describe Mongoid::Interceptable do
|
|
|
787
800
|
|
|
788
801
|
before do
|
|
789
802
|
label.name = "Nothing"
|
|
790
|
-
band.save
|
|
803
|
+
band.save!
|
|
791
804
|
end
|
|
792
805
|
|
|
793
806
|
it "executes the callback" do
|
|
@@ -802,7 +815,7 @@ describe Mongoid::Interceptable do
|
|
|
802
815
|
end
|
|
803
816
|
|
|
804
817
|
before do
|
|
805
|
-
band.save
|
|
818
|
+
band.save!
|
|
806
819
|
end
|
|
807
820
|
|
|
808
821
|
it "does not execute the callback" do
|
|
@@ -827,7 +840,7 @@ describe Mongoid::Interceptable do
|
|
|
827
840
|
end
|
|
828
841
|
|
|
829
842
|
before do
|
|
830
|
-
band.save
|
|
843
|
+
band.save!
|
|
831
844
|
end
|
|
832
845
|
|
|
833
846
|
it "executes the callback" do
|
|
@@ -838,7 +851,7 @@ describe Mongoid::Interceptable do
|
|
|
838
851
|
context "when the parent is persisted" do
|
|
839
852
|
|
|
840
853
|
let(:band) do
|
|
841
|
-
Band.create(name: "Moderat")
|
|
854
|
+
Band.create!(name: "Moderat")
|
|
842
855
|
end
|
|
843
856
|
|
|
844
857
|
let!(:label) do
|
|
@@ -846,7 +859,7 @@ describe Mongoid::Interceptable do
|
|
|
846
859
|
end
|
|
847
860
|
|
|
848
861
|
before do
|
|
849
|
-
band.save
|
|
862
|
+
band.save!
|
|
850
863
|
end
|
|
851
864
|
|
|
852
865
|
it "executes the callback" do
|
|
@@ -858,7 +871,7 @@ describe Mongoid::Interceptable do
|
|
|
858
871
|
context "when the child is persisted" do
|
|
859
872
|
|
|
860
873
|
let(:band) do
|
|
861
|
-
Band.create(name: "Moderat")
|
|
874
|
+
Band.create!(name: "Moderat")
|
|
862
875
|
end
|
|
863
876
|
|
|
864
877
|
let!(:label) do
|
|
@@ -866,7 +879,7 @@ describe Mongoid::Interceptable do
|
|
|
866
879
|
end
|
|
867
880
|
|
|
868
881
|
before do
|
|
869
|
-
band.save
|
|
882
|
+
band.save!
|
|
870
883
|
end
|
|
871
884
|
|
|
872
885
|
it "executes the callback" do
|
|
@@ -890,7 +903,7 @@ describe Mongoid::Interceptable do
|
|
|
890
903
|
end
|
|
891
904
|
|
|
892
905
|
before do
|
|
893
|
-
band.save
|
|
906
|
+
band.save!
|
|
894
907
|
end
|
|
895
908
|
|
|
896
909
|
it "executes the callback" do
|
|
@@ -901,7 +914,7 @@ describe Mongoid::Interceptable do
|
|
|
901
914
|
context "when the parent is persisted" do
|
|
902
915
|
|
|
903
916
|
let(:band) do
|
|
904
|
-
Band.create(name: "Moderat")
|
|
917
|
+
Band.create!(name: "Moderat")
|
|
905
918
|
end
|
|
906
919
|
|
|
907
920
|
let!(:record) do
|
|
@@ -909,7 +922,7 @@ describe Mongoid::Interceptable do
|
|
|
909
922
|
end
|
|
910
923
|
|
|
911
924
|
before do
|
|
912
|
-
band.save
|
|
925
|
+
band.save!
|
|
913
926
|
end
|
|
914
927
|
|
|
915
928
|
it "executes the callback" do
|
|
@@ -921,16 +934,16 @@ describe Mongoid::Interceptable do
|
|
|
921
934
|
context "when the child is persisted" do
|
|
922
935
|
|
|
923
936
|
let(:band) do
|
|
924
|
-
Band.create(name: "Moderat")
|
|
937
|
+
Band.create!(name: "Moderat")
|
|
925
938
|
end
|
|
926
939
|
|
|
927
940
|
let!(:record) do
|
|
928
|
-
band.records.create(name: "Moderat")
|
|
941
|
+
band.records.create!(name: "Moderat")
|
|
929
942
|
end
|
|
930
943
|
|
|
931
944
|
before do
|
|
932
945
|
record.before_create_called = false
|
|
933
|
-
band.save
|
|
946
|
+
band.save!
|
|
934
947
|
end
|
|
935
948
|
|
|
936
949
|
it "does not execute the callback" do
|
|
@@ -954,7 +967,7 @@ describe Mongoid::Interceptable do
|
|
|
954
967
|
end
|
|
955
968
|
|
|
956
969
|
before do
|
|
957
|
-
band.save
|
|
970
|
+
band.save!
|
|
958
971
|
end
|
|
959
972
|
|
|
960
973
|
it "executes the callback" do
|
|
@@ -969,7 +982,7 @@ describe Mongoid::Interceptable do
|
|
|
969
982
|
context "when the parent is persisted" do
|
|
970
983
|
|
|
971
984
|
let(:band) do
|
|
972
|
-
Band.create(name: "Moderat")
|
|
985
|
+
Band.create!(name: "Moderat")
|
|
973
986
|
end
|
|
974
987
|
|
|
975
988
|
let!(:record) do
|
|
@@ -977,7 +990,7 @@ describe Mongoid::Interceptable do
|
|
|
977
990
|
end
|
|
978
991
|
|
|
979
992
|
before do
|
|
980
|
-
band.save
|
|
993
|
+
band.save!
|
|
981
994
|
end
|
|
982
995
|
|
|
983
996
|
it "executes the callback" do
|
|
@@ -993,15 +1006,15 @@ describe Mongoid::Interceptable do
|
|
|
993
1006
|
context "when the child is persisted" do
|
|
994
1007
|
|
|
995
1008
|
let(:band) do
|
|
996
|
-
Band.create(name: "Moderat")
|
|
1009
|
+
Band.create!(name: "Moderat")
|
|
997
1010
|
end
|
|
998
1011
|
|
|
999
1012
|
let!(:record) do
|
|
1000
|
-
band.records.create(name: "Moderat")
|
|
1013
|
+
band.records.create!(name: "Moderat")
|
|
1001
1014
|
end
|
|
1002
1015
|
|
|
1003
1016
|
before do
|
|
1004
|
-
band.save
|
|
1017
|
+
band.save!
|
|
1005
1018
|
end
|
|
1006
1019
|
|
|
1007
1020
|
it "executes the callback" do
|
|
@@ -1016,7 +1029,7 @@ describe Mongoid::Interceptable do
|
|
|
1016
1029
|
context "when the child is created" do
|
|
1017
1030
|
|
|
1018
1031
|
let!(:band) do
|
|
1019
|
-
Band.create
|
|
1032
|
+
Band.create!
|
|
1020
1033
|
end
|
|
1021
1034
|
|
|
1022
1035
|
let!(:label) do
|
|
@@ -1044,7 +1057,7 @@ describe Mongoid::Interceptable do
|
|
|
1044
1057
|
end
|
|
1045
1058
|
|
|
1046
1059
|
before do
|
|
1047
|
-
band.save
|
|
1060
|
+
band.save!
|
|
1048
1061
|
end
|
|
1049
1062
|
|
|
1050
1063
|
it "does not execute the callback" do
|
|
@@ -1055,7 +1068,7 @@ describe Mongoid::Interceptable do
|
|
|
1055
1068
|
context "when the parent is persisted" do
|
|
1056
1069
|
|
|
1057
1070
|
let(:band) do
|
|
1058
|
-
Band.create(name: "Moderat")
|
|
1071
|
+
Band.create!(name: "Moderat")
|
|
1059
1072
|
end
|
|
1060
1073
|
|
|
1061
1074
|
let!(:record) do
|
|
@@ -1063,7 +1076,7 @@ describe Mongoid::Interceptable do
|
|
|
1063
1076
|
end
|
|
1064
1077
|
|
|
1065
1078
|
before do
|
|
1066
|
-
band.save
|
|
1079
|
+
band.save!
|
|
1067
1080
|
end
|
|
1068
1081
|
|
|
1069
1082
|
it "does not execute the callback" do
|
|
@@ -1075,18 +1088,18 @@ describe Mongoid::Interceptable do
|
|
|
1075
1088
|
context "when the child is persisted" do
|
|
1076
1089
|
|
|
1077
1090
|
let(:band) do
|
|
1078
|
-
Band.create(name: "Moderat")
|
|
1091
|
+
Band.create!(name: "Moderat")
|
|
1079
1092
|
end
|
|
1080
1093
|
|
|
1081
1094
|
let!(:record) do
|
|
1082
|
-
band.records.create(name: "Moderat")
|
|
1095
|
+
band.records.create!(name: "Moderat")
|
|
1083
1096
|
end
|
|
1084
1097
|
|
|
1085
1098
|
context "when the child is dirty" do
|
|
1086
1099
|
|
|
1087
1100
|
before do
|
|
1088
1101
|
record.name = "Nothing"
|
|
1089
|
-
band.save
|
|
1102
|
+
band.save!
|
|
1090
1103
|
end
|
|
1091
1104
|
|
|
1092
1105
|
it "executes the callback" do
|
|
@@ -1101,7 +1114,7 @@ describe Mongoid::Interceptable do
|
|
|
1101
1114
|
context "when the child is not dirty" do
|
|
1102
1115
|
|
|
1103
1116
|
before do
|
|
1104
|
-
band.save
|
|
1117
|
+
band.save!
|
|
1105
1118
|
end
|
|
1106
1119
|
|
|
1107
1120
|
it "does not execute the callback" do
|
|
@@ -1126,7 +1139,7 @@ describe Mongoid::Interceptable do
|
|
|
1126
1139
|
end
|
|
1127
1140
|
|
|
1128
1141
|
before do
|
|
1129
|
-
band.save
|
|
1142
|
+
band.save!
|
|
1130
1143
|
end
|
|
1131
1144
|
|
|
1132
1145
|
it "executes the callback" do
|
|
@@ -1141,7 +1154,7 @@ describe Mongoid::Interceptable do
|
|
|
1141
1154
|
context "when the parent is persisted" do
|
|
1142
1155
|
|
|
1143
1156
|
let(:band) do
|
|
1144
|
-
Band.create(name: "Moderat")
|
|
1157
|
+
Band.create!(name: "Moderat")
|
|
1145
1158
|
end
|
|
1146
1159
|
|
|
1147
1160
|
let!(:record) do
|
|
@@ -1149,7 +1162,7 @@ describe Mongoid::Interceptable do
|
|
|
1149
1162
|
end
|
|
1150
1163
|
|
|
1151
1164
|
before do
|
|
1152
|
-
band.save
|
|
1165
|
+
band.save!
|
|
1153
1166
|
end
|
|
1154
1167
|
|
|
1155
1168
|
it "executes the callback" do
|
|
@@ -1164,7 +1177,7 @@ describe Mongoid::Interceptable do
|
|
|
1164
1177
|
context 'when the parent is updated' do
|
|
1165
1178
|
|
|
1166
1179
|
let(:band) do
|
|
1167
|
-
Band.create(name: "Moderat")
|
|
1180
|
+
Band.create!(name: "Moderat")
|
|
1168
1181
|
end
|
|
1169
1182
|
|
|
1170
1183
|
before do
|
|
@@ -1181,18 +1194,37 @@ describe Mongoid::Interceptable do
|
|
|
1181
1194
|
end
|
|
1182
1195
|
end
|
|
1183
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
|
|
1214
|
+
end
|
|
1215
|
+
|
|
1184
1216
|
context "when the child is persisted" do
|
|
1185
1217
|
|
|
1186
1218
|
let(:band) do
|
|
1187
|
-
Band.create(name: "Moderat")
|
|
1219
|
+
Band.create!(name: "Moderat")
|
|
1188
1220
|
end
|
|
1189
1221
|
|
|
1190
1222
|
let!(:record) do
|
|
1191
|
-
band.records.create(name: "Moderat")
|
|
1223
|
+
band.records.create!(name: "Moderat")
|
|
1192
1224
|
end
|
|
1193
1225
|
|
|
1194
1226
|
before do
|
|
1195
|
-
band.save
|
|
1227
|
+
band.save!
|
|
1196
1228
|
end
|
|
1197
1229
|
|
|
1198
1230
|
it "executes the callback" do
|
|
@@ -1227,7 +1259,7 @@ describe Mongoid::Interceptable do
|
|
|
1227
1259
|
end
|
|
1228
1260
|
|
|
1229
1261
|
before do
|
|
1230
|
-
band.save
|
|
1262
|
+
band.save!
|
|
1231
1263
|
end
|
|
1232
1264
|
|
|
1233
1265
|
it "executes the callback" do
|
|
@@ -1238,7 +1270,7 @@ describe Mongoid::Interceptable do
|
|
|
1238
1270
|
context "when the root is persisted" do
|
|
1239
1271
|
|
|
1240
1272
|
let(:band) do
|
|
1241
|
-
Band.create(name: "Moderat")
|
|
1273
|
+
Band.create!(name: "Moderat")
|
|
1242
1274
|
end
|
|
1243
1275
|
|
|
1244
1276
|
let!(:record) do
|
|
@@ -1250,7 +1282,7 @@ describe Mongoid::Interceptable do
|
|
|
1250
1282
|
end
|
|
1251
1283
|
|
|
1252
1284
|
before do
|
|
1253
|
-
band.save
|
|
1285
|
+
band.save!
|
|
1254
1286
|
end
|
|
1255
1287
|
|
|
1256
1288
|
it "executes the callback" do
|
|
@@ -1262,20 +1294,20 @@ describe Mongoid::Interceptable do
|
|
|
1262
1294
|
context "when the child is persisted" do
|
|
1263
1295
|
|
|
1264
1296
|
let(:band) do
|
|
1265
|
-
Band.create(name: "Moderat")
|
|
1297
|
+
Band.create!(name: "Moderat")
|
|
1266
1298
|
end
|
|
1267
1299
|
|
|
1268
1300
|
let!(:record) do
|
|
1269
|
-
band.records.create(name: "Moderat")
|
|
1301
|
+
band.records.create!(name: "Moderat")
|
|
1270
1302
|
end
|
|
1271
1303
|
|
|
1272
1304
|
let!(:track) do
|
|
1273
|
-
record.tracks.create(name: "Berlin")
|
|
1305
|
+
record.tracks.create!(name: "Berlin")
|
|
1274
1306
|
end
|
|
1275
1307
|
|
|
1276
1308
|
before do
|
|
1277
1309
|
track.before_create_called = false
|
|
1278
|
-
band.save
|
|
1310
|
+
band.save!
|
|
1279
1311
|
end
|
|
1280
1312
|
|
|
1281
1313
|
it "does not execute the callback" do
|
|
@@ -1303,7 +1335,7 @@ describe Mongoid::Interceptable do
|
|
|
1303
1335
|
end
|
|
1304
1336
|
|
|
1305
1337
|
before do
|
|
1306
|
-
band.save
|
|
1338
|
+
band.save!
|
|
1307
1339
|
end
|
|
1308
1340
|
|
|
1309
1341
|
let(:reloaded) do
|
|
@@ -1322,7 +1354,7 @@ describe Mongoid::Interceptable do
|
|
|
1322
1354
|
context "when the parent is persisted" do
|
|
1323
1355
|
|
|
1324
1356
|
let(:band) do
|
|
1325
|
-
Band.create(name: "Moderat")
|
|
1357
|
+
Band.create!(name: "Moderat")
|
|
1326
1358
|
end
|
|
1327
1359
|
|
|
1328
1360
|
let!(:record) do
|
|
@@ -1334,7 +1366,7 @@ describe Mongoid::Interceptable do
|
|
|
1334
1366
|
end
|
|
1335
1367
|
|
|
1336
1368
|
before do
|
|
1337
|
-
band.save
|
|
1369
|
+
band.save!
|
|
1338
1370
|
end
|
|
1339
1371
|
|
|
1340
1372
|
let(:reloaded) do
|
|
@@ -1354,19 +1386,19 @@ describe Mongoid::Interceptable do
|
|
|
1354
1386
|
context "when the child is persisted" do
|
|
1355
1387
|
|
|
1356
1388
|
let(:band) do
|
|
1357
|
-
Band.create(name: "Moderat")
|
|
1389
|
+
Band.create!(name: "Moderat")
|
|
1358
1390
|
end
|
|
1359
1391
|
|
|
1360
1392
|
let!(:record) do
|
|
1361
|
-
band.records.create(name: "Moderat")
|
|
1393
|
+
band.records.create!(name: "Moderat")
|
|
1362
1394
|
end
|
|
1363
1395
|
|
|
1364
1396
|
let!(:track) do
|
|
1365
|
-
record.tracks.create(name: "Berlin")
|
|
1397
|
+
record.tracks.create!(name: "Berlin")
|
|
1366
1398
|
end
|
|
1367
1399
|
|
|
1368
1400
|
before do
|
|
1369
|
-
band.save
|
|
1401
|
+
band.save!
|
|
1370
1402
|
end
|
|
1371
1403
|
|
|
1372
1404
|
let(:reloaded) do
|
|
@@ -1402,7 +1434,7 @@ describe Mongoid::Interceptable do
|
|
|
1402
1434
|
end
|
|
1403
1435
|
|
|
1404
1436
|
before do
|
|
1405
|
-
band.save
|
|
1437
|
+
band.save!
|
|
1406
1438
|
end
|
|
1407
1439
|
|
|
1408
1440
|
it "does not execute the callback" do
|
|
@@ -1413,7 +1445,7 @@ describe Mongoid::Interceptable do
|
|
|
1413
1445
|
context "when the parent is persisted" do
|
|
1414
1446
|
|
|
1415
1447
|
let(:band) do
|
|
1416
|
-
Band.create(name: "Moderat")
|
|
1448
|
+
Band.create!(name: "Moderat")
|
|
1417
1449
|
end
|
|
1418
1450
|
|
|
1419
1451
|
let!(:record) do
|
|
@@ -1425,7 +1457,7 @@ describe Mongoid::Interceptable do
|
|
|
1425
1457
|
end
|
|
1426
1458
|
|
|
1427
1459
|
before do
|
|
1428
|
-
band.save
|
|
1460
|
+
band.save!
|
|
1429
1461
|
end
|
|
1430
1462
|
|
|
1431
1463
|
it "does not execute the callback" do
|
|
@@ -1437,22 +1469,22 @@ describe Mongoid::Interceptable do
|
|
|
1437
1469
|
context "when the child is persisted" do
|
|
1438
1470
|
|
|
1439
1471
|
let(:band) do
|
|
1440
|
-
Band.create(name: "Moderat")
|
|
1472
|
+
Band.create!(name: "Moderat")
|
|
1441
1473
|
end
|
|
1442
1474
|
|
|
1443
1475
|
let!(:record) do
|
|
1444
|
-
band.records.create(name: "Moderat")
|
|
1476
|
+
band.records.create!(name: "Moderat")
|
|
1445
1477
|
end
|
|
1446
1478
|
|
|
1447
1479
|
let!(:track) do
|
|
1448
|
-
record.tracks.create(name: "Berlin")
|
|
1480
|
+
record.tracks.create!(name: "Berlin")
|
|
1449
1481
|
end
|
|
1450
1482
|
|
|
1451
1483
|
context "when the child is dirty" do
|
|
1452
1484
|
|
|
1453
1485
|
before do
|
|
1454
1486
|
track.name = "Rusty Nails"
|
|
1455
|
-
band.save
|
|
1487
|
+
band.save!
|
|
1456
1488
|
end
|
|
1457
1489
|
|
|
1458
1490
|
let(:reloaded) do
|
|
@@ -1471,7 +1503,7 @@ describe Mongoid::Interceptable do
|
|
|
1471
1503
|
context "when the child is not dirty" do
|
|
1472
1504
|
|
|
1473
1505
|
before do
|
|
1474
|
-
band.save
|
|
1506
|
+
band.save!
|
|
1475
1507
|
end
|
|
1476
1508
|
|
|
1477
1509
|
it "does not execute the callback" do
|
|
@@ -1519,7 +1551,7 @@ describe Mongoid::Interceptable do
|
|
|
1519
1551
|
end
|
|
1520
1552
|
|
|
1521
1553
|
before do
|
|
1522
|
-
band.save
|
|
1554
|
+
band.save!
|
|
1523
1555
|
end
|
|
1524
1556
|
|
|
1525
1557
|
it "executes the callback" do
|
|
@@ -1530,7 +1562,7 @@ describe Mongoid::Interceptable do
|
|
|
1530
1562
|
context "when the parent is persisted" do
|
|
1531
1563
|
|
|
1532
1564
|
let(:band) do
|
|
1533
|
-
Band.create(name: "Moderat")
|
|
1565
|
+
Band.create!(name: "Moderat")
|
|
1534
1566
|
end
|
|
1535
1567
|
|
|
1536
1568
|
let!(:record) do
|
|
@@ -1542,7 +1574,7 @@ describe Mongoid::Interceptable do
|
|
|
1542
1574
|
end
|
|
1543
1575
|
|
|
1544
1576
|
before do
|
|
1545
|
-
band.save
|
|
1577
|
+
band.save!
|
|
1546
1578
|
end
|
|
1547
1579
|
|
|
1548
1580
|
it "executes the callback" do
|
|
@@ -1554,19 +1586,19 @@ describe Mongoid::Interceptable do
|
|
|
1554
1586
|
context "when the child is persisted" do
|
|
1555
1587
|
|
|
1556
1588
|
let(:band) do
|
|
1557
|
-
Band.create(name: "Moderat")
|
|
1589
|
+
Band.create!(name: "Moderat")
|
|
1558
1590
|
end
|
|
1559
1591
|
|
|
1560
1592
|
let!(:record) do
|
|
1561
|
-
band.records.create(name: "Moderat")
|
|
1593
|
+
band.records.create!(name: "Moderat")
|
|
1562
1594
|
end
|
|
1563
1595
|
|
|
1564
1596
|
let!(:track) do
|
|
1565
|
-
record.tracks.create(name: "Berlin")
|
|
1597
|
+
record.tracks.create!(name: "Berlin")
|
|
1566
1598
|
end
|
|
1567
1599
|
|
|
1568
1600
|
before do
|
|
1569
|
-
band.save
|
|
1601
|
+
band.save!
|
|
1570
1602
|
end
|
|
1571
1603
|
|
|
1572
1604
|
it "executes the callback" do
|
|
@@ -1593,11 +1625,11 @@ describe Mongoid::Interceptable do
|
|
|
1593
1625
|
end
|
|
1594
1626
|
|
|
1595
1627
|
before do
|
|
1596
|
-
parent.save
|
|
1628
|
+
parent.save!
|
|
1597
1629
|
end
|
|
1598
1630
|
|
|
1599
1631
|
it "does not duplicate the child documents" do
|
|
1600
|
-
parent.children.create(position: 1)
|
|
1632
|
+
parent.children.create!(position: 1)
|
|
1601
1633
|
expect(ParentDoc.find(parent.id).children.size).to eq(1)
|
|
1602
1634
|
end
|
|
1603
1635
|
end
|
|
@@ -1648,7 +1680,7 @@ describe Mongoid::Interceptable do
|
|
|
1648
1680
|
context "when updating a document" do
|
|
1649
1681
|
|
|
1650
1682
|
let(:person) do
|
|
1651
|
-
Person.create
|
|
1683
|
+
Person.create!.tap do |person|
|
|
1652
1684
|
person.attributes = {
|
|
1653
1685
|
mode: :prevent_save,
|
|
1654
1686
|
title: "Associate",
|
|
@@ -1682,8 +1714,8 @@ describe Mongoid::Interceptable do
|
|
|
1682
1714
|
context "when loading a model multiple times" do
|
|
1683
1715
|
|
|
1684
1716
|
before do
|
|
1685
|
-
load "
|
|
1686
|
-
load "
|
|
1717
|
+
load File.join(MODELS, "callback_test.rb")
|
|
1718
|
+
load File.join(MODELS, "callback_test.rb")
|
|
1687
1719
|
end
|
|
1688
1720
|
|
|
1689
1721
|
let(:callback) do
|
|
@@ -1698,4 +1730,65 @@ describe Mongoid::Interceptable do
|
|
|
1698
1730
|
end
|
|
1699
1731
|
end
|
|
1700
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
|
|
1701
1794
|
end
|