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::Referenced::HasAndBelongsToMany::Proxy do
|
|
@@ -24,7 +26,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
24
26
|
context "when the inverse_of is nil" do
|
|
25
27
|
|
|
26
28
|
let!(:article) do
|
|
27
|
-
Article.create
|
|
29
|
+
Article.create!
|
|
28
30
|
end
|
|
29
31
|
|
|
30
32
|
context "when the child document is new" do
|
|
@@ -45,7 +47,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
45
47
|
context "when the child document is not new" do
|
|
46
48
|
|
|
47
49
|
let(:preference) do
|
|
48
|
-
Preference.create
|
|
50
|
+
Preference.create!
|
|
49
51
|
end
|
|
50
52
|
|
|
51
53
|
it "does not persist the child document" do
|
|
@@ -77,7 +79,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
77
79
|
context "when the parent is not a new record" do
|
|
78
80
|
|
|
79
81
|
let(:person) do
|
|
80
|
-
Person.create
|
|
82
|
+
Person.create!
|
|
81
83
|
end
|
|
82
84
|
|
|
83
85
|
let!(:preference) do
|
|
@@ -121,11 +123,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
121
123
|
context "when appending in a parent create block" do
|
|
122
124
|
|
|
123
125
|
let!(:preference) do
|
|
124
|
-
Preference.create(name: "testing")
|
|
126
|
+
Preference.create!(name: "testing")
|
|
125
127
|
end
|
|
126
128
|
|
|
127
129
|
let!(:person) do
|
|
128
|
-
Person.create do |doc|
|
|
130
|
+
Person.create! do |doc|
|
|
129
131
|
doc.preferences << preference
|
|
130
132
|
end
|
|
131
133
|
end
|
|
@@ -210,7 +212,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
210
212
|
context "when the child is already persisted" do
|
|
211
213
|
|
|
212
214
|
let!(:persisted) do
|
|
213
|
-
Preference.create(name: "testy")
|
|
215
|
+
Preference.create!(name: "testy")
|
|
214
216
|
end
|
|
215
217
|
|
|
216
218
|
let(:preference) do
|
|
@@ -219,7 +221,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
219
221
|
|
|
220
222
|
before do
|
|
221
223
|
person.preferences.send(method, preference)
|
|
222
|
-
person.save
|
|
224
|
+
person.save!
|
|
223
225
|
end
|
|
224
226
|
|
|
225
227
|
it "adds the documents to the relation" do
|
|
@@ -250,7 +252,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
250
252
|
context "when setting via the associated ids" do
|
|
251
253
|
|
|
252
254
|
let!(:persisted) do
|
|
253
|
-
Preference.create(name: "testy")
|
|
255
|
+
Preference.create!(name: "testy")
|
|
254
256
|
end
|
|
255
257
|
|
|
256
258
|
let(:preference) do
|
|
@@ -262,7 +264,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
262
264
|
end
|
|
263
265
|
|
|
264
266
|
before do
|
|
265
|
-
person.save
|
|
267
|
+
person.save!
|
|
266
268
|
end
|
|
267
269
|
|
|
268
270
|
it "adds the documents to the relation" do
|
|
@@ -290,7 +292,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
290
292
|
context "when the parent is not a new record" do
|
|
291
293
|
|
|
292
294
|
let(:person) do
|
|
293
|
-
Person.create
|
|
295
|
+
Person.create!
|
|
294
296
|
end
|
|
295
297
|
|
|
296
298
|
let(:preference) do
|
|
@@ -372,11 +374,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
372
374
|
context "when both sides have been persisted" do
|
|
373
375
|
|
|
374
376
|
let(:person) do
|
|
375
|
-
Person.create
|
|
377
|
+
Person.create!
|
|
376
378
|
end
|
|
377
379
|
|
|
378
380
|
let(:event) do
|
|
379
|
-
Event.create
|
|
381
|
+
Event.create!
|
|
380
382
|
end
|
|
381
383
|
|
|
382
384
|
before do
|
|
@@ -425,15 +427,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
425
427
|
context "when the relation also includes a has_many relation" do
|
|
426
428
|
|
|
427
429
|
let(:artwork) do
|
|
428
|
-
Artwork.create
|
|
430
|
+
Artwork.create!
|
|
429
431
|
end
|
|
430
432
|
|
|
431
433
|
let(:exhibition) do
|
|
432
|
-
Exhibition.create
|
|
434
|
+
Exhibition.create!
|
|
433
435
|
end
|
|
434
436
|
|
|
435
437
|
let(:exhibitor) do
|
|
436
|
-
Exhibitor.create(exhibition: exhibition)
|
|
438
|
+
Exhibitor.create!(exhibition: exhibition)
|
|
437
439
|
end
|
|
438
440
|
|
|
439
441
|
before do
|
|
@@ -448,11 +450,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
448
450
|
context "when the relation is self referencing" do
|
|
449
451
|
|
|
450
452
|
let(:tag_one) do
|
|
451
|
-
Tag.create(text: "one")
|
|
453
|
+
Tag.create!(text: "one")
|
|
452
454
|
end
|
|
453
455
|
|
|
454
456
|
let(:tag_two) do
|
|
455
|
-
Tag.create(text: "two")
|
|
457
|
+
Tag.create!(text: "two")
|
|
456
458
|
end
|
|
457
459
|
|
|
458
460
|
before do
|
|
@@ -561,7 +563,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
561
563
|
end
|
|
562
564
|
|
|
563
565
|
let(:preference) do
|
|
564
|
-
Preference.create(name: "one")
|
|
566
|
+
Preference.create!(name: "one")
|
|
565
567
|
end
|
|
566
568
|
|
|
567
569
|
before do
|
|
@@ -582,7 +584,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
582
584
|
context "when the document is persisted" do
|
|
583
585
|
|
|
584
586
|
before do
|
|
585
|
-
person.save
|
|
587
|
+
person.save!
|
|
586
588
|
end
|
|
587
589
|
|
|
588
590
|
it "does not add the duplicates" do
|
|
@@ -653,7 +655,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
653
655
|
end
|
|
654
656
|
|
|
655
657
|
let!(:preference) do
|
|
656
|
-
Preference.create
|
|
658
|
+
Preference.create!
|
|
657
659
|
end
|
|
658
660
|
|
|
659
661
|
before do
|
|
@@ -700,7 +702,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
700
702
|
context "when the parent is not a new record" do
|
|
701
703
|
|
|
702
704
|
let(:person) do
|
|
703
|
-
Person.create
|
|
705
|
+
Person.create!
|
|
704
706
|
end
|
|
705
707
|
|
|
706
708
|
let(:preference) do
|
|
@@ -784,7 +786,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
784
786
|
expect(person.preferences).to eq([ another_preference ])
|
|
785
787
|
end
|
|
786
788
|
|
|
787
|
-
it "persists the relation between
|
|
789
|
+
it "persists the relation between another_preference and person" do
|
|
788
790
|
expect(another_preference.people).to eq([ person ])
|
|
789
791
|
end
|
|
790
792
|
|
|
@@ -796,7 +798,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
796
798
|
context "and person is saved" do
|
|
797
799
|
|
|
798
800
|
before do
|
|
799
|
-
person.save
|
|
801
|
+
person.save!
|
|
800
802
|
person.reload
|
|
801
803
|
another_preference.reload
|
|
802
804
|
end
|
|
@@ -805,7 +807,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
805
807
|
expect(person.preferences).to eq([ another_preference ])
|
|
806
808
|
end
|
|
807
809
|
|
|
808
|
-
it "persists the relation between
|
|
810
|
+
it "persists the relation between another_preference and person" do
|
|
809
811
|
expect(another_preference.people).to eq([ person ])
|
|
810
812
|
end
|
|
811
813
|
|
|
@@ -820,11 +822,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
820
822
|
|
|
821
823
|
describe "when self-referencing" do
|
|
822
824
|
let!(:parent) do
|
|
823
|
-
Vertex.create
|
|
825
|
+
Vertex.create!
|
|
824
826
|
end
|
|
825
827
|
|
|
826
828
|
let!(:child) do
|
|
827
|
-
Vertex.create(parents: [parent])
|
|
829
|
+
Vertex.create!(parents: [parent])
|
|
828
830
|
end
|
|
829
831
|
|
|
830
832
|
before do
|
|
@@ -961,7 +963,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
961
963
|
context "when the relation has been loaded" do
|
|
962
964
|
|
|
963
965
|
let(:person) do
|
|
964
|
-
Person.create
|
|
966
|
+
Person.create!
|
|
965
967
|
end
|
|
966
968
|
|
|
967
969
|
let(:preference) do
|
|
@@ -1001,7 +1003,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1001
1003
|
end
|
|
1002
1004
|
|
|
1003
1005
|
let(:person) do
|
|
1004
|
-
Person.create
|
|
1006
|
+
Person.create!.tap do |p|
|
|
1005
1007
|
p.preferences = [ preference ]
|
|
1006
1008
|
end
|
|
1007
1009
|
end
|
|
@@ -1071,7 +1073,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1071
1073
|
context "when the parent is not a new record" do
|
|
1072
1074
|
|
|
1073
1075
|
let(:person) do
|
|
1074
|
-
Person.create
|
|
1076
|
+
Person.create!
|
|
1075
1077
|
end
|
|
1076
1078
|
|
|
1077
1079
|
let!(:preference) do
|
|
@@ -1109,7 +1111,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1109
1111
|
context "when saving the target" do
|
|
1110
1112
|
|
|
1111
1113
|
before do
|
|
1112
|
-
preference.save
|
|
1114
|
+
preference.save!
|
|
1113
1115
|
end
|
|
1114
1116
|
|
|
1115
1117
|
it "persists the parent keys" do
|
|
@@ -1128,13 +1130,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1128
1130
|
context "when the parent has been persisted" do
|
|
1129
1131
|
|
|
1130
1132
|
let!(:person) do
|
|
1131
|
-
Person.create
|
|
1133
|
+
Person.create!
|
|
1132
1134
|
end
|
|
1133
1135
|
|
|
1134
1136
|
context "when the children are persisted" do
|
|
1135
1137
|
|
|
1136
1138
|
let!(:preference) do
|
|
1137
|
-
person.preferences.create(name: "settings")
|
|
1139
|
+
person.preferences.create!(name: "settings")
|
|
1138
1140
|
end
|
|
1139
1141
|
|
|
1140
1142
|
let!(:relation) do
|
|
@@ -1306,7 +1308,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1306
1308
|
context "when the parent is not a new record" do
|
|
1307
1309
|
|
|
1308
1310
|
let(:person) do
|
|
1309
|
-
Person.create
|
|
1311
|
+
Person.create!
|
|
1310
1312
|
end
|
|
1311
1313
|
|
|
1312
1314
|
let!(:preference) do
|
|
@@ -1350,11 +1352,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1350
1352
|
context "when appending in a parent create block" do
|
|
1351
1353
|
|
|
1352
1354
|
let!(:preference) do
|
|
1353
|
-
Preference.create(name: "testing")
|
|
1355
|
+
Preference.create!(name: "testing")
|
|
1354
1356
|
end
|
|
1355
1357
|
|
|
1356
1358
|
let!(:person) do
|
|
1357
|
-
Person.create do |doc|
|
|
1359
|
+
Person.create! do |doc|
|
|
1358
1360
|
doc.preferences.concat([ preference ])
|
|
1359
1361
|
end
|
|
1360
1362
|
end
|
|
@@ -1439,7 +1441,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1439
1441
|
context "when the child is already persisted" do
|
|
1440
1442
|
|
|
1441
1443
|
let!(:persisted) do
|
|
1442
|
-
Preference.create(name: "testy")
|
|
1444
|
+
Preference.create!(name: "testy")
|
|
1443
1445
|
end
|
|
1444
1446
|
|
|
1445
1447
|
let(:preference) do
|
|
@@ -1448,7 +1450,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1448
1450
|
|
|
1449
1451
|
before do
|
|
1450
1452
|
person.preferences.concat([ preference ])
|
|
1451
|
-
person.save
|
|
1453
|
+
person.save!
|
|
1452
1454
|
end
|
|
1453
1455
|
|
|
1454
1456
|
it "adds the documents to the relation" do
|
|
@@ -1479,7 +1481,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1479
1481
|
context "when setting via the associated ids" do
|
|
1480
1482
|
|
|
1481
1483
|
let!(:persisted) do
|
|
1482
|
-
Preference.create(name: "testy")
|
|
1484
|
+
Preference.create!(name: "testy")
|
|
1483
1485
|
end
|
|
1484
1486
|
|
|
1485
1487
|
let(:preference) do
|
|
@@ -1491,7 +1493,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1491
1493
|
end
|
|
1492
1494
|
|
|
1493
1495
|
before do
|
|
1494
|
-
person.save
|
|
1496
|
+
person.save!
|
|
1495
1497
|
end
|
|
1496
1498
|
|
|
1497
1499
|
it "adds the documents to the relation" do
|
|
@@ -1519,7 +1521,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1519
1521
|
context "when the parent is not a new record" do
|
|
1520
1522
|
|
|
1521
1523
|
let(:person) do
|
|
1522
|
-
Person.create
|
|
1524
|
+
Person.create!
|
|
1523
1525
|
end
|
|
1524
1526
|
|
|
1525
1527
|
let(:preference) do
|
|
@@ -1601,11 +1603,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1601
1603
|
context "when both sides have been persisted" do
|
|
1602
1604
|
|
|
1603
1605
|
let(:person) do
|
|
1604
|
-
Person.create
|
|
1606
|
+
Person.create!
|
|
1605
1607
|
end
|
|
1606
1608
|
|
|
1607
1609
|
let(:event) do
|
|
1608
|
-
Event.create
|
|
1610
|
+
Event.create!
|
|
1609
1611
|
end
|
|
1610
1612
|
|
|
1611
1613
|
before do
|
|
@@ -1654,15 +1656,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1654
1656
|
context "when the relation also includes a has_many relation" do
|
|
1655
1657
|
|
|
1656
1658
|
let(:artwork) do
|
|
1657
|
-
Artwork.create
|
|
1659
|
+
Artwork.create!
|
|
1658
1660
|
end
|
|
1659
1661
|
|
|
1660
1662
|
let(:exhibition) do
|
|
1661
|
-
Exhibition.create
|
|
1663
|
+
Exhibition.create!
|
|
1662
1664
|
end
|
|
1663
1665
|
|
|
1664
1666
|
let(:exhibitor) do
|
|
1665
|
-
Exhibitor.create(exhibition: exhibition)
|
|
1667
|
+
Exhibitor.create!(exhibition: exhibition)
|
|
1666
1668
|
end
|
|
1667
1669
|
|
|
1668
1670
|
before do
|
|
@@ -1677,11 +1679,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1677
1679
|
context "when the relation is self referencing" do
|
|
1678
1680
|
|
|
1679
1681
|
let(:tag_one) do
|
|
1680
|
-
Tag.create(text: "one")
|
|
1682
|
+
Tag.create!(text: "one")
|
|
1681
1683
|
end
|
|
1682
1684
|
|
|
1683
1685
|
let(:tag_two) do
|
|
1684
|
-
Tag.create(text: "two")
|
|
1686
|
+
Tag.create!(text: "two")
|
|
1685
1687
|
end
|
|
1686
1688
|
|
|
1687
1689
|
before do
|
|
@@ -1732,7 +1734,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1732
1734
|
describe "#count" do
|
|
1733
1735
|
|
|
1734
1736
|
let(:person) do
|
|
1735
|
-
Person.create
|
|
1737
|
+
Person.create!
|
|
1736
1738
|
end
|
|
1737
1739
|
|
|
1738
1740
|
context "when nothing exists on the relation" do
|
|
@@ -1757,7 +1759,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1757
1759
|
describe "#any?" do
|
|
1758
1760
|
|
|
1759
1761
|
let(:person) do
|
|
1760
|
-
Person.create
|
|
1762
|
+
Person.create!
|
|
1761
1763
|
end
|
|
1762
1764
|
|
|
1763
1765
|
context "when nothing exists on the relation" do
|
|
@@ -1794,7 +1796,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1794
1796
|
context "when documents have been persisted" do
|
|
1795
1797
|
|
|
1796
1798
|
let!(:preference) do
|
|
1797
|
-
person.preferences.create(name: "setting")
|
|
1799
|
+
person.preferences.create!(name: "setting")
|
|
1798
1800
|
end
|
|
1799
1801
|
|
|
1800
1802
|
it "returns the number of persisted documents" do
|
|
@@ -1805,12 +1807,12 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1805
1807
|
context "when appending to a loaded relation" do
|
|
1806
1808
|
|
|
1807
1809
|
let!(:preference) do
|
|
1808
|
-
person.preferences.create(name: "setting")
|
|
1810
|
+
person.preferences.create!(name: "setting")
|
|
1809
1811
|
end
|
|
1810
1812
|
|
|
1811
1813
|
before do
|
|
1812
1814
|
person.preferences.count
|
|
1813
|
-
person.preferences << Preference.create(name: "two")
|
|
1815
|
+
person.preferences << Preference.create!(name: "two")
|
|
1814
1816
|
end
|
|
1815
1817
|
|
|
1816
1818
|
it "returns the number of persisted documents" do
|
|
@@ -1834,7 +1836,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1834
1836
|
context "when the documents are part of the relation" do
|
|
1835
1837
|
|
|
1836
1838
|
before do
|
|
1837
|
-
Preference.create(person_ids: [ person.id ])
|
|
1839
|
+
Preference.create!(person_ids: [ person.id ])
|
|
1838
1840
|
end
|
|
1839
1841
|
|
|
1840
1842
|
it "returns the count from the db" do
|
|
@@ -1845,7 +1847,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1845
1847
|
context "when the documents are not part of the relation" do
|
|
1846
1848
|
|
|
1847
1849
|
before do
|
|
1848
|
-
Preference.create
|
|
1850
|
+
Preference.create!
|
|
1849
1851
|
end
|
|
1850
1852
|
|
|
1851
1853
|
it "returns the count from the db" do
|
|
@@ -1859,7 +1861,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1859
1861
|
context "when documents have been persisted" do
|
|
1860
1862
|
|
|
1861
1863
|
let!(:house) do
|
|
1862
|
-
person.houses.create(name: "Wayne Manor")
|
|
1864
|
+
person.houses.create!(name: "Wayne Manor")
|
|
1863
1865
|
end
|
|
1864
1866
|
|
|
1865
1867
|
it "returns the number of persisted documents" do
|
|
@@ -1883,7 +1885,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1883
1885
|
describe "#any?" do
|
|
1884
1886
|
|
|
1885
1887
|
let(:sandwich) do
|
|
1886
|
-
Sandwich.create
|
|
1888
|
+
Sandwich.create!
|
|
1887
1889
|
end
|
|
1888
1890
|
|
|
1889
1891
|
context "when nothing exists on the relation" do
|
|
@@ -1951,7 +1953,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1951
1953
|
context "when documents have been persisted" do
|
|
1952
1954
|
|
|
1953
1955
|
let!(:meat) do
|
|
1954
|
-
sandwich.meats.create
|
|
1956
|
+
sandwich.meats.create!
|
|
1955
1957
|
end
|
|
1956
1958
|
|
|
1957
1959
|
it "returns true" do
|
|
@@ -1972,7 +1974,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1972
1974
|
|
|
1973
1975
|
context "when new documents exist in the database" do
|
|
1974
1976
|
before do
|
|
1975
|
-
Meat.create(sandwiches: [sandwich])
|
|
1977
|
+
Meat.create!(sandwiches: [sandwich])
|
|
1976
1978
|
end
|
|
1977
1979
|
|
|
1978
1980
|
it "returns true" do
|
|
@@ -1990,15 +1992,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1990
1992
|
context "when using string keys" do
|
|
1991
1993
|
|
|
1992
1994
|
let(:agent) do
|
|
1993
|
-
Agent.create(number: "007")
|
|
1995
|
+
Agent.create!(number: "007")
|
|
1994
1996
|
end
|
|
1995
1997
|
|
|
1996
1998
|
before do
|
|
1997
|
-
agent.accounts.
|
|
1999
|
+
agent.accounts.send(method, name: "test again")
|
|
1998
2000
|
end
|
|
1999
2001
|
|
|
2000
2002
|
it "does not convert the string key to an object id" do
|
|
2001
|
-
expect(agent.account_ids).to eq([ "
|
|
2003
|
+
expect(agent.account_ids).to eq([ "test-again" ])
|
|
2002
2004
|
end
|
|
2003
2005
|
end
|
|
2004
2006
|
|
|
@@ -2070,7 +2072,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2070
2072
|
context "when validation fails" do
|
|
2071
2073
|
|
|
2072
2074
|
let(:person) do
|
|
2073
|
-
Person.create
|
|
2075
|
+
Person.create!
|
|
2074
2076
|
end
|
|
2075
2077
|
|
|
2076
2078
|
context "when the relation is not polymorphic" do
|
|
@@ -2087,15 +2089,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2087
2089
|
describe "#delete" do
|
|
2088
2090
|
|
|
2089
2091
|
let(:person) do
|
|
2090
|
-
Person.create
|
|
2092
|
+
Person.create!
|
|
2091
2093
|
end
|
|
2092
2094
|
|
|
2093
2095
|
let(:preference_one) do
|
|
2094
|
-
Preference.create(name: "Testing")
|
|
2096
|
+
Preference.create!(name: "Testing")
|
|
2095
2097
|
end
|
|
2096
2098
|
|
|
2097
2099
|
let(:preference_two) do
|
|
2098
|
-
Preference.create(name: "Test")
|
|
2100
|
+
Preference.create!(name: "Test")
|
|
2099
2101
|
end
|
|
2100
2102
|
|
|
2101
2103
|
before do
|
|
@@ -2170,7 +2172,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2170
2172
|
context "when :inverse_of is set" do
|
|
2171
2173
|
|
|
2172
2174
|
let(:event) do
|
|
2173
|
-
Event.create
|
|
2175
|
+
Event.create!
|
|
2174
2176
|
end
|
|
2175
2177
|
|
|
2176
2178
|
before do
|
|
@@ -2186,11 +2188,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2186
2188
|
context "when the relationships are self referencing" do
|
|
2187
2189
|
|
|
2188
2190
|
let(:tag_one) do
|
|
2189
|
-
Tag.create(text: "one")
|
|
2191
|
+
Tag.create!(text: "one")
|
|
2190
2192
|
end
|
|
2191
2193
|
|
|
2192
2194
|
let(:tag_two) do
|
|
2193
|
-
Tag.create(text: "two")
|
|
2195
|
+
Tag.create!(text: "two")
|
|
2194
2196
|
end
|
|
2195
2197
|
|
|
2196
2198
|
before do
|
|
@@ -2359,15 +2361,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2359
2361
|
context "when conditions are provided" do
|
|
2360
2362
|
|
|
2361
2363
|
let(:person) do
|
|
2362
|
-
Person.create
|
|
2364
|
+
Person.create!
|
|
2363
2365
|
end
|
|
2364
2366
|
|
|
2365
2367
|
let!(:preference_one) do
|
|
2366
|
-
person.preferences.create(name: "Testing")
|
|
2368
|
+
person.preferences.create!(name: "Testing")
|
|
2367
2369
|
end
|
|
2368
2370
|
|
|
2369
2371
|
let!(:preference_two) do
|
|
2370
|
-
person.preferences.create(name: "Test")
|
|
2372
|
+
person.preferences.create!(name: "Test")
|
|
2371
2373
|
end
|
|
2372
2374
|
|
|
2373
2375
|
let!(:deleted) do
|
|
@@ -2397,9 +2399,9 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2397
2399
|
context "when conditions are not provided" do
|
|
2398
2400
|
|
|
2399
2401
|
let(:person) do
|
|
2400
|
-
Person.create
|
|
2401
|
-
person.preferences.create(name: "Testing")
|
|
2402
|
-
person.preferences.create(name: "Test")
|
|
2402
|
+
Person.create!.tap do |person|
|
|
2403
|
+
person.preferences.create!(name: "Testing")
|
|
2404
|
+
person.preferences.create!(name: "Test")
|
|
2403
2405
|
end
|
|
2404
2406
|
end
|
|
2405
2407
|
|
|
@@ -2433,13 +2435,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2433
2435
|
describe "#exists?" do
|
|
2434
2436
|
|
|
2435
2437
|
let!(:person) do
|
|
2436
|
-
Person.create
|
|
2438
|
+
Person.create!
|
|
2437
2439
|
end
|
|
2438
2440
|
|
|
2439
2441
|
context "when documents exist in the database" do
|
|
2440
2442
|
|
|
2441
2443
|
before do
|
|
2442
|
-
person.preferences.create
|
|
2444
|
+
person.preferences.create!
|
|
2443
2445
|
end
|
|
2444
2446
|
|
|
2445
2447
|
it "returns true" do
|
|
@@ -2464,23 +2466,23 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2464
2466
|
context "when the relation is not polymorphic" do
|
|
2465
2467
|
|
|
2466
2468
|
let(:person) do
|
|
2467
|
-
Person.create
|
|
2469
|
+
Person.create!
|
|
2468
2470
|
end
|
|
2469
2471
|
|
|
2470
2472
|
let!(:preference_one) do
|
|
2471
|
-
person.preferences.create(name: "Test")
|
|
2473
|
+
person.preferences.create!(name: "Test")
|
|
2472
2474
|
end
|
|
2473
2475
|
|
|
2474
2476
|
let!(:preference_two) do
|
|
2475
|
-
person.preferences.create(name: "OMG I has relations")
|
|
2477
|
+
person.preferences.create!(name: "OMG I has relations")
|
|
2476
2478
|
end
|
|
2477
2479
|
|
|
2478
2480
|
let!(:unrelated_pref) do
|
|
2479
|
-
Preference.create(name: "orphan annie")
|
|
2481
|
+
Preference.create!(name: "orphan annie")
|
|
2480
2482
|
end
|
|
2481
2483
|
|
|
2482
2484
|
let!(:unrelated_pref_two) do
|
|
2483
|
-
Preference.create(name: "orphan two")
|
|
2485
|
+
Preference.create!(name: "orphan two")
|
|
2484
2486
|
end
|
|
2485
2487
|
|
|
2486
2488
|
context "when providing an id" do
|
|
@@ -2558,7 +2560,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2558
2560
|
end
|
|
2559
2561
|
end
|
|
2560
2562
|
|
|
2561
|
-
context "when the ids
|
|
2563
|
+
context "when the ids match unreferenced documents" do
|
|
2562
2564
|
|
|
2563
2565
|
let(:preferences) do
|
|
2564
2566
|
person.preferences.find(
|
|
@@ -2616,11 +2618,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2616
2618
|
context "when the relation is not polymorphic" do
|
|
2617
2619
|
|
|
2618
2620
|
let(:person) do
|
|
2619
|
-
Person.create
|
|
2621
|
+
Person.create!
|
|
2620
2622
|
end
|
|
2621
2623
|
|
|
2622
2624
|
let!(:preference) do
|
|
2623
|
-
person.preferences.create(name: "Testing")
|
|
2625
|
+
person.preferences.create!(name: "Testing")
|
|
2624
2626
|
end
|
|
2625
2627
|
|
|
2626
2628
|
context "when the document exists" do
|
|
@@ -2656,11 +2658,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2656
2658
|
context "when the relation is not polymorphic" do
|
|
2657
2659
|
|
|
2658
2660
|
let(:person) do
|
|
2659
|
-
Person.create
|
|
2661
|
+
Person.create!
|
|
2660
2662
|
end
|
|
2661
2663
|
|
|
2662
2664
|
let!(:preference) do
|
|
2663
|
-
person.preferences.create(name: "Testing")
|
|
2665
|
+
person.preferences.create!(name: "Testing")
|
|
2664
2666
|
end
|
|
2665
2667
|
|
|
2666
2668
|
context "when the document exists" do
|
|
@@ -2705,11 +2707,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2705
2707
|
context "when the relation is not polymorphic" do
|
|
2706
2708
|
|
|
2707
2709
|
let(:person) do
|
|
2708
|
-
Person.create
|
|
2710
|
+
Person.create!
|
|
2709
2711
|
end
|
|
2710
2712
|
|
|
2711
2713
|
let!(:preference) do
|
|
2712
|
-
person.preferences.create(name: "Testing")
|
|
2714
|
+
person.preferences.create!(name: "Testing")
|
|
2713
2715
|
end
|
|
2714
2716
|
|
|
2715
2717
|
context "when the document exists" do
|
|
@@ -2743,15 +2745,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2743
2745
|
describe "#max" do
|
|
2744
2746
|
|
|
2745
2747
|
let(:person) do
|
|
2746
|
-
Person.create
|
|
2748
|
+
Person.create!
|
|
2747
2749
|
end
|
|
2748
2750
|
|
|
2749
2751
|
let(:preference_one) do
|
|
2750
|
-
Preference.create(ranking: 5)
|
|
2752
|
+
Preference.create!(ranking: 5)
|
|
2751
2753
|
end
|
|
2752
2754
|
|
|
2753
2755
|
let(:preference_two) do
|
|
2754
|
-
Preference.create(ranking: 10)
|
|
2756
|
+
Preference.create!(ranking: 10)
|
|
2755
2757
|
end
|
|
2756
2758
|
|
|
2757
2759
|
before do
|
|
@@ -2772,15 +2774,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2772
2774
|
describe "#max_by" do
|
|
2773
2775
|
|
|
2774
2776
|
let(:person) do
|
|
2775
|
-
Person.create
|
|
2777
|
+
Person.create!
|
|
2776
2778
|
end
|
|
2777
2779
|
|
|
2778
2780
|
let(:preference_one) do
|
|
2779
|
-
Preference.create(ranking: 5)
|
|
2781
|
+
Preference.create!(ranking: 5)
|
|
2780
2782
|
end
|
|
2781
2783
|
|
|
2782
2784
|
let(:preference_two) do
|
|
2783
|
-
Preference.create(ranking: 10)
|
|
2785
|
+
Preference.create!(ranking: 10)
|
|
2784
2786
|
end
|
|
2785
2787
|
|
|
2786
2788
|
before do
|
|
@@ -2799,19 +2801,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2799
2801
|
describe "#method_missing" do
|
|
2800
2802
|
|
|
2801
2803
|
let!(:person) do
|
|
2802
|
-
Person.create
|
|
2804
|
+
Person.create!
|
|
2803
2805
|
end
|
|
2804
2806
|
|
|
2805
2807
|
let!(:preference_one) do
|
|
2806
|
-
person.preferences.create(name: "First", value: "Posting")
|
|
2808
|
+
person.preferences.create!(name: "First", value: "Posting")
|
|
2807
2809
|
end
|
|
2808
2810
|
|
|
2809
2811
|
let!(:preference_two) do
|
|
2810
|
-
person.preferences.create(name: "Second", value: "Testing")
|
|
2812
|
+
person.preferences.create!(name: "Second", value: "Testing")
|
|
2811
2813
|
end
|
|
2812
2814
|
|
|
2813
2815
|
let!(:unrelated) do
|
|
2814
|
-
Preference.create(name: "Third")
|
|
2816
|
+
Preference.create!(name: "Third")
|
|
2815
2817
|
end
|
|
2816
2818
|
|
|
2817
2819
|
context "when providing a single criteria" do
|
|
@@ -2886,7 +2888,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2886
2888
|
context "when the inverse relation is not defined" do
|
|
2887
2889
|
|
|
2888
2890
|
let!(:house) do
|
|
2889
|
-
person.houses.create(name: "Wayne Manor")
|
|
2891
|
+
person.houses.create!(name: "Wayne Manor")
|
|
2890
2892
|
end
|
|
2891
2893
|
|
|
2892
2894
|
it "returns the distinct values for the fields" do
|
|
@@ -2900,15 +2902,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2900
2902
|
describe "#min" do
|
|
2901
2903
|
|
|
2902
2904
|
let(:person) do
|
|
2903
|
-
Person.create
|
|
2905
|
+
Person.create!
|
|
2904
2906
|
end
|
|
2905
2907
|
|
|
2906
2908
|
let(:preference_one) do
|
|
2907
|
-
Preference.create(ranking: 5)
|
|
2909
|
+
Preference.create!(ranking: 5)
|
|
2908
2910
|
end
|
|
2909
2911
|
|
|
2910
2912
|
let(:preference_two) do
|
|
2911
|
-
Preference.create(ranking: 10)
|
|
2913
|
+
Preference.create!(ranking: 10)
|
|
2912
2914
|
end
|
|
2913
2915
|
|
|
2914
2916
|
before do
|
|
@@ -2929,15 +2931,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2929
2931
|
describe "#min_by" do
|
|
2930
2932
|
|
|
2931
2933
|
let(:person) do
|
|
2932
|
-
Person.create
|
|
2934
|
+
Person.create!
|
|
2933
2935
|
end
|
|
2934
2936
|
|
|
2935
2937
|
let(:preference_one) do
|
|
2936
|
-
Preference.create(ranking: 5)
|
|
2938
|
+
Preference.create!(ranking: 5)
|
|
2937
2939
|
end
|
|
2938
2940
|
|
|
2939
2941
|
let(:preference_two) do
|
|
2940
|
-
Preference.create(ranking: 10)
|
|
2942
|
+
Preference.create!(ranking: 10)
|
|
2941
2943
|
end
|
|
2942
2944
|
|
|
2943
2945
|
before do
|
|
@@ -2963,15 +2965,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2963
2965
|
describe "#nullify_all" do
|
|
2964
2966
|
|
|
2965
2967
|
let(:person) do
|
|
2966
|
-
Person.create
|
|
2968
|
+
Person.create!
|
|
2967
2969
|
end
|
|
2968
2970
|
|
|
2969
2971
|
let!(:preference_one) do
|
|
2970
|
-
person.preferences.create(name: "One")
|
|
2972
|
+
person.preferences.create!(name: "One")
|
|
2971
2973
|
end
|
|
2972
2974
|
|
|
2973
2975
|
let!(:preference_two) do
|
|
2974
|
-
person.preferences.create(name: "Two")
|
|
2976
|
+
person.preferences.create!(name: "Two")
|
|
2975
2977
|
end
|
|
2976
2978
|
|
|
2977
2979
|
before do
|
|
@@ -3017,9 +3019,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3017
3019
|
person.preferences
|
|
3018
3020
|
end
|
|
3019
3021
|
|
|
3020
|
-
Array.public_instance_methods.each do |method|
|
|
3022
|
+
Array.public_instance_methods.sort.each do |method|
|
|
3021
3023
|
|
|
3022
|
-
context "when checking
|
|
3024
|
+
context "when checking Array##{method}" do
|
|
3025
|
+
|
|
3026
|
+
before do
|
|
3027
|
+
expect([].respond_to?(method)).to be true
|
|
3028
|
+
end
|
|
3023
3029
|
|
|
3024
3030
|
it "returns true" do
|
|
3025
3031
|
expect(preferences.respond_to?(method)).to be true
|
|
@@ -3027,9 +3033,9 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3027
3033
|
end
|
|
3028
3034
|
end
|
|
3029
3035
|
|
|
3030
|
-
Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy.public_instance_methods.each do |method|
|
|
3036
|
+
Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy.public_instance_methods.sort.each do |method|
|
|
3031
3037
|
|
|
3032
|
-
context "when checking
|
|
3038
|
+
context "when checking Proxy##{method}" do
|
|
3033
3039
|
|
|
3034
3040
|
it "returns true" do
|
|
3035
3041
|
expect(preferences.respond_to?(method)).to be true
|
|
@@ -3037,9 +3043,9 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3037
3043
|
end
|
|
3038
3044
|
end
|
|
3039
3045
|
|
|
3040
|
-
Preference.scopes.keys.each do |method|
|
|
3046
|
+
Preference.scopes.keys.sort.each do |method|
|
|
3041
3047
|
|
|
3042
|
-
context "when checking #{method}" do
|
|
3048
|
+
context "when checking scope #{method}" do
|
|
3043
3049
|
|
|
3044
3050
|
it "returns true" do
|
|
3045
3051
|
expect(preferences.respond_to?(method)).to be true
|
|
@@ -3050,20 +3056,36 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3050
3056
|
|
|
3051
3057
|
describe "#scoped" do
|
|
3052
3058
|
|
|
3053
|
-
let(:person) do
|
|
3054
|
-
Person.new
|
|
3055
|
-
end
|
|
3056
|
-
|
|
3057
3059
|
let(:scoped) do
|
|
3058
3060
|
person.preferences.scoped
|
|
3059
3061
|
end
|
|
3060
3062
|
|
|
3061
|
-
|
|
3062
|
-
|
|
3063
|
+
context 'when association is empty' do
|
|
3064
|
+
|
|
3065
|
+
let(:person) do
|
|
3066
|
+
Person.new
|
|
3067
|
+
end
|
|
3068
|
+
|
|
3069
|
+
it "returns the relation criteria" do
|
|
3070
|
+
expect(scoped).to be_a(Mongoid::Criteria)
|
|
3071
|
+
end
|
|
3072
|
+
|
|
3073
|
+
it "returns with an empty selector" do
|
|
3074
|
+
expect(scoped.selector).to eq("_id" => { "$in" => [] })
|
|
3075
|
+
end
|
|
3063
3076
|
end
|
|
3064
3077
|
|
|
3065
|
-
|
|
3066
|
-
|
|
3078
|
+
context 'when association is not empty' do
|
|
3079
|
+
|
|
3080
|
+
let(:person) do
|
|
3081
|
+
Person.create!(preferences: [
|
|
3082
|
+
Preference.new(id: 123),
|
|
3083
|
+
])
|
|
3084
|
+
end
|
|
3085
|
+
|
|
3086
|
+
it "returns with a selector including association element ids" do
|
|
3087
|
+
expect(scoped.selector).to eq("_id" => { "$in" => [123] })
|
|
3088
|
+
end
|
|
3067
3089
|
end
|
|
3068
3090
|
end
|
|
3069
3091
|
|
|
@@ -3072,13 +3094,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3072
3094
|
describe "##{method}" do
|
|
3073
3095
|
|
|
3074
3096
|
let(:person) do
|
|
3075
|
-
Person.create
|
|
3097
|
+
Person.create!
|
|
3076
3098
|
end
|
|
3077
3099
|
|
|
3078
3100
|
context "when documents have been persisted" do
|
|
3079
3101
|
|
|
3080
3102
|
let!(:preference) do
|
|
3081
|
-
person.preferences.create(name: "Testing")
|
|
3103
|
+
person.preferences.create!(name: "Testing")
|
|
3082
3104
|
end
|
|
3083
3105
|
|
|
3084
3106
|
it "returns the number of documents" do
|
|
@@ -3090,7 +3112,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3090
3112
|
|
|
3091
3113
|
before do
|
|
3092
3114
|
person.preferences.build(name: "Test")
|
|
3093
|
-
person.preferences.create(name: "Test 2")
|
|
3115
|
+
person.preferences.create!(name: "Test 2")
|
|
3094
3116
|
end
|
|
3095
3117
|
|
|
3096
3118
|
it "returns the total number of documents" do
|
|
@@ -3105,15 +3127,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3105
3127
|
context "when the relation has no default scope" do
|
|
3106
3128
|
|
|
3107
3129
|
let!(:person) do
|
|
3108
|
-
Person.create
|
|
3130
|
+
Person.create!
|
|
3109
3131
|
end
|
|
3110
3132
|
|
|
3111
3133
|
let!(:preference_one) do
|
|
3112
|
-
person.preferences.create(name: "first")
|
|
3134
|
+
person.preferences.create!(name: "first")
|
|
3113
3135
|
end
|
|
3114
3136
|
|
|
3115
3137
|
let!(:preference_two) do
|
|
3116
|
-
Preference.create(name: "second")
|
|
3138
|
+
Preference.create!(name: "second")
|
|
3117
3139
|
end
|
|
3118
3140
|
|
|
3119
3141
|
let(:unscoped) do
|
|
@@ -3128,15 +3150,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3128
3150
|
context "when the relation has a default scope" do
|
|
3129
3151
|
|
|
3130
3152
|
let!(:person) do
|
|
3131
|
-
Person.create
|
|
3153
|
+
Person.create!
|
|
3132
3154
|
end
|
|
3133
3155
|
|
|
3134
3156
|
let!(:house_one) do
|
|
3135
|
-
person.houses.create(name: "first")
|
|
3157
|
+
person.houses.create!(name: "first")
|
|
3136
3158
|
end
|
|
3137
3159
|
|
|
3138
3160
|
let!(:house_two) do
|
|
3139
|
-
House.create(name: "second")
|
|
3161
|
+
House.create!(name: "second")
|
|
3140
3162
|
end
|
|
3141
3163
|
|
|
3142
3164
|
let(:unscoped) do
|
|
@@ -3172,10 +3194,10 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3172
3194
|
end
|
|
3173
3195
|
|
|
3174
3196
|
before do
|
|
3175
|
-
person.update_attributes(
|
|
3197
|
+
person.update_attributes!(
|
|
3176
3198
|
houses: [ wife_house, exwife_house, girlfriend_house ]
|
|
3177
3199
|
)
|
|
3178
|
-
person.update_attributes(house_ids: [ girlfriend_house.id ])
|
|
3200
|
+
person.update_attributes!(house_ids: [ girlfriend_house.id ])
|
|
3179
3201
|
end
|
|
3180
3202
|
|
|
3181
3203
|
context "when reloading" do
|
|
@@ -3222,7 +3244,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3222
3244
|
end
|
|
3223
3245
|
|
|
3224
3246
|
let!(:business) do
|
|
3225
|
-
Business.create(name: "serious", owners: [ user ])
|
|
3247
|
+
Business.create!(name: "serious", owners: [ user ])
|
|
3226
3248
|
end
|
|
3227
3249
|
|
|
3228
3250
|
before do
|
|
@@ -3265,11 +3287,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3265
3287
|
context "when the documents are persisted" do
|
|
3266
3288
|
|
|
3267
3289
|
let(:user) do
|
|
3268
|
-
User.create(name: "tst")
|
|
3290
|
+
User.create!(name: "tst")
|
|
3269
3291
|
end
|
|
3270
3292
|
|
|
3271
3293
|
let(:business) do
|
|
3272
|
-
Business.create(name: "srs", owners: [ user ])
|
|
3294
|
+
Business.create!(name: "srs", owners: [ user ])
|
|
3273
3295
|
end
|
|
3274
3296
|
|
|
3275
3297
|
before do
|
|
@@ -3313,11 +3335,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3313
3335
|
context "when binding the relation multiple times" do
|
|
3314
3336
|
|
|
3315
3337
|
let(:person) do
|
|
3316
|
-
Person.create
|
|
3338
|
+
Person.create!
|
|
3317
3339
|
end
|
|
3318
3340
|
|
|
3319
3341
|
let(:preference) do
|
|
3320
|
-
person.preferences.create(name: "testing")
|
|
3342
|
+
person.preferences.create!(name: "testing")
|
|
3321
3343
|
end
|
|
3322
3344
|
|
|
3323
3345
|
before do
|
|
@@ -3336,19 +3358,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3336
3358
|
context "when the association has order criteria" do
|
|
3337
3359
|
|
|
3338
3360
|
let(:person) do
|
|
3339
|
-
Person.create
|
|
3361
|
+
Person.create!
|
|
3340
3362
|
end
|
|
3341
3363
|
|
|
3342
3364
|
let(:preference_one) do
|
|
3343
|
-
OrderedPreference.create(name: 'preference-1', value: 10)
|
|
3365
|
+
OrderedPreference.create!(name: 'preference-1', value: 10)
|
|
3344
3366
|
end
|
|
3345
3367
|
|
|
3346
3368
|
let(:preference_two) do
|
|
3347
|
-
OrderedPreference.create(name: 'preference-2', value: 20)
|
|
3369
|
+
OrderedPreference.create!(name: 'preference-2', value: 20)
|
|
3348
3370
|
end
|
|
3349
3371
|
|
|
3350
3372
|
let(:preference_three) do
|
|
3351
|
-
OrderedPreference.create(name: 'preference-3', value: 20)
|
|
3373
|
+
OrderedPreference.create!(name: 'preference-3', value: 20)
|
|
3352
3374
|
end
|
|
3353
3375
|
|
|
3354
3376
|
before do
|
|
@@ -3372,7 +3394,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3372
3394
|
context "when the parent is not a new record and freshly loaded" do
|
|
3373
3395
|
|
|
3374
3396
|
let(:person) do
|
|
3375
|
-
Person.create
|
|
3397
|
+
Person.create!
|
|
3376
3398
|
end
|
|
3377
3399
|
|
|
3378
3400
|
let(:preference) do
|
|
@@ -3381,7 +3403,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3381
3403
|
|
|
3382
3404
|
before do
|
|
3383
3405
|
person.preferences = [ preference ]
|
|
3384
|
-
person.save
|
|
3406
|
+
person.save!
|
|
3385
3407
|
person.reload
|
|
3386
3408
|
person.preferences = nil
|
|
3387
3409
|
end
|
|
@@ -3404,15 +3426,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3404
3426
|
context "when reloading the relation" do
|
|
3405
3427
|
|
|
3406
3428
|
let!(:person) do
|
|
3407
|
-
Person.create
|
|
3429
|
+
Person.create!
|
|
3408
3430
|
end
|
|
3409
3431
|
|
|
3410
3432
|
let!(:preference_one) do
|
|
3411
|
-
Preference.create(name: "one")
|
|
3433
|
+
Preference.create!(name: "one")
|
|
3412
3434
|
end
|
|
3413
3435
|
|
|
3414
3436
|
let!(:preference_two) do
|
|
3415
|
-
Preference.create(name: "two")
|
|
3437
|
+
Preference.create!(name: "two")
|
|
3416
3438
|
end
|
|
3417
3439
|
|
|
3418
3440
|
before do
|
|
@@ -3456,7 +3478,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3456
3478
|
context "when the document is new" do
|
|
3457
3479
|
|
|
3458
3480
|
let!(:person) do
|
|
3459
|
-
Person.create(preference_names: "one, two")
|
|
3481
|
+
Person.create!(preference_names: "one, two")
|
|
3460
3482
|
end
|
|
3461
3483
|
|
|
3462
3484
|
let(:preference_one) do
|
|
@@ -3492,23 +3514,23 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3492
3514
|
end
|
|
3493
3515
|
|
|
3494
3516
|
let(:preference_one) do
|
|
3495
|
-
Preference.create(name: "one")
|
|
3517
|
+
Preference.create!(name: "one")
|
|
3496
3518
|
end
|
|
3497
3519
|
|
|
3498
3520
|
let(:preference_two) do
|
|
3499
|
-
Preference.create(name: "two")
|
|
3521
|
+
Preference.create!(name: "two")
|
|
3500
3522
|
end
|
|
3501
3523
|
|
|
3502
3524
|
before do
|
|
3503
3525
|
person.preference_ids = [ preference_one.id, preference_two.id ]
|
|
3504
|
-
person.save
|
|
3526
|
+
person.save!
|
|
3505
3527
|
end
|
|
3506
3528
|
|
|
3507
3529
|
context "and the order is changed" do
|
|
3508
3530
|
|
|
3509
3531
|
before do
|
|
3510
3532
|
person.preference_ids = [ preference_two.id, preference_one.id ]
|
|
3511
|
-
person.save
|
|
3533
|
+
person.save!
|
|
3512
3534
|
end
|
|
3513
3535
|
|
|
3514
3536
|
let(:reloaded) do
|
|
@@ -3525,13 +3547,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3525
3547
|
context "and the order is changed and an element is added" do
|
|
3526
3548
|
|
|
3527
3549
|
let(:preference_three) do
|
|
3528
|
-
Preference.create(name: "three")
|
|
3550
|
+
Preference.create!(name: "three")
|
|
3529
3551
|
end
|
|
3530
3552
|
|
|
3531
3553
|
before do
|
|
3532
3554
|
person.preference_ids =
|
|
3533
3555
|
[ preference_two.id, preference_one.id, preference_three.id ]
|
|
3534
|
-
person.save
|
|
3556
|
+
person.save!
|
|
3535
3557
|
end
|
|
3536
3558
|
|
|
3537
3559
|
let(:reloaded) do
|
|
@@ -3548,16 +3570,16 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3548
3570
|
context "and the order is changed and an element is removed" do
|
|
3549
3571
|
|
|
3550
3572
|
let(:preference_three) do
|
|
3551
|
-
Preference.create(name: "three")
|
|
3573
|
+
Preference.create!(name: "three")
|
|
3552
3574
|
end
|
|
3553
3575
|
|
|
3554
3576
|
before do
|
|
3555
3577
|
person.preference_ids =
|
|
3556
3578
|
[ preference_one.id, preference_two.id, preference_three.id ]
|
|
3557
|
-
person.save
|
|
3579
|
+
person.save!
|
|
3558
3580
|
person.preference_ids =
|
|
3559
3581
|
[ preference_three.id, preference_two.id ]
|
|
3560
|
-
person.save
|
|
3582
|
+
person.save!
|
|
3561
3583
|
end
|
|
3562
3584
|
|
|
3563
3585
|
let(:reloaded) do
|
|
@@ -3607,15 +3629,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3607
3629
|
context "when the relation exists" do
|
|
3608
3630
|
|
|
3609
3631
|
let!(:person) do
|
|
3610
|
-
Person.create
|
|
3632
|
+
Person.create!
|
|
3611
3633
|
end
|
|
3612
3634
|
|
|
3613
3635
|
let!(:pref_one) do
|
|
3614
|
-
person.preferences.create
|
|
3636
|
+
person.preferences.create!
|
|
3615
3637
|
end
|
|
3616
3638
|
|
|
3617
3639
|
let!(:pref_two) do
|
|
3618
|
-
Preference.create
|
|
3640
|
+
Preference.create!
|
|
3619
3641
|
end
|
|
3620
3642
|
|
|
3621
3643
|
before do
|
|
@@ -3631,15 +3653,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3631
3653
|
context "when using a different primary key" do
|
|
3632
3654
|
|
|
3633
3655
|
let(:dog) do
|
|
3634
|
-
Dog.create(name: 'Doggie')
|
|
3656
|
+
Dog.create!(name: 'Doggie')
|
|
3635
3657
|
end
|
|
3636
3658
|
|
|
3637
3659
|
let(:cat) do
|
|
3638
|
-
Cat.create(name: 'Kitty')
|
|
3660
|
+
Cat.create!(name: 'Kitty')
|
|
3661
|
+
end
|
|
3662
|
+
|
|
3663
|
+
let(:another_cat) do
|
|
3664
|
+
Cat.create!(name: 'Kitten')
|
|
3639
3665
|
end
|
|
3640
3666
|
|
|
3641
3667
|
let(:fire_hydrant) do
|
|
3642
|
-
FireHydrant.create(location: '221B Baker Street')
|
|
3668
|
+
FireHydrant.create!(location: '221B Baker Street')
|
|
3643
3669
|
end
|
|
3644
3670
|
|
|
3645
3671
|
context "when adding to a one-way many to many" do
|
|
@@ -3653,6 +3679,28 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3653
3679
|
end
|
|
3654
3680
|
end
|
|
3655
3681
|
|
|
3682
|
+
context "when adding multiple documents to a one-way many to many" do
|
|
3683
|
+
|
|
3684
|
+
before do
|
|
3685
|
+
fire_hydrant.cats.push([cat, another_cat])
|
|
3686
|
+
end
|
|
3687
|
+
|
|
3688
|
+
it "adds the pk values to the fk set" do
|
|
3689
|
+
expect(fire_hydrant.cat_ids).to eq([cat.name, another_cat.name])
|
|
3690
|
+
end
|
|
3691
|
+
end
|
|
3692
|
+
|
|
3693
|
+
context "when adding a new document to a one-way many to many" do
|
|
3694
|
+
|
|
3695
|
+
before do
|
|
3696
|
+
fire_hydrant.cats.build name: 'Kitten'
|
|
3697
|
+
end
|
|
3698
|
+
|
|
3699
|
+
it "adds the pk values to the fk set" do
|
|
3700
|
+
expect(fire_hydrant.cat_ids).to eq(['Kitten'])
|
|
3701
|
+
end
|
|
3702
|
+
end
|
|
3703
|
+
|
|
3656
3704
|
context "when adding to a two-way many to many" do
|
|
3657
3705
|
|
|
3658
3706
|
before do
|
|
@@ -3709,10 +3757,10 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3709
3757
|
end
|
|
3710
3758
|
|
|
3711
3759
|
it "should assign relation from both sides" do
|
|
3712
|
-
p1 = Project.create name: 'Foo'
|
|
3713
|
-
p2 = Project.create name: 'Bar'
|
|
3714
|
-
d1 = Distributor.create name: 'Rock'
|
|
3715
|
-
d2 = Distributor.create name: 'Soul'
|
|
3760
|
+
p1 = Project.create! name: 'Foo'
|
|
3761
|
+
p2 = Project.create! name: 'Bar'
|
|
3762
|
+
d1 = Distributor.create! name: 'Rock'
|
|
3763
|
+
d2 = Distributor.create! name: 'Soul'
|
|
3716
3764
|
|
|
3717
3765
|
p1.distributors << d1
|
|
3718
3766
|
expect(p1.d_ids).to match_array([d1.id])
|