mongoid 7.0.0 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +30 -30
- data/LICENSE +1 -0
- data/README.md +34 -20
- data/Rakefile +75 -5
- data/lib/config/locales/en.yml +129 -70
- data/lib/mongoid/association/accessors.rb +143 -80
- data/lib/mongoid/association/bindable.rb +7 -26
- data/lib/mongoid/association/builders.rb +4 -12
- data/lib/mongoid/association/constrainable.rb +5 -6
- data/lib/mongoid/association/depending.rb +31 -19
- data/lib/mongoid/association/eager_loadable.rb +2 -3
- data/lib/mongoid/association/embedded/batchable.rb +19 -45
- data/lib/mongoid/association/embedded/cyclic.rb +10 -17
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +3 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +7 -4
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +14 -24
- data/lib/mongoid/association/embedded/embedded_in.rb +6 -26
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +8 -5
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +113 -93
- data/lib/mongoid/association/embedded/embeds_many.rb +8 -35
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +9 -6
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +45 -30
- data/lib/mongoid/association/embedded/embeds_one.rb +8 -31
- data/lib/mongoid/association/embedded.rb +2 -0
- data/lib/mongoid/association/macros.rb +44 -41
- data/lib/mongoid/association/many.rb +18 -32
- data/lib/mongoid/association/marshalable.rb +3 -6
- data/lib/mongoid/association/nested/many.rb +18 -27
- data/lib/mongoid/association/nested/nested_buildable.rb +5 -11
- data/lib/mongoid/association/nested/one.rb +16 -27
- data/lib/mongoid/association/nested.rb +3 -3
- data/lib/mongoid/association/one.rb +4 -11
- data/lib/mongoid/association/options.rb +8 -38
- data/lib/mongoid/association/proxy.rb +37 -36
- data/lib/mongoid/association/referenced/auto_save.rb +5 -11
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +4 -9
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +11 -9
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +40 -3
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -27
- data/lib/mongoid/association/referenced/belongs_to.rb +14 -36
- data/lib/mongoid/association/referenced/counter_cache.rb +4 -15
- data/lib/mongoid/association/referenced/eager.rb +40 -36
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -11
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +38 -56
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +23 -43
- data/lib/mongoid/association/referenced/has_many/binding.rb +3 -6
- data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +444 -456
- data/lib/mongoid/association/referenced/has_many/proxy.rb +78 -111
- data/lib/mongoid/association/referenced/has_many.rb +18 -42
- data/lib/mongoid/association/referenced/has_one/binding.rb +4 -9
- data/lib/mongoid/association/referenced/has_one/buildable.rb +20 -6
- data/lib/mongoid/association/referenced/has_one/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +13 -26
- data/lib/mongoid/association/referenced/has_one/proxy.rb +23 -25
- data/lib/mongoid/association/referenced/has_one.rb +13 -33
- data/lib/mongoid/association/referenced/syncable.rb +7 -22
- data/lib/mongoid/association/referenced.rb +2 -0
- data/lib/mongoid/association/reflections.rb +7 -6
- data/lib/mongoid/association/relatable.rb +118 -78
- data/lib/mongoid/association.rb +8 -23
- data/lib/mongoid/atomic/modifiers.rb +27 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded/one.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded.rb +3 -4
- data/lib/mongoid/atomic/paths/root.rb +4 -7
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +42 -47
- data/lib/mongoid/attributes/dynamic.rb +18 -32
- data/lib/mongoid/attributes/nested.rb +21 -13
- data/lib/mongoid/attributes/processing.rb +9 -24
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +3 -6
- data/lib/mongoid/attributes.rb +75 -81
- data/lib/mongoid/cacheable.rb +6 -9
- data/lib/mongoid/changeable.rb +6 -60
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +16 -17
- data/lib/mongoid/clients/sessions.rb +24 -12
- data/lib/mongoid/clients/storage_options.rb +7 -12
- data/lib/mongoid/clients/validators/storage.rb +2 -9
- data/lib/mongoid/clients/validators.rb +2 -1
- data/lib/mongoid/clients.rb +3 -10
- data/lib/mongoid/composable.rb +5 -9
- data/lib/mongoid/config/environment.rb +36 -14
- data/lib/mongoid/config/options.rb +20 -23
- data/lib/mongoid/config/validators/client.rb +2 -17
- data/lib/mongoid/config/validators/option.rb +2 -3
- data/lib/mongoid/config/validators.rb +2 -1
- data/lib/mongoid/config.rb +112 -41
- data/lib/mongoid/contextual/aggregable/memory.rb +17 -12
- data/lib/mongoid/contextual/aggregable/mongo.rb +26 -27
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +29 -31
- data/lib/mongoid/contextual/command.rb +2 -5
- data/lib/mongoid/contextual/geo_near.rb +6 -37
- data/lib/mongoid/contextual/map_reduce.rb +9 -37
- data/lib/mongoid/contextual/memory.rb +12 -65
- data/lib/mongoid/contextual/mongo.rb +163 -85
- data/lib/mongoid/contextual/none.rb +44 -28
- data/lib/mongoid/contextual/queryable.rb +2 -3
- data/lib/mongoid/contextual.rb +7 -9
- data/lib/mongoid/copyable.rb +16 -10
- data/lib/mongoid/criteria/findable.rb +12 -15
- data/lib/mongoid/criteria/includable.rb +8 -15
- data/lib/mongoid/criteria/inspectable.rb +2 -3
- data/lib/mongoid/criteria/marshalable.rb +2 -5
- data/lib/mongoid/criteria/modifiable.rb +15 -21
- 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 +4 -27
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/date.rb +3 -8
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +5 -11
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -26
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +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 +3 -18
- 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 +184 -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 +5 -15
- data/lib/mongoid/criteria/queryable/selectable.rb +436 -158
- 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 +86 -73
- data/lib/mongoid/document.rb +37 -77
- data/lib/mongoid/equality.rb +29 -12
- data/lib/mongoid/errors/ambiguous_relationship.rb +4 -5
- data/lib/mongoid/errors/callback.rb +2 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +18 -0
- data/lib/mongoid/errors/delete_restriction.rb +10 -13
- data/lib/mongoid/errors/document_not_destroyed.rb +4 -7
- data/lib/mongoid/errors/document_not_found.rb +2 -9
- data/lib/mongoid/errors/eager_load.rb +6 -5
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -3
- data/lib/mongoid/errors/invalid_collection.rb +2 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +2 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -3
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +24 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +25 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +27 -0
- data/lib/mongoid/errors/invalid_field.rb +2 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_field_option.rb +2 -3
- data/lib/mongoid/errors/invalid_find.rb +2 -3
- data/lib/mongoid/errors/invalid_includes.rb +2 -3
- data/lib/mongoid/errors/invalid_index.rb +2 -3
- data/lib/mongoid/errors/invalid_options.rb +4 -5
- data/lib/mongoid/errors/invalid_path.rb +2 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +2 -5
- data/lib/mongoid/errors/invalid_query.rb +40 -0
- data/lib/mongoid/errors/invalid_relation.rb +4 -9
- data/lib/mongoid/errors/invalid_relation_option.rb +4 -5
- data/lib/mongoid/errors/invalid_scope.rb +2 -3
- data/lib/mongoid/errors/invalid_session_use.rb +3 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -5
- data/lib/mongoid/errors/invalid_storage_options.rb +2 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -3
- data/lib/mongoid/errors/invalid_time.rb +2 -3
- data/lib/mongoid/errors/invalid_value.rb +2 -1
- data/lib/mongoid/errors/inverse_not_found.rb +3 -4
- data/lib/mongoid/errors/mixed_client_configuration.rb +2 -3
- data/lib/mongoid/errors/mixed_relations.rb +2 -3
- data/lib/mongoid/errors/mongoid_error.rb +3 -10
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -4
- data/lib/mongoid/errors/no_client_config.rb +4 -5
- data/lib/mongoid/errors/no_client_database.rb +2 -3
- data/lib/mongoid/errors/no_client_hosts.rb +2 -3
- data/lib/mongoid/errors/no_clients_config.rb +2 -3
- data/lib/mongoid/errors/no_default_client.rb +3 -4
- data/lib/mongoid/errors/no_environment.rb +2 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +2 -3
- data/lib/mongoid/errors/no_metadata.rb +2 -3
- data/lib/mongoid/errors/no_parent.rb +2 -3
- data/lib/mongoid/errors/readonly_attribute.rb +2 -3
- data/lib/mongoid/errors/readonly_document.rb +3 -6
- data/lib/mongoid/errors/scope_overwrite.rb +2 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +2 -0
- data/lib/mongoid/errors/unknown_attribute.rb +2 -3
- data/lib/mongoid/errors/unknown_model.rb +2 -3
- data/lib/mongoid/errors/unsaved_document.rb +3 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +2 -3
- data/lib/mongoid/errors/validations.rb +2 -1
- data/lib/mongoid/errors.rb +12 -1
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +28 -37
- data/lib/mongoid/extensions/big_decimal.rb +3 -12
- 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 +51 -36
- data/lib/mongoid/extensions/integer.rb +5 -12
- data/lib/mongoid/extensions/module.rb +2 -3
- data/lib/mongoid/extensions/nil_class.rb +2 -5
- data/lib/mongoid/extensions/object.rb +17 -44
- data/lib/mongoid/extensions/object_id.rb +2 -7
- data/lib/mongoid/extensions/range.rb +2 -11
- data/lib/mongoid/extensions/regexp.rb +4 -4
- data/lib/mongoid/extensions/set.rb +2 -7
- data/lib/mongoid/extensions/string.rb +24 -42
- data/lib/mongoid/extensions/symbol.rb +2 -7
- data/lib/mongoid/extensions/time.rb +12 -9
- data/lib/mongoid/extensions/time_with_zone.rb +25 -7
- data/lib/mongoid/extensions/true_class.rb +4 -7
- data/lib/mongoid/extensions.rb +18 -3
- data/lib/mongoid/factory.rb +52 -13
- data/lib/mongoid/fields/foreign_key.rb +3 -22
- data/lib/mongoid/fields/localized.rb +2 -11
- data/lib/mongoid/fields/standard.rb +6 -36
- data/lib/mongoid/fields/validators/macro.rb +36 -18
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +115 -64
- data/lib/mongoid/findable.rb +59 -23
- data/lib/mongoid/indexable/specification.rb +3 -16
- data/lib/mongoid/indexable/validators/options.rb +2 -7
- data/lib/mongoid/indexable.rb +10 -25
- data/lib/mongoid/inspectable.rb +4 -11
- data/lib/mongoid/interceptable.rb +13 -30
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +3 -150
- 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 +6 -23
- data/lib/mongoid/persistable/deletable.rb +7 -23
- data/lib/mongoid/persistable/destroyable.rb +11 -10
- data/lib/mongoid/persistable/incrementable.rb +6 -7
- data/lib/mongoid/persistable/logical.rb +4 -6
- data/lib/mongoid/persistable/poppable.rb +3 -6
- data/lib/mongoid/persistable/pullable.rb +3 -8
- data/lib/mongoid/persistable/pushable.rb +14 -10
- data/lib/mongoid/persistable/renamable.rb +10 -8
- data/lib/mongoid/persistable/savable.rb +3 -8
- data/lib/mongoid/persistable/settable.rb +61 -19
- data/lib/mongoid/persistable/unsettable.rb +8 -8
- data/lib/mongoid/persistable/updatable.rb +33 -21
- data/lib/mongoid/persistable/upsertable.rb +4 -9
- data/lib/mongoid/persistable.rb +134 -39
- data/lib/mongoid/persistence_context.rb +51 -45
- data/lib/mongoid/positional.rb +3 -6
- data/lib/mongoid/query_cache.rb +138 -106
- data/lib/mongoid/railtie.rb +20 -16
- data/lib/mongoid/railties/controller_runtime.rb +88 -0
- data/lib/mongoid/railties/database.rake +9 -0
- data/lib/mongoid/reloadable.rb +14 -19
- data/lib/mongoid/scopable.rb +11 -38
- data/lib/mongoid/selectable.rb +8 -17
- data/lib/mongoid/serializable.rb +24 -29
- data/lib/mongoid/shardable.rb +80 -17
- data/lib/mongoid/stateful.rb +3 -10
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +12 -5
- data/lib/mongoid/tasks/database.rb +87 -7
- data/lib/mongoid/threaded/lifecycle.rb +2 -21
- data/lib/mongoid/threaded.rb +38 -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 +177 -57
- data/lib/mongoid/validatable/associated.rb +5 -6
- data/lib/mongoid/validatable/format.rb +2 -1
- data/lib/mongoid/validatable/length.rb +2 -1
- data/lib/mongoid/validatable/localizable.rb +2 -3
- data/lib/mongoid/validatable/macros.rb +3 -8
- data/lib/mongoid/validatable/presence.rb +8 -13
- data/lib/mongoid/validatable/queryable.rb +2 -3
- data/lib/mongoid/validatable/uniqueness.rb +21 -34
- data/lib/mongoid/validatable.rb +8 -27
- data/lib/mongoid/version.rb +3 -2
- data/lib/mongoid.rb +33 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -2
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +45 -30
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -2
- data/lib/rails/generators/mongoid/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 +13 -3
- data/spec/integration/app_spec.rb +343 -0
- data/spec/integration/associations/belongs_to_spec.rb +15 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +268 -0
- data/spec/integration/associations/embeds_many_spec.rb +206 -0
- data/spec/integration/associations/embeds_one_spec.rb +23 -0
- data/spec/integration/associations/foreign_key_spec.rb +98 -0
- data/spec/integration/associations/foreign_key_spec_models.rb +64 -0
- data/spec/integration/associations/has_many_spec.rb +128 -0
- data/spec/integration/associations/has_one_spec.rb +176 -0
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +115 -0
- data/spec/integration/associations/reverse_population_spec.rb +34 -0
- data/spec/integration/associations/reverse_population_spec_models.rb +36 -0
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +116 -0
- data/spec/integration/bson_regexp_raw_spec.rb +19 -0
- data/spec/integration/callbacks_models.rb +61 -0
- data/spec/integration/callbacks_spec.rb +228 -0
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +40 -0
- data/spec/integration/criteria/default_scope_spec.rb +72 -0
- data/spec/integration/criteria/logical_spec.rb +124 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +142 -0
- data/spec/integration/discriminator_key_spec.rb +353 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +51 -0
- data/spec/integration/i18n_fallbacks_spec.rb +89 -0
- data/spec/integration/matcher_examples_spec.rb +758 -0
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +409 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +112 -0
- data/spec/integration/matcher_operator_data/in.yml +210 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_data/type.yml +70 -0
- data/spec/integration/matcher_operator_data/type_array.yml +16 -0
- data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
- data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
- data/spec/integration/matcher_operator_data/type_code.yml +26 -0
- data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
- data/spec/integration/matcher_operator_data/type_date.yml +39 -0
- data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
- data/spec/integration/matcher_operator_data/type_decimal.yml +40 -0
- data/spec/integration/matcher_operator_data/type_double.yml +15 -0
- data/spec/integration/matcher_operator_data/type_int32.yml +33 -0
- data/spec/integration/matcher_operator_data/type_int64.yml +33 -0
- data/spec/integration/matcher_operator_data/type_max_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_min_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_null.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object_id.yml +25 -0
- data/spec/integration/matcher_operator_data/type_regex.yml +44 -0
- data/spec/integration/matcher_operator_data/type_string.yml +15 -0
- data/spec/integration/matcher_operator_data/type_symbol.yml +32 -0
- data/spec/integration/matcher_operator_data/type_timestamp.yml +25 -0
- data/spec/integration/matcher_operator_data/type_undefined.yml +17 -0
- data/spec/integration/matcher_operator_spec.rb +124 -0
- data/spec/integration/matcher_spec.rb +283 -0
- data/spec/integration/server_query_spec.rb +141 -0
- data/spec/integration/shardable_spec.rb +148 -0
- data/spec/integration/stringified_symbol_field_spec.rb +203 -0
- data/spec/lite_spec_helper.rb +83 -0
- data/spec/mongoid/association/accessors_spec.rb +323 -77
- data/spec/mongoid/association/auto_save_spec.rb +74 -33
- data/spec/mongoid/association/builders_spec.rb +3 -1
- data/spec/mongoid/association/constrainable_spec.rb +2 -0
- data/spec/mongoid/association/counter_cache_spec.rb +34 -32
- data/spec/mongoid/association/depending_spec.rb +678 -332
- data/spec/mongoid/association/eager_spec.rb +6 -4
- data/spec/mongoid/association/embedded/cyclic_spec.rb +4 -2
- data/spec/mongoid/association/embedded/dirty_spec.rb +4 -2
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +65 -13
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +61 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +672 -144
- data/spec/mongoid/association/embedded/embeds_many_models.rb +69 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +51 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +13 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +23 -21
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +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 +49 -1
- data/spec/mongoid/association/macros_spec.rb +11 -9
- data/spec/mongoid/association/nested/many_spec.rb +2 -0
- data/spec/mongoid/association/nested/one_spec.rb +18 -12
- data/spec/mongoid/association/options_spec.rb +2 -0
- data/spec/mongoid/association/polymorphic_spec.rb +61 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +57 -16
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +266 -17
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +99 -58
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +57 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +95 -12
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +28 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +67 -4
- 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 +351 -164
- 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 +49 -5
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +40 -9
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +407 -121
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +681 -340
- 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 +26 -3
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +53 -7
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +34 -4
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +28 -26
- data/spec/mongoid/association/referenced/has_one_models.rb +97 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +144 -5
- data/spec/mongoid/association/reflections_spec.rb +2 -0
- data/spec/mongoid/association/syncable_spec.rb +33 -31
- data/spec/mongoid/association_spec.rb +2 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +49 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +2 -0
- data/spec/mongoid/atomic/paths_spec.rb +107 -12
- data/spec/mongoid/atomic_spec.rb +31 -6
- data/spec/mongoid/attributes/dynamic_spec.rb +152 -0
- data/spec/mongoid/attributes/nested_spec.rb +87 -69
- data/spec/mongoid/attributes/projector_data/embedded.yml +105 -0
- data/spec/mongoid/attributes/projector_data/fields.yml +93 -0
- data/spec/mongoid/attributes/projector_spec.rb +44 -0
- data/spec/mongoid/attributes/readonly_spec.rb +24 -22
- data/spec/mongoid/attributes_spec.rb +382 -35
- data/spec/mongoid/cacheable_spec.rb +3 -1
- data/spec/mongoid/changeable_spec.rb +60 -35
- data/spec/mongoid/clients/factory_spec.rb +148 -34
- data/spec/mongoid/clients/options_spec.rb +102 -66
- data/spec/mongoid/clients/sessions_spec.rb +39 -29
- data/spec/mongoid/clients/transactions_spec.rb +415 -0
- data/spec/mongoid/clients_spec.rb +78 -16
- data/spec/mongoid/composable_spec.rb +2 -0
- data/spec/mongoid/config/environment_spec.rb +88 -8
- data/spec/mongoid/config/options_spec.rb +22 -3
- data/spec/mongoid/config_spec.rb +280 -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 +31 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +24 -7
- data/spec/mongoid/contextual/memory_spec.rb +25 -23
- data/spec/mongoid/contextual/mongo_spec.rb +491 -144
- data/spec/mongoid/contextual/none_spec.rb +9 -81
- data/spec/mongoid/copyable_spec.rb +261 -30
- 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 +100 -48
- 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 +5 -3
- 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 +3 -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 +2 -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 +994 -2900
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +41 -2
- data/spec/mongoid/criteria/queryable/smash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +226 -0
- data/spec/mongoid/criteria/scopable_spec.rb +210 -0
- data/spec/mongoid/criteria_projection_spec.rb +410 -0
- data/spec/mongoid/criteria_spec.rb +807 -464
- 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 +182 -28
- data/spec/mongoid/equality_spec.rb +144 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +5 -3
- data/spec/mongoid/errors/callback_spec.rb +2 -0
- data/spec/mongoid/errors/delete_restriction_spec.rb +4 -2
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +2 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +2 -0
- data/spec/mongoid/errors/eager_load_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_includes_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_index_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_options_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_path_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_relation_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -1
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +2 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +2 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +2 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +22 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_config_spec.rb +4 -2
- data/spec/mongoid/errors/no_client_database_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_hosts_spec.rb +5 -3
- data/spec/mongoid/errors/no_clients_config_spec.rb +2 -0
- data/spec/mongoid/errors/no_environment_spec.rb +2 -0
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +2 -0
- data/spec/mongoid/errors/no_metadata_spec.rb +4 -2
- data/spec/mongoid/errors/no_parent_spec.rb +3 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +2 -0
- data/spec/mongoid/errors/readonly_document_spec.rb +2 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +2 -0
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +2 -0
- data/spec/mongoid/errors/unknown_attribute_spec.rb +4 -2
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +2 -0
- data/spec/mongoid/errors/validations_spec.rb +2 -0
- data/spec/mongoid/extensions/array_spec.rb +25 -43
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -9
- data/spec/mongoid/extensions/binary_spec.rb +2 -0
- data/spec/mongoid/extensions/boolean_spec.rb +2 -0
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +335 -0
- data/spec/mongoid/extensions/date_spec.rb +8 -160
- data/spec/mongoid/extensions/date_time_spec.rb +17 -60
- data/spec/mongoid/extensions/decimal128_spec.rb +2 -0
- data/spec/mongoid/extensions/false_class_spec.rb +3 -1
- data/spec/mongoid/extensions/float_spec.rb +17 -3
- data/spec/mongoid/extensions/hash_spec.rb +105 -0
- data/spec/mongoid/extensions/integer_spec.rb +14 -2
- data/spec/mongoid/extensions/module_spec.rb +2 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/extensions/object_id_spec.rb +2 -0
- data/spec/mongoid/extensions/object_spec.rb +13 -24
- data/spec/mongoid/extensions/range_spec.rb +2 -0
- data/spec/mongoid/extensions/regexp_spec.rb +25 -0
- data/spec/mongoid/extensions/set_spec.rb +2 -0
- data/spec/mongoid/extensions/string_spec.rb +95 -34
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +84 -0
- data/spec/mongoid/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/extensions/time_spec.rb +29 -0
- data/spec/mongoid/extensions/time_with_zone_spec.rb +33 -0
- data/spec/mongoid/extensions/true_class_spec.rb +3 -1
- data/spec/mongoid/extensions_spec.rb +16 -2
- data/spec/mongoid/factory_spec.rb +287 -27
- data/spec/mongoid/fields/foreign_key_spec.rb +2 -0
- data/spec/mongoid/fields/localized_spec.rb +6 -4
- data/spec/mongoid/fields/standard_spec.rb +2 -0
- data/spec/mongoid/fields_spec.rb +419 -37
- data/spec/mongoid/findable_spec.rb +54 -20
- data/spec/mongoid/indexable/specification_spec.rb +2 -0
- data/spec/mongoid/indexable_spec.rb +36 -6
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +168 -96
- data/spec/mongoid/interceptable_spec_models.rb +76 -0
- data/spec/mongoid/loggable_spec.rb +2 -0
- data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +239 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +40 -0
- data/spec/mongoid/persistable/creatable_spec.rb +112 -27
- data/spec/mongoid/persistable/deletable_spec.rb +273 -11
- data/spec/mongoid/persistable/destroyable_spec.rb +201 -11
- data/spec/mongoid/persistable/incrementable_spec.rb +29 -13
- data/spec/mongoid/persistable/logical_spec.rb +19 -3
- data/spec/mongoid/persistable/poppable_spec.rb +19 -3
- data/spec/mongoid/persistable/pullable_spec.rb +36 -6
- data/spec/mongoid/persistable/pushable_spec.rb +91 -7
- data/spec/mongoid/persistable/renamable_spec.rb +18 -2
- data/spec/mongoid/persistable/savable_spec.rb +188 -25
- data/spec/mongoid/persistable/settable_spec.rb +182 -17
- data/spec/mongoid/persistable/unsettable_spec.rb +19 -3
- data/spec/mongoid/persistable/updatable_spec.rb +45 -23
- data/spec/mongoid/persistable/upsertable_spec.rb +4 -2
- data/spec/mongoid/persistable_spec.rb +85 -9
- data/spec/mongoid/persistence_context_spec.rb +3 -1
- 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 +575 -48
- data/spec/mongoid/relations/proxy_spec.rb +9 -7
- data/spec/mongoid/reloadable_spec.rb +298 -20
- data/spec/mongoid/scopable_spec.rb +82 -22
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +160 -29
- data/spec/mongoid/shardable_models.rb +61 -0
- data/spec/mongoid/shardable_spec.rb +116 -17
- data/spec/mongoid/stateful_spec.rb +3 -1
- data/spec/mongoid/tasks/database_rake_spec.rb +15 -13
- data/spec/mongoid/tasks/database_spec.rb +3 -1
- data/spec/mongoid/threaded_spec.rb +72 -2
- data/spec/mongoid/timestamps/created/short_spec.rb +3 -1
- data/spec/mongoid/timestamps/created_spec.rb +3 -1
- data/spec/mongoid/timestamps/timeless_spec.rb +4 -2
- data/spec/mongoid/timestamps/updated/short_spec.rb +5 -3
- data/spec/mongoid/timestamps/updated_spec.rb +5 -3
- data/spec/mongoid/timestamps_spec.rb +8 -6
- data/spec/mongoid/{association/touchable_spec.rb → touchable_spec.rb} +206 -38
- data/spec/mongoid/touchable_spec_models.rb +53 -0
- data/spec/mongoid/traversable_spec.rb +1167 -1
- data/spec/mongoid/validatable/associated_spec.rb +2 -0
- data/spec/mongoid/validatable/format_spec.rb +2 -0
- data/spec/mongoid/validatable/length_spec.rb +2 -0
- data/spec/mongoid/validatable/numericality_spec.rb +2 -0
- data/spec/mongoid/validatable/presence_spec.rb +28 -22
- data/spec/mongoid/validatable/uniqueness_spec.rb +102 -73
- data/spec/mongoid/validatable_spec.rb +5 -3
- data/spec/mongoid_spec.rb +2 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +112 -0
- data/spec/rails/mongoid_spec.rb +4 -2
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +386 -0
- data/spec/shared/lib/mrss/docker_runner.rb +271 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +199 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +120 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +339 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +379 -0
- data/spec/shared/shlib/set_env.sh +132 -0
- data/spec/spec_helper.rb +69 -80
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +53 -0
- data/spec/support/expectations.rb +21 -3
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +42 -0
- data/spec/{app → support}/models/account.rb +3 -1
- data/spec/{app → support}/models/acolyte.rb +2 -0
- data/spec/{app → support}/models/actor.rb +3 -1
- data/spec/support/models/actress.rb +4 -0
- data/spec/{app → support}/models/address.rb +6 -0
- data/spec/{app → support}/models/address_component.rb +2 -0
- data/spec/{app → support}/models/address_number.rb +2 -0
- data/spec/{app → support}/models/agency.rb +2 -0
- data/spec/{app → support}/models/agent.rb +2 -0
- data/spec/{app → support}/models/album.rb +2 -0
- data/spec/{app → support}/models/alert.rb +2 -0
- data/spec/{app → support}/models/animal.rb +2 -0
- data/spec/{app → support}/models/answer.rb +2 -0
- data/spec/{app → support}/models/appointment.rb +2 -0
- data/spec/support/models/armrest.rb +9 -0
- data/spec/support/models/array_field.rb +7 -0
- data/spec/{app → support}/models/article.rb +2 -0
- data/spec/{app → support}/models/artist.rb +4 -0
- data/spec/{app → support}/models/artwork.rb +2 -0
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/{app → support}/models/audio.rb +2 -0
- data/spec/{app → support}/models/augmentation.rb +2 -0
- data/spec/{app → support}/models/author.rb +2 -0
- data/spec/{app → support}/models/baby.rb +2 -0
- data/spec/{app → support}/models/band.rb +6 -0
- data/spec/{app → support}/models/bar.rb +2 -0
- data/spec/{app → support}/models/basic.rb +2 -0
- data/spec/support/models/bed.rb +3 -0
- data/spec/{app → support}/models/big_palette.rb +2 -0
- data/spec/{app → support}/models/birthday.rb +2 -0
- data/spec/support/models/bolt.rb +7 -0
- data/spec/{app → support}/models/bomb.rb +2 -0
- data/spec/{app → support}/models/book.rb +2 -0
- data/spec/{app → support}/models/breed.rb +2 -0
- data/spec/{app → support}/models/browser.rb +3 -1
- data/spec/{app → support}/models/building.rb +2 -0
- data/spec/{app → support}/models/building_address.rb +2 -0
- data/spec/{app → support}/models/bus.rb +2 -0
- data/spec/{app → support}/models/business.rb +2 -0
- data/spec/{app → support}/models/callback_test.rb +2 -0
- data/spec/{app → support}/models/canvas.rb +3 -1
- data/spec/support/models/car.rb +3 -0
- data/spec/{app → support}/models/cat.rb +2 -0
- data/spec/{app → support}/models/category.rb +2 -0
- data/spec/{app → support}/models/child.rb +2 -0
- data/spec/{app → support}/models/child_doc.rb +5 -3
- data/spec/{app → support}/models/church.rb +2 -0
- data/spec/{app → support}/models/circle.rb +2 -0
- data/spec/{app → support}/models/circuit.rb +2 -0
- data/spec/{app → support}/models/circus.rb +2 -0
- data/spec/{app → support}/models/code.rb +2 -0
- data/spec/support/models/coding/pull_request.rb +11 -0
- data/spec/support/models/coding.rb +3 -0
- data/spec/{app → support}/models/comment.rb +2 -0
- data/spec/{app → support}/models/company.rb +2 -0
- data/spec/{app → support}/models/consumption_period.rb +2 -0
- data/spec/{app → support}/models/contextable_item.rb +2 -0
- data/spec/{app → support}/models/contractor.rb +2 -0
- data/spec/{app → support}/models/cookie.rb +2 -0
- data/spec/{app → support}/models/country_code.rb +4 -0
- data/spec/{app → support}/models/courier_job.rb +2 -0
- data/spec/support/models/crate.rb +12 -0
- data/spec/support/models/customer.rb +10 -0
- data/spec/support/models/customer_address.rb +11 -0
- data/spec/support/models/deed.rb +7 -0
- data/spec/{app → support}/models/definition.rb +2 -0
- data/spec/support/models/delegating_patient.rb +15 -0
- data/spec/{app → support}/models/description.rb +2 -0
- data/spec/{app → support}/models/dictionary.rb +8 -0
- data/spec/{app → support}/models/division.rb +2 -0
- data/spec/{app → support}/models/doctor.rb +2 -0
- data/spec/{app → support}/models/dog.rb +2 -0
- data/spec/{app → support}/models/dokument.rb +2 -0
- data/spec/{app → support}/models/draft.rb +2 -0
- data/spec/{app → support}/models/dragon.rb +2 -0
- data/spec/{app → support}/models/driver.rb +3 -1
- data/spec/{app → support}/models/drug.rb +2 -0
- data/spec/{app → support}/models/dungeon.rb +2 -0
- data/spec/{app → support}/models/edit.rb +2 -0
- data/spec/{app → support}/models/email.rb +2 -0
- data/spec/{app → support}/models/employer.rb +2 -0
- data/spec/{app → support}/models/entry.rb +2 -0
- data/spec/support/models/eraser.rb +3 -0
- data/spec/{app → support}/models/even.rb +2 -0
- data/spec/{app → support}/models/event.rb +2 -0
- data/spec/{app → support}/models/exhibition.rb +2 -0
- data/spec/{app → support}/models/exhibitor.rb +2 -0
- data/spec/{app → support}/models/explosion.rb +2 -0
- data/spec/{app → support}/models/eye.rb +2 -0
- data/spec/{app → support}/models/eye_bowl.rb +2 -0
- data/spec/{app → support}/models/face.rb +2 -0
- data/spec/{app → support}/models/favorite.rb +2 -0
- data/spec/{app → support}/models/filesystem.rb +2 -0
- data/spec/{app → support}/models/fire_hydrant.rb +2 -0
- data/spec/{app → support}/models/firefox.rb +2 -0
- data/spec/{app → support}/models/fish.rb +2 -0
- data/spec/{app → support}/models/folder.rb +2 -0
- data/spec/{app → support}/models/folder_item.rb +2 -0
- data/spec/{app → support}/models/fruits.rb +2 -0
- data/spec/{app → support}/models/game.rb +2 -0
- data/spec/{app → support}/models/ghost.rb +2 -0
- data/spec/support/models/guitar.rb +4 -0
- data/spec/support/models/hole.rb +12 -0
- data/spec/{app → support}/models/home.rb +2 -0
- data/spec/{app → support}/models/house.rb +2 -0
- data/spec/{app → support}/models/html_writer.rb +2 -0
- data/spec/{app → support}/models/id_key.rb +2 -0
- data/spec/support/models/idnodef.rb +7 -0
- data/spec/{app → support}/models/image.rb +2 -0
- data/spec/{app → support}/models/implant.rb +2 -0
- data/spec/support/models/instrument.rb +8 -0
- data/spec/{app → support}/models/item.rb +3 -1
- data/spec/{app → support}/models/jar.rb +2 -0
- data/spec/{app → support}/models/kaleidoscope.rb +2 -0
- data/spec/{app → support}/models/kangaroo.rb +3 -1
- data/spec/{app → support}/models/label.rb +4 -1
- data/spec/{app → support}/models/language.rb +2 -0
- data/spec/{app → support}/models/lat_lng.rb +2 -0
- data/spec/{app → support}/models/league.rb +2 -0
- data/spec/support/models/learner.rb +4 -0
- data/spec/{app → support}/models/line_item.rb +2 -0
- data/spec/{app → support}/models/location.rb +2 -0
- data/spec/{app → support}/models/login.rb +2 -0
- data/spec/{app → support}/models/manufacturer.rb +2 -0
- data/spec/{app → support}/models/meat.rb +2 -0
- data/spec/{app → support}/models/membership.rb +2 -0
- data/spec/{app → support}/models/message.rb +2 -0
- data/spec/support/models/minim.rb +6 -0
- data/spec/{app → support}/models/mixed_drink.rb +2 -0
- data/spec/support/models/mop.rb +24 -0
- data/spec/{app → support}/models/movie.rb +2 -0
- data/spec/support/models/my_hash.rb +4 -0
- data/spec/{app → support}/models/name.rb +2 -0
- data/spec/support/models/name_only.rb +8 -0
- data/spec/{app → support}/models/node.rb +2 -0
- data/spec/{app → support}/models/note.rb +2 -0
- data/spec/support/models/nut.rb +7 -0
- data/spec/{app → support}/models/odd.rb +2 -0
- data/spec/support/models/order.rb +12 -0
- data/spec/{app → support}/models/ordered_post.rb +3 -1
- data/spec/{app → support}/models/ordered_preference.rb +2 -0
- data/spec/{app → support}/models/oscar.rb +2 -0
- data/spec/support/models/other_owner_object.rb +4 -0
- data/spec/{app → support}/models/override.rb +2 -0
- data/spec/{app → support}/models/ownable.rb +2 -0
- data/spec/{app → support}/models/owner.rb +4 -0
- data/spec/{app → support}/models/pack.rb +2 -0
- data/spec/{app → support}/models/page.rb +2 -0
- data/spec/{app → support}/models/page_question.rb +2 -0
- data/spec/{app → support}/models/palette.rb +3 -1
- data/spec/{app → support}/models/parent.rb +2 -0
- data/spec/{app → support}/models/parent_doc.rb +2 -0
- data/spec/support/models/passport.rb +13 -0
- data/spec/{app → support}/models/patient.rb +2 -0
- data/spec/{app → support}/models/pdf_writer.rb +2 -0
- data/spec/support/models/pencil.rb +3 -0
- data/spec/{app → support}/models/person.rb +21 -1
- data/spec/{app → support}/models/pet.rb +2 -0
- data/spec/{app → support}/models/pet_owner.rb +2 -0
- data/spec/{app → support}/models/phone.rb +5 -1
- data/spec/support/models/piano.rb +4 -0
- data/spec/{app → support}/models/pizza.rb +2 -0
- data/spec/{app → support}/models/player.rb +2 -0
- data/spec/{app → support}/models/post.rb +2 -0
- data/spec/{app → support}/models/post_genre.rb +2 -0
- data/spec/{app → support}/models/powerup.rb +2 -0
- data/spec/{app → support}/models/preference.rb +2 -0
- data/spec/{app → support}/models/princess.rb +2 -0
- data/spec/{app → support}/models/product.rb +2 -0
- data/spec/support/models/profile.rb +17 -0
- data/spec/{app → support}/models/pronunciation.rb +2 -0
- data/spec/{app → support}/models/pub.rb +2 -0
- data/spec/support/models/publication/encyclopedia.rb +11 -0
- data/spec/support/models/publication/review.rb +13 -0
- data/spec/support/models/publication.rb +4 -0
- data/spec/{app → support}/models/purchase.rb +2 -0
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/{app → support}/models/question.rb +2 -0
- data/spec/{app → support}/models/quiz.rb +2 -0
- data/spec/{app → support}/models/rating.rb +2 -0
- data/spec/{app → support}/models/record.rb +2 -0
- data/spec/{app → support}/models/registry.rb +2 -0
- data/spec/{app → support}/models/role.rb +2 -0
- data/spec/{app → support}/models/root_category.rb +2 -0
- data/spec/{app → support}/models/sandwich.rb +2 -0
- data/spec/{app → support}/models/scheduler.rb +2 -0
- data/spec/support/models/scribe.rb +7 -0
- data/spec/support/models/sealer.rb +7 -0
- data/spec/support/models/seat.rb +24 -0
- data/spec/{app → support}/models/seo.rb +2 -0
- data/spec/support/models/series.rb +7 -0
- data/spec/{app → support}/models/server.rb +2 -0
- data/spec/{app → support}/models/service.rb +2 -0
- data/spec/{app → support}/models/shape.rb +4 -2
- data/spec/{app → support}/models/shelf.rb +2 -0
- data/spec/{app → support}/models/shipment_address.rb +2 -0
- data/spec/{app → support}/models/shipping_container.rb +2 -0
- data/spec/{app → support}/models/shipping_pack.rb +2 -0
- data/spec/support/models/shirt.rb +11 -0
- data/spec/{app → support}/models/shop.rb +2 -0
- data/spec/{app → support}/models/short_agent.rb +2 -0
- data/spec/{app → support}/models/short_quiz.rb +2 -0
- data/spec/{app → support}/models/simple.rb +2 -0
- data/spec/{app → support}/models/slave.rb +2 -0
- data/spec/{app → support}/models/song.rb +2 -0
- data/spec/{app → support}/models/sound.rb +2 -0
- data/spec/support/models/spacer.rb +7 -0
- data/spec/{app → support}/models/square.rb +2 -0
- data/spec/{app → support}/models/staff.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +2 -0
- data/spec/support/models/store_as_dup_test3.rb +7 -0
- data/spec/support/models/store_as_dup_test4.rb +7 -0
- data/spec/{app → support}/models/strategy.rb +2 -0
- data/spec/{app → support}/models/sub_item.rb +2 -0
- data/spec/{app → support}/models/subscription.rb +2 -0
- data/spec/{app → support}/models/survey.rb +2 -0
- data/spec/{app → support}/models/symptom.rb +2 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +2 -0
- data/spec/{app → support}/models/target.rb +2 -0
- data/spec/{app → support}/models/template.rb +2 -0
- data/spec/{app → support}/models/thing.rb +2 -0
- data/spec/support/models/threadlocker.rb +7 -0
- data/spec/{app → support}/models/title.rb +2 -0
- data/spec/{app → support}/models/tool.rb +4 -2
- data/spec/{app → support}/models/topping.rb +2 -0
- data/spec/support/models/toy.rb +9 -0
- data/spec/{app → support}/models/track.rb +2 -0
- data/spec/{app → support}/models/translation.rb +2 -0
- data/spec/{app → support}/models/tree.rb +2 -0
- data/spec/support/models/truck.rb +7 -0
- data/spec/support/models/updatable.rb +7 -0
- data/spec/{app → support}/models/user.rb +2 -0
- data/spec/{app → support}/models/user_account.rb +2 -0
- data/spec/{app → support}/models/validation_callback.rb +2 -0
- data/spec/support/models/vehicle.rb +18 -0
- data/spec/{app → support}/models/version.rb +2 -0
- data/spec/{app → support}/models/vertex.rb +3 -1
- data/spec/{app → support}/models/vet_visit.rb +2 -0
- data/spec/{app → support}/models/video.rb +2 -0
- data/spec/support/models/video_game.rb +3 -0
- data/spec/support/models/washer.rb +7 -0
- data/spec/{app → support}/models/weapon.rb +2 -0
- data/spec/{app → support}/models/wiki_page.rb +3 -0
- data/spec/{app → support}/models/word.rb +2 -0
- data/spec/{app → support}/models/word_origin.rb +2 -0
- data/spec/{app → support}/models/writer.rb +4 -2
- data/spec/support/shared/time.rb +53 -0
- data/spec/support/spec_config.rb +60 -0
- data.tar.gz.sig +0 -0
- metadata +1131 -686
- metadata.gz.sig +0 -0
- data/lib/mongoid/association/touchable.rb +0 -97
- 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 -34
- 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/or.rb +0 -33
- data/lib/mongoid/matchable/regexp.rb +0 -27
- data/lib/mongoid/matchable/size.rb +0 -21
- data/lib/support/ruby_version.rb +0 -26
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/passport.rb +0 -5
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/profile.rb +0 -5
- data/spec/app/models/series.rb +0 -4
- data/spec/app/models/truck.rb +0 -3
- data/spec/app/models/vehicle.rb +0 -11
- data/spec/app/models/video_game.rb +0 -1
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
- data/spec/mongoid/matchable/all_spec.rb +0 -31
- data/spec/mongoid/matchable/and_spec.rb +0 -187
- data/spec/mongoid/matchable/default_spec.rb +0 -130
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -106
- 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/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 -828
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "spec_helper"
|
|
2
4
|
|
|
3
5
|
describe Mongoid::Attributes::Nested do
|
|
@@ -12,10 +14,12 @@ describe Mongoid::Attributes::Nested do
|
|
|
12
14
|
|
|
13
15
|
before do
|
|
14
16
|
Person.accepts_nested_attributes_for :favorites
|
|
17
|
+
Person.accepts_nested_attributes_for :children
|
|
15
18
|
end
|
|
16
19
|
|
|
17
20
|
after do
|
|
18
21
|
Person.send(:undef_method, :favorites_attributes=)
|
|
22
|
+
Person.send(:undef_method, :children_attributes=)
|
|
19
23
|
Person.nested_attributes.clear
|
|
20
24
|
end
|
|
21
25
|
|
|
@@ -23,9 +27,18 @@ describe Mongoid::Attributes::Nested do
|
|
|
23
27
|
expect(person).to respond_to(:favorites_attributes=)
|
|
24
28
|
end
|
|
25
29
|
|
|
30
|
+
it "does not autosave if the association is embedded" do
|
|
31
|
+
expect(person).not_to respond_to(:autosave_documents_for_favorites)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "autosaves if the association is not embedded" do
|
|
35
|
+
expect(person).to respond_to(:autosave_documents_for_children)
|
|
36
|
+
end
|
|
37
|
+
|
|
26
38
|
it "adds the method name to the nested attributes list" do
|
|
27
39
|
expect(Person.nested_attributes).to eq({
|
|
28
|
-
"favorites_attributes" => "favorites_attributes="
|
|
40
|
+
"favorites_attributes" => "favorites_attributes=",
|
|
41
|
+
"children_attributes" => "children_attributes="
|
|
29
42
|
})
|
|
30
43
|
end
|
|
31
44
|
end
|
|
@@ -178,7 +191,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
178
191
|
end
|
|
179
192
|
|
|
180
193
|
context "when adding existing document to a relation" do
|
|
181
|
-
let(:preference) { Preference.create(name: 'sample preference') }
|
|
194
|
+
let(:preference) { Preference.create!(name: 'sample preference') }
|
|
182
195
|
let(:person) do
|
|
183
196
|
Person.new(
|
|
184
197
|
preferences_attributes: { 0 => { id: preference.id, name: preference.name } }
|
|
@@ -202,7 +215,12 @@ describe Mongoid::Attributes::Nested do
|
|
|
202
215
|
context "when the relation is a referenced in" do
|
|
203
216
|
|
|
204
217
|
before do
|
|
205
|
-
Post.accepts_nested_attributes_for :person
|
|
218
|
+
Post.accepts_nested_attributes_for :person, autosave: false
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
after do
|
|
222
|
+
Post.send(:undef_method, :person_attributes=)
|
|
223
|
+
Post.nested_attributes.clear
|
|
206
224
|
end
|
|
207
225
|
|
|
208
226
|
let(:post) do
|
|
@@ -215,7 +233,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
215
233
|
end
|
|
216
234
|
end
|
|
217
235
|
|
|
218
|
-
describe "
|
|
236
|
+
describe "*_attributes=" do
|
|
219
237
|
|
|
220
238
|
context "when the parent document is new" do
|
|
221
239
|
|
|
@@ -224,7 +242,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
224
242
|
context "when the parent document is persisted" do
|
|
225
243
|
|
|
226
244
|
let(:person) do
|
|
227
|
-
Person.create
|
|
245
|
+
Person.create!
|
|
228
246
|
end
|
|
229
247
|
|
|
230
248
|
before do
|
|
@@ -254,7 +272,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
254
272
|
context "when saving the parent" do
|
|
255
273
|
|
|
256
274
|
before do
|
|
257
|
-
person.save
|
|
275
|
+
person.save!
|
|
258
276
|
person.reload
|
|
259
277
|
end
|
|
260
278
|
|
|
@@ -356,7 +374,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
356
374
|
context "when all attributes are empty" do
|
|
357
375
|
|
|
358
376
|
let(:product) do
|
|
359
|
-
Product.create(name: "testing")
|
|
377
|
+
Product.create!(name: "testing")
|
|
360
378
|
end
|
|
361
379
|
|
|
362
380
|
it "does not add the document" do
|
|
@@ -589,7 +607,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
589
607
|
end
|
|
590
608
|
|
|
591
609
|
let(:owner) do
|
|
592
|
-
PetOwner.create
|
|
610
|
+
PetOwner.create!
|
|
593
611
|
end
|
|
594
612
|
|
|
595
613
|
let!(:pet) do
|
|
@@ -598,7 +616,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
598
616
|
|
|
599
617
|
before do
|
|
600
618
|
owner.pet_attributes = { id: pet.id, _destroy: truth }
|
|
601
|
-
owner.save
|
|
619
|
+
owner.save!
|
|
602
620
|
end
|
|
603
621
|
|
|
604
622
|
it "destroys the existing document" do
|
|
@@ -1016,7 +1034,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
1016
1034
|
context "when the parent document is persisted" do
|
|
1017
1035
|
|
|
1018
1036
|
let(:person) do
|
|
1019
|
-
Person.create
|
|
1037
|
+
Person.create!
|
|
1020
1038
|
end
|
|
1021
1039
|
|
|
1022
1040
|
before do
|
|
@@ -1050,7 +1068,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
1050
1068
|
context "when saving the parent" do
|
|
1051
1069
|
|
|
1052
1070
|
before do
|
|
1053
|
-
person.save
|
|
1071
|
+
person.save!
|
|
1054
1072
|
person.reload
|
|
1055
1073
|
end
|
|
1056
1074
|
|
|
@@ -1166,7 +1184,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
1166
1184
|
context "when the parent is saved" do
|
|
1167
1185
|
|
|
1168
1186
|
before do
|
|
1169
|
-
band.save
|
|
1187
|
+
band.save!
|
|
1170
1188
|
end
|
|
1171
1189
|
|
|
1172
1190
|
it "runs the first child create callbacks" do
|
|
@@ -1358,7 +1376,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
1358
1376
|
end
|
|
1359
1377
|
|
|
1360
1378
|
let!(:record) do
|
|
1361
|
-
band.records.create
|
|
1379
|
+
band.records.create!
|
|
1362
1380
|
end
|
|
1363
1381
|
|
|
1364
1382
|
let(:attributes) do
|
|
@@ -1396,17 +1414,17 @@ describe Mongoid::Attributes::Nested do
|
|
|
1396
1414
|
end
|
|
1397
1415
|
|
|
1398
1416
|
let!(:band) do
|
|
1399
|
-
Band.create
|
|
1417
|
+
Band.create!
|
|
1400
1418
|
end
|
|
1401
1419
|
|
|
1402
1420
|
let!(:record) do
|
|
1403
|
-
band.records.create
|
|
1421
|
+
band.records.create!
|
|
1404
1422
|
end
|
|
1405
1423
|
|
|
1406
1424
|
before do
|
|
1407
1425
|
band.records_attributes =
|
|
1408
1426
|
{ "foo" => { "id" => record.id, "_destroy" => true }}
|
|
1409
|
-
band.save
|
|
1427
|
+
band.save!
|
|
1410
1428
|
end
|
|
1411
1429
|
|
|
1412
1430
|
it "deletes the child document" do
|
|
@@ -1431,7 +1449,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
1431
1449
|
context "when the parent is persisted" do
|
|
1432
1450
|
|
|
1433
1451
|
let!(:persisted) do
|
|
1434
|
-
Person.create(age: 42)
|
|
1452
|
+
Person.create!(age: 42)
|
|
1435
1453
|
end
|
|
1436
1454
|
|
|
1437
1455
|
context "when the child halts the callback chain in a before callback" do
|
|
@@ -1439,11 +1457,11 @@ describe Mongoid::Attributes::Nested do
|
|
|
1439
1457
|
context "when the child is not paranoid" do
|
|
1440
1458
|
|
|
1441
1459
|
let(:actor) do
|
|
1442
|
-
Actor.create
|
|
1460
|
+
Actor.create!
|
|
1443
1461
|
end
|
|
1444
1462
|
|
|
1445
1463
|
let!(:thing) do
|
|
1446
|
-
actor.things.create
|
|
1464
|
+
actor.things.create!
|
|
1447
1465
|
end
|
|
1448
1466
|
|
|
1449
1467
|
before do
|
|
@@ -1461,11 +1479,11 @@ describe Mongoid::Attributes::Nested do
|
|
|
1461
1479
|
context "when only 1 child has the default persisted" do
|
|
1462
1480
|
|
|
1463
1481
|
let!(:app_one) do
|
|
1464
|
-
persisted.appointments.create
|
|
1482
|
+
persisted.appointments.create!
|
|
1465
1483
|
end
|
|
1466
1484
|
|
|
1467
1485
|
let!(:app_two) do
|
|
1468
|
-
persisted.appointments.create
|
|
1486
|
+
persisted.appointments.create!.tap do |app|
|
|
1469
1487
|
app.unset(:timed)
|
|
1470
1488
|
end
|
|
1471
1489
|
end
|
|
@@ -1482,7 +1500,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
1482
1500
|
"bar" => { "id" => app_one.id, "_destroy" => true },
|
|
1483
1501
|
"foo" => { "id" => app_two.id, "_destroy" => true }
|
|
1484
1502
|
}
|
|
1485
|
-
from_db.save
|
|
1503
|
+
from_db.save!
|
|
1486
1504
|
end
|
|
1487
1505
|
|
|
1488
1506
|
it "destroys both children" do
|
|
@@ -1557,7 +1575,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
1557
1575
|
context "when the parent is persisted" do
|
|
1558
1576
|
|
|
1559
1577
|
let!(:persisted) do
|
|
1560
|
-
Person.create do |p|
|
|
1578
|
+
Person.create! do |p|
|
|
1561
1579
|
p.addresses << [ address_one, address_two ]
|
|
1562
1580
|
end
|
|
1563
1581
|
end
|
|
@@ -1604,7 +1622,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
1604
1622
|
context "when saving the parent" do
|
|
1605
1623
|
|
|
1606
1624
|
before do
|
|
1607
|
-
persisted.save
|
|
1625
|
+
persisted.save!
|
|
1608
1626
|
end
|
|
1609
1627
|
|
|
1610
1628
|
it "deletes the marked document from the relation" do
|
|
@@ -1660,7 +1678,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
1660
1678
|
context "when saving the parent" do
|
|
1661
1679
|
|
|
1662
1680
|
before do
|
|
1663
|
-
persisted.save
|
|
1681
|
+
persisted.save!
|
|
1664
1682
|
end
|
|
1665
1683
|
|
|
1666
1684
|
it "deletes the marked document from the relation" do
|
|
@@ -2372,8 +2390,8 @@ describe Mongoid::Attributes::Nested do
|
|
|
2372
2390
|
end
|
|
2373
2391
|
|
|
2374
2392
|
before do
|
|
2375
|
-
pizza.topping = Topping.create(name: "cheese")
|
|
2376
|
-
pizza.update_attributes(topping_attributes: { name: "onions" })
|
|
2393
|
+
pizza.topping = Topping.create!(name: "cheese")
|
|
2394
|
+
pizza.update_attributes!(topping_attributes: { name: "onions" })
|
|
2377
2395
|
end
|
|
2378
2396
|
|
|
2379
2397
|
it "persists the attribute changes" do
|
|
@@ -2948,7 +2966,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
2948
2966
|
context "when ids are passed" do
|
|
2949
2967
|
|
|
2950
2968
|
let(:person) do
|
|
2951
|
-
Person.create
|
|
2969
|
+
Person.create!
|
|
2952
2970
|
end
|
|
2953
2971
|
|
|
2954
2972
|
before do
|
|
@@ -3013,7 +3031,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
3013
3031
|
"0" => { "id" => post_one.id, "title" => "testing again" },
|
|
3014
3032
|
"1" => { "id" => post_two.id, "title" => "$$$" }
|
|
3015
3033
|
}
|
|
3016
|
-
person.save
|
|
3034
|
+
person.save!
|
|
3017
3035
|
end
|
|
3018
3036
|
|
|
3019
3037
|
it "does not perist the invalid value" do
|
|
@@ -3289,7 +3307,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
3289
3307
|
context "when the parent is saved" do
|
|
3290
3308
|
|
|
3291
3309
|
before do
|
|
3292
|
-
person.save
|
|
3310
|
+
person.save!
|
|
3293
3311
|
person.posts_attributes =
|
|
3294
3312
|
[
|
|
3295
3313
|
{ "title" => "Third" },
|
|
@@ -3704,7 +3722,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
3704
3722
|
context "when ids are passed" do
|
|
3705
3723
|
|
|
3706
3724
|
let(:person) do
|
|
3707
|
-
Person.create
|
|
3725
|
+
Person.create!
|
|
3708
3726
|
end
|
|
3709
3727
|
|
|
3710
3728
|
before do
|
|
@@ -4286,7 +4304,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4286
4304
|
end
|
|
4287
4305
|
end
|
|
4288
4306
|
|
|
4289
|
-
describe "#update_attributes" do
|
|
4307
|
+
describe "#update_attributes!" do
|
|
4290
4308
|
|
|
4291
4309
|
before do
|
|
4292
4310
|
Person.send(:undef_method, :addresses_attributes=)
|
|
@@ -4296,11 +4314,11 @@ describe Mongoid::Attributes::Nested do
|
|
|
4296
4314
|
context "when embedding one level behind a has many" do
|
|
4297
4315
|
|
|
4298
4316
|
let(:node) do
|
|
4299
|
-
Node.create
|
|
4317
|
+
Node.create!
|
|
4300
4318
|
end
|
|
4301
4319
|
|
|
4302
4320
|
let!(:server) do
|
|
4303
|
-
node.servers.create(name: "prod")
|
|
4321
|
+
node.servers.create!(name: "prod")
|
|
4304
4322
|
end
|
|
4305
4323
|
|
|
4306
4324
|
context "when adding a new embedded document" do
|
|
@@ -4319,7 +4337,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4319
4337
|
end
|
|
4320
4338
|
|
|
4321
4339
|
before do
|
|
4322
|
-
node.update_attributes(attributes)
|
|
4340
|
+
node.update_attributes!(attributes)
|
|
4323
4341
|
end
|
|
4324
4342
|
|
|
4325
4343
|
it "adds the new embedded document" do
|
|
@@ -4335,11 +4353,11 @@ describe Mongoid::Attributes::Nested do
|
|
|
4335
4353
|
context "when deleting the child document" do
|
|
4336
4354
|
|
|
4337
4355
|
let(:person) do
|
|
4338
|
-
Person.create
|
|
4356
|
+
Person.create!
|
|
4339
4357
|
end
|
|
4340
4358
|
|
|
4341
4359
|
let!(:service) do
|
|
4342
|
-
person.services.create(sid: "123")
|
|
4360
|
+
person.services.create!(sid: "123")
|
|
4343
4361
|
end
|
|
4344
4362
|
|
|
4345
4363
|
let(:attributes) do
|
|
@@ -4351,7 +4369,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4351
4369
|
end
|
|
4352
4370
|
|
|
4353
4371
|
before do
|
|
4354
|
-
person.update_attributes(attributes)
|
|
4372
|
+
person.update_attributes!(attributes)
|
|
4355
4373
|
end
|
|
4356
4374
|
|
|
4357
4375
|
it "removes the document from the parent" do
|
|
@@ -4389,15 +4407,15 @@ describe Mongoid::Attributes::Nested do
|
|
|
4389
4407
|
end
|
|
4390
4408
|
|
|
4391
4409
|
let(:dokument) do
|
|
4392
|
-
Dokument.create
|
|
4410
|
+
Dokument.create!
|
|
4393
4411
|
end
|
|
4394
4412
|
|
|
4395
4413
|
let!(:address) do
|
|
4396
|
-
dokument.addresses.create(street: "hobrecht")
|
|
4414
|
+
dokument.addresses.create!(street: "hobrecht")
|
|
4397
4415
|
end
|
|
4398
4416
|
|
|
4399
4417
|
let!(:location) do
|
|
4400
|
-
address.locations.create(name: "work")
|
|
4418
|
+
address.locations.create!(name: "work")
|
|
4401
4419
|
end
|
|
4402
4420
|
|
|
4403
4421
|
let(:attributes) do
|
|
@@ -4409,7 +4427,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4409
4427
|
end
|
|
4410
4428
|
|
|
4411
4429
|
before do
|
|
4412
|
-
address.update_attributes(attributes)
|
|
4430
|
+
address.update_attributes!(attributes)
|
|
4413
4431
|
address.reload
|
|
4414
4432
|
end
|
|
4415
4433
|
|
|
@@ -4421,21 +4439,21 @@ describe Mongoid::Attributes::Nested do
|
|
|
4421
4439
|
context "when nesting multiple levels" do
|
|
4422
4440
|
|
|
4423
4441
|
let!(:person) do
|
|
4424
|
-
Person.create
|
|
4442
|
+
Person.create!
|
|
4425
4443
|
end
|
|
4426
4444
|
|
|
4427
4445
|
context "when second level is a one to many" do
|
|
4428
4446
|
|
|
4429
4447
|
let(:person_one) do
|
|
4430
|
-
Person.create
|
|
4448
|
+
Person.create!
|
|
4431
4449
|
end
|
|
4432
4450
|
|
|
4433
4451
|
let!(:address_one) do
|
|
4434
|
-
person_one.addresses.create(street: "hobrecht")
|
|
4452
|
+
person_one.addresses.create!(street: "hobrecht")
|
|
4435
4453
|
end
|
|
4436
4454
|
|
|
4437
4455
|
let!(:location_one) do
|
|
4438
|
-
address_one.locations.create(name: "home")
|
|
4456
|
+
address_one.locations.create!(name: "home")
|
|
4439
4457
|
end
|
|
4440
4458
|
|
|
4441
4459
|
context "when destroying a second level document" do
|
|
@@ -4452,7 +4470,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4452
4470
|
end
|
|
4453
4471
|
|
|
4454
4472
|
before do
|
|
4455
|
-
person_one.update_attributes(attributes)
|
|
4473
|
+
person_one.update_attributes!(attributes)
|
|
4456
4474
|
end
|
|
4457
4475
|
|
|
4458
4476
|
it "deletes the document from the relation" do
|
|
@@ -4467,15 +4485,15 @@ describe Mongoid::Attributes::Nested do
|
|
|
4467
4485
|
context "when destroying a second level document with callbacks" do
|
|
4468
4486
|
|
|
4469
4487
|
let(:band) do
|
|
4470
|
-
Band.create(name: "Tool")
|
|
4488
|
+
Band.create!(name: "Tool")
|
|
4471
4489
|
end
|
|
4472
4490
|
|
|
4473
4491
|
let(:record) do
|
|
4474
|
-
band.records.create(name: "Undertow")
|
|
4492
|
+
band.records.create!(name: "Undertow")
|
|
4475
4493
|
end
|
|
4476
4494
|
|
|
4477
4495
|
let!(:track) do
|
|
4478
|
-
record.tracks.create(name: "Sober")
|
|
4496
|
+
record.tracks.create!(name: "Sober")
|
|
4479
4497
|
end
|
|
4480
4498
|
|
|
4481
4499
|
context "when cascading callbacks" do
|
|
@@ -4502,7 +4520,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4502
4520
|
end
|
|
4503
4521
|
|
|
4504
4522
|
before do
|
|
4505
|
-
band.update_attributes(attributes)
|
|
4523
|
+
band.update_attributes!(attributes)
|
|
4506
4524
|
end
|
|
4507
4525
|
|
|
4508
4526
|
it "removes the child from the relation" do
|
|
@@ -4535,7 +4553,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4535
4553
|
end
|
|
4536
4554
|
|
|
4537
4555
|
before do
|
|
4538
|
-
person.update_attributes(attributes)
|
|
4556
|
+
person.update_attributes!(attributes)
|
|
4539
4557
|
end
|
|
4540
4558
|
|
|
4541
4559
|
let(:address) do
|
|
@@ -4558,11 +4576,11 @@ describe Mongoid::Attributes::Nested do
|
|
|
4558
4576
|
context "when adding to an existing document in the first level" do
|
|
4559
4577
|
|
|
4560
4578
|
let!(:address) do
|
|
4561
|
-
person.addresses.create(street: "hobrecht")
|
|
4579
|
+
person.addresses.create!(street: "hobrecht")
|
|
4562
4580
|
end
|
|
4563
4581
|
|
|
4564
4582
|
let!(:location) do
|
|
4565
|
-
address.locations.create(name: "work")
|
|
4583
|
+
address.locations.create!(name: "work")
|
|
4566
4584
|
end
|
|
4567
4585
|
|
|
4568
4586
|
let(:attributes) do
|
|
@@ -4575,7 +4593,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4575
4593
|
end
|
|
4576
4594
|
|
|
4577
4595
|
before do
|
|
4578
|
-
person.update_attributes(attributes)
|
|
4596
|
+
person.update_attributes!(attributes)
|
|
4579
4597
|
person.reload
|
|
4580
4598
|
end
|
|
4581
4599
|
|
|
@@ -4606,7 +4624,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4606
4624
|
end
|
|
4607
4625
|
|
|
4608
4626
|
before do
|
|
4609
|
-
person.update_attributes(attributes)
|
|
4627
|
+
person.update_attributes!(attributes)
|
|
4610
4628
|
end
|
|
4611
4629
|
|
|
4612
4630
|
let(:address) do
|
|
@@ -4632,7 +4650,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4632
4650
|
context "when the nested document is not polymorphic" do
|
|
4633
4651
|
|
|
4634
4652
|
let!(:address) do
|
|
4635
|
-
person.addresses.create(street: "Alexanderstr", number: 1)
|
|
4653
|
+
person.addresses.create!(street: "Alexanderstr", number: 1)
|
|
4636
4654
|
end
|
|
4637
4655
|
|
|
4638
4656
|
let!(:code) do
|
|
@@ -4655,7 +4673,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4655
4673
|
end
|
|
4656
4674
|
|
|
4657
4675
|
before do
|
|
4658
|
-
person.update_attributes(attributes)
|
|
4676
|
+
person.update_attributes!(attributes)
|
|
4659
4677
|
end
|
|
4660
4678
|
|
|
4661
4679
|
it "updates the first level embedded document" do
|
|
@@ -4672,7 +4690,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4672
4690
|
context "when the first level is an embeds many" do
|
|
4673
4691
|
|
|
4674
4692
|
let!(:address) do
|
|
4675
|
-
person.addresses.create(street: "Alexanderstr", number: 1)
|
|
4693
|
+
person.addresses.create!(street: "Alexanderstr", number: 1)
|
|
4676
4694
|
end
|
|
4677
4695
|
|
|
4678
4696
|
let!(:target) do
|
|
@@ -4695,7 +4713,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4695
4713
|
end
|
|
4696
4714
|
|
|
4697
4715
|
before do
|
|
4698
|
-
person.update_attributes(attributes)
|
|
4716
|
+
person.update_attributes!(attributes)
|
|
4699
4717
|
end
|
|
4700
4718
|
|
|
4701
4719
|
it "updates the first level embedded document" do
|
|
@@ -4731,7 +4749,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4731
4749
|
end
|
|
4732
4750
|
|
|
4733
4751
|
before do
|
|
4734
|
-
person.update_attributes(attributes)
|
|
4752
|
+
person.update_attributes!(attributes)
|
|
4735
4753
|
end
|
|
4736
4754
|
|
|
4737
4755
|
it "updates the nested embedded document" do
|
|
@@ -4748,7 +4766,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4748
4766
|
context "when updating with valid attributes" do
|
|
4749
4767
|
|
|
4750
4768
|
let(:user) do
|
|
4751
|
-
User.create
|
|
4769
|
+
User.create!
|
|
4752
4770
|
end
|
|
4753
4771
|
|
|
4754
4772
|
let(:params) do
|
|
@@ -4758,7 +4776,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4758
4776
|
end
|
|
4759
4777
|
|
|
4760
4778
|
before do
|
|
4761
|
-
user.update_attributes(params)
|
|
4779
|
+
user.update_attributes!(params)
|
|
4762
4780
|
end
|
|
4763
4781
|
|
|
4764
4782
|
around do |example|
|
|
@@ -4784,11 +4802,11 @@ describe Mongoid::Attributes::Nested do
|
|
|
4784
4802
|
context "when the document is freshly loaded from the db" do
|
|
4785
4803
|
|
|
4786
4804
|
let!(:node) do
|
|
4787
|
-
Node.create
|
|
4805
|
+
Node.create!
|
|
4788
4806
|
end
|
|
4789
4807
|
|
|
4790
4808
|
let!(:server) do
|
|
4791
|
-
node.servers.create(name: "test")
|
|
4809
|
+
node.servers.create!(name: "test")
|
|
4792
4810
|
end
|
|
4793
4811
|
|
|
4794
4812
|
before do
|
|
@@ -4821,11 +4839,11 @@ describe Mongoid::Attributes::Nested do
|
|
|
4821
4839
|
context "when the relation is an embeds many" do
|
|
4822
4840
|
|
|
4823
4841
|
let(:league) do
|
|
4824
|
-
League.create
|
|
4842
|
+
League.create!
|
|
4825
4843
|
end
|
|
4826
4844
|
|
|
4827
4845
|
let!(:division) do
|
|
4828
|
-
league.divisions.create(name: "Old Name")
|
|
4846
|
+
league.divisions.create!(name: "Old Name")
|
|
4829
4847
|
end
|
|
4830
4848
|
|
|
4831
4849
|
context "when additional validation is set" do
|
|
@@ -4880,7 +4898,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4880
4898
|
end
|
|
4881
4899
|
|
|
4882
4900
|
before do
|
|
4883
|
-
league.update_attributes(params)
|
|
4901
|
+
league.update_attributes!(params)
|
|
4884
4902
|
end
|
|
4885
4903
|
|
|
4886
4904
|
it "sets the nested attributes" do
|
|
@@ -4900,7 +4918,7 @@ describe Mongoid::Attributes::Nested do
|
|
|
4900
4918
|
end
|
|
4901
4919
|
|
|
4902
4920
|
before do
|
|
4903
|
-
league.update_attributes(new_params)
|
|
4921
|
+
league.update_attributes!(new_params)
|
|
4904
4922
|
end
|
|
4905
4923
|
|
|
4906
4924
|
it "sets the nested attributes" do
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
- name: embedded field - inclusion
|
|
2
|
+
projection:
|
|
3
|
+
foo.bar: 1
|
|
4
|
+
|
|
5
|
+
queries: &embedded-field-inclusion-expectations
|
|
6
|
+
# Top-level field is allowed as a container
|
|
7
|
+
- query: foo
|
|
8
|
+
allowed: true
|
|
9
|
+
|
|
10
|
+
# Unmentioned field is not allowed
|
|
11
|
+
- query: bar
|
|
12
|
+
allowed: false
|
|
13
|
+
|
|
14
|
+
# A peer to the field isn't allowed
|
|
15
|
+
- query: foo.buck
|
|
16
|
+
allowed: false
|
|
17
|
+
|
|
18
|
+
# A more nested field is allowed
|
|
19
|
+
- query: foo.bar.baz
|
|
20
|
+
allowed: true
|
|
21
|
+
|
|
22
|
+
- name: embedded field - exclusion
|
|
23
|
+
projection:
|
|
24
|
+
foo.bar: 0
|
|
25
|
+
|
|
26
|
+
queries: &embedded-field-exclusion-expectations
|
|
27
|
+
# Top-level field is allowed
|
|
28
|
+
- query: foo
|
|
29
|
+
allowed: true
|
|
30
|
+
|
|
31
|
+
# Unmentioned field is allowed
|
|
32
|
+
- query: bar
|
|
33
|
+
allowed: true
|
|
34
|
+
|
|
35
|
+
# A peer to the excluded field is allowed
|
|
36
|
+
- query: foo.buck
|
|
37
|
+
allowed: true
|
|
38
|
+
|
|
39
|
+
# A more nested field is not allowed
|
|
40
|
+
- query: foo.bar.baz
|
|
41
|
+
allowed: false
|
|
42
|
+
|
|
43
|
+
- name: parent and child fields - inclusion
|
|
44
|
+
projection:
|
|
45
|
+
foo.bar: 1
|
|
46
|
+
foo.bar.baz: 1
|
|
47
|
+
|
|
48
|
+
queries:
|
|
49
|
+
# Top-level field is allowed
|
|
50
|
+
- query: foo
|
|
51
|
+
allowed: true
|
|
52
|
+
|
|
53
|
+
# Second-level field is allowed
|
|
54
|
+
- query: foo.bar
|
|
55
|
+
allowed: true
|
|
56
|
+
|
|
57
|
+
# Third-level field is also allowed
|
|
58
|
+
- query: foo.bar.baz
|
|
59
|
+
allowed: true
|
|
60
|
+
|
|
61
|
+
# Fourth-level field is still allowed
|
|
62
|
+
- query: foo.bar.baz.zzz
|
|
63
|
+
allowed: true
|
|
64
|
+
|
|
65
|
+
# Unmentioned siblings are not allowed
|
|
66
|
+
- query: buck
|
|
67
|
+
allowed: false
|
|
68
|
+
- query: foo.buck
|
|
69
|
+
allowed: false
|
|
70
|
+
|
|
71
|
+
# This sibling is under the second-level include and is allowed
|
|
72
|
+
- query: foo.bar.buck
|
|
73
|
+
allowed: true
|
|
74
|
+
|
|
75
|
+
- name: parent and child fields - exclusion
|
|
76
|
+
projection:
|
|
77
|
+
foo.bar: 0
|
|
78
|
+
foo.bar.baz: 0
|
|
79
|
+
|
|
80
|
+
queries:
|
|
81
|
+
# Top-level field is allowed
|
|
82
|
+
- query: foo
|
|
83
|
+
allowed: true
|
|
84
|
+
|
|
85
|
+
# Second-level field is not allowed
|
|
86
|
+
- query: foo.bar
|
|
87
|
+
allowed: false
|
|
88
|
+
|
|
89
|
+
# Third-level field is also not allowed
|
|
90
|
+
- query: foo.bar.baz
|
|
91
|
+
allowed: false
|
|
92
|
+
|
|
93
|
+
# Fourth-level field is still not allowed
|
|
94
|
+
- query: foo.bar.baz.zzz
|
|
95
|
+
allowed: false
|
|
96
|
+
|
|
97
|
+
# Unmentioned siblings are allowed
|
|
98
|
+
- query: buck
|
|
99
|
+
allowed: true
|
|
100
|
+
- query: foo.buck
|
|
101
|
+
allowed: true
|
|
102
|
+
|
|
103
|
+
# This sibling is under the second-level exclude and is disallowed
|
|
104
|
+
- query: foo.bar.buck
|
|
105
|
+
allowed: false
|