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::Association::Embedded::EmbedsMany::Proxy do
|
|
@@ -112,7 +114,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
112
114
|
context "when the parent is not a new record" do
|
|
113
115
|
|
|
114
116
|
let(:person) do
|
|
115
|
-
Person.create
|
|
117
|
+
Person.create!
|
|
116
118
|
end
|
|
117
119
|
|
|
118
120
|
let(:address) do
|
|
@@ -131,7 +133,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
131
133
|
context "when appending more than one document at once" do
|
|
132
134
|
|
|
133
135
|
let(:person) do
|
|
134
|
-
Person.create
|
|
136
|
+
Person.create!
|
|
135
137
|
end
|
|
136
138
|
|
|
137
139
|
let(:address_one) do
|
|
@@ -207,7 +209,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
207
209
|
context "when the parent is not a new record" do
|
|
208
210
|
|
|
209
211
|
let(:parent_role) do
|
|
210
|
-
Role.create(name: "CEO")
|
|
212
|
+
Role.create!(name: "CEO")
|
|
211
213
|
end
|
|
212
214
|
|
|
213
215
|
let(:child_role) do
|
|
@@ -226,7 +228,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
226
228
|
|
|
227
229
|
context "when the child has one sided many to many relation" do
|
|
228
230
|
let(:person) do
|
|
229
|
-
Person.create
|
|
231
|
+
Person.create!
|
|
230
232
|
end
|
|
231
233
|
|
|
232
234
|
let(:message) do
|
|
@@ -309,7 +311,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
309
311
|
context "when the parent is not a new record" do
|
|
310
312
|
|
|
311
313
|
let(:person) do
|
|
312
|
-
Person.create
|
|
314
|
+
Person.create!
|
|
313
315
|
end
|
|
314
316
|
|
|
315
317
|
let(:address) do
|
|
@@ -330,11 +332,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
330
332
|
context "when setting via an overridden method from the parent" do
|
|
331
333
|
|
|
332
334
|
let!(:person) do
|
|
333
|
-
Person.create
|
|
335
|
+
Person.create!
|
|
334
336
|
end
|
|
335
337
|
|
|
336
338
|
let!(:address) do
|
|
337
|
-
person.addresses.create(street: "Alt Treptow")
|
|
339
|
+
person.addresses.create!(street: "Alt Treptow")
|
|
338
340
|
end
|
|
339
341
|
|
|
340
342
|
let!(:new_address) do
|
|
@@ -342,7 +344,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
342
344
|
end
|
|
343
345
|
|
|
344
346
|
before do
|
|
345
|
-
person.update_attributes(set_addresses: [ new_address ])
|
|
347
|
+
person.update_attributes!(set_addresses: [ new_address ])
|
|
346
348
|
end
|
|
347
349
|
|
|
348
350
|
it "overwrites the existing addresses" do
|
|
@@ -372,7 +374,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
372
374
|
|
|
373
375
|
before do
|
|
374
376
|
person.addresses = [ address_two ]
|
|
375
|
-
person.save
|
|
377
|
+
person.save!
|
|
376
378
|
end
|
|
377
379
|
|
|
378
380
|
it "sets the new documents" do
|
|
@@ -406,7 +408,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
406
408
|
|
|
407
409
|
before do
|
|
408
410
|
doctor.addresses = [ address_one ]
|
|
409
|
-
doctor.save
|
|
411
|
+
doctor.save!
|
|
410
412
|
end
|
|
411
413
|
|
|
412
414
|
it "sets the documents" do
|
|
@@ -425,7 +427,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
425
427
|
|
|
426
428
|
before do
|
|
427
429
|
doctor.addresses = [ address_two ]
|
|
428
|
-
doctor.save
|
|
430
|
+
doctor.save!
|
|
429
431
|
end
|
|
430
432
|
|
|
431
433
|
it "sets the new documents" do
|
|
@@ -443,7 +445,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
443
445
|
context "when replacing an existing relation" do
|
|
444
446
|
|
|
445
447
|
let(:person) do
|
|
446
|
-
Person.create(addresses: addresses)
|
|
448
|
+
Person.create!(addresses: addresses)
|
|
447
449
|
end
|
|
448
450
|
|
|
449
451
|
let(:addresses) do
|
|
@@ -504,7 +506,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
504
506
|
end
|
|
505
507
|
|
|
506
508
|
let(:tracking_id) do
|
|
507
|
-
MyCompany::Model::TrackingId.create
|
|
509
|
+
MyCompany::Model::TrackingId.create!
|
|
508
510
|
end
|
|
509
511
|
|
|
510
512
|
let(:history) do
|
|
@@ -539,7 +541,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
539
541
|
inflect.singular("address_numbers", "address_number")
|
|
540
542
|
end
|
|
541
543
|
slave.address_numbers << AddressNumber.new(country_code: 1)
|
|
542
|
-
slave.save
|
|
544
|
+
slave.save!
|
|
543
545
|
end
|
|
544
546
|
|
|
545
547
|
it "requires an inflection to determine the class" do
|
|
@@ -550,15 +552,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
550
552
|
context "when setting the entire tree via a hash" do
|
|
551
553
|
|
|
552
554
|
let(:person) do
|
|
553
|
-
Person.create
|
|
555
|
+
Person.create!
|
|
554
556
|
end
|
|
555
557
|
|
|
556
558
|
let!(:address_one) do
|
|
557
|
-
person.addresses.create(street: "Tauentzienstr")
|
|
559
|
+
person.addresses.create!(street: "Tauentzienstr")
|
|
558
560
|
end
|
|
559
561
|
|
|
560
562
|
let!(:address_two) do
|
|
561
|
-
person.addresses.create(street: "Kudamm")
|
|
563
|
+
person.addresses.create!(street: "Kudamm")
|
|
562
564
|
end
|
|
563
565
|
|
|
564
566
|
let(:attributes) do
|
|
@@ -569,7 +571,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
569
571
|
|
|
570
572
|
before do
|
|
571
573
|
attributes["addresses"][0]["city"] = "Berlin"
|
|
572
|
-
person.update_attributes(attributes)
|
|
574
|
+
person.update_attributes!(attributes)
|
|
573
575
|
end
|
|
574
576
|
|
|
575
577
|
it "sets the new attributes" do
|
|
@@ -585,15 +587,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
585
587
|
context "when setting an embedded sub-document tree via a hash" do
|
|
586
588
|
|
|
587
589
|
let(:person) do
|
|
588
|
-
Person.create
|
|
590
|
+
Person.create!
|
|
589
591
|
end
|
|
590
592
|
|
|
591
593
|
let!(:address_one) do
|
|
592
|
-
person.addresses.create(street: "Tauentzienstr")
|
|
594
|
+
person.addresses.create!(street: "Tauentzienstr")
|
|
593
595
|
end
|
|
594
596
|
|
|
595
597
|
let!(:location_one) do
|
|
596
|
-
person.addresses.first.locations.create(name: "Work")
|
|
598
|
+
person.addresses.first.locations.create!(name: "Work")
|
|
597
599
|
end
|
|
598
600
|
|
|
599
601
|
let(:attributes) do
|
|
@@ -605,7 +607,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
605
607
|
before do
|
|
606
608
|
attributes["city"] = "Berlin"
|
|
607
609
|
attributes["locations"][0]["name"] = "Home"
|
|
608
|
-
person.addresses.first.update_attributes(attributes)
|
|
610
|
+
person.addresses.first.update_attributes!(attributes)
|
|
609
611
|
end
|
|
610
612
|
|
|
611
613
|
it "sets the new attributes on the address" do
|
|
@@ -678,7 +680,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
678
680
|
context "when the parent is not a new record" do
|
|
679
681
|
|
|
680
682
|
let(:parent_role) do
|
|
681
|
-
Role.create(name: "CTO")
|
|
683
|
+
Role.create!(name: "CTO")
|
|
682
684
|
end
|
|
683
685
|
|
|
684
686
|
let(:child_role) do
|
|
@@ -746,7 +748,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
746
748
|
context "when the parent is persisted" do
|
|
747
749
|
|
|
748
750
|
let(:person) do
|
|
749
|
-
Person.create
|
|
751
|
+
Person.create!
|
|
750
752
|
end
|
|
751
753
|
|
|
752
754
|
let(:address) do
|
|
@@ -795,7 +797,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
795
797
|
context "when saving the parent" do
|
|
796
798
|
|
|
797
799
|
before do
|
|
798
|
-
person.save
|
|
800
|
+
person.save!
|
|
799
801
|
person.reload
|
|
800
802
|
end
|
|
801
803
|
|
|
@@ -809,7 +811,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
809
811
|
context "when setting on a reload" do
|
|
810
812
|
|
|
811
813
|
let(:person) do
|
|
812
|
-
Person.create
|
|
814
|
+
Person.create!
|
|
813
815
|
end
|
|
814
816
|
|
|
815
817
|
let(:address) do
|
|
@@ -879,7 +881,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
879
881
|
context "when the documents are not new records" do
|
|
880
882
|
|
|
881
883
|
let(:parent_role) do
|
|
882
|
-
Role.create
|
|
884
|
+
Role.create!
|
|
883
885
|
end
|
|
884
886
|
|
|
885
887
|
let(:child_role) do
|
|
@@ -909,13 +911,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
909
911
|
describe "#as_document" do
|
|
910
912
|
|
|
911
913
|
let!(:person) do
|
|
912
|
-
Person.create
|
|
914
|
+
Person.create!
|
|
913
915
|
end
|
|
914
916
|
|
|
915
917
|
context 'when a string is used to access an attribute' do
|
|
916
918
|
|
|
917
919
|
let!(:address) do
|
|
918
|
-
person.addresses.create(street: "one")
|
|
920
|
+
person.addresses.create!(street: "one")
|
|
919
921
|
end
|
|
920
922
|
|
|
921
923
|
let(:document) do
|
|
@@ -930,7 +932,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
930
932
|
context 'when a symbol is used to access an attribute' do
|
|
931
933
|
|
|
932
934
|
let!(:address) do
|
|
933
|
-
person.addresses.create(street: "one")
|
|
935
|
+
person.addresses.create!(street: "one")
|
|
934
936
|
end
|
|
935
937
|
|
|
936
938
|
let(:document) do
|
|
@@ -945,7 +947,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
945
947
|
context "when the relation has no default scope" do
|
|
946
948
|
|
|
947
949
|
let!(:address) do
|
|
948
|
-
person.addresses.create(street: "one")
|
|
950
|
+
person.addresses.create!(street: "one")
|
|
949
951
|
end
|
|
950
952
|
|
|
951
953
|
let(:document) do
|
|
@@ -1102,7 +1104,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1102
1104
|
context "when providing nested attributes" do
|
|
1103
1105
|
|
|
1104
1106
|
let(:person) do
|
|
1105
|
-
Person.create
|
|
1107
|
+
Person.create!
|
|
1106
1108
|
end
|
|
1107
1109
|
|
|
1108
1110
|
let(:address) do
|
|
@@ -1116,7 +1118,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1116
1118
|
context "when followed by a save" do
|
|
1117
1119
|
|
|
1118
1120
|
before do
|
|
1119
|
-
address.save
|
|
1121
|
+
address.save!
|
|
1120
1122
|
end
|
|
1121
1123
|
|
|
1122
1124
|
let(:location) do
|
|
@@ -1136,13 +1138,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1136
1138
|
context "when the parent has been persisted" do
|
|
1137
1139
|
|
|
1138
1140
|
let(:person) do
|
|
1139
|
-
Person.create
|
|
1141
|
+
Person.create!
|
|
1140
1142
|
end
|
|
1141
1143
|
|
|
1142
1144
|
context "when the children are persisted" do
|
|
1143
1145
|
|
|
1144
1146
|
let!(:address) do
|
|
1145
|
-
person.addresses.create(street: "High St")
|
|
1147
|
+
person.addresses.create!(street: "High St")
|
|
1146
1148
|
end
|
|
1147
1149
|
|
|
1148
1150
|
let!(:relation) do
|
|
@@ -1258,7 +1260,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1258
1260
|
context "when the parent is not a new record" do
|
|
1259
1261
|
|
|
1260
1262
|
let(:person) do
|
|
1261
|
-
Person.create
|
|
1263
|
+
Person.create!
|
|
1262
1264
|
end
|
|
1263
1265
|
|
|
1264
1266
|
let(:address) do
|
|
@@ -1277,7 +1279,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1277
1279
|
context "when concatenating an empty array" do
|
|
1278
1280
|
|
|
1279
1281
|
let(:person) do
|
|
1280
|
-
Person.create
|
|
1282
|
+
Person.create!
|
|
1281
1283
|
end
|
|
1282
1284
|
|
|
1283
1285
|
before do
|
|
@@ -1293,7 +1295,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1293
1295
|
context "when appending more than one document at once" do
|
|
1294
1296
|
|
|
1295
1297
|
let(:person) do
|
|
1296
|
-
Person.create
|
|
1298
|
+
Person.create!
|
|
1297
1299
|
end
|
|
1298
1300
|
|
|
1299
1301
|
let(:address_one) do
|
|
@@ -1365,7 +1367,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1365
1367
|
context "when the parent is not a new record" do
|
|
1366
1368
|
|
|
1367
1369
|
let(:parent_role) do
|
|
1368
|
-
Role.create(name: "CEO")
|
|
1370
|
+
Role.create!(name: "CEO")
|
|
1369
1371
|
end
|
|
1370
1372
|
|
|
1371
1373
|
let(:child_role) do
|
|
@@ -1386,17 +1388,262 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1386
1388
|
describe "#count" do
|
|
1387
1389
|
|
|
1388
1390
|
let(:person) do
|
|
1389
|
-
Person.create
|
|
1391
|
+
Person.create!
|
|
1390
1392
|
end
|
|
1391
1393
|
|
|
1392
1394
|
before do
|
|
1393
|
-
person.addresses.create(street: "Upper")
|
|
1395
|
+
person.addresses.create!(street: "Upper")
|
|
1394
1396
|
person.addresses.build(street: "Bond")
|
|
1397
|
+
person.addresses.build(street: "Lower")
|
|
1395
1398
|
end
|
|
1396
1399
|
|
|
1397
1400
|
it "returns the number of persisted documents" do
|
|
1398
1401
|
expect(person.addresses.count).to eq(1)
|
|
1399
1402
|
end
|
|
1403
|
+
|
|
1404
|
+
context 'block form' do
|
|
1405
|
+
it "iterates across all documents" do
|
|
1406
|
+
expect(person.addresses.count {|a| a.persisted? }).to eq(1)
|
|
1407
|
+
expect(person.addresses.count {|a| !a.persisted? }).to eq(2)
|
|
1408
|
+
expect(person.addresses.count {|a| a.street.include?('on') }).to eq(1)
|
|
1409
|
+
expect(person.addresses.count {|a| a.street.ends_with?('er') }).to eq(2)
|
|
1410
|
+
end
|
|
1411
|
+
end
|
|
1412
|
+
|
|
1413
|
+
context 'argument form' do
|
|
1414
|
+
it "behaves correctly when given a model instance" do
|
|
1415
|
+
expect(person.addresses.count(person.addresses.first)).to eq(1)
|
|
1416
|
+
end
|
|
1417
|
+
|
|
1418
|
+
it "behaves correctly when given a non-model instance" do
|
|
1419
|
+
expect(person.addresses.count(1)).to eq(0)
|
|
1420
|
+
end
|
|
1421
|
+
end
|
|
1422
|
+
end
|
|
1423
|
+
|
|
1424
|
+
describe "#any?" do
|
|
1425
|
+
|
|
1426
|
+
let(:person) do
|
|
1427
|
+
Person.create!
|
|
1428
|
+
end
|
|
1429
|
+
|
|
1430
|
+
context "when documents are persisted" do
|
|
1431
|
+
before do
|
|
1432
|
+
person.addresses.create!(street: "Upper")
|
|
1433
|
+
end
|
|
1434
|
+
|
|
1435
|
+
it "returns true" do
|
|
1436
|
+
expect(person.addresses.any?).to be true
|
|
1437
|
+
end
|
|
1438
|
+
|
|
1439
|
+
it "block form iterates across all documents" do
|
|
1440
|
+
expect(person.addresses.any? {|a| a.street == "Upper" }).to be true
|
|
1441
|
+
expect(person.addresses.any? {|a| a.street == "Bond" }).to be false
|
|
1442
|
+
end
|
|
1443
|
+
|
|
1444
|
+
context 'argument form' do
|
|
1445
|
+
it "behaves correctly when given a model instance" do
|
|
1446
|
+
expect(person.addresses.any?(person.addresses.first)).to be true
|
|
1447
|
+
end
|
|
1448
|
+
|
|
1449
|
+
it "behaves correctly when given a non-model instance" do
|
|
1450
|
+
expect(person.addresses.any?(1)).to be false
|
|
1451
|
+
end
|
|
1452
|
+
end
|
|
1453
|
+
end
|
|
1454
|
+
|
|
1455
|
+
context "when documents are not persisted" do
|
|
1456
|
+
before do
|
|
1457
|
+
person.addresses.build(street: "Bond")
|
|
1458
|
+
end
|
|
1459
|
+
|
|
1460
|
+
it "returns true" do
|
|
1461
|
+
expect(person.addresses.any?).to be true
|
|
1462
|
+
end
|
|
1463
|
+
|
|
1464
|
+
it "block form iterates across all documents" do
|
|
1465
|
+
expect(person.addresses.any? {|a| a.street == "Upper" }).to be false
|
|
1466
|
+
expect(person.addresses.any? {|a| a.street == "Bond" }).to be true
|
|
1467
|
+
end
|
|
1468
|
+
|
|
1469
|
+
context 'argument form' do
|
|
1470
|
+
it "behaves correctly when given a model instance" do
|
|
1471
|
+
expect(person.addresses.any?(person.addresses.first)).to be true
|
|
1472
|
+
end
|
|
1473
|
+
|
|
1474
|
+
it "behaves correctly when given a non-model instance" do
|
|
1475
|
+
expect(person.addresses.any?(1)).to be false
|
|
1476
|
+
end
|
|
1477
|
+
end
|
|
1478
|
+
end
|
|
1479
|
+
|
|
1480
|
+
context "when documents are not present" do
|
|
1481
|
+
it "returns false" do
|
|
1482
|
+
expect(person.addresses.any?).to be false
|
|
1483
|
+
end
|
|
1484
|
+
|
|
1485
|
+
it "block form iterates across all documents" do
|
|
1486
|
+
expect(person.addresses.any?(&:a)).to be false
|
|
1487
|
+
end
|
|
1488
|
+
|
|
1489
|
+
it "argument form is supported" do
|
|
1490
|
+
expect(person.addresses.any?(1)).to be false
|
|
1491
|
+
end
|
|
1492
|
+
end
|
|
1493
|
+
end
|
|
1494
|
+
|
|
1495
|
+
describe "#all?" do
|
|
1496
|
+
|
|
1497
|
+
let(:person) do
|
|
1498
|
+
Person.create!
|
|
1499
|
+
end
|
|
1500
|
+
|
|
1501
|
+
context "when documents are persisted" do
|
|
1502
|
+
before do
|
|
1503
|
+
person.addresses.create!(street: "Upper")
|
|
1504
|
+
end
|
|
1505
|
+
|
|
1506
|
+
it "returns true" do
|
|
1507
|
+
expect(person.addresses.all?).to be true
|
|
1508
|
+
end
|
|
1509
|
+
|
|
1510
|
+
it "block form iterates across all documents" do
|
|
1511
|
+
expect(person.addresses.all? {|a| a.street == "Upper" }).to be true
|
|
1512
|
+
expect(person.addresses.all? {|a| a.street == "Bond" }).to be false
|
|
1513
|
+
end
|
|
1514
|
+
|
|
1515
|
+
context 'argument form' do
|
|
1516
|
+
it "behaves correctly when given a model instance" do
|
|
1517
|
+
expect(person.addresses.all?(person.addresses.first)).to be true
|
|
1518
|
+
end
|
|
1519
|
+
|
|
1520
|
+
it "behaves correctly when given a non-model instance" do
|
|
1521
|
+
expect(person.addresses.all?(1)).to be false
|
|
1522
|
+
end
|
|
1523
|
+
end
|
|
1524
|
+
end
|
|
1525
|
+
|
|
1526
|
+
context "when documents are not persisted" do
|
|
1527
|
+
before do
|
|
1528
|
+
person.addresses.build(street: "Bond")
|
|
1529
|
+
end
|
|
1530
|
+
|
|
1531
|
+
it "returns true" do
|
|
1532
|
+
expect(person.addresses.all?).to be true
|
|
1533
|
+
end
|
|
1534
|
+
|
|
1535
|
+
it "block form iterates across all documents" do
|
|
1536
|
+
expect(person.addresses.all? {|a| a.street == "Upper" }).to be false
|
|
1537
|
+
expect(person.addresses.all? {|a| a.street == "Bond" }).to be true
|
|
1538
|
+
end
|
|
1539
|
+
|
|
1540
|
+
context 'argument form' do
|
|
1541
|
+
it "behaves correctly when given a model instance" do
|
|
1542
|
+
expect(person.addresses.all?(person.addresses.first)).to be true
|
|
1543
|
+
end
|
|
1544
|
+
|
|
1545
|
+
it "behaves correctly when given a non-model instance" do
|
|
1546
|
+
expect(person.addresses.all?(1)).to be false
|
|
1547
|
+
end
|
|
1548
|
+
end
|
|
1549
|
+
end
|
|
1550
|
+
|
|
1551
|
+
context "when documents are not present" do
|
|
1552
|
+
it "returns false" do
|
|
1553
|
+
expect(person.addresses.all?).to be true
|
|
1554
|
+
end
|
|
1555
|
+
|
|
1556
|
+
it "block form iterates across all documents" do
|
|
1557
|
+
expect(person.addresses.all?(&:foo)).to be true
|
|
1558
|
+
end
|
|
1559
|
+
|
|
1560
|
+
context 'argument form' do
|
|
1561
|
+
it "behaves correctly when given nil" do
|
|
1562
|
+
expect(person.addresses.all?(nil)).to be true
|
|
1563
|
+
end
|
|
1564
|
+
|
|
1565
|
+
it "behaves correctly when given a non-model instance" do
|
|
1566
|
+
expect(person.addresses.all?(1)).to be true
|
|
1567
|
+
end
|
|
1568
|
+
end
|
|
1569
|
+
end
|
|
1570
|
+
end
|
|
1571
|
+
|
|
1572
|
+
describe "#none?" do
|
|
1573
|
+
|
|
1574
|
+
let(:person) do
|
|
1575
|
+
Person.create!
|
|
1576
|
+
end
|
|
1577
|
+
|
|
1578
|
+
context "when documents are persisted" do
|
|
1579
|
+
before do
|
|
1580
|
+
person.addresses.create!(street: "Upper")
|
|
1581
|
+
end
|
|
1582
|
+
|
|
1583
|
+
it "returns true" do
|
|
1584
|
+
expect(person.addresses.none?).to be false
|
|
1585
|
+
end
|
|
1586
|
+
|
|
1587
|
+
it "block form iterates across all documents" do
|
|
1588
|
+
expect(person.addresses.none? {|a| a.street == "Upper" }).to be false
|
|
1589
|
+
expect(person.addresses.none? {|a| a.street == "Bond" }).to be true
|
|
1590
|
+
end
|
|
1591
|
+
|
|
1592
|
+
context 'argument form' do
|
|
1593
|
+
it "behaves correctly when given a model instance" do
|
|
1594
|
+
expect(person.addresses.none?(person.addresses.first)).to be false
|
|
1595
|
+
end
|
|
1596
|
+
|
|
1597
|
+
it "behaves correctly when given a non-model instance" do
|
|
1598
|
+
expect(person.addresses.none?(1)).to be true
|
|
1599
|
+
end
|
|
1600
|
+
end
|
|
1601
|
+
end
|
|
1602
|
+
|
|
1603
|
+
context "when documents are not persisted" do
|
|
1604
|
+
before do
|
|
1605
|
+
person.addresses.build(street: "Bond")
|
|
1606
|
+
end
|
|
1607
|
+
|
|
1608
|
+
it "returns true" do
|
|
1609
|
+
expect(person.addresses.none?).to be false
|
|
1610
|
+
end
|
|
1611
|
+
|
|
1612
|
+
it "block form iterates across all documents" do
|
|
1613
|
+
expect(person.addresses.none? {|a| a.street == "Upper" }).to be true
|
|
1614
|
+
expect(person.addresses.none? {|a| a.street == "Bond" }).to be false
|
|
1615
|
+
end
|
|
1616
|
+
|
|
1617
|
+
context 'argument form' do
|
|
1618
|
+
it "behaves correctly when given a model instance" do
|
|
1619
|
+
expect(person.addresses.none?(person.addresses.first)).to be false
|
|
1620
|
+
end
|
|
1621
|
+
|
|
1622
|
+
it "behaves correctly when given a non-model instance" do
|
|
1623
|
+
expect(person.addresses.none?(1)).to be true
|
|
1624
|
+
end
|
|
1625
|
+
end
|
|
1626
|
+
end
|
|
1627
|
+
|
|
1628
|
+
context "when documents are not present" do
|
|
1629
|
+
it "returns false" do
|
|
1630
|
+
expect(person.addresses.none?).to be true
|
|
1631
|
+
end
|
|
1632
|
+
|
|
1633
|
+
it "block form iterates across all documents" do
|
|
1634
|
+
expect(person.addresses.none?(&:a)).to be true
|
|
1635
|
+
end
|
|
1636
|
+
|
|
1637
|
+
context 'argument form' do
|
|
1638
|
+
it "behaves correctly when given nil" do
|
|
1639
|
+
expect(person.addresses.none?(nil)).to be true
|
|
1640
|
+
end
|
|
1641
|
+
|
|
1642
|
+
it "behaves correctly when given a non-model instance" do
|
|
1643
|
+
expect(person.addresses.none?(1)).to be true
|
|
1644
|
+
end
|
|
1645
|
+
end
|
|
1646
|
+
end
|
|
1400
1647
|
end
|
|
1401
1648
|
|
|
1402
1649
|
describe "#create" do
|
|
@@ -1404,11 +1651,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1404
1651
|
context "when providing multiple attributes" do
|
|
1405
1652
|
|
|
1406
1653
|
let(:person) do
|
|
1407
|
-
Person.create
|
|
1654
|
+
Person.create!
|
|
1408
1655
|
end
|
|
1409
1656
|
|
|
1410
1657
|
let!(:addresses) do
|
|
1411
|
-
person.addresses.create([{ street: "Bond" }, { street: "Upper" }])
|
|
1658
|
+
person.addresses.create!([{ street: "Bond" }, { street: "Upper" }])
|
|
1412
1659
|
end
|
|
1413
1660
|
|
|
1414
1661
|
it "creates multiple documents" do
|
|
@@ -1431,11 +1678,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1431
1678
|
context "when the relation is not cyclic" do
|
|
1432
1679
|
|
|
1433
1680
|
let(:person) do
|
|
1434
|
-
Person.create
|
|
1681
|
+
Person.create!
|
|
1435
1682
|
end
|
|
1436
1683
|
|
|
1437
1684
|
let!(:address) do
|
|
1438
|
-
person.addresses.create(street: "Bond") do |address|
|
|
1685
|
+
person.addresses.create!(street: "Bond") do |address|
|
|
1439
1686
|
address.state = "CA"
|
|
1440
1687
|
end
|
|
1441
1688
|
end
|
|
@@ -1479,7 +1726,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1479
1726
|
context "when embedding a multi word named document" do
|
|
1480
1727
|
|
|
1481
1728
|
let!(:component) do
|
|
1482
|
-
person.address_components.create(street: "Test")
|
|
1729
|
+
person.address_components.create!(street: "Test")
|
|
1483
1730
|
end
|
|
1484
1731
|
|
|
1485
1732
|
it "saves the embedded document" do
|
|
@@ -1491,11 +1738,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1491
1738
|
context "when the relation is cyclic" do
|
|
1492
1739
|
|
|
1493
1740
|
let!(:entry) do
|
|
1494
|
-
Entry.create(title: "hi")
|
|
1741
|
+
Entry.create!(title: "hi")
|
|
1495
1742
|
end
|
|
1496
1743
|
|
|
1497
1744
|
let!(:child_entry) do
|
|
1498
|
-
entry.child_entries.create(title: "hello")
|
|
1745
|
+
entry.child_entries.create!(title: "hello")
|
|
1499
1746
|
end
|
|
1500
1747
|
|
|
1501
1748
|
it "creates a new child" do
|
|
@@ -1507,7 +1754,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1507
1754
|
describe "#create!" do
|
|
1508
1755
|
|
|
1509
1756
|
let(:person) do
|
|
1510
|
-
Person.create
|
|
1757
|
+
Person.create!
|
|
1511
1758
|
end
|
|
1512
1759
|
|
|
1513
1760
|
context "when providing multiple attributes" do
|
|
@@ -1666,7 +1913,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1666
1913
|
describe "#delete_if" do
|
|
1667
1914
|
|
|
1668
1915
|
let(:person) do
|
|
1669
|
-
Person.create
|
|
1916
|
+
Person.create!
|
|
1670
1917
|
end
|
|
1671
1918
|
|
|
1672
1919
|
context "when the documents are new" do
|
|
@@ -1715,11 +1962,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1715
1962
|
context "when the documents persisted" do
|
|
1716
1963
|
|
|
1717
1964
|
let!(:address_one) do
|
|
1718
|
-
person.addresses.create(street: "Bond")
|
|
1965
|
+
person.addresses.create!(street: "Bond")
|
|
1719
1966
|
end
|
|
1720
1967
|
|
|
1721
1968
|
let!(:address_two) do
|
|
1722
|
-
person.addresses.create(street: "Upper")
|
|
1969
|
+
person.addresses.create!(street: "Upper")
|
|
1723
1970
|
end
|
|
1724
1971
|
|
|
1725
1972
|
context "when a block is provided" do
|
|
@@ -1774,7 +2021,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1774
2021
|
describe "##{method}" do
|
|
1775
2022
|
|
|
1776
2023
|
let(:person) do
|
|
1777
|
-
Person.create
|
|
2024
|
+
Person.create!
|
|
1778
2025
|
end
|
|
1779
2026
|
|
|
1780
2027
|
context "when the documents are new" do
|
|
@@ -1828,11 +2075,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1828
2075
|
context "when the documents persisted" do
|
|
1829
2076
|
|
|
1830
2077
|
let!(:address_one) do
|
|
1831
|
-
person.addresses.create(street: "Bond")
|
|
2078
|
+
person.addresses.create!(street: "Bond")
|
|
1832
2079
|
end
|
|
1833
2080
|
|
|
1834
2081
|
let!(:address_two) do
|
|
1835
|
-
person.addresses.create(street: "Upper")
|
|
2082
|
+
person.addresses.create!(street: "Upper")
|
|
1836
2083
|
end
|
|
1837
2084
|
|
|
1838
2085
|
context "when conditions are provided" do
|
|
@@ -1879,7 +2126,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1879
2126
|
context "when removing and resaving" do
|
|
1880
2127
|
|
|
1881
2128
|
let(:owner) do
|
|
1882
|
-
PetOwner.create(title: "AKC")
|
|
2129
|
+
PetOwner.create!(title: "AKC")
|
|
1883
2130
|
end
|
|
1884
2131
|
|
|
1885
2132
|
before do
|
|
@@ -1975,13 +2222,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
1975
2222
|
describe "#exists?" do
|
|
1976
2223
|
|
|
1977
2224
|
let!(:person) do
|
|
1978
|
-
Person.create
|
|
2225
|
+
Person.create!
|
|
1979
2226
|
end
|
|
1980
2227
|
|
|
1981
2228
|
context "when documents exist in the database" do
|
|
1982
2229
|
|
|
1983
2230
|
before do
|
|
1984
|
-
person.addresses.create(street: "Bond St")
|
|
2231
|
+
person.addresses.create!(street: "Bond St")
|
|
1985
2232
|
end
|
|
1986
2233
|
|
|
1987
2234
|
it "returns true" do
|
|
@@ -2112,12 +2359,50 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2112
2359
|
end
|
|
2113
2360
|
end
|
|
2114
2361
|
end
|
|
2362
|
+
|
|
2363
|
+
context "with block" do
|
|
2364
|
+
let!(:author) do
|
|
2365
|
+
Person.create!(title: 'Person')
|
|
2366
|
+
end
|
|
2367
|
+
|
|
2368
|
+
let!(:video_one) do
|
|
2369
|
+
author.videos.create!(title: 'video one')
|
|
2370
|
+
end
|
|
2371
|
+
|
|
2372
|
+
let!(:video_two) do
|
|
2373
|
+
author.videos.create!(title: 'video two')
|
|
2374
|
+
end
|
|
2375
|
+
|
|
2376
|
+
it "finds one" do
|
|
2377
|
+
expect(
|
|
2378
|
+
author.videos.find do |video|
|
|
2379
|
+
video.title == 'video one'
|
|
2380
|
+
end
|
|
2381
|
+
).to eq(video_one)
|
|
2382
|
+
end
|
|
2383
|
+
|
|
2384
|
+
it "returns first match of multiple" do
|
|
2385
|
+
expect(
|
|
2386
|
+
author.videos.find do |video|
|
|
2387
|
+
['video one', 'video two'].include?(video.title)
|
|
2388
|
+
end
|
|
2389
|
+
).to be_a(Video)
|
|
2390
|
+
end
|
|
2391
|
+
|
|
2392
|
+
it "returns nil when not found" do
|
|
2393
|
+
expect(
|
|
2394
|
+
author.videos.find do |video|
|
|
2395
|
+
video.title == 'non exiting one'
|
|
2396
|
+
end
|
|
2397
|
+
).to be_nil
|
|
2398
|
+
end
|
|
2399
|
+
end
|
|
2115
2400
|
end
|
|
2116
2401
|
|
|
2117
2402
|
describe "#find_or_create_by" do
|
|
2118
2403
|
|
|
2119
2404
|
let(:person) do
|
|
2120
|
-
Person.create
|
|
2405
|
+
Person.create!
|
|
2121
2406
|
end
|
|
2122
2407
|
|
|
2123
2408
|
let!(:address) do
|
|
@@ -2160,11 +2445,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2160
2445
|
# context "when the child belongs to another document" do
|
|
2161
2446
|
#
|
|
2162
2447
|
# let(:product) do
|
|
2163
|
-
# Product.create
|
|
2448
|
+
# Product.create!
|
|
2164
2449
|
# end
|
|
2165
2450
|
#
|
|
2166
2451
|
# let(:purchase) do
|
|
2167
|
-
# Purchase.create
|
|
2452
|
+
# Purchase.create!
|
|
2168
2453
|
# end
|
|
2169
2454
|
#
|
|
2170
2455
|
# let(:line_item) do
|
|
@@ -2183,7 +2468,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2183
2468
|
describe "#find_or_create_by!" do
|
|
2184
2469
|
|
|
2185
2470
|
let(:person) do
|
|
2186
|
-
Person.create
|
|
2471
|
+
Person.create!
|
|
2187
2472
|
end
|
|
2188
2473
|
|
|
2189
2474
|
let!(:address) do
|
|
@@ -2235,11 +2520,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2235
2520
|
# context "when the child belongs to another document" do
|
|
2236
2521
|
#
|
|
2237
2522
|
# let(:product) do
|
|
2238
|
-
# Product.create
|
|
2523
|
+
# Product.create!
|
|
2239
2524
|
# end
|
|
2240
2525
|
#
|
|
2241
2526
|
# let(:purchase) do
|
|
2242
|
-
# Purchase.create
|
|
2527
|
+
# Purchase.create!
|
|
2243
2528
|
# end
|
|
2244
2529
|
#
|
|
2245
2530
|
# let(:line_item) do
|
|
@@ -2357,11 +2642,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2357
2642
|
describe "#method_missing" do
|
|
2358
2643
|
|
|
2359
2644
|
let!(:person) do
|
|
2360
|
-
Person.create
|
|
2645
|
+
Person.create!
|
|
2361
2646
|
end
|
|
2362
2647
|
|
|
2363
2648
|
let!(:address_one) do
|
|
2364
|
-
person.addresses.create(
|
|
2649
|
+
person.addresses.create!(
|
|
2365
2650
|
street: "Market",
|
|
2366
2651
|
state: "CA",
|
|
2367
2652
|
services: [ "1", "2" ]
|
|
@@ -2369,7 +2654,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2369
2654
|
end
|
|
2370
2655
|
|
|
2371
2656
|
let!(:address_two) do
|
|
2372
|
-
person.addresses.create(
|
|
2657
|
+
person.addresses.create!(
|
|
2373
2658
|
street: "Madison",
|
|
2374
2659
|
state: "NY",
|
|
2375
2660
|
services: [ "1", "2" ]
|
|
@@ -2413,13 +2698,26 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2413
2698
|
end
|
|
2414
2699
|
|
|
2415
2700
|
context "when providing a criteria class method" do
|
|
2701
|
+
context "without keyword arguments" do
|
|
2416
2702
|
|
|
2417
|
-
|
|
2418
|
-
|
|
2703
|
+
let(:addresses) do
|
|
2704
|
+
person.addresses.california
|
|
2705
|
+
end
|
|
2706
|
+
|
|
2707
|
+
it "applies the criteria to the documents" do
|
|
2708
|
+
expect(addresses).to eq([ address_one ])
|
|
2709
|
+
end
|
|
2419
2710
|
end
|
|
2420
2711
|
|
|
2421
|
-
|
|
2422
|
-
|
|
2712
|
+
context "with keyword arguments" do
|
|
2713
|
+
|
|
2714
|
+
let(:addresses) do
|
|
2715
|
+
person.addresses.city_and_state(city: "Sacramento", state: "CA")
|
|
2716
|
+
end
|
|
2717
|
+
|
|
2718
|
+
it "applies the criteria to the documents" do
|
|
2719
|
+
expect(addresses).to eq([])
|
|
2720
|
+
end
|
|
2423
2721
|
end
|
|
2424
2722
|
end
|
|
2425
2723
|
|
|
@@ -2504,17 +2802,17 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2504
2802
|
describe "#pop" do
|
|
2505
2803
|
|
|
2506
2804
|
let(:person) do
|
|
2507
|
-
Person.create
|
|
2805
|
+
Person.create!
|
|
2508
2806
|
end
|
|
2509
2807
|
|
|
2510
2808
|
context "when no argument is provided" do
|
|
2511
2809
|
|
|
2512
2810
|
let!(:address_one) do
|
|
2513
|
-
person.addresses.create(street: "sonnenallee")
|
|
2811
|
+
person.addresses.create!(street: "sonnenallee")
|
|
2514
2812
|
end
|
|
2515
2813
|
|
|
2516
2814
|
let!(:address_two) do
|
|
2517
|
-
person.addresses.create(street: "hermannstr")
|
|
2815
|
+
person.addresses.create!(street: "hermannstr")
|
|
2518
2816
|
end
|
|
2519
2817
|
|
|
2520
2818
|
let!(:popped) do
|
|
@@ -2537,11 +2835,30 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2537
2835
|
context "when an integer is provided" do
|
|
2538
2836
|
|
|
2539
2837
|
let!(:address_one) do
|
|
2540
|
-
person.addresses.create(street: "sonnenallee")
|
|
2838
|
+
person.addresses.create!(street: "sonnenallee")
|
|
2541
2839
|
end
|
|
2542
2840
|
|
|
2543
2841
|
let!(:address_two) do
|
|
2544
|
-
person.addresses.create(street: "hermannstr")
|
|
2842
|
+
person.addresses.create!(street: "hermannstr")
|
|
2843
|
+
end
|
|
2844
|
+
|
|
2845
|
+
context "when the number is zero" do
|
|
2846
|
+
|
|
2847
|
+
let!(:popped) do
|
|
2848
|
+
person.addresses.pop(0)
|
|
2849
|
+
end
|
|
2850
|
+
|
|
2851
|
+
it "returns an empty array" do
|
|
2852
|
+
expect(popped).to eq([])
|
|
2853
|
+
end
|
|
2854
|
+
|
|
2855
|
+
it "does not remove the document from the relation" do
|
|
2856
|
+
expect(person.addresses).to eq([ address_one, address_two ])
|
|
2857
|
+
end
|
|
2858
|
+
|
|
2859
|
+
it "does not persist the pop" do
|
|
2860
|
+
expect(person.reload.addresses).to eq([ address_one, address_two ])
|
|
2861
|
+
end
|
|
2545
2862
|
end
|
|
2546
2863
|
|
|
2547
2864
|
context "when the number is not larger than the relation" do
|
|
@@ -2601,6 +2918,125 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2601
2918
|
end
|
|
2602
2919
|
end
|
|
2603
2920
|
|
|
2921
|
+
describe "#shift" do
|
|
2922
|
+
|
|
2923
|
+
let(:person) do
|
|
2924
|
+
Person.create!
|
|
2925
|
+
end
|
|
2926
|
+
|
|
2927
|
+
context "when no argument is provided" do
|
|
2928
|
+
|
|
2929
|
+
let!(:address_one) do
|
|
2930
|
+
person.addresses.create!(street: "sonnenallee")
|
|
2931
|
+
end
|
|
2932
|
+
|
|
2933
|
+
let!(:address_two) do
|
|
2934
|
+
person.addresses.create!(street: "hermannstr")
|
|
2935
|
+
end
|
|
2936
|
+
|
|
2937
|
+
let!(:shifted) do
|
|
2938
|
+
person.addresses.shift
|
|
2939
|
+
end
|
|
2940
|
+
|
|
2941
|
+
it "returns the shifted document" do
|
|
2942
|
+
expect(shifted).to eq(address_one)
|
|
2943
|
+
end
|
|
2944
|
+
|
|
2945
|
+
it "removes the document from the relation" do
|
|
2946
|
+
expect(person.addresses).to eq([ address_two ])
|
|
2947
|
+
end
|
|
2948
|
+
|
|
2949
|
+
it "persists the shift" do
|
|
2950
|
+
expect(person.reload.addresses).to eq([ address_two ])
|
|
2951
|
+
end
|
|
2952
|
+
end
|
|
2953
|
+
|
|
2954
|
+
context "when an integer is provided" do
|
|
2955
|
+
|
|
2956
|
+
let!(:address_one) do
|
|
2957
|
+
person.addresses.create!(street: "sonnenallee")
|
|
2958
|
+
end
|
|
2959
|
+
|
|
2960
|
+
let!(:address_two) do
|
|
2961
|
+
person.addresses.create!(street: "hermannstr")
|
|
2962
|
+
end
|
|
2963
|
+
|
|
2964
|
+
context "when the number is zero" do
|
|
2965
|
+
|
|
2966
|
+
let!(:shifted) do
|
|
2967
|
+
person.addresses.shift(0)
|
|
2968
|
+
end
|
|
2969
|
+
|
|
2970
|
+
it "returns an empty array" do
|
|
2971
|
+
expect(shifted).to eq([])
|
|
2972
|
+
end
|
|
2973
|
+
|
|
2974
|
+
it "does not remove the document from the relation" do
|
|
2975
|
+
expect(person.addresses).to eq([ address_one, address_two ])
|
|
2976
|
+
end
|
|
2977
|
+
|
|
2978
|
+
it "does not persist the shift" do
|
|
2979
|
+
expect(person.reload.addresses).to eq([ address_one, address_two ])
|
|
2980
|
+
end
|
|
2981
|
+
end
|
|
2982
|
+
|
|
2983
|
+
context "when the number is not larger than the relation" do
|
|
2984
|
+
|
|
2985
|
+
let!(:shifted) do
|
|
2986
|
+
person.addresses.shift(2)
|
|
2987
|
+
end
|
|
2988
|
+
|
|
2989
|
+
it "returns the shifted documents" do
|
|
2990
|
+
expect(shifted).to eq([ address_one, address_two ])
|
|
2991
|
+
end
|
|
2992
|
+
|
|
2993
|
+
it "removes the document from the relation" do
|
|
2994
|
+
expect(person.addresses).to be_empty
|
|
2995
|
+
end
|
|
2996
|
+
|
|
2997
|
+
it "persists the shift" do
|
|
2998
|
+
expect(person.reload.addresses).to be_empty
|
|
2999
|
+
end
|
|
3000
|
+
end
|
|
3001
|
+
|
|
3002
|
+
context "when the number is larger than the relation" do
|
|
3003
|
+
|
|
3004
|
+
let!(:shifted) do
|
|
3005
|
+
person.addresses.shift(4)
|
|
3006
|
+
end
|
|
3007
|
+
|
|
3008
|
+
it "returns the shifted documents" do
|
|
3009
|
+
expect(shifted).to eq([ address_one, address_two ])
|
|
3010
|
+
end
|
|
3011
|
+
|
|
3012
|
+
it "removes the document from the relation" do
|
|
3013
|
+
expect(person.addresses).to be_empty
|
|
3014
|
+
end
|
|
3015
|
+
|
|
3016
|
+
it "persists the shift" do
|
|
3017
|
+
expect(person.reload.addresses).to be_empty
|
|
3018
|
+
end
|
|
3019
|
+
end
|
|
3020
|
+
end
|
|
3021
|
+
|
|
3022
|
+
context "when the relation is empty" do
|
|
3023
|
+
|
|
3024
|
+
context "when providing no number" do
|
|
3025
|
+
|
|
3026
|
+
it "returns nil" do
|
|
3027
|
+
expect(person.addresses.shift).to be_nil
|
|
3028
|
+
end
|
|
3029
|
+
end
|
|
3030
|
+
|
|
3031
|
+
context "when providing a number" do
|
|
3032
|
+
|
|
3033
|
+
it "returns nil" do
|
|
3034
|
+
expect(person.addresses.shift(2)).to be_nil
|
|
3035
|
+
end
|
|
3036
|
+
end
|
|
3037
|
+
end
|
|
3038
|
+
end
|
|
3039
|
+
|
|
2604
3040
|
describe "#scoped" do
|
|
2605
3041
|
|
|
2606
3042
|
let(:person) do
|
|
@@ -2670,11 +3106,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2670
3106
|
describe "##{method}" do
|
|
2671
3107
|
|
|
2672
3108
|
let(:person) do
|
|
2673
|
-
Person.create
|
|
3109
|
+
Person.create!
|
|
2674
3110
|
end
|
|
2675
3111
|
|
|
2676
3112
|
before do
|
|
2677
|
-
person.addresses.create(street: "Upper")
|
|
3113
|
+
person.addresses.create!(street: "Upper")
|
|
2678
3114
|
person.addresses.build(street: "Bond")
|
|
2679
3115
|
end
|
|
2680
3116
|
|
|
@@ -2712,7 +3148,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2712
3148
|
context "when there are no documents present" do
|
|
2713
3149
|
|
|
2714
3150
|
let(:person) do
|
|
2715
|
-
Person.create
|
|
3151
|
+
Person.create!
|
|
2716
3152
|
end
|
|
2717
3153
|
|
|
2718
3154
|
it "updates nothing" do
|
|
@@ -2723,11 +3159,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2723
3159
|
context "when documents are present" do
|
|
2724
3160
|
|
|
2725
3161
|
let(:person) do
|
|
2726
|
-
Person.create
|
|
3162
|
+
Person.create!
|
|
2727
3163
|
end
|
|
2728
3164
|
|
|
2729
3165
|
let!(:address) do
|
|
2730
|
-
person.addresses.create(street: "Hobrecht", number: 27)
|
|
3166
|
+
person.addresses.create!(street: "Hobrecht", number: 27)
|
|
2731
3167
|
end
|
|
2732
3168
|
|
|
2733
3169
|
context "when updating with a where clause" do
|
|
@@ -2762,16 +3198,16 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2762
3198
|
context "when updating the bottom level" do
|
|
2763
3199
|
|
|
2764
3200
|
let!(:person) do
|
|
2765
|
-
Person.create
|
|
3201
|
+
Person.create!
|
|
2766
3202
|
end
|
|
2767
3203
|
|
|
2768
3204
|
let!(:address) do
|
|
2769
|
-
person.addresses.create(street: "Joachimstr")
|
|
3205
|
+
person.addresses.create!(street: "Joachimstr")
|
|
2770
3206
|
end
|
|
2771
3207
|
|
|
2772
3208
|
let!(:location) do
|
|
2773
|
-
address.locations.create(name: "vacation", number: 0)
|
|
2774
|
-
address.locations.create(name: "work", number: 3)
|
|
3209
|
+
address.locations.create!(name: "vacation", number: 0)
|
|
3210
|
+
address.locations.create!(name: "work", number: 3)
|
|
2775
3211
|
end
|
|
2776
3212
|
|
|
2777
3213
|
context "when updating with replacement of embedded array" do
|
|
@@ -2779,7 +3215,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2779
3215
|
context "when updating with a hash" do
|
|
2780
3216
|
|
|
2781
3217
|
before do
|
|
2782
|
-
address.update_attributes(locations: [{ name: "home" }])
|
|
3218
|
+
address.update_attributes!(locations: [{ name: "home" }])
|
|
2783
3219
|
end
|
|
2784
3220
|
|
|
2785
3221
|
it "updates the attributes" do
|
|
@@ -2800,7 +3236,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2800
3236
|
|
|
2801
3237
|
before do
|
|
2802
3238
|
location.number = 7
|
|
2803
|
-
location.save
|
|
3239
|
+
location.save!
|
|
2804
3240
|
end
|
|
2805
3241
|
|
|
2806
3242
|
let(:updated_location_number) do
|
|
@@ -2933,7 +3369,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2933
3369
|
context "when creating a persisted tree" do
|
|
2934
3370
|
|
|
2935
3371
|
let(:quiz) do
|
|
2936
|
-
Quiz.create
|
|
3372
|
+
Quiz.create!
|
|
2937
3373
|
end
|
|
2938
3374
|
|
|
2939
3375
|
let(:page) do
|
|
@@ -2998,7 +3434,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2998
3434
|
context "when saving the root" do
|
|
2999
3435
|
|
|
3000
3436
|
before do
|
|
3001
|
-
person.save
|
|
3437
|
+
person.save!
|
|
3002
3438
|
end
|
|
3003
3439
|
|
|
3004
3440
|
it "persists the first level document" do
|
|
@@ -3152,11 +3588,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3152
3588
|
context "when accessing the parent in a destroy callback" do
|
|
3153
3589
|
|
|
3154
3590
|
let!(:league) do
|
|
3155
|
-
League.create
|
|
3591
|
+
League.create!
|
|
3156
3592
|
end
|
|
3157
3593
|
|
|
3158
3594
|
let!(:division) do
|
|
3159
|
-
league.divisions.create
|
|
3595
|
+
league.divisions.create!
|
|
3160
3596
|
end
|
|
3161
3597
|
|
|
3162
3598
|
before do
|
|
@@ -3171,15 +3607,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3171
3607
|
context "when updating the parent with all attributes" do
|
|
3172
3608
|
|
|
3173
3609
|
let!(:person) do
|
|
3174
|
-
Person.create
|
|
3610
|
+
Person.create!
|
|
3175
3611
|
end
|
|
3176
3612
|
|
|
3177
3613
|
let!(:address) do
|
|
3178
|
-
person.addresses.create
|
|
3614
|
+
person.addresses.create!
|
|
3179
3615
|
end
|
|
3180
3616
|
|
|
3181
3617
|
before do
|
|
3182
|
-
person.update_attributes(person.attributes)
|
|
3618
|
+
person.update_attributes!(person.attributes)
|
|
3183
3619
|
end
|
|
3184
3620
|
|
|
3185
3621
|
it "does not duplicate the embedded documents" do
|
|
@@ -3194,13 +3630,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3194
3630
|
context "when embedding children named versions" do
|
|
3195
3631
|
|
|
3196
3632
|
let(:acolyte) do
|
|
3197
|
-
Acolyte.create(name: "test")
|
|
3633
|
+
Acolyte.create!(name: "test")
|
|
3198
3634
|
end
|
|
3199
3635
|
|
|
3200
3636
|
context "when creating a child" do
|
|
3201
3637
|
|
|
3202
3638
|
let(:version) do
|
|
3203
|
-
acolyte.versions.create(number: 1)
|
|
3639
|
+
acolyte.versions.create!(number: 1)
|
|
3204
3640
|
end
|
|
3205
3641
|
|
|
3206
3642
|
it "allows the operation" do
|
|
@@ -3225,7 +3661,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3225
3661
|
let!(:account) do
|
|
3226
3662
|
Account.new(name: "Testing").tap do |acct|
|
|
3227
3663
|
acct.memberships.build
|
|
3228
|
-
acct.save
|
|
3664
|
+
acct.save!
|
|
3229
3665
|
end
|
|
3230
3666
|
end
|
|
3231
3667
|
|
|
@@ -3237,10 +3673,10 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3237
3673
|
|
|
3238
3674
|
before do
|
|
3239
3675
|
account.name = ""
|
|
3240
|
-
account.save
|
|
3241
3676
|
end
|
|
3242
3677
|
|
|
3243
3678
|
it "does not lose the parent reference" do
|
|
3679
|
+
expect(account.save).to eq false
|
|
3244
3680
|
expect(from_db.memberships.first.account).to eq(account)
|
|
3245
3681
|
end
|
|
3246
3682
|
end
|
|
@@ -3260,15 +3696,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3260
3696
|
context "when moving an embedded document from one parent to another" do
|
|
3261
3697
|
|
|
3262
3698
|
let!(:person_one) do
|
|
3263
|
-
Person.create
|
|
3699
|
+
Person.create!
|
|
3264
3700
|
end
|
|
3265
3701
|
|
|
3266
3702
|
let!(:person_two) do
|
|
3267
|
-
Person.create
|
|
3703
|
+
Person.create!
|
|
3268
3704
|
end
|
|
3269
3705
|
|
|
3270
3706
|
let!(:address) do
|
|
3271
|
-
person_one.addresses.create(street: "Kudamm")
|
|
3707
|
+
person_one.addresses.create!(street: "Kudamm")
|
|
3272
3708
|
end
|
|
3273
3709
|
|
|
3274
3710
|
before do
|
|
@@ -3303,7 +3739,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3303
3739
|
context "when the relation has a default scope" do
|
|
3304
3740
|
|
|
3305
3741
|
let!(:person) do
|
|
3306
|
-
Person.create
|
|
3742
|
+
Person.create!
|
|
3307
3743
|
end
|
|
3308
3744
|
|
|
3309
3745
|
context "when the default scope is a sort" do
|
|
@@ -3373,7 +3809,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3373
3809
|
context "when indexing the documents" do
|
|
3374
3810
|
|
|
3375
3811
|
let!(:person) do
|
|
3376
|
-
Person.create
|
|
3812
|
+
Person.create!
|
|
3377
3813
|
end
|
|
3378
3814
|
|
|
3379
3815
|
context "when the documents have a limiting default scope" do
|
|
@@ -3422,18 +3858,18 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3422
3858
|
context "when the embedded document has an array field" do
|
|
3423
3859
|
|
|
3424
3860
|
let!(:person) do
|
|
3425
|
-
Person.create
|
|
3861
|
+
Person.create!
|
|
3426
3862
|
end
|
|
3427
3863
|
|
|
3428
3864
|
let!(:video) do
|
|
3429
|
-
person.videos.create
|
|
3865
|
+
person.videos.create!
|
|
3430
3866
|
end
|
|
3431
3867
|
|
|
3432
3868
|
context "when saving the array on a persisted document" do
|
|
3433
3869
|
|
|
3434
3870
|
before do
|
|
3435
3871
|
video.genres = [ "horror", "scifi" ]
|
|
3436
|
-
video.save
|
|
3872
|
+
video.save!
|
|
3437
3873
|
end
|
|
3438
3874
|
|
|
3439
3875
|
it "sets the value" do
|
|
@@ -3458,7 +3894,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3458
3894
|
|
|
3459
3895
|
before do
|
|
3460
3896
|
loaded_video.genres = [ "comedy" ]
|
|
3461
|
-
loaded_video.save
|
|
3897
|
+
loaded_video.save!
|
|
3462
3898
|
end
|
|
3463
3899
|
|
|
3464
3900
|
it "sets the new value" do
|
|
@@ -3476,15 +3912,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3476
3912
|
context "when destroying an embedded document" do
|
|
3477
3913
|
|
|
3478
3914
|
let(:person) do
|
|
3479
|
-
Person.create
|
|
3915
|
+
Person.create!
|
|
3480
3916
|
end
|
|
3481
3917
|
|
|
3482
3918
|
let!(:address_one) do
|
|
3483
|
-
person.addresses.create(street: "hobrecht")
|
|
3919
|
+
person.addresses.create!(street: "hobrecht")
|
|
3484
3920
|
end
|
|
3485
3921
|
|
|
3486
3922
|
let!(:address_two) do
|
|
3487
|
-
person.addresses.create(street: "maybachufer")
|
|
3923
|
+
person.addresses.create!(street: "maybachufer")
|
|
3488
3924
|
end
|
|
3489
3925
|
|
|
3490
3926
|
before do
|
|
@@ -3556,7 +3992,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3556
3992
|
context "when the association has an order defined" do
|
|
3557
3993
|
|
|
3558
3994
|
let(:person) do
|
|
3559
|
-
Person.create
|
|
3995
|
+
Person.create!
|
|
3560
3996
|
end
|
|
3561
3997
|
|
|
3562
3998
|
let(:message_one) do
|
|
@@ -3587,11 +4023,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3587
4023
|
|
|
3588
4024
|
before do
|
|
3589
4025
|
person.aliases = [ { name: "A", priority: 3 }, { name: "B", priority: 4 }]
|
|
3590
|
-
person.save
|
|
4026
|
+
person.save!
|
|
3591
4027
|
end
|
|
3592
4028
|
|
|
3593
4029
|
let!(:person2) do
|
|
3594
|
-
Person.create( aliases: [ { name: "C", priority: 1 }, { name: "D", priority: 2 }])
|
|
4030
|
+
Person.create!( aliases: [ { name: "C", priority: 1 }, { name: "D", priority: 2 }])
|
|
3595
4031
|
end
|
|
3596
4032
|
|
|
3597
4033
|
it "allows ordering on a key of an embedded document" do
|
|
@@ -3626,7 +4062,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3626
4062
|
context "when updating multiple levels in one update" do
|
|
3627
4063
|
|
|
3628
4064
|
let!(:person) do
|
|
3629
|
-
Person.create(
|
|
4065
|
+
Person.create!(
|
|
3630
4066
|
addresses: [
|
|
3631
4067
|
{ locations: [{ name: "home" }]}
|
|
3632
4068
|
]
|
|
@@ -3640,7 +4076,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3640
4076
|
end
|
|
3641
4077
|
|
|
3642
4078
|
before do
|
|
3643
|
-
from_db.update_attributes(
|
|
4079
|
+
from_db.update_attributes!(
|
|
3644
4080
|
addresses: [
|
|
3645
4081
|
{ locations: [{ name: "work" }]}
|
|
3646
4082
|
]
|
|
@@ -3660,15 +4096,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3660
4096
|
context "when the embedded relation sorts on a boolean" do
|
|
3661
4097
|
|
|
3662
4098
|
let(:circuit) do
|
|
3663
|
-
Circuit.create
|
|
4099
|
+
Circuit.create!
|
|
3664
4100
|
end
|
|
3665
4101
|
|
|
3666
4102
|
let!(:bus_one) do
|
|
3667
|
-
circuit.buses.create(saturday: true)
|
|
4103
|
+
circuit.buses.create!(saturday: true)
|
|
3668
4104
|
end
|
|
3669
4105
|
|
|
3670
4106
|
let!(:bus_two) do
|
|
3671
|
-
circuit.buses.create(saturday: false)
|
|
4107
|
+
circuit.buses.create!(saturday: false)
|
|
3672
4108
|
end
|
|
3673
4109
|
|
|
3674
4110
|
it "orders properly with the boolean" do
|
|
@@ -3679,7 +4115,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3679
4115
|
context "when batch replacing multiple relations in a single update" do
|
|
3680
4116
|
|
|
3681
4117
|
let(:document) do
|
|
3682
|
-
Person.create
|
|
4118
|
+
Person.create!
|
|
3683
4119
|
end
|
|
3684
4120
|
|
|
3685
4121
|
let(:person) do
|
|
@@ -3687,23 +4123,23 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3687
4123
|
end
|
|
3688
4124
|
|
|
3689
4125
|
let!(:symptom_one) do
|
|
3690
|
-
person.symptoms.create
|
|
4126
|
+
person.symptoms.create!
|
|
3691
4127
|
end
|
|
3692
4128
|
|
|
3693
4129
|
let!(:symptom_two) do
|
|
3694
|
-
person.symptoms.create
|
|
4130
|
+
person.symptoms.create!
|
|
3695
4131
|
end
|
|
3696
4132
|
|
|
3697
4133
|
let!(:appointment_one) do
|
|
3698
|
-
person.appointments.create
|
|
4134
|
+
person.appointments.create!
|
|
3699
4135
|
end
|
|
3700
4136
|
|
|
3701
4137
|
let!(:appointment_two) do
|
|
3702
|
-
person.appointments.create
|
|
4138
|
+
person.appointments.create!
|
|
3703
4139
|
end
|
|
3704
4140
|
|
|
3705
4141
|
before do
|
|
3706
|
-
person.update_attributes(
|
|
4142
|
+
person.update_attributes!(
|
|
3707
4143
|
appointments: [ appointment_one.as_document, appointment_two.as_document ],
|
|
3708
4144
|
symptoms: [ symptom_one.as_document, symptom_two.as_document ]
|
|
3709
4145
|
)
|
|
@@ -3788,7 +4224,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3788
4224
|
end
|
|
3789
4225
|
end
|
|
3790
4226
|
|
|
3791
|
-
context "#delete or #clear with before_remove callback" do
|
|
4227
|
+
context "#delete, or #clear, or #pop, or #shift with before_remove callback" do
|
|
3792
4228
|
|
|
3793
4229
|
let(:artist) do
|
|
3794
4230
|
Artist.new
|
|
@@ -3834,35 +4270,81 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3834
4270
|
end
|
|
3835
4271
|
end
|
|
3836
4272
|
|
|
3837
|
-
|
|
4273
|
+
describe "#pop" do
|
|
3838
4274
|
|
|
3839
4275
|
before do
|
|
3840
|
-
|
|
4276
|
+
artist.songs.pop
|
|
3841
4277
|
end
|
|
3842
4278
|
|
|
3843
|
-
|
|
4279
|
+
it "executes the callback" do
|
|
4280
|
+
artist.songs.pop
|
|
4281
|
+
expect(artist.before_remove_embedded_called).to be true
|
|
4282
|
+
end
|
|
4283
|
+
end
|
|
3844
4284
|
|
|
3845
|
-
|
|
3846
|
-
|
|
3847
|
-
|
|
3848
|
-
|
|
4285
|
+
describe "#shift" do
|
|
4286
|
+
|
|
4287
|
+
before do
|
|
4288
|
+
artist.songs.shift
|
|
3849
4289
|
end
|
|
3850
4290
|
|
|
3851
|
-
|
|
4291
|
+
it "executes the callback" do
|
|
4292
|
+
artist.songs.shift
|
|
4293
|
+
expect(artist.before_remove_embedded_called).to be true
|
|
4294
|
+
end
|
|
4295
|
+
end
|
|
4296
|
+
end
|
|
3852
4297
|
|
|
3853
|
-
|
|
3854
|
-
begin; artist.songs.clear; rescue; end
|
|
3855
|
-
end
|
|
4298
|
+
context "when errors are raised" do
|
|
3856
4299
|
|
|
3857
|
-
|
|
3858
|
-
|
|
3859
|
-
|
|
4300
|
+
before do
|
|
4301
|
+
expect(artist).to receive(:before_remove_song).and_raise
|
|
4302
|
+
end
|
|
4303
|
+
|
|
4304
|
+
describe "#delete" do
|
|
4305
|
+
|
|
4306
|
+
it "does not remove the document from the relation" do
|
|
4307
|
+
begin; artist.songs.delete(song); rescue; end
|
|
4308
|
+
expect(artist.songs).to eq([ song ])
|
|
4309
|
+
end
|
|
4310
|
+
end
|
|
4311
|
+
|
|
4312
|
+
describe "#clear" do
|
|
4313
|
+
|
|
4314
|
+
before do
|
|
4315
|
+
begin; artist.songs.clear; rescue; end
|
|
4316
|
+
end
|
|
4317
|
+
|
|
4318
|
+
it "removes the documents from the relation" do
|
|
4319
|
+
expect(artist.songs).to eq([ song ])
|
|
4320
|
+
end
|
|
4321
|
+
end
|
|
4322
|
+
|
|
4323
|
+
describe "#pop" do
|
|
4324
|
+
|
|
4325
|
+
before do
|
|
4326
|
+
begin; artist.songs.pop; rescue; end
|
|
4327
|
+
end
|
|
4328
|
+
|
|
4329
|
+
it "should remove from collection" do
|
|
4330
|
+
expect(artist.songs).to eq([ song ])
|
|
4331
|
+
end
|
|
4332
|
+
end
|
|
4333
|
+
|
|
4334
|
+
describe "#shift" do
|
|
4335
|
+
|
|
4336
|
+
before do
|
|
4337
|
+
begin; artist.songs.shift; rescue; end
|
|
4338
|
+
end
|
|
4339
|
+
|
|
4340
|
+
it "should remove from collection" do
|
|
4341
|
+
expect(artist.songs).to eq([ song ])
|
|
3860
4342
|
end
|
|
3861
4343
|
end
|
|
3862
4344
|
end
|
|
3863
4345
|
end
|
|
3864
4346
|
|
|
3865
|
-
context "#delete or #clear with after_remove callback" do
|
|
4347
|
+
context "#delete, or #clear, or #pop, or #shift with after_remove callback" do
|
|
3866
4348
|
|
|
3867
4349
|
let(:artist) do
|
|
3868
4350
|
Artist.new
|
|
@@ -3899,6 +4381,30 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3899
4381
|
expect(artist.after_remove_embedded_called).to be true
|
|
3900
4382
|
end
|
|
3901
4383
|
end
|
|
4384
|
+
|
|
4385
|
+
describe "#pop" do
|
|
4386
|
+
|
|
4387
|
+
before do
|
|
4388
|
+
artist.labels.pop
|
|
4389
|
+
end
|
|
4390
|
+
|
|
4391
|
+
it "executes the callback" do
|
|
4392
|
+
artist.labels.pop
|
|
4393
|
+
expect(artist.after_remove_embedded_called).to be true
|
|
4394
|
+
end
|
|
4395
|
+
end
|
|
4396
|
+
|
|
4397
|
+
describe "#shift" do
|
|
4398
|
+
|
|
4399
|
+
before do
|
|
4400
|
+
artist.labels.shift
|
|
4401
|
+
end
|
|
4402
|
+
|
|
4403
|
+
it "executes the callback" do
|
|
4404
|
+
artist.labels.shift
|
|
4405
|
+
expect(artist.after_remove_embedded_called).to be true
|
|
4406
|
+
end
|
|
4407
|
+
end
|
|
3902
4408
|
end
|
|
3903
4409
|
|
|
3904
4410
|
context "when errors are raised" do
|
|
@@ -3928,6 +4434,28 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3928
4434
|
expect(artist.labels).to be_empty
|
|
3929
4435
|
end
|
|
3930
4436
|
end
|
|
4437
|
+
|
|
4438
|
+
describe "#pop" do
|
|
4439
|
+
|
|
4440
|
+
before do
|
|
4441
|
+
begin; artist.labels.pop; rescue; end
|
|
4442
|
+
end
|
|
4443
|
+
|
|
4444
|
+
it "should remove from collection" do
|
|
4445
|
+
expect(artist.labels).to be_empty
|
|
4446
|
+
end
|
|
4447
|
+
end
|
|
4448
|
+
|
|
4449
|
+
describe "#shift" do
|
|
4450
|
+
|
|
4451
|
+
before do
|
|
4452
|
+
begin; artist.labels.shift; rescue; end
|
|
4453
|
+
end
|
|
4454
|
+
|
|
4455
|
+
it "should remove from collection" do
|
|
4456
|
+
expect(artist.labels).to be_empty
|
|
4457
|
+
end
|
|
4458
|
+
end
|
|
3931
4459
|
end
|
|
3932
4460
|
end
|
|
3933
4461
|
|
|
@@ -3944,7 +4472,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3944
4472
|
context "when the parent has an after create callback" do
|
|
3945
4473
|
|
|
3946
4474
|
before do
|
|
3947
|
-
server.save
|
|
4475
|
+
server.save!
|
|
3948
4476
|
end
|
|
3949
4477
|
|
|
3950
4478
|
it "does not push the embedded documents twice" do
|
|
@@ -3956,7 +4484,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3956
4484
|
context "when embedded documents are stored without ids" do
|
|
3957
4485
|
|
|
3958
4486
|
let!(:band) do
|
|
3959
|
-
Band.create(name: "Moderat")
|
|
4487
|
+
Band.create!(name: "Moderat")
|
|
3960
4488
|
end
|
|
3961
4489
|
|
|
3962
4490
|
before do
|
|
@@ -4006,7 +4534,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
4006
4534
|
company = Company.new
|
|
4007
4535
|
4.times { |i| company.staffs << Staff.new(age: 50 + i)}
|
|
4008
4536
|
2.times { |i| company.staffs << Staff.new(age: 40)}
|
|
4009
|
-
company.save
|
|
4537
|
+
company.save!
|
|
4010
4538
|
company.staffs.delete_if {|x| x.age >= 50}
|
|
4011
4539
|
expect(company.staffs.count).to eq(2)
|
|
4012
4540
|
end
|
|
@@ -4083,7 +4611,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
4083
4611
|
context "when the parent is persisted" do
|
|
4084
4612
|
|
|
4085
4613
|
let(:zone) do
|
|
4086
|
-
DNS::Zone.create
|
|
4614
|
+
DNS::Zone.create!
|
|
4087
4615
|
end
|
|
4088
4616
|
|
|
4089
4617
|
let(:soa_1) do
|