mongoid 7.0.10 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +30 -30
- data/README.md +32 -19
- data/Rakefile +51 -7
- data/lib/config/locales/en.yml +129 -70
- data/lib/mongoid/association/accessors.rb +143 -80
- data/lib/mongoid/association/bindable.rb +7 -26
- data/lib/mongoid/association/builders.rb +4 -12
- data/lib/mongoid/association/constrainable.rb +5 -6
- data/lib/mongoid/association/depending.rb +9 -18
- data/lib/mongoid/association/eager_loadable.rb +2 -3
- data/lib/mongoid/association/embedded/batchable.rb +16 -42
- data/lib/mongoid/association/embedded/cyclic.rb +10 -17
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +3 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +7 -4
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +14 -24
- data/lib/mongoid/association/embedded/embedded_in.rb +6 -26
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +8 -5
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +90 -93
- data/lib/mongoid/association/embedded/embeds_many.rb +6 -34
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +9 -6
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +42 -27
- data/lib/mongoid/association/embedded/embeds_one.rb +6 -30
- data/lib/mongoid/association/embedded.rb +2 -0
- data/lib/mongoid/association/macros.rb +44 -41
- data/lib/mongoid/association/many.rb +16 -30
- data/lib/mongoid/association/marshalable.rb +3 -6
- data/lib/mongoid/association/nested/many.rb +18 -27
- data/lib/mongoid/association/nested/nested_buildable.rb +5 -11
- data/lib/mongoid/association/nested/one.rb +16 -27
- data/lib/mongoid/association/nested.rb +3 -3
- data/lib/mongoid/association/one.rb +4 -11
- data/lib/mongoid/association/options.rb +8 -38
- data/lib/mongoid/association/proxy.rb +37 -36
- data/lib/mongoid/association/referenced/auto_save.rb +5 -11
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +4 -9
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +11 -9
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +40 -3
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -27
- data/lib/mongoid/association/referenced/belongs_to.rb +14 -36
- data/lib/mongoid/association/referenced/counter_cache.rb +4 -15
- data/lib/mongoid/association/referenced/eager.rb +39 -38
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -11
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +37 -57
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +23 -43
- data/lib/mongoid/association/referenced/has_many/binding.rb +3 -6
- data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +444 -456
- data/lib/mongoid/association/referenced/has_many/proxy.rb +74 -107
- data/lib/mongoid/association/referenced/has_many.rb +18 -42
- data/lib/mongoid/association/referenced/has_one/binding.rb +4 -9
- data/lib/mongoid/association/referenced/has_one/buildable.rb +20 -6
- data/lib/mongoid/association/referenced/has_one/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +13 -26
- data/lib/mongoid/association/referenced/has_one/proxy.rb +23 -25
- data/lib/mongoid/association/referenced/has_one.rb +13 -33
- data/lib/mongoid/association/referenced/syncable.rb +7 -22
- data/lib/mongoid/association/referenced.rb +2 -0
- data/lib/mongoid/association/reflections.rb +7 -6
- data/lib/mongoid/association/relatable.rb +18 -74
- data/lib/mongoid/association.rb +8 -22
- data/lib/mongoid/atomic/modifiers.rb +27 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded/one.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded.rb +2 -3
- data/lib/mongoid/atomic/paths/root.rb +4 -7
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +29 -44
- data/lib/mongoid/attributes/dynamic.rb +3 -18
- data/lib/mongoid/attributes/nested.rb +7 -10
- data/lib/mongoid/attributes/processing.rb +9 -24
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +3 -6
- data/lib/mongoid/attributes.rb +46 -60
- data/lib/mongoid/cacheable.rb +6 -9
- data/lib/mongoid/changeable.rb +6 -60
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +10 -13
- data/lib/mongoid/clients/sessions.rb +2 -6
- data/lib/mongoid/clients/storage_options.rb +7 -12
- data/lib/mongoid/clients/validators/storage.rb +2 -9
- data/lib/mongoid/clients/validators.rb +2 -1
- data/lib/mongoid/clients.rb +3 -10
- data/lib/mongoid/composable.rb +5 -9
- data/lib/mongoid/config/environment.rb +15 -6
- data/lib/mongoid/config/options.rb +20 -23
- data/lib/mongoid/config/validators/client.rb +2 -17
- data/lib/mongoid/config/validators/option.rb +2 -3
- data/lib/mongoid/config/validators.rb +2 -1
- data/lib/mongoid/config.rb +112 -41
- data/lib/mongoid/contextual/aggregable/memory.rb +17 -12
- data/lib/mongoid/contextual/aggregable/mongo.rb +25 -26
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +29 -31
- data/lib/mongoid/contextual/command.rb +2 -5
- data/lib/mongoid/contextual/geo_near.rb +6 -37
- data/lib/mongoid/contextual/map_reduce.rb +5 -33
- data/lib/mongoid/contextual/memory.rb +8 -61
- data/lib/mongoid/contextual/mongo.rb +160 -82
- data/lib/mongoid/contextual/none.rb +44 -28
- data/lib/mongoid/contextual/queryable.rb +2 -3
- data/lib/mongoid/contextual.rb +7 -9
- data/lib/mongoid/copyable.rb +11 -10
- data/lib/mongoid/criteria/findable.rb +12 -15
- data/lib/mongoid/criteria/includable.rb +8 -15
- data/lib/mongoid/criteria/inspectable.rb +2 -3
- data/lib/mongoid/criteria/marshalable.rb +2 -5
- data/lib/mongoid/criteria/modifiable.rb +2 -19
- data/lib/mongoid/criteria/options.rb +2 -3
- data/lib/mongoid/criteria/permission.rb +2 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -13
- data/lib/mongoid/criteria/queryable/expandable.rb +68 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +4 -27
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/date.rb +3 -8
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +5 -11
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -26
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +3 -12
- data/lib/mongoid/criteria/queryable/extensions/object.rb +4 -29
- data/lib/mongoid/criteria/queryable/extensions/range.rb +41 -17
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +6 -13
- data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -18
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -10
- data/lib/mongoid/criteria/queryable/extensions/time.rb +3 -8
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +3 -8
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -4
- data/lib/mongoid/criteria/queryable/key.rb +36 -21
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +179 -40
- data/lib/mongoid/criteria/queryable/optional.rb +5 -48
- data/lib/mongoid/criteria/queryable/options.rb +2 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +5 -15
- data/lib/mongoid/criteria/queryable/selectable.rb +414 -162
- data/lib/mongoid/criteria/queryable/selector.rb +36 -24
- data/lib/mongoid/criteria/queryable/smash.rb +2 -11
- data/lib/mongoid/criteria/queryable/storable.rb +237 -0
- data/lib/mongoid/criteria/queryable.rb +7 -9
- data/lib/mongoid/criteria/scopable.rb +27 -19
- data/lib/mongoid/criteria.rb +79 -72
- data/lib/mongoid/document.rb +24 -73
- data/lib/mongoid/equality.rb +29 -12
- data/lib/mongoid/errors/ambiguous_relationship.rb +4 -5
- data/lib/mongoid/errors/callback.rb +2 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +18 -0
- data/lib/mongoid/errors/delete_restriction.rb +10 -13
- data/lib/mongoid/errors/document_not_destroyed.rb +4 -7
- data/lib/mongoid/errors/document_not_found.rb +2 -9
- data/lib/mongoid/errors/eager_load.rb +6 -5
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -3
- data/lib/mongoid/errors/invalid_collection.rb +2 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +2 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -3
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +24 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +25 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +27 -0
- data/lib/mongoid/errors/invalid_field.rb +2 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_field_option.rb +2 -3
- data/lib/mongoid/errors/invalid_find.rb +2 -3
- data/lib/mongoid/errors/invalid_includes.rb +2 -3
- data/lib/mongoid/errors/invalid_index.rb +2 -3
- data/lib/mongoid/errors/invalid_options.rb +4 -5
- data/lib/mongoid/errors/invalid_path.rb +2 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +2 -5
- data/lib/mongoid/errors/invalid_query.rb +40 -0
- data/lib/mongoid/errors/invalid_relation.rb +4 -9
- data/lib/mongoid/errors/invalid_relation_option.rb +4 -5
- data/lib/mongoid/errors/invalid_scope.rb +2 -3
- data/lib/mongoid/errors/invalid_session_use.rb +3 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -5
- data/lib/mongoid/errors/invalid_storage_options.rb +2 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -3
- data/lib/mongoid/errors/invalid_time.rb +2 -3
- data/lib/mongoid/errors/invalid_value.rb +2 -1
- data/lib/mongoid/errors/inverse_not_found.rb +3 -4
- data/lib/mongoid/errors/mixed_client_configuration.rb +2 -3
- data/lib/mongoid/errors/mixed_relations.rb +2 -3
- data/lib/mongoid/errors/mongoid_error.rb +3 -10
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -4
- data/lib/mongoid/errors/no_client_config.rb +4 -5
- data/lib/mongoid/errors/no_client_database.rb +2 -3
- data/lib/mongoid/errors/no_client_hosts.rb +2 -3
- data/lib/mongoid/errors/no_clients_config.rb +2 -3
- data/lib/mongoid/errors/no_default_client.rb +3 -4
- data/lib/mongoid/errors/no_environment.rb +2 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +2 -3
- data/lib/mongoid/errors/no_metadata.rb +2 -3
- data/lib/mongoid/errors/no_parent.rb +2 -3
- data/lib/mongoid/errors/readonly_attribute.rb +2 -3
- data/lib/mongoid/errors/readonly_document.rb +3 -6
- data/lib/mongoid/errors/scope_overwrite.rb +2 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +2 -0
- data/lib/mongoid/errors/unknown_attribute.rb +2 -3
- data/lib/mongoid/errors/unknown_model.rb +2 -3
- data/lib/mongoid/errors/unsaved_document.rb +3 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +2 -3
- data/lib/mongoid/errors/validations.rb +2 -1
- data/lib/mongoid/errors.rb +12 -1
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +28 -37
- data/lib/mongoid/extensions/big_decimal.rb +2 -11
- data/lib/mongoid/extensions/boolean.rb +3 -5
- data/lib/mongoid/extensions/date.rb +13 -12
- data/lib/mongoid/extensions/date_time.rb +4 -12
- data/lib/mongoid/extensions/decimal128.rb +2 -5
- data/lib/mongoid/extensions/false_class.rb +4 -7
- data/lib/mongoid/extensions/float.rb +5 -10
- data/lib/mongoid/extensions/hash.rb +47 -34
- data/lib/mongoid/extensions/integer.rb +5 -12
- data/lib/mongoid/extensions/module.rb +2 -3
- data/lib/mongoid/extensions/nil_class.rb +2 -5
- data/lib/mongoid/extensions/object.rb +17 -44
- data/lib/mongoid/extensions/object_id.rb +2 -7
- data/lib/mongoid/extensions/range.rb +2 -11
- data/lib/mongoid/extensions/regexp.rb +2 -3
- data/lib/mongoid/extensions/set.rb +2 -7
- data/lib/mongoid/extensions/string.rb +19 -39
- data/lib/mongoid/extensions/symbol.rb +2 -7
- data/lib/mongoid/extensions/time.rb +12 -9
- data/lib/mongoid/extensions/time_with_zone.rb +25 -7
- data/lib/mongoid/extensions/true_class.rb +4 -7
- data/lib/mongoid/extensions.rb +18 -3
- data/lib/mongoid/factory.rb +52 -13
- data/lib/mongoid/fields/foreign_key.rb +3 -22
- data/lib/mongoid/fields/localized.rb +2 -11
- data/lib/mongoid/fields/standard.rb +6 -36
- data/lib/mongoid/fields/validators/macro.rb +36 -18
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +113 -63
- data/lib/mongoid/findable.rb +59 -23
- data/lib/mongoid/indexable/specification.rb +3 -16
- data/lib/mongoid/indexable/validators/options.rb +2 -7
- data/lib/mongoid/indexable.rb +6 -21
- data/lib/mongoid/inspectable.rb +4 -11
- data/lib/mongoid/interceptable.rb +13 -30
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +2 -153
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/bits.rb +41 -0
- data/lib/mongoid/matcher/bits_all_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_all_set.rb +20 -0
- data/lib/mongoid/matcher/bits_any_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_any_set.rb +20 -0
- data/lib/mongoid/matcher/elem_match.rb +36 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
- data/lib/mongoid/matcher/eq.rb +11 -0
- data/lib/mongoid/matcher/eq_impl.rb +67 -0
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +26 -0
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +35 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +62 -0
- data/lib/mongoid/matcher/field_operator.rb +54 -0
- data/lib/mongoid/matcher/gt.rb +17 -0
- data/lib/mongoid/matcher/gte.rb +17 -0
- data/lib/mongoid/matcher/in.rb +25 -0
- data/lib/mongoid/matcher/lt.rb +17 -0
- data/lib/mongoid/matcher/lte.rb +17 -0
- data/lib/mongoid/matcher/mod.rb +17 -0
- data/lib/mongoid/matcher/ne.rb +16 -0
- data/lib/mongoid/matcher/nin.rb +11 -0
- data/lib/mongoid/matcher/nor.rb +25 -0
- data/lib/mongoid/matcher/not.rb +29 -0
- data/lib/mongoid/matcher/or.rb +21 -0
- data/lib/mongoid/matcher/regex.rb +41 -0
- data/lib/mongoid/matcher/size.rb +26 -0
- data/lib/mongoid/matcher/type.rb +99 -0
- data/lib/mongoid/matcher.rb +110 -0
- data/lib/mongoid/persistable/creatable.rb +4 -21
- data/lib/mongoid/persistable/deletable.rb +5 -21
- data/lib/mongoid/persistable/destroyable.rb +11 -10
- data/lib/mongoid/persistable/incrementable.rb +6 -7
- data/lib/mongoid/persistable/logical.rb +4 -6
- data/lib/mongoid/persistable/poppable.rb +3 -6
- data/lib/mongoid/persistable/pullable.rb +3 -8
- data/lib/mongoid/persistable/pushable.rb +3 -8
- data/lib/mongoid/persistable/renamable.rb +10 -8
- data/lib/mongoid/persistable/savable.rb +3 -8
- data/lib/mongoid/persistable/settable.rb +3 -6
- data/lib/mongoid/persistable/unsettable.rb +8 -8
- data/lib/mongoid/persistable/updatable.rb +32 -20
- data/lib/mongoid/persistable/upsertable.rb +3 -8
- data/lib/mongoid/persistable.rb +133 -38
- data/lib/mongoid/persistence_context.rb +23 -36
- data/lib/mongoid/positional.rb +2 -5
- data/lib/mongoid/query_cache.rb +118 -103
- data/lib/mongoid/railtie.rb +3 -16
- data/lib/mongoid/railties/controller_runtime.rb +3 -1
- data/lib/mongoid/railties/database.rake +9 -0
- data/lib/mongoid/reloadable.rb +14 -19
- data/lib/mongoid/scopable.rb +8 -35
- data/lib/mongoid/selectable.rb +8 -17
- data/lib/mongoid/serializable.rb +24 -29
- data/lib/mongoid/shardable.rb +80 -17
- data/lib/mongoid/stateful.rb +3 -10
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +12 -5
- data/lib/mongoid/tasks/database.rb +85 -5
- data/lib/mongoid/threaded/lifecycle.rb +2 -21
- data/lib/mongoid/threaded.rb +2 -55
- data/lib/mongoid/timestamps/created/short.rb +2 -1
- data/lib/mongoid/timestamps/created.rb +3 -2
- data/lib/mongoid/timestamps/short.rb +2 -1
- data/lib/mongoid/timestamps/timeless.rb +6 -9
- data/lib/mongoid/timestamps/updated/short.rb +2 -1
- data/lib/mongoid/timestamps/updated.rb +3 -4
- data/lib/mongoid/timestamps.rb +3 -2
- data/lib/mongoid/touchable.rb +53 -23
- data/lib/mongoid/traversable.rb +177 -57
- data/lib/mongoid/validatable/associated.rb +5 -6
- data/lib/mongoid/validatable/format.rb +2 -1
- data/lib/mongoid/validatable/length.rb +2 -1
- data/lib/mongoid/validatable/localizable.rb +2 -3
- data/lib/mongoid/validatable/macros.rb +2 -7
- data/lib/mongoid/validatable/presence.rb +8 -13
- data/lib/mongoid/validatable/queryable.rb +2 -3
- data/lib/mongoid/validatable/uniqueness.rb +20 -33
- data/lib/mongoid/validatable.rb +8 -27
- data/lib/mongoid/version.rb +2 -2
- data/lib/mongoid.rb +32 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -2
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +45 -30
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -2
- data/lib/rails/generators/mongoid_generator.rb +2 -1
- data/lib/rails/mongoid.rb +4 -5
- data/spec/README.md +19 -4
- data/spec/config/mongoid.yml +1 -0
- data/spec/integration/app_spec.rb +246 -95
- data/spec/integration/associations/belongs_to_spec.rb +2 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +207 -1
- data/spec/integration/associations/embeds_many_spec.rb +206 -0
- data/spec/integration/associations/embeds_one_spec.rb +23 -0
- data/spec/integration/associations/foreign_key_spec.rb +98 -0
- data/spec/integration/associations/foreign_key_spec_models.rb +64 -0
- data/spec/integration/associations/has_many_spec.rb +128 -0
- data/spec/integration/associations/has_one_spec.rb +176 -0
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +115 -0
- data/spec/integration/associations/reverse_population_spec.rb +34 -0
- data/spec/integration/associations/reverse_population_spec_models.rb +36 -0
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +116 -0
- data/spec/integration/bson_regexp_raw_spec.rb +19 -0
- data/spec/integration/callbacks_models.rb +61 -0
- data/spec/integration/callbacks_spec.rb +228 -0
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +1 -2
- data/spec/integration/criteria/default_scope_spec.rb +72 -0
- data/spec/integration/criteria/logical_spec.rb +124 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
- data/spec/integration/discriminator_key_spec.rb +353 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +30 -1
- data/spec/integration/i18n_fallbacks_spec.rb +89 -0
- data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -42
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +409 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +112 -0
- data/spec/integration/matcher_operator_data/in.yml +210 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_data/type.yml +70 -0
- data/spec/integration/matcher_operator_data/type_array.yml +16 -0
- data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
- data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
- data/spec/integration/matcher_operator_data/type_code.yml +26 -0
- data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
- data/spec/integration/matcher_operator_data/type_date.yml +39 -0
- data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
- data/spec/integration/matcher_operator_data/type_decimal.yml +40 -0
- data/spec/integration/matcher_operator_data/type_double.yml +15 -0
- data/spec/integration/matcher_operator_data/type_int32.yml +33 -0
- data/spec/integration/matcher_operator_data/type_int64.yml +33 -0
- data/spec/integration/matcher_operator_data/type_max_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_min_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_null.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object_id.yml +25 -0
- data/spec/integration/matcher_operator_data/type_regex.yml +44 -0
- data/spec/integration/matcher_operator_data/type_string.yml +15 -0
- data/spec/integration/matcher_operator_data/type_symbol.yml +32 -0
- data/spec/integration/matcher_operator_data/type_timestamp.yml +25 -0
- data/spec/integration/matcher_operator_data/type_undefined.yml +17 -0
- data/spec/integration/matcher_operator_spec.rb +124 -0
- data/spec/integration/matcher_spec.rb +283 -0
- data/spec/integration/server_query_spec.rb +141 -0
- data/spec/integration/shardable_spec.rb +148 -0
- data/spec/integration/stringified_symbol_field_spec.rb +203 -0
- data/spec/lite_spec_helper.rb +22 -5
- data/spec/mongoid/association/accessors_spec.rb +284 -77
- data/spec/mongoid/association/auto_save_spec.rb +74 -33
- data/spec/mongoid/association/builders_spec.rb +3 -1
- data/spec/mongoid/association/constrainable_spec.rb +2 -0
- data/spec/mongoid/association/counter_cache_spec.rb +34 -32
- data/spec/mongoid/association/depending_spec.rb +426 -333
- data/spec/mongoid/association/eager_spec.rb +6 -4
- data/spec/mongoid/association/embedded/cyclic_spec.rb +4 -2
- data/spec/mongoid/association/embedded/dirty_spec.rb +4 -2
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +65 -13
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +3 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +431 -133
- data/spec/mongoid/association/embedded/embeds_many_models.rb +17 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +51 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +3 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +23 -21
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +3 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +28 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +3 -1
- data/spec/mongoid/association/macros_spec.rb +11 -9
- data/spec/mongoid/association/nested/many_spec.rb +2 -0
- data/spec/mongoid/association/nested/one_spec.rb +18 -12
- data/spec/mongoid/association/options_spec.rb +2 -0
- data/spec/mongoid/association/polymorphic_spec.rb +2 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +57 -16
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +242 -12
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +99 -58
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +57 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +24 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +28 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +46 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +25 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +215 -167
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +43 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +39 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +46 -2
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +40 -9
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +306 -125
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +679 -339
- data/spec/mongoid/association/referenced/has_many_models.rb +58 -0
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +53 -7
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +34 -4
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +28 -26
- data/spec/mongoid/association/referenced/has_one_models.rb +49 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +24 -1
- data/spec/mongoid/association/reflections_spec.rb +2 -0
- data/spec/mongoid/association/syncable_spec.rb +33 -31
- data/spec/mongoid/association_spec.rb +2 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +49 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +2 -0
- data/spec/mongoid/atomic/paths_spec.rb +107 -12
- data/spec/mongoid/atomic_spec.rb +31 -6
- data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
- data/spec/mongoid/attributes/nested_spec.rb +69 -67
- data/spec/mongoid/attributes/projector_data/embedded.yml +105 -0
- data/spec/mongoid/attributes/projector_data/fields.yml +93 -0
- data/spec/mongoid/attributes/projector_spec.rb +44 -0
- data/spec/mongoid/attributes/readonly_spec.rb +24 -22
- data/spec/mongoid/attributes_spec.rb +363 -28
- data/spec/mongoid/cacheable_spec.rb +3 -1
- data/spec/mongoid/changeable_spec.rb +60 -35
- data/spec/mongoid/clients/factory_spec.rb +136 -28
- data/spec/mongoid/clients/options_spec.rb +44 -26
- data/spec/mongoid/clients/sessions_spec.rb +25 -28
- data/spec/mongoid/clients/transactions_spec.rb +54 -29
- data/spec/mongoid/clients_spec.rb +8 -6
- data/spec/mongoid/composable_spec.rb +2 -0
- data/spec/mongoid/config/environment_spec.rb +88 -8
- data/spec/mongoid/config/options_spec.rb +22 -3
- data/spec/mongoid/config_spec.rb +277 -1
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +53 -11
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +122 -20
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +222 -71
- data/spec/mongoid/contextual/geo_near_spec.rb +20 -18
- data/spec/mongoid/contextual/map_reduce_spec.rb +4 -2
- data/spec/mongoid/contextual/memory_spec.rb +25 -23
- data/spec/mongoid/contextual/mongo_spec.rb +413 -92
- data/spec/mongoid/contextual/none_spec.rb +9 -81
- data/spec/mongoid/copyable_spec.rb +207 -26
- data/spec/mongoid/copyable_spec_models.rb +30 -0
- data/spec/mongoid/criteria/findable_spec.rb +77 -20
- data/spec/mongoid/criteria/inspectable_spec.rb +2 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +2 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +43 -40
- data/spec/mongoid/criteria/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +61 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +35 -17
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +0 -1
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +239 -178
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +23 -16
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +145 -12
- data/spec/mongoid/criteria/queryable/optional_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +1593 -286
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +38 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1010 -2736
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/smash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +226 -0
- data/spec/mongoid/criteria/scopable_spec.rb +129 -0
- data/spec/mongoid/criteria_projection_spec.rb +410 -0
- data/spec/mongoid/criteria_spec.rb +782 -459
- data/spec/mongoid/document_fields_spec.rb +26 -1
- data/spec/mongoid/document_persistence_context_spec.rb +0 -1
- data/spec/mongoid/document_query_spec.rb +89 -0
- data/spec/mongoid/document_spec.rb +123 -48
- data/spec/mongoid/equality_spec.rb +144 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +5 -3
- data/spec/mongoid/errors/callback_spec.rb +2 -0
- data/spec/mongoid/errors/delete_restriction_spec.rb +4 -2
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +2 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +2 -0
- data/spec/mongoid/errors/eager_load_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_includes_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_index_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_options_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_path_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_relation_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -1
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +2 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +2 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +2 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +22 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_config_spec.rb +4 -2
- data/spec/mongoid/errors/no_client_database_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_hosts_spec.rb +5 -3
- data/spec/mongoid/errors/no_clients_config_spec.rb +2 -0
- data/spec/mongoid/errors/no_environment_spec.rb +2 -0
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +2 -0
- data/spec/mongoid/errors/no_metadata_spec.rb +4 -2
- data/spec/mongoid/errors/no_parent_spec.rb +3 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +2 -0
- data/spec/mongoid/errors/readonly_document_spec.rb +2 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +2 -0
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +2 -0
- data/spec/mongoid/errors/unknown_attribute_spec.rb +4 -2
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +2 -0
- data/spec/mongoid/errors/validations_spec.rb +2 -0
- data/spec/mongoid/extensions/array_spec.rb +25 -43
- data/spec/mongoid/extensions/big_decimal_spec.rb +2 -0
- data/spec/mongoid/extensions/binary_spec.rb +2 -0
- data/spec/mongoid/extensions/boolean_spec.rb +2 -0
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +335 -0
- data/spec/mongoid/extensions/date_spec.rb +8 -160
- data/spec/mongoid/extensions/date_time_spec.rb +17 -60
- data/spec/mongoid/extensions/decimal128_spec.rb +2 -0
- data/spec/mongoid/extensions/false_class_spec.rb +3 -1
- data/spec/mongoid/extensions/float_spec.rb +17 -3
- data/spec/mongoid/extensions/hash_spec.rb +105 -0
- data/spec/mongoid/extensions/integer_spec.rb +14 -2
- data/spec/mongoid/extensions/module_spec.rb +2 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/extensions/object_id_spec.rb +2 -0
- data/spec/mongoid/extensions/object_spec.rb +13 -24
- data/spec/mongoid/extensions/range_spec.rb +2 -0
- data/spec/mongoid/extensions/regexp_spec.rb +2 -0
- data/spec/mongoid/extensions/set_spec.rb +2 -0
- data/spec/mongoid/extensions/string_spec.rb +60 -27
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +84 -0
- data/spec/mongoid/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/extensions/time_spec.rb +29 -0
- data/spec/mongoid/extensions/time_with_zone_spec.rb +33 -0
- data/spec/mongoid/extensions/true_class_spec.rb +3 -1
- data/spec/mongoid/extensions_spec.rb +16 -2
- data/spec/mongoid/factory_spec.rb +287 -27
- data/spec/mongoid/fields/foreign_key_spec.rb +2 -0
- data/spec/mongoid/fields/localized_spec.rb +6 -4
- data/spec/mongoid/fields/standard_spec.rb +2 -0
- data/spec/mongoid/fields_spec.rb +418 -36
- data/spec/mongoid/findable_spec.rb +53 -19
- data/spec/mongoid/indexable/specification_spec.rb +2 -0
- data/spec/mongoid/indexable_spec.rb +30 -2
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +168 -96
- data/spec/mongoid/interceptable_spec_models.rb +76 -0
- data/spec/mongoid/loggable_spec.rb +2 -0
- data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +239 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +40 -0
- data/spec/mongoid/persistable/creatable_spec.rb +112 -27
- data/spec/mongoid/persistable/deletable_spec.rb +273 -11
- data/spec/mongoid/persistable/destroyable_spec.rb +201 -11
- data/spec/mongoid/persistable/incrementable_spec.rb +23 -7
- data/spec/mongoid/persistable/logical_spec.rb +19 -3
- data/spec/mongoid/persistable/poppable_spec.rb +19 -3
- data/spec/mongoid/persistable/pullable_spec.rb +36 -6
- data/spec/mongoid/persistable/pushable_spec.rb +36 -6
- data/spec/mongoid/persistable/renamable_spec.rb +18 -2
- data/spec/mongoid/persistable/savable_spec.rb +188 -25
- data/spec/mongoid/persistable/settable_spec.rb +54 -8
- data/spec/mongoid/persistable/unsettable_spec.rb +19 -3
- data/spec/mongoid/persistable/updatable_spec.rb +45 -23
- data/spec/mongoid/persistable/upsertable_spec.rb +4 -2
- data/spec/mongoid/persistable_spec.rb +85 -9
- data/spec/mongoid/persistence_context_spec.rb +2 -0
- data/spec/mongoid/positional_spec.rb +2 -0
- data/spec/mongoid/query_cache_middleware_spec.rb +68 -0
- data/spec/mongoid/query_cache_spec.rb +501 -81
- data/spec/mongoid/relations/proxy_spec.rb +8 -6
- data/spec/mongoid/reloadable_spec.rb +298 -20
- data/spec/mongoid/scopable_spec.rb +67 -21
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +160 -29
- data/spec/mongoid/shardable_models.rb +61 -0
- data/spec/mongoid/shardable_spec.rb +116 -17
- data/spec/mongoid/stateful_spec.rb +3 -1
- data/spec/mongoid/tasks/database_rake_spec.rb +2 -0
- data/spec/mongoid/tasks/database_spec.rb +2 -0
- data/spec/mongoid/threaded_spec.rb +4 -2
- data/spec/mongoid/timestamps/created/short_spec.rb +3 -1
- data/spec/mongoid/timestamps/created_spec.rb +3 -1
- data/spec/mongoid/timestamps/timeless_spec.rb +4 -2
- data/spec/mongoid/timestamps/updated/short_spec.rb +5 -3
- data/spec/mongoid/timestamps/updated_spec.rb +5 -3
- data/spec/mongoid/timestamps_spec.rb +8 -6
- data/spec/mongoid/touchable_spec.rb +180 -33
- data/spec/mongoid/touchable_spec_models.rb +53 -0
- data/spec/mongoid/traversable_spec.rb +1167 -1
- data/spec/mongoid/validatable/associated_spec.rb +2 -0
- data/spec/mongoid/validatable/format_spec.rb +2 -0
- data/spec/mongoid/validatable/length_spec.rb +2 -0
- data/spec/mongoid/validatable/numericality_spec.rb +2 -0
- data/spec/mongoid/validatable/presence_spec.rb +28 -22
- data/spec/mongoid/validatable/uniqueness_spec.rb +69 -67
- data/spec/mongoid/validatable_spec.rb +5 -3
- data/spec/mongoid_spec.rb +2 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +3 -1
- data/spec/rails/mongoid_spec.rb +4 -2
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +386 -0
- data/spec/shared/lib/mrss/docker_runner.rb +271 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +199 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +120 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +339 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +379 -0
- data/spec/shared/shlib/set_env.sh +132 -0
- data/spec/spec_helper.rb +39 -35
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +15 -234
- data/spec/support/expectations.rb +5 -1
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +22 -0
- data/spec/{app → support}/models/account.rb +3 -1
- data/spec/{app → support}/models/acolyte.rb +2 -0
- data/spec/{app → support}/models/actor.rb +3 -1
- data/spec/support/models/actress.rb +4 -0
- data/spec/{app → support}/models/address.rb +6 -0
- data/spec/{app → support}/models/address_component.rb +2 -0
- data/spec/{app → support}/models/address_number.rb +2 -0
- data/spec/{app → support}/models/agency.rb +2 -0
- data/spec/{app → support}/models/agent.rb +2 -0
- data/spec/{app → support}/models/album.rb +2 -0
- data/spec/{app → support}/models/alert.rb +2 -0
- data/spec/{app → support}/models/animal.rb +2 -0
- data/spec/{app → support}/models/answer.rb +2 -0
- data/spec/{app → support}/models/appointment.rb +2 -0
- data/spec/support/models/armrest.rb +9 -0
- data/spec/{app → support}/models/article.rb +2 -0
- data/spec/{app → support}/models/artist.rb +4 -0
- data/spec/{app → support}/models/artwork.rb +2 -0
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/{app → support}/models/audio.rb +2 -0
- data/spec/{app → support}/models/augmentation.rb +2 -0
- data/spec/{app → support}/models/author.rb +2 -0
- data/spec/{app → support}/models/baby.rb +2 -0
- data/spec/{app → support}/models/band.rb +6 -0
- data/spec/{app → support}/models/bar.rb +2 -0
- data/spec/{app → support}/models/basic.rb +2 -0
- data/spec/support/models/bed.rb +3 -0
- data/spec/{app → support}/models/big_palette.rb +2 -0
- data/spec/{app → support}/models/birthday.rb +2 -0
- data/spec/support/models/bolt.rb +7 -0
- data/spec/{app → support}/models/bomb.rb +2 -0
- data/spec/{app → support}/models/book.rb +2 -0
- data/spec/{app → support}/models/breed.rb +2 -0
- data/spec/{app → support}/models/browser.rb +3 -1
- data/spec/{app → support}/models/building.rb +2 -0
- data/spec/{app → support}/models/building_address.rb +2 -0
- data/spec/{app → support}/models/bus.rb +2 -0
- data/spec/{app → support}/models/business.rb +2 -0
- data/spec/{app → support}/models/callback_test.rb +2 -0
- data/spec/{app → support}/models/canvas.rb +3 -1
- data/spec/support/models/car.rb +3 -0
- data/spec/{app → support}/models/cat.rb +2 -0
- data/spec/{app → support}/models/category.rb +2 -0
- data/spec/{app → support}/models/child.rb +2 -0
- data/spec/{app → support}/models/child_doc.rb +5 -3
- data/spec/{app → support}/models/church.rb +2 -0
- data/spec/{app → support}/models/circle.rb +2 -0
- data/spec/{app → support}/models/circuit.rb +2 -0
- data/spec/{app → support}/models/circus.rb +2 -0
- data/spec/{app → support}/models/code.rb +2 -0
- data/spec/support/models/coding/pull_request.rb +11 -0
- data/spec/support/models/coding.rb +3 -0
- data/spec/{app → support}/models/comment.rb +2 -0
- data/spec/{app → support}/models/company.rb +2 -0
- data/spec/{app → support}/models/consumption_period.rb +2 -0
- data/spec/{app → support}/models/contextable_item.rb +2 -0
- data/spec/{app → support}/models/contractor.rb +2 -0
- data/spec/{app → support}/models/cookie.rb +2 -0
- data/spec/{app → support}/models/country_code.rb +4 -0
- data/spec/{app → support}/models/courier_job.rb +2 -0
- data/spec/support/models/crate.rb +12 -0
- data/spec/support/models/customer.rb +10 -0
- data/spec/support/models/customer_address.rb +11 -0
- data/spec/support/models/deed.rb +7 -0
- data/spec/{app → support}/models/definition.rb +2 -0
- data/spec/{app → support}/models/delegating_patient.rb +0 -1
- data/spec/{app → support}/models/description.rb +2 -0
- data/spec/{app → support}/models/dictionary.rb +8 -0
- data/spec/{app → support}/models/division.rb +2 -0
- data/spec/{app → support}/models/doctor.rb +2 -0
- data/spec/{app → support}/models/dog.rb +2 -0
- data/spec/{app → support}/models/dokument.rb +2 -0
- data/spec/{app → support}/models/draft.rb +2 -0
- data/spec/{app → support}/models/dragon.rb +2 -0
- data/spec/{app → support}/models/driver.rb +3 -1
- data/spec/{app → support}/models/drug.rb +2 -0
- data/spec/{app → support}/models/dungeon.rb +2 -0
- data/spec/{app → support}/models/edit.rb +2 -0
- data/spec/{app → support}/models/email.rb +2 -0
- data/spec/{app → support}/models/employer.rb +2 -0
- data/spec/{app → support}/models/entry.rb +2 -0
- data/spec/support/models/eraser.rb +3 -0
- data/spec/{app → support}/models/even.rb +2 -0
- data/spec/{app → support}/models/event.rb +2 -0
- data/spec/{app → support}/models/exhibition.rb +2 -0
- data/spec/{app → support}/models/exhibitor.rb +2 -0
- data/spec/{app → support}/models/explosion.rb +2 -0
- data/spec/{app → support}/models/eye.rb +2 -0
- data/spec/{app → support}/models/eye_bowl.rb +2 -0
- data/spec/{app → support}/models/face.rb +2 -0
- data/spec/{app → support}/models/favorite.rb +2 -0
- data/spec/{app → support}/models/filesystem.rb +2 -0
- data/spec/{app → support}/models/fire_hydrant.rb +2 -0
- data/spec/{app → support}/models/firefox.rb +2 -0
- data/spec/{app → support}/models/fish.rb +2 -0
- data/spec/{app → support}/models/folder.rb +2 -0
- data/spec/{app → support}/models/folder_item.rb +2 -0
- data/spec/{app → support}/models/fruits.rb +2 -0
- data/spec/{app → support}/models/game.rb +2 -0
- data/spec/{app → support}/models/ghost.rb +2 -0
- data/spec/support/models/guitar.rb +4 -0
- data/spec/support/models/hole.rb +12 -0
- data/spec/{app → support}/models/home.rb +2 -0
- data/spec/{app → support}/models/house.rb +2 -0
- data/spec/{app → support}/models/html_writer.rb +2 -0
- data/spec/{app → support}/models/id_key.rb +2 -0
- data/spec/support/models/idnodef.rb +7 -0
- data/spec/{app → support}/models/image.rb +2 -0
- data/spec/{app → support}/models/implant.rb +2 -0
- data/spec/support/models/instrument.rb +8 -0
- data/spec/{app → support}/models/item.rb +3 -1
- data/spec/{app → support}/models/jar.rb +2 -0
- data/spec/{app → support}/models/kaleidoscope.rb +2 -0
- data/spec/{app → support}/models/kangaroo.rb +3 -1
- data/spec/{app → support}/models/label.rb +4 -1
- data/spec/{app → support}/models/language.rb +2 -0
- data/spec/{app → support}/models/lat_lng.rb +2 -0
- data/spec/{app → support}/models/league.rb +2 -0
- data/spec/support/models/learner.rb +4 -0
- data/spec/{app → support}/models/line_item.rb +2 -0
- data/spec/{app → support}/models/location.rb +2 -0
- data/spec/{app → support}/models/login.rb +2 -0
- data/spec/{app → support}/models/manufacturer.rb +2 -0
- data/spec/{app → support}/models/meat.rb +2 -0
- data/spec/{app → support}/models/membership.rb +2 -0
- data/spec/{app → support}/models/message.rb +2 -0
- data/spec/{app → support}/models/minim.rb +0 -1
- data/spec/{app → support}/models/mixed_drink.rb +2 -0
- data/spec/support/models/mop.rb +24 -0
- data/spec/{app → support}/models/movie.rb +2 -0
- data/spec/support/models/my_hash.rb +4 -0
- data/spec/{app → support}/models/name.rb +2 -0
- data/spec/support/models/name_only.rb +8 -0
- data/spec/{app → support}/models/node.rb +2 -0
- data/spec/{app → support}/models/note.rb +2 -0
- data/spec/support/models/nut.rb +7 -0
- data/spec/{app → support}/models/odd.rb +2 -0
- data/spec/support/models/order.rb +12 -0
- data/spec/{app → support}/models/ordered_post.rb +3 -1
- data/spec/{app → support}/models/ordered_preference.rb +2 -0
- data/spec/{app → support}/models/oscar.rb +2 -0
- data/spec/support/models/other_owner_object.rb +4 -0
- data/spec/{app → support}/models/override.rb +2 -0
- data/spec/{app → support}/models/ownable.rb +2 -0
- data/spec/{app → support}/models/owner.rb +4 -0
- data/spec/{app → support}/models/pack.rb +2 -0
- data/spec/{app → support}/models/page.rb +2 -0
- data/spec/{app → support}/models/page_question.rb +2 -0
- data/spec/{app → support}/models/palette.rb +3 -1
- data/spec/{app → support}/models/parent.rb +2 -0
- data/spec/{app → support}/models/parent_doc.rb +2 -0
- data/spec/support/models/passport.rb +13 -0
- data/spec/{app → support}/models/patient.rb +2 -0
- data/spec/{app → support}/models/pdf_writer.rb +2 -0
- data/spec/support/models/pencil.rb +3 -0
- data/spec/{app → support}/models/person.rb +21 -1
- data/spec/{app → support}/models/pet.rb +2 -0
- data/spec/{app → support}/models/pet_owner.rb +2 -0
- data/spec/{app → support}/models/phone.rb +5 -1
- data/spec/support/models/piano.rb +4 -0
- data/spec/{app → support}/models/pizza.rb +2 -0
- data/spec/{app → support}/models/player.rb +2 -0
- data/spec/{app → support}/models/post.rb +2 -0
- data/spec/{app → support}/models/post_genre.rb +2 -0
- data/spec/{app → support}/models/powerup.rb +2 -0
- data/spec/{app → support}/models/preference.rb +2 -0
- data/spec/{app → support}/models/princess.rb +2 -0
- data/spec/{app → support}/models/product.rb +2 -0
- data/spec/support/models/profile.rb +17 -0
- data/spec/{app → support}/models/pronunciation.rb +2 -0
- data/spec/{app → support}/models/pub.rb +2 -0
- data/spec/support/models/publication/encyclopedia.rb +11 -0
- data/spec/support/models/publication/review.rb +13 -0
- data/spec/support/models/publication.rb +4 -0
- data/spec/{app → support}/models/purchase.rb +2 -0
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/{app → support}/models/question.rb +2 -0
- data/spec/{app → support}/models/quiz.rb +2 -0
- data/spec/{app → support}/models/rating.rb +2 -0
- data/spec/{app → support}/models/record.rb +2 -0
- data/spec/{app → support}/models/registry.rb +2 -0
- data/spec/{app → support}/models/role.rb +2 -0
- data/spec/{app → support}/models/root_category.rb +2 -0
- data/spec/{app → support}/models/sandwich.rb +2 -0
- data/spec/{app → support}/models/scheduler.rb +2 -0
- data/spec/support/models/scribe.rb +7 -0
- data/spec/support/models/sealer.rb +7 -0
- data/spec/support/models/seat.rb +24 -0
- data/spec/{app → support}/models/seo.rb +2 -0
- data/spec/support/models/series.rb +7 -0
- data/spec/{app → support}/models/server.rb +2 -0
- data/spec/{app → support}/models/service.rb +2 -0
- data/spec/{app → support}/models/shape.rb +4 -2
- data/spec/{app → support}/models/shelf.rb +2 -0
- data/spec/{app → support}/models/shipment_address.rb +2 -0
- data/spec/{app → support}/models/shipping_container.rb +2 -0
- data/spec/{app → support}/models/shipping_pack.rb +2 -0
- data/spec/support/models/shirt.rb +11 -0
- data/spec/{app → support}/models/shop.rb +2 -0
- data/spec/{app → support}/models/short_agent.rb +2 -0
- data/spec/{app → support}/models/short_quiz.rb +2 -0
- data/spec/{app → support}/models/simple.rb +2 -0
- data/spec/{app → support}/models/slave.rb +2 -0
- data/spec/{app → support}/models/song.rb +2 -0
- data/spec/{app → support}/models/sound.rb +2 -0
- data/spec/support/models/spacer.rb +7 -0
- data/spec/{app → support}/models/square.rb +2 -0
- data/spec/{app → support}/models/staff.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +2 -0
- data/spec/{app → support}/models/strategy.rb +2 -0
- data/spec/{app → support}/models/sub_item.rb +2 -0
- data/spec/{app → support}/models/subscription.rb +2 -0
- data/spec/{app → support}/models/survey.rb +2 -0
- data/spec/{app → support}/models/symptom.rb +2 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +2 -0
- data/spec/{app → support}/models/target.rb +2 -0
- data/spec/{app → support}/models/template.rb +2 -0
- data/spec/{app → support}/models/thing.rb +2 -0
- data/spec/support/models/threadlocker.rb +7 -0
- data/spec/{app → support}/models/title.rb +2 -0
- data/spec/{app → support}/models/tool.rb +4 -2
- data/spec/{app → support}/models/topping.rb +2 -0
- data/spec/support/models/toy.rb +9 -0
- data/spec/{app → support}/models/track.rb +2 -0
- data/spec/{app → support}/models/translation.rb +2 -0
- data/spec/{app → support}/models/tree.rb +2 -0
- data/spec/support/models/truck.rb +7 -0
- data/spec/{app → support}/models/user.rb +2 -0
- data/spec/{app → support}/models/user_account.rb +2 -0
- data/spec/{app → support}/models/validation_callback.rb +2 -0
- data/spec/support/models/vehicle.rb +18 -0
- data/spec/{app → support}/models/version.rb +2 -0
- data/spec/{app → support}/models/vertex.rb +3 -1
- data/spec/{app → support}/models/vet_visit.rb +2 -0
- data/spec/{app → support}/models/video.rb +2 -0
- data/spec/support/models/video_game.rb +3 -0
- data/spec/support/models/washer.rb +7 -0
- data/spec/{app → support}/models/weapon.rb +2 -0
- data/spec/{app → support}/models/wiki_page.rb +3 -0
- data/spec/{app → support}/models/word.rb +2 -0
- data/spec/{app → support}/models/word_origin.rb +2 -0
- data/spec/{app → support}/models/writer.rb +4 -2
- data/spec/support/shared/time.rb +53 -0
- data/spec/support/spec_config.rb +16 -3
- data.tar.gz.sig +0 -0
- metadata +1100 -738
- metadata.gz.sig +0 -0
- data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
- data/lib/mongoid/matchable/all.rb +0 -28
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -119
- data/lib/mongoid/matchable/elem_match.rb +0 -34
- data/lib/mongoid/matchable/eq.rb +0 -22
- data/lib/mongoid/matchable/exists.rb +0 -23
- data/lib/mongoid/matchable/gt.rb +0 -23
- data/lib/mongoid/matchable/gte.rb +0 -23
- data/lib/mongoid/matchable/in.rb +0 -24
- data/lib/mongoid/matchable/lt.rb +0 -23
- data/lib/mongoid/matchable/lte.rb +0 -23
- data/lib/mongoid/matchable/ne.rb +0 -21
- data/lib/mongoid/matchable/nin.rb +0 -22
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/matchable/or.rb +0 -33
- data/lib/mongoid/matchable/regexp.rb +0 -27
- data/lib/mongoid/matchable/size.rb +0 -21
- data/lib/support/ruby_version.rb +0 -26
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/other_owner_object.rb +0 -2
- data/spec/app/models/passport.rb +0 -5
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/profile.rb +0 -5
- data/spec/app/models/series.rb +0 -4
- data/spec/app/models/truck.rb +0 -3
- data/spec/app/models/vehicle.rb +0 -11
- data/spec/app/models/video_game.rb +0 -1
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
- data/spec/mongoid/matchable/all_spec.rb +0 -31
- data/spec/mongoid/matchable/and_spec.rb +0 -187
- data/spec/mongoid/matchable/default_spec.rb +0 -137
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -106
- data/spec/mongoid/matchable/eq_spec.rb +0 -48
- data/spec/mongoid/matchable/exists_spec.rb +0 -57
- data/spec/mongoid/matchable/gt_spec.rb +0 -86
- data/spec/mongoid/matchable/gte_spec.rb +0 -84
- data/spec/mongoid/matchable/in_spec.rb +0 -49
- data/spec/mongoid/matchable/lt_spec.rb +0 -85
- data/spec/mongoid/matchable/lte_spec.rb +0 -85
- data/spec/mongoid/matchable/ne_spec.rb +0 -46
- data/spec/mongoid/matchable/nin_spec.rb +0 -48
- data/spec/mongoid/matchable/nor_spec.rb +0 -209
- data/spec/mongoid/matchable/or_spec.rb +0 -131
- data/spec/mongoid/matchable/regexp_spec.rb +0 -59
- data/spec/mongoid/matchable/size_spec.rb +0 -25
- data/spec/mongoid/matchable_spec.rb +0 -853
- data/spec/support/child_process_helper.rb +0 -76
- data/spec/support/cluster_config.rb +0 -158
- /data/spec/{app → support}/models/array_field.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
- /data/spec/{app → support}/models/updatable.rb +0 -0
|
@@ -1,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,11 @@ 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")
|
|
2545
2843
|
end
|
|
2546
2844
|
|
|
2547
2845
|
context "when the number is zero" do
|
|
@@ -2623,17 +2921,17 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2623
2921
|
describe "#shift" do
|
|
2624
2922
|
|
|
2625
2923
|
let(:person) do
|
|
2626
|
-
Person.create
|
|
2924
|
+
Person.create!
|
|
2627
2925
|
end
|
|
2628
2926
|
|
|
2629
2927
|
context "when no argument is provided" do
|
|
2630
2928
|
|
|
2631
2929
|
let!(:address_one) do
|
|
2632
|
-
person.addresses.create(street: "sonnenallee")
|
|
2930
|
+
person.addresses.create!(street: "sonnenallee")
|
|
2633
2931
|
end
|
|
2634
2932
|
|
|
2635
2933
|
let!(:address_two) do
|
|
2636
|
-
person.addresses.create(street: "hermannstr")
|
|
2934
|
+
person.addresses.create!(street: "hermannstr")
|
|
2637
2935
|
end
|
|
2638
2936
|
|
|
2639
2937
|
let!(:shifted) do
|
|
@@ -2656,11 +2954,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2656
2954
|
context "when an integer is provided" do
|
|
2657
2955
|
|
|
2658
2956
|
let!(:address_one) do
|
|
2659
|
-
person.addresses.create(street: "sonnenallee")
|
|
2957
|
+
person.addresses.create!(street: "sonnenallee")
|
|
2660
2958
|
end
|
|
2661
2959
|
|
|
2662
2960
|
let!(:address_two) do
|
|
2663
|
-
person.addresses.create(street: "hermannstr")
|
|
2961
|
+
person.addresses.create!(street: "hermannstr")
|
|
2664
2962
|
end
|
|
2665
2963
|
|
|
2666
2964
|
context "when the number is zero" do
|
|
@@ -2808,11 +3106,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2808
3106
|
describe "##{method}" do
|
|
2809
3107
|
|
|
2810
3108
|
let(:person) do
|
|
2811
|
-
Person.create
|
|
3109
|
+
Person.create!
|
|
2812
3110
|
end
|
|
2813
3111
|
|
|
2814
3112
|
before do
|
|
2815
|
-
person.addresses.create(street: "Upper")
|
|
3113
|
+
person.addresses.create!(street: "Upper")
|
|
2816
3114
|
person.addresses.build(street: "Bond")
|
|
2817
3115
|
end
|
|
2818
3116
|
|
|
@@ -2850,7 +3148,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2850
3148
|
context "when there are no documents present" do
|
|
2851
3149
|
|
|
2852
3150
|
let(:person) do
|
|
2853
|
-
Person.create
|
|
3151
|
+
Person.create!
|
|
2854
3152
|
end
|
|
2855
3153
|
|
|
2856
3154
|
it "updates nothing" do
|
|
@@ -2861,11 +3159,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2861
3159
|
context "when documents are present" do
|
|
2862
3160
|
|
|
2863
3161
|
let(:person) do
|
|
2864
|
-
Person.create
|
|
3162
|
+
Person.create!
|
|
2865
3163
|
end
|
|
2866
3164
|
|
|
2867
3165
|
let!(:address) do
|
|
2868
|
-
person.addresses.create(street: "Hobrecht", number: 27)
|
|
3166
|
+
person.addresses.create!(street: "Hobrecht", number: 27)
|
|
2869
3167
|
end
|
|
2870
3168
|
|
|
2871
3169
|
context "when updating with a where clause" do
|
|
@@ -2900,16 +3198,16 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2900
3198
|
context "when updating the bottom level" do
|
|
2901
3199
|
|
|
2902
3200
|
let!(:person) do
|
|
2903
|
-
Person.create
|
|
3201
|
+
Person.create!
|
|
2904
3202
|
end
|
|
2905
3203
|
|
|
2906
3204
|
let!(:address) do
|
|
2907
|
-
person.addresses.create(street: "Joachimstr")
|
|
3205
|
+
person.addresses.create!(street: "Joachimstr")
|
|
2908
3206
|
end
|
|
2909
3207
|
|
|
2910
3208
|
let!(:location) do
|
|
2911
|
-
address.locations.create(name: "vacation", number: 0)
|
|
2912
|
-
address.locations.create(name: "work", number: 3)
|
|
3209
|
+
address.locations.create!(name: "vacation", number: 0)
|
|
3210
|
+
address.locations.create!(name: "work", number: 3)
|
|
2913
3211
|
end
|
|
2914
3212
|
|
|
2915
3213
|
context "when updating with replacement of embedded array" do
|
|
@@ -2917,7 +3215,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2917
3215
|
context "when updating with a hash" do
|
|
2918
3216
|
|
|
2919
3217
|
before do
|
|
2920
|
-
address.update_attributes(locations: [{ name: "home" }])
|
|
3218
|
+
address.update_attributes!(locations: [{ name: "home" }])
|
|
2921
3219
|
end
|
|
2922
3220
|
|
|
2923
3221
|
it "updates the attributes" do
|
|
@@ -2938,7 +3236,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
2938
3236
|
|
|
2939
3237
|
before do
|
|
2940
3238
|
location.number = 7
|
|
2941
|
-
location.save
|
|
3239
|
+
location.save!
|
|
2942
3240
|
end
|
|
2943
3241
|
|
|
2944
3242
|
let(:updated_location_number) do
|
|
@@ -3071,7 +3369,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3071
3369
|
context "when creating a persisted tree" do
|
|
3072
3370
|
|
|
3073
3371
|
let(:quiz) do
|
|
3074
|
-
Quiz.create
|
|
3372
|
+
Quiz.create!
|
|
3075
3373
|
end
|
|
3076
3374
|
|
|
3077
3375
|
let(:page) do
|
|
@@ -3136,7 +3434,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3136
3434
|
context "when saving the root" do
|
|
3137
3435
|
|
|
3138
3436
|
before do
|
|
3139
|
-
person.save
|
|
3437
|
+
person.save!
|
|
3140
3438
|
end
|
|
3141
3439
|
|
|
3142
3440
|
it "persists the first level document" do
|
|
@@ -3290,11 +3588,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3290
3588
|
context "when accessing the parent in a destroy callback" do
|
|
3291
3589
|
|
|
3292
3590
|
let!(:league) do
|
|
3293
|
-
League.create
|
|
3591
|
+
League.create!
|
|
3294
3592
|
end
|
|
3295
3593
|
|
|
3296
3594
|
let!(:division) do
|
|
3297
|
-
league.divisions.create
|
|
3595
|
+
league.divisions.create!
|
|
3298
3596
|
end
|
|
3299
3597
|
|
|
3300
3598
|
before do
|
|
@@ -3309,15 +3607,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3309
3607
|
context "when updating the parent with all attributes" do
|
|
3310
3608
|
|
|
3311
3609
|
let!(:person) do
|
|
3312
|
-
Person.create
|
|
3610
|
+
Person.create!
|
|
3313
3611
|
end
|
|
3314
3612
|
|
|
3315
3613
|
let!(:address) do
|
|
3316
|
-
person.addresses.create
|
|
3614
|
+
person.addresses.create!
|
|
3317
3615
|
end
|
|
3318
3616
|
|
|
3319
3617
|
before do
|
|
3320
|
-
person.update_attributes(person.attributes)
|
|
3618
|
+
person.update_attributes!(person.attributes)
|
|
3321
3619
|
end
|
|
3322
3620
|
|
|
3323
3621
|
it "does not duplicate the embedded documents" do
|
|
@@ -3332,13 +3630,13 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3332
3630
|
context "when embedding children named versions" do
|
|
3333
3631
|
|
|
3334
3632
|
let(:acolyte) do
|
|
3335
|
-
Acolyte.create(name: "test")
|
|
3633
|
+
Acolyte.create!(name: "test")
|
|
3336
3634
|
end
|
|
3337
3635
|
|
|
3338
3636
|
context "when creating a child" do
|
|
3339
3637
|
|
|
3340
3638
|
let(:version) do
|
|
3341
|
-
acolyte.versions.create(number: 1)
|
|
3639
|
+
acolyte.versions.create!(number: 1)
|
|
3342
3640
|
end
|
|
3343
3641
|
|
|
3344
3642
|
it "allows the operation" do
|
|
@@ -3363,7 +3661,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3363
3661
|
let!(:account) do
|
|
3364
3662
|
Account.new(name: "Testing").tap do |acct|
|
|
3365
3663
|
acct.memberships.build
|
|
3366
|
-
acct.save
|
|
3664
|
+
acct.save!
|
|
3367
3665
|
end
|
|
3368
3666
|
end
|
|
3369
3667
|
|
|
@@ -3375,10 +3673,10 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3375
3673
|
|
|
3376
3674
|
before do
|
|
3377
3675
|
account.name = ""
|
|
3378
|
-
account.save
|
|
3379
3676
|
end
|
|
3380
3677
|
|
|
3381
3678
|
it "does not lose the parent reference" do
|
|
3679
|
+
expect(account.save).to eq false
|
|
3382
3680
|
expect(from_db.memberships.first.account).to eq(account)
|
|
3383
3681
|
end
|
|
3384
3682
|
end
|
|
@@ -3398,15 +3696,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3398
3696
|
context "when moving an embedded document from one parent to another" do
|
|
3399
3697
|
|
|
3400
3698
|
let!(:person_one) do
|
|
3401
|
-
Person.create
|
|
3699
|
+
Person.create!
|
|
3402
3700
|
end
|
|
3403
3701
|
|
|
3404
3702
|
let!(:person_two) do
|
|
3405
|
-
Person.create
|
|
3703
|
+
Person.create!
|
|
3406
3704
|
end
|
|
3407
3705
|
|
|
3408
3706
|
let!(:address) do
|
|
3409
|
-
person_one.addresses.create(street: "Kudamm")
|
|
3707
|
+
person_one.addresses.create!(street: "Kudamm")
|
|
3410
3708
|
end
|
|
3411
3709
|
|
|
3412
3710
|
before do
|
|
@@ -3441,7 +3739,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3441
3739
|
context "when the relation has a default scope" do
|
|
3442
3740
|
|
|
3443
3741
|
let!(:person) do
|
|
3444
|
-
Person.create
|
|
3742
|
+
Person.create!
|
|
3445
3743
|
end
|
|
3446
3744
|
|
|
3447
3745
|
context "when the default scope is a sort" do
|
|
@@ -3511,7 +3809,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3511
3809
|
context "when indexing the documents" do
|
|
3512
3810
|
|
|
3513
3811
|
let!(:person) do
|
|
3514
|
-
Person.create
|
|
3812
|
+
Person.create!
|
|
3515
3813
|
end
|
|
3516
3814
|
|
|
3517
3815
|
context "when the documents have a limiting default scope" do
|
|
@@ -3560,18 +3858,18 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3560
3858
|
context "when the embedded document has an array field" do
|
|
3561
3859
|
|
|
3562
3860
|
let!(:person) do
|
|
3563
|
-
Person.create
|
|
3861
|
+
Person.create!
|
|
3564
3862
|
end
|
|
3565
3863
|
|
|
3566
3864
|
let!(:video) do
|
|
3567
|
-
person.videos.create
|
|
3865
|
+
person.videos.create!
|
|
3568
3866
|
end
|
|
3569
3867
|
|
|
3570
3868
|
context "when saving the array on a persisted document" do
|
|
3571
3869
|
|
|
3572
3870
|
before do
|
|
3573
3871
|
video.genres = [ "horror", "scifi" ]
|
|
3574
|
-
video.save
|
|
3872
|
+
video.save!
|
|
3575
3873
|
end
|
|
3576
3874
|
|
|
3577
3875
|
it "sets the value" do
|
|
@@ -3596,7 +3894,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3596
3894
|
|
|
3597
3895
|
before do
|
|
3598
3896
|
loaded_video.genres = [ "comedy" ]
|
|
3599
|
-
loaded_video.save
|
|
3897
|
+
loaded_video.save!
|
|
3600
3898
|
end
|
|
3601
3899
|
|
|
3602
3900
|
it "sets the new value" do
|
|
@@ -3614,15 +3912,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3614
3912
|
context "when destroying an embedded document" do
|
|
3615
3913
|
|
|
3616
3914
|
let(:person) do
|
|
3617
|
-
Person.create
|
|
3915
|
+
Person.create!
|
|
3618
3916
|
end
|
|
3619
3917
|
|
|
3620
3918
|
let!(:address_one) do
|
|
3621
|
-
person.addresses.create(street: "hobrecht")
|
|
3919
|
+
person.addresses.create!(street: "hobrecht")
|
|
3622
3920
|
end
|
|
3623
3921
|
|
|
3624
3922
|
let!(:address_two) do
|
|
3625
|
-
person.addresses.create(street: "maybachufer")
|
|
3923
|
+
person.addresses.create!(street: "maybachufer")
|
|
3626
3924
|
end
|
|
3627
3925
|
|
|
3628
3926
|
before do
|
|
@@ -3694,7 +3992,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3694
3992
|
context "when the association has an order defined" do
|
|
3695
3993
|
|
|
3696
3994
|
let(:person) do
|
|
3697
|
-
Person.create
|
|
3995
|
+
Person.create!
|
|
3698
3996
|
end
|
|
3699
3997
|
|
|
3700
3998
|
let(:message_one) do
|
|
@@ -3725,11 +4023,11 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3725
4023
|
|
|
3726
4024
|
before do
|
|
3727
4025
|
person.aliases = [ { name: "A", priority: 3 }, { name: "B", priority: 4 }]
|
|
3728
|
-
person.save
|
|
4026
|
+
person.save!
|
|
3729
4027
|
end
|
|
3730
4028
|
|
|
3731
4029
|
let!(:person2) do
|
|
3732
|
-
Person.create( aliases: [ { name: "C", priority: 1 }, { name: "D", priority: 2 }])
|
|
4030
|
+
Person.create!( aliases: [ { name: "C", priority: 1 }, { name: "D", priority: 2 }])
|
|
3733
4031
|
end
|
|
3734
4032
|
|
|
3735
4033
|
it "allows ordering on a key of an embedded document" do
|
|
@@ -3764,7 +4062,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3764
4062
|
context "when updating multiple levels in one update" do
|
|
3765
4063
|
|
|
3766
4064
|
let!(:person) do
|
|
3767
|
-
Person.create(
|
|
4065
|
+
Person.create!(
|
|
3768
4066
|
addresses: [
|
|
3769
4067
|
{ locations: [{ name: "home" }]}
|
|
3770
4068
|
]
|
|
@@ -3778,7 +4076,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3778
4076
|
end
|
|
3779
4077
|
|
|
3780
4078
|
before do
|
|
3781
|
-
from_db.update_attributes(
|
|
4079
|
+
from_db.update_attributes!(
|
|
3782
4080
|
addresses: [
|
|
3783
4081
|
{ locations: [{ name: "work" }]}
|
|
3784
4082
|
]
|
|
@@ -3798,15 +4096,15 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3798
4096
|
context "when the embedded relation sorts on a boolean" do
|
|
3799
4097
|
|
|
3800
4098
|
let(:circuit) do
|
|
3801
|
-
Circuit.create
|
|
4099
|
+
Circuit.create!
|
|
3802
4100
|
end
|
|
3803
4101
|
|
|
3804
4102
|
let!(:bus_one) do
|
|
3805
|
-
circuit.buses.create(saturday: true)
|
|
4103
|
+
circuit.buses.create!(saturday: true)
|
|
3806
4104
|
end
|
|
3807
4105
|
|
|
3808
4106
|
let!(:bus_two) do
|
|
3809
|
-
circuit.buses.create(saturday: false)
|
|
4107
|
+
circuit.buses.create!(saturday: false)
|
|
3810
4108
|
end
|
|
3811
4109
|
|
|
3812
4110
|
it "orders properly with the boolean" do
|
|
@@ -3817,7 +4115,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3817
4115
|
context "when batch replacing multiple relations in a single update" do
|
|
3818
4116
|
|
|
3819
4117
|
let(:document) do
|
|
3820
|
-
Person.create
|
|
4118
|
+
Person.create!
|
|
3821
4119
|
end
|
|
3822
4120
|
|
|
3823
4121
|
let(:person) do
|
|
@@ -3825,23 +4123,23 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
3825
4123
|
end
|
|
3826
4124
|
|
|
3827
4125
|
let!(:symptom_one) do
|
|
3828
|
-
person.symptoms.create
|
|
4126
|
+
person.symptoms.create!
|
|
3829
4127
|
end
|
|
3830
4128
|
|
|
3831
4129
|
let!(:symptom_two) do
|
|
3832
|
-
person.symptoms.create
|
|
4130
|
+
person.symptoms.create!
|
|
3833
4131
|
end
|
|
3834
4132
|
|
|
3835
4133
|
let!(:appointment_one) do
|
|
3836
|
-
person.appointments.create
|
|
4134
|
+
person.appointments.create!
|
|
3837
4135
|
end
|
|
3838
4136
|
|
|
3839
4137
|
let!(:appointment_two) do
|
|
3840
|
-
person.appointments.create
|
|
4138
|
+
person.appointments.create!
|
|
3841
4139
|
end
|
|
3842
4140
|
|
|
3843
4141
|
before do
|
|
3844
|
-
person.update_attributes(
|
|
4142
|
+
person.update_attributes!(
|
|
3845
4143
|
appointments: [ appointment_one.as_document, appointment_two.as_document ],
|
|
3846
4144
|
symptoms: [ symptom_one.as_document, symptom_two.as_document ]
|
|
3847
4145
|
)
|
|
@@ -4174,7 +4472,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
4174
4472
|
context "when the parent has an after create callback" do
|
|
4175
4473
|
|
|
4176
4474
|
before do
|
|
4177
|
-
server.save
|
|
4475
|
+
server.save!
|
|
4178
4476
|
end
|
|
4179
4477
|
|
|
4180
4478
|
it "does not push the embedded documents twice" do
|
|
@@ -4186,7 +4484,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
4186
4484
|
context "when embedded documents are stored without ids" do
|
|
4187
4485
|
|
|
4188
4486
|
let!(:band) do
|
|
4189
|
-
Band.create(name: "Moderat")
|
|
4487
|
+
Band.create!(name: "Moderat")
|
|
4190
4488
|
end
|
|
4191
4489
|
|
|
4192
4490
|
before do
|
|
@@ -4236,7 +4534,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
4236
4534
|
company = Company.new
|
|
4237
4535
|
4.times { |i| company.staffs << Staff.new(age: 50 + i)}
|
|
4238
4536
|
2.times { |i| company.staffs << Staff.new(age: 40)}
|
|
4239
|
-
company.save
|
|
4537
|
+
company.save!
|
|
4240
4538
|
company.staffs.delete_if {|x| x.age >= 50}
|
|
4241
4539
|
expect(company.staffs.count).to eq(2)
|
|
4242
4540
|
end
|
|
@@ -4313,7 +4611,7 @@ describe Mongoid::Association::Embedded::EmbedsMany::Proxy do
|
|
|
4313
4611
|
context "when the parent is persisted" do
|
|
4314
4612
|
|
|
4315
4613
|
let(:zone) do
|
|
4316
|
-
DNS::Zone.create
|
|
4614
|
+
DNS::Zone.create!
|
|
4317
4615
|
end
|
|
4318
4616
|
|
|
4319
4617
|
let(:soa_1) do
|