mongoid 7.0.0 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +30 -30
- data/LICENSE +1 -0
- data/README.md +34 -20
- data/Rakefile +75 -5
- data/lib/config/locales/en.yml +129 -70
- data/lib/mongoid/association/accessors.rb +143 -80
- data/lib/mongoid/association/bindable.rb +7 -26
- data/lib/mongoid/association/builders.rb +4 -12
- data/lib/mongoid/association/constrainable.rb +5 -6
- data/lib/mongoid/association/depending.rb +31 -19
- data/lib/mongoid/association/eager_loadable.rb +2 -3
- data/lib/mongoid/association/embedded/batchable.rb +19 -45
- data/lib/mongoid/association/embedded/cyclic.rb +10 -17
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +3 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +7 -4
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +14 -24
- data/lib/mongoid/association/embedded/embedded_in.rb +6 -26
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +8 -5
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +113 -93
- data/lib/mongoid/association/embedded/embeds_many.rb +8 -35
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +9 -6
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +45 -30
- data/lib/mongoid/association/embedded/embeds_one.rb +8 -31
- data/lib/mongoid/association/embedded.rb +2 -0
- data/lib/mongoid/association/macros.rb +44 -41
- data/lib/mongoid/association/many.rb +18 -32
- data/lib/mongoid/association/marshalable.rb +3 -6
- data/lib/mongoid/association/nested/many.rb +18 -27
- data/lib/mongoid/association/nested/nested_buildable.rb +5 -11
- data/lib/mongoid/association/nested/one.rb +16 -27
- data/lib/mongoid/association/nested.rb +3 -3
- data/lib/mongoid/association/one.rb +4 -11
- data/lib/mongoid/association/options.rb +8 -38
- data/lib/mongoid/association/proxy.rb +37 -36
- data/lib/mongoid/association/referenced/auto_save.rb +5 -11
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +4 -9
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +11 -9
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +40 -3
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -27
- data/lib/mongoid/association/referenced/belongs_to.rb +14 -36
- data/lib/mongoid/association/referenced/counter_cache.rb +4 -15
- data/lib/mongoid/association/referenced/eager.rb +40 -36
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -11
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +38 -56
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +23 -43
- data/lib/mongoid/association/referenced/has_many/binding.rb +3 -6
- data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +444 -456
- data/lib/mongoid/association/referenced/has_many/proxy.rb +78 -111
- data/lib/mongoid/association/referenced/has_many.rb +18 -42
- data/lib/mongoid/association/referenced/has_one/binding.rb +4 -9
- data/lib/mongoid/association/referenced/has_one/buildable.rb +20 -6
- data/lib/mongoid/association/referenced/has_one/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +13 -26
- data/lib/mongoid/association/referenced/has_one/proxy.rb +23 -25
- data/lib/mongoid/association/referenced/has_one.rb +13 -33
- data/lib/mongoid/association/referenced/syncable.rb +7 -22
- data/lib/mongoid/association/referenced.rb +2 -0
- data/lib/mongoid/association/reflections.rb +7 -6
- data/lib/mongoid/association/relatable.rb +118 -78
- data/lib/mongoid/association.rb +8 -23
- data/lib/mongoid/atomic/modifiers.rb +27 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded/one.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded.rb +3 -4
- data/lib/mongoid/atomic/paths/root.rb +4 -7
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +42 -47
- data/lib/mongoid/attributes/dynamic.rb +18 -32
- data/lib/mongoid/attributes/nested.rb +21 -13
- data/lib/mongoid/attributes/processing.rb +9 -24
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +3 -6
- data/lib/mongoid/attributes.rb +75 -81
- data/lib/mongoid/cacheable.rb +6 -9
- data/lib/mongoid/changeable.rb +6 -60
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +16 -17
- data/lib/mongoid/clients/sessions.rb +24 -12
- data/lib/mongoid/clients/storage_options.rb +7 -12
- data/lib/mongoid/clients/validators/storage.rb +2 -9
- data/lib/mongoid/clients/validators.rb +2 -1
- data/lib/mongoid/clients.rb +3 -10
- data/lib/mongoid/composable.rb +5 -9
- data/lib/mongoid/config/environment.rb +36 -14
- data/lib/mongoid/config/options.rb +20 -23
- data/lib/mongoid/config/validators/client.rb +2 -17
- data/lib/mongoid/config/validators/option.rb +2 -3
- data/lib/mongoid/config/validators.rb +2 -1
- data/lib/mongoid/config.rb +112 -41
- data/lib/mongoid/contextual/aggregable/memory.rb +17 -12
- data/lib/mongoid/contextual/aggregable/mongo.rb +26 -27
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +29 -31
- data/lib/mongoid/contextual/command.rb +2 -5
- data/lib/mongoid/contextual/geo_near.rb +6 -37
- data/lib/mongoid/contextual/map_reduce.rb +9 -37
- data/lib/mongoid/contextual/memory.rb +12 -65
- data/lib/mongoid/contextual/mongo.rb +163 -85
- data/lib/mongoid/contextual/none.rb +44 -28
- data/lib/mongoid/contextual/queryable.rb +2 -3
- data/lib/mongoid/contextual.rb +7 -9
- data/lib/mongoid/copyable.rb +16 -10
- data/lib/mongoid/criteria/findable.rb +12 -15
- data/lib/mongoid/criteria/includable.rb +8 -15
- data/lib/mongoid/criteria/inspectable.rb +2 -3
- data/lib/mongoid/criteria/marshalable.rb +2 -5
- data/lib/mongoid/criteria/modifiable.rb +15 -21
- data/lib/mongoid/criteria/options.rb +4 -5
- data/lib/mongoid/criteria/permission.rb +2 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -13
- data/lib/mongoid/criteria/queryable/expandable.rb +68 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +4 -27
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/date.rb +3 -8
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +5 -11
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -26
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +4 -13
- data/lib/mongoid/criteria/queryable/extensions/object.rb +4 -29
- data/lib/mongoid/criteria/queryable/extensions/range.rb +41 -17
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +9 -16
- data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -18
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -10
- data/lib/mongoid/criteria/queryable/extensions/time.rb +4 -9
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +13 -6
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -4
- data/lib/mongoid/criteria/queryable/key.rb +101 -27
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +184 -44
- data/lib/mongoid/criteria/queryable/optional.rb +5 -48
- data/lib/mongoid/criteria/queryable/options.rb +2 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +5 -15
- data/lib/mongoid/criteria/queryable/selectable.rb +436 -158
- data/lib/mongoid/criteria/queryable/selector.rb +45 -55
- data/lib/mongoid/criteria/queryable/smash.rb +2 -11
- data/lib/mongoid/criteria/queryable/storable.rb +237 -0
- data/lib/mongoid/criteria/queryable.rb +7 -9
- data/lib/mongoid/criteria/scopable.rb +27 -19
- data/lib/mongoid/criteria.rb +86 -73
- data/lib/mongoid/document.rb +37 -77
- data/lib/mongoid/equality.rb +29 -12
- data/lib/mongoid/errors/ambiguous_relationship.rb +4 -5
- data/lib/mongoid/errors/callback.rb +2 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +18 -0
- data/lib/mongoid/errors/delete_restriction.rb +10 -13
- data/lib/mongoid/errors/document_not_destroyed.rb +4 -7
- data/lib/mongoid/errors/document_not_found.rb +2 -9
- data/lib/mongoid/errors/eager_load.rb +6 -5
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -3
- data/lib/mongoid/errors/invalid_collection.rb +2 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +2 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -3
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +24 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +25 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +27 -0
- data/lib/mongoid/errors/invalid_field.rb +2 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_field_option.rb +2 -3
- data/lib/mongoid/errors/invalid_find.rb +2 -3
- data/lib/mongoid/errors/invalid_includes.rb +2 -3
- data/lib/mongoid/errors/invalid_index.rb +2 -3
- data/lib/mongoid/errors/invalid_options.rb +4 -5
- data/lib/mongoid/errors/invalid_path.rb +2 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +2 -5
- data/lib/mongoid/errors/invalid_query.rb +40 -0
- data/lib/mongoid/errors/invalid_relation.rb +4 -9
- data/lib/mongoid/errors/invalid_relation_option.rb +4 -5
- data/lib/mongoid/errors/invalid_scope.rb +2 -3
- data/lib/mongoid/errors/invalid_session_use.rb +3 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -5
- data/lib/mongoid/errors/invalid_storage_options.rb +2 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -3
- data/lib/mongoid/errors/invalid_time.rb +2 -3
- data/lib/mongoid/errors/invalid_value.rb +2 -1
- data/lib/mongoid/errors/inverse_not_found.rb +3 -4
- data/lib/mongoid/errors/mixed_client_configuration.rb +2 -3
- data/lib/mongoid/errors/mixed_relations.rb +2 -3
- data/lib/mongoid/errors/mongoid_error.rb +3 -10
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -4
- data/lib/mongoid/errors/no_client_config.rb +4 -5
- data/lib/mongoid/errors/no_client_database.rb +2 -3
- data/lib/mongoid/errors/no_client_hosts.rb +2 -3
- data/lib/mongoid/errors/no_clients_config.rb +2 -3
- data/lib/mongoid/errors/no_default_client.rb +3 -4
- data/lib/mongoid/errors/no_environment.rb +2 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +2 -3
- data/lib/mongoid/errors/no_metadata.rb +2 -3
- data/lib/mongoid/errors/no_parent.rb +2 -3
- data/lib/mongoid/errors/readonly_attribute.rb +2 -3
- data/lib/mongoid/errors/readonly_document.rb +3 -6
- data/lib/mongoid/errors/scope_overwrite.rb +2 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +2 -0
- data/lib/mongoid/errors/unknown_attribute.rb +2 -3
- data/lib/mongoid/errors/unknown_model.rb +2 -3
- data/lib/mongoid/errors/unsaved_document.rb +3 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +2 -3
- data/lib/mongoid/errors/validations.rb +2 -1
- data/lib/mongoid/errors.rb +12 -1
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +28 -37
- data/lib/mongoid/extensions/big_decimal.rb +3 -12
- data/lib/mongoid/extensions/boolean.rb +3 -5
- data/lib/mongoid/extensions/date.rb +13 -12
- data/lib/mongoid/extensions/date_time.rb +4 -12
- data/lib/mongoid/extensions/decimal128.rb +2 -5
- data/lib/mongoid/extensions/false_class.rb +4 -7
- data/lib/mongoid/extensions/float.rb +5 -10
- data/lib/mongoid/extensions/hash.rb +51 -36
- data/lib/mongoid/extensions/integer.rb +5 -12
- data/lib/mongoid/extensions/module.rb +2 -3
- data/lib/mongoid/extensions/nil_class.rb +2 -5
- data/lib/mongoid/extensions/object.rb +17 -44
- data/lib/mongoid/extensions/object_id.rb +2 -7
- data/lib/mongoid/extensions/range.rb +2 -11
- data/lib/mongoid/extensions/regexp.rb +4 -4
- data/lib/mongoid/extensions/set.rb +2 -7
- data/lib/mongoid/extensions/string.rb +24 -42
- data/lib/mongoid/extensions/symbol.rb +2 -7
- data/lib/mongoid/extensions/time.rb +12 -9
- data/lib/mongoid/extensions/time_with_zone.rb +25 -7
- data/lib/mongoid/extensions/true_class.rb +4 -7
- data/lib/mongoid/extensions.rb +18 -3
- data/lib/mongoid/factory.rb +52 -13
- data/lib/mongoid/fields/foreign_key.rb +3 -22
- data/lib/mongoid/fields/localized.rb +2 -11
- data/lib/mongoid/fields/standard.rb +6 -36
- data/lib/mongoid/fields/validators/macro.rb +36 -18
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +115 -64
- data/lib/mongoid/findable.rb +59 -23
- data/lib/mongoid/indexable/specification.rb +3 -16
- data/lib/mongoid/indexable/validators/options.rb +2 -7
- data/lib/mongoid/indexable.rb +10 -25
- data/lib/mongoid/inspectable.rb +4 -11
- data/lib/mongoid/interceptable.rb +13 -30
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +3 -150
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/bits.rb +41 -0
- data/lib/mongoid/matcher/bits_all_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_all_set.rb +20 -0
- data/lib/mongoid/matcher/bits_any_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_any_set.rb +20 -0
- data/lib/mongoid/matcher/elem_match.rb +36 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
- data/lib/mongoid/matcher/eq.rb +11 -0
- data/lib/mongoid/matcher/eq_impl.rb +67 -0
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +26 -0
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +35 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +62 -0
- data/lib/mongoid/matcher/field_operator.rb +54 -0
- data/lib/mongoid/matcher/gt.rb +17 -0
- data/lib/mongoid/matcher/gte.rb +17 -0
- data/lib/mongoid/matcher/in.rb +25 -0
- data/lib/mongoid/matcher/lt.rb +17 -0
- data/lib/mongoid/matcher/lte.rb +17 -0
- data/lib/mongoid/matcher/mod.rb +17 -0
- data/lib/mongoid/matcher/ne.rb +16 -0
- data/lib/mongoid/matcher/nin.rb +11 -0
- data/lib/mongoid/matcher/nor.rb +25 -0
- data/lib/mongoid/matcher/not.rb +29 -0
- data/lib/mongoid/matcher/or.rb +21 -0
- data/lib/mongoid/matcher/regex.rb +41 -0
- data/lib/mongoid/matcher/size.rb +26 -0
- data/lib/mongoid/matcher/type.rb +99 -0
- data/lib/mongoid/matcher.rb +110 -0
- data/lib/mongoid/persistable/creatable.rb +6 -23
- data/lib/mongoid/persistable/deletable.rb +7 -23
- data/lib/mongoid/persistable/destroyable.rb +11 -10
- data/lib/mongoid/persistable/incrementable.rb +6 -7
- data/lib/mongoid/persistable/logical.rb +4 -6
- data/lib/mongoid/persistable/poppable.rb +3 -6
- data/lib/mongoid/persistable/pullable.rb +3 -8
- data/lib/mongoid/persistable/pushable.rb +14 -10
- data/lib/mongoid/persistable/renamable.rb +10 -8
- data/lib/mongoid/persistable/savable.rb +3 -8
- data/lib/mongoid/persistable/settable.rb +61 -19
- data/lib/mongoid/persistable/unsettable.rb +8 -8
- data/lib/mongoid/persistable/updatable.rb +33 -21
- data/lib/mongoid/persistable/upsertable.rb +4 -9
- data/lib/mongoid/persistable.rb +134 -39
- data/lib/mongoid/persistence_context.rb +51 -45
- data/lib/mongoid/positional.rb +3 -6
- data/lib/mongoid/query_cache.rb +138 -106
- data/lib/mongoid/railtie.rb +20 -16
- data/lib/mongoid/railties/controller_runtime.rb +88 -0
- data/lib/mongoid/railties/database.rake +9 -0
- data/lib/mongoid/reloadable.rb +14 -19
- data/lib/mongoid/scopable.rb +11 -38
- data/lib/mongoid/selectable.rb +8 -17
- data/lib/mongoid/serializable.rb +24 -29
- data/lib/mongoid/shardable.rb +80 -17
- data/lib/mongoid/stateful.rb +3 -10
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +12 -5
- data/lib/mongoid/tasks/database.rb +87 -7
- data/lib/mongoid/threaded/lifecycle.rb +2 -21
- data/lib/mongoid/threaded.rb +38 -55
- data/lib/mongoid/timestamps/created/short.rb +2 -1
- data/lib/mongoid/timestamps/created.rb +3 -2
- data/lib/mongoid/timestamps/short.rb +2 -1
- data/lib/mongoid/timestamps/timeless.rb +6 -9
- data/lib/mongoid/timestamps/updated/short.rb +2 -1
- data/lib/mongoid/timestamps/updated.rb +3 -4
- data/lib/mongoid/timestamps.rb +3 -2
- data/lib/mongoid/touchable.rb +132 -0
- data/lib/mongoid/traversable.rb +177 -57
- data/lib/mongoid/validatable/associated.rb +5 -6
- data/lib/mongoid/validatable/format.rb +2 -1
- data/lib/mongoid/validatable/length.rb +2 -1
- data/lib/mongoid/validatable/localizable.rb +2 -3
- data/lib/mongoid/validatable/macros.rb +3 -8
- data/lib/mongoid/validatable/presence.rb +8 -13
- data/lib/mongoid/validatable/queryable.rb +2 -3
- data/lib/mongoid/validatable/uniqueness.rb +21 -34
- data/lib/mongoid/validatable.rb +8 -27
- data/lib/mongoid/version.rb +3 -2
- data/lib/mongoid.rb +33 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -2
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +45 -30
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -2
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
- data/lib/rails/generators/mongoid_generator.rb +2 -1
- data/lib/rails/mongoid.rb +4 -5
- data/spec/README.md +33 -0
- data/spec/config/mongoid.yml +13 -3
- data/spec/integration/app_spec.rb +343 -0
- data/spec/integration/associations/belongs_to_spec.rb +15 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +268 -0
- data/spec/integration/associations/embeds_many_spec.rb +206 -0
- data/spec/integration/associations/embeds_one_spec.rb +23 -0
- data/spec/integration/associations/foreign_key_spec.rb +98 -0
- data/spec/integration/associations/foreign_key_spec_models.rb +64 -0
- data/spec/integration/associations/has_many_spec.rb +128 -0
- data/spec/integration/associations/has_one_spec.rb +176 -0
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +115 -0
- data/spec/integration/associations/reverse_population_spec.rb +34 -0
- data/spec/integration/associations/reverse_population_spec_models.rb +36 -0
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +116 -0
- data/spec/integration/bson_regexp_raw_spec.rb +19 -0
- data/spec/integration/callbacks_models.rb +61 -0
- data/spec/integration/callbacks_spec.rb +228 -0
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +40 -0
- data/spec/integration/criteria/default_scope_spec.rb +72 -0
- data/spec/integration/criteria/logical_spec.rb +124 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +142 -0
- data/spec/integration/discriminator_key_spec.rb +353 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +51 -0
- data/spec/integration/i18n_fallbacks_spec.rb +89 -0
- data/spec/integration/matcher_examples_spec.rb +758 -0
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +409 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +112 -0
- data/spec/integration/matcher_operator_data/in.yml +210 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_data/type.yml +70 -0
- data/spec/integration/matcher_operator_data/type_array.yml +16 -0
- data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
- data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
- data/spec/integration/matcher_operator_data/type_code.yml +26 -0
- data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
- data/spec/integration/matcher_operator_data/type_date.yml +39 -0
- data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
- data/spec/integration/matcher_operator_data/type_decimal.yml +40 -0
- data/spec/integration/matcher_operator_data/type_double.yml +15 -0
- data/spec/integration/matcher_operator_data/type_int32.yml +33 -0
- data/spec/integration/matcher_operator_data/type_int64.yml +33 -0
- data/spec/integration/matcher_operator_data/type_max_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_min_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_null.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object_id.yml +25 -0
- data/spec/integration/matcher_operator_data/type_regex.yml +44 -0
- data/spec/integration/matcher_operator_data/type_string.yml +15 -0
- data/spec/integration/matcher_operator_data/type_symbol.yml +32 -0
- data/spec/integration/matcher_operator_data/type_timestamp.yml +25 -0
- data/spec/integration/matcher_operator_data/type_undefined.yml +17 -0
- data/spec/integration/matcher_operator_spec.rb +124 -0
- data/spec/integration/matcher_spec.rb +283 -0
- data/spec/integration/server_query_spec.rb +141 -0
- data/spec/integration/shardable_spec.rb +148 -0
- data/spec/integration/stringified_symbol_field_spec.rb +203 -0
- data/spec/lite_spec_helper.rb +83 -0
- data/spec/mongoid/association/accessors_spec.rb +323 -77
- data/spec/mongoid/association/auto_save_spec.rb +74 -33
- data/spec/mongoid/association/builders_spec.rb +3 -1
- data/spec/mongoid/association/constrainable_spec.rb +2 -0
- data/spec/mongoid/association/counter_cache_spec.rb +34 -32
- data/spec/mongoid/association/depending_spec.rb +678 -332
- data/spec/mongoid/association/eager_spec.rb +6 -4
- data/spec/mongoid/association/embedded/cyclic_spec.rb +4 -2
- data/spec/mongoid/association/embedded/dirty_spec.rb +4 -2
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +65 -13
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +61 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +672 -144
- data/spec/mongoid/association/embedded/embeds_many_models.rb +69 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +51 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +13 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +23 -21
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +8 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +54 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +28 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +49 -1
- data/spec/mongoid/association/macros_spec.rb +11 -9
- data/spec/mongoid/association/nested/many_spec.rb +2 -0
- data/spec/mongoid/association/nested/one_spec.rb +18 -12
- data/spec/mongoid/association/options_spec.rb +2 -0
- data/spec/mongoid/association/polymorphic_spec.rb +61 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +57 -16
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +266 -17
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +99 -58
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +57 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +95 -12
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +28 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +67 -4
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +76 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +351 -164
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +67 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +39 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +49 -5
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +40 -9
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +407 -121
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +681 -340
- data/spec/mongoid/association/referenced/has_many_models.rb +95 -0
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +26 -3
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +53 -7
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +34 -4
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +28 -26
- data/spec/mongoid/association/referenced/has_one_models.rb +97 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +144 -5
- data/spec/mongoid/association/reflections_spec.rb +2 -0
- data/spec/mongoid/association/syncable_spec.rb +33 -31
- data/spec/mongoid/association_spec.rb +2 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +49 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +2 -0
- data/spec/mongoid/atomic/paths_spec.rb +107 -12
- data/spec/mongoid/atomic_spec.rb +31 -6
- data/spec/mongoid/attributes/dynamic_spec.rb +152 -0
- data/spec/mongoid/attributes/nested_spec.rb +87 -69
- data/spec/mongoid/attributes/projector_data/embedded.yml +105 -0
- data/spec/mongoid/attributes/projector_data/fields.yml +93 -0
- data/spec/mongoid/attributes/projector_spec.rb +44 -0
- data/spec/mongoid/attributes/readonly_spec.rb +24 -22
- data/spec/mongoid/attributes_spec.rb +382 -35
- data/spec/mongoid/cacheable_spec.rb +3 -1
- data/spec/mongoid/changeable_spec.rb +60 -35
- data/spec/mongoid/clients/factory_spec.rb +148 -34
- data/spec/mongoid/clients/options_spec.rb +102 -66
- data/spec/mongoid/clients/sessions_spec.rb +39 -29
- data/spec/mongoid/clients/transactions_spec.rb +415 -0
- data/spec/mongoid/clients_spec.rb +78 -16
- data/spec/mongoid/composable_spec.rb +2 -0
- data/spec/mongoid/config/environment_spec.rb +88 -8
- data/spec/mongoid/config/options_spec.rb +22 -3
- data/spec/mongoid/config_spec.rb +280 -2
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +53 -11
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +122 -20
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +242 -81
- data/spec/mongoid/contextual/geo_near_spec.rb +31 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +24 -7
- data/spec/mongoid/contextual/memory_spec.rb +25 -23
- data/spec/mongoid/contextual/mongo_spec.rb +491 -144
- data/spec/mongoid/contextual/none_spec.rb +9 -81
- data/spec/mongoid/copyable_spec.rb +261 -30
- data/spec/mongoid/copyable_spec_models.rb +47 -0
- data/spec/mongoid/criteria/findable_spec.rb +77 -20
- data/spec/mongoid/criteria/inspectable_spec.rb +2 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +2 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +100 -48
- data/spec/mongoid/criteria/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +61 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +5 -3
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +35 -17
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +53 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +239 -178
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +9 -7
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +42 -23
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +30 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +50 -6
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +145 -12
- data/spec/mongoid/criteria/queryable/optional_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +2069 -0
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +38 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +994 -2900
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +41 -2
- data/spec/mongoid/criteria/queryable/smash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +226 -0
- data/spec/mongoid/criteria/scopable_spec.rb +210 -0
- data/spec/mongoid/criteria_projection_spec.rb +410 -0
- data/spec/mongoid/criteria_spec.rb +807 -464
- data/spec/mongoid/document_fields_spec.rb +113 -0
- data/spec/mongoid/document_persistence_context_spec.rb +32 -0
- data/spec/mongoid/document_query_spec.rb +89 -0
- data/spec/mongoid/document_spec.rb +182 -28
- data/spec/mongoid/equality_spec.rb +144 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +5 -3
- data/spec/mongoid/errors/callback_spec.rb +2 -0
- data/spec/mongoid/errors/delete_restriction_spec.rb +4 -2
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +2 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +2 -0
- data/spec/mongoid/errors/eager_load_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_includes_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_index_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_options_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_path_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_relation_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -1
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +2 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +2 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +2 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +22 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_config_spec.rb +4 -2
- data/spec/mongoid/errors/no_client_database_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_hosts_spec.rb +5 -3
- data/spec/mongoid/errors/no_clients_config_spec.rb +2 -0
- data/spec/mongoid/errors/no_environment_spec.rb +2 -0
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +2 -0
- data/spec/mongoid/errors/no_metadata_spec.rb +4 -2
- data/spec/mongoid/errors/no_parent_spec.rb +3 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +2 -0
- data/spec/mongoid/errors/readonly_document_spec.rb +2 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +2 -0
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +2 -0
- data/spec/mongoid/errors/unknown_attribute_spec.rb +4 -2
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +2 -0
- data/spec/mongoid/errors/validations_spec.rb +2 -0
- data/spec/mongoid/extensions/array_spec.rb +25 -43
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -9
- data/spec/mongoid/extensions/binary_spec.rb +2 -0
- data/spec/mongoid/extensions/boolean_spec.rb +2 -0
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +335 -0
- data/spec/mongoid/extensions/date_spec.rb +8 -160
- data/spec/mongoid/extensions/date_time_spec.rb +17 -60
- data/spec/mongoid/extensions/decimal128_spec.rb +2 -0
- data/spec/mongoid/extensions/false_class_spec.rb +3 -1
- data/spec/mongoid/extensions/float_spec.rb +17 -3
- data/spec/mongoid/extensions/hash_spec.rb +105 -0
- data/spec/mongoid/extensions/integer_spec.rb +14 -2
- data/spec/mongoid/extensions/module_spec.rb +2 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/extensions/object_id_spec.rb +2 -0
- data/spec/mongoid/extensions/object_spec.rb +13 -24
- data/spec/mongoid/extensions/range_spec.rb +2 -0
- data/spec/mongoid/extensions/regexp_spec.rb +25 -0
- data/spec/mongoid/extensions/set_spec.rb +2 -0
- data/spec/mongoid/extensions/string_spec.rb +95 -34
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +84 -0
- data/spec/mongoid/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/extensions/time_spec.rb +29 -0
- data/spec/mongoid/extensions/time_with_zone_spec.rb +33 -0
- data/spec/mongoid/extensions/true_class_spec.rb +3 -1
- data/spec/mongoid/extensions_spec.rb +16 -2
- data/spec/mongoid/factory_spec.rb +287 -27
- data/spec/mongoid/fields/foreign_key_spec.rb +2 -0
- data/spec/mongoid/fields/localized_spec.rb +6 -4
- data/spec/mongoid/fields/standard_spec.rb +2 -0
- data/spec/mongoid/fields_spec.rb +419 -37
- data/spec/mongoid/findable_spec.rb +54 -20
- data/spec/mongoid/indexable/specification_spec.rb +2 -0
- data/spec/mongoid/indexable_spec.rb +36 -6
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +168 -96
- data/spec/mongoid/interceptable_spec_models.rb +76 -0
- data/spec/mongoid/loggable_spec.rb +2 -0
- data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +239 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +40 -0
- data/spec/mongoid/persistable/creatable_spec.rb +112 -27
- data/spec/mongoid/persistable/deletable_spec.rb +273 -11
- data/spec/mongoid/persistable/destroyable_spec.rb +201 -11
- data/spec/mongoid/persistable/incrementable_spec.rb +29 -13
- data/spec/mongoid/persistable/logical_spec.rb +19 -3
- data/spec/mongoid/persistable/poppable_spec.rb +19 -3
- data/spec/mongoid/persistable/pullable_spec.rb +36 -6
- data/spec/mongoid/persistable/pushable_spec.rb +91 -7
- data/spec/mongoid/persistable/renamable_spec.rb +18 -2
- data/spec/mongoid/persistable/savable_spec.rb +188 -25
- data/spec/mongoid/persistable/settable_spec.rb +182 -17
- data/spec/mongoid/persistable/unsettable_spec.rb +19 -3
- data/spec/mongoid/persistable/updatable_spec.rb +45 -23
- data/spec/mongoid/persistable/upsertable_spec.rb +4 -2
- data/spec/mongoid/persistable_spec.rb +85 -9
- data/spec/mongoid/persistence_context_spec.rb +3 -1
- data/spec/mongoid/positional_spec.rb +2 -0
- data/spec/mongoid/query_cache_middleware_spec.rb +68 -0
- data/spec/mongoid/query_cache_spec.rb +575 -48
- data/spec/mongoid/relations/proxy_spec.rb +9 -7
- data/spec/mongoid/reloadable_spec.rb +298 -20
- data/spec/mongoid/scopable_spec.rb +82 -22
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +160 -29
- data/spec/mongoid/shardable_models.rb +61 -0
- data/spec/mongoid/shardable_spec.rb +116 -17
- data/spec/mongoid/stateful_spec.rb +3 -1
- data/spec/mongoid/tasks/database_rake_spec.rb +15 -13
- data/spec/mongoid/tasks/database_spec.rb +3 -1
- data/spec/mongoid/threaded_spec.rb +72 -2
- data/spec/mongoid/timestamps/created/short_spec.rb +3 -1
- data/spec/mongoid/timestamps/created_spec.rb +3 -1
- data/spec/mongoid/timestamps/timeless_spec.rb +4 -2
- data/spec/mongoid/timestamps/updated/short_spec.rb +5 -3
- data/spec/mongoid/timestamps/updated_spec.rb +5 -3
- data/spec/mongoid/timestamps_spec.rb +8 -6
- data/spec/mongoid/{association/touchable_spec.rb → touchable_spec.rb} +206 -38
- data/spec/mongoid/touchable_spec_models.rb +53 -0
- data/spec/mongoid/traversable_spec.rb +1167 -1
- data/spec/mongoid/validatable/associated_spec.rb +2 -0
- data/spec/mongoid/validatable/format_spec.rb +2 -0
- data/spec/mongoid/validatable/length_spec.rb +2 -0
- data/spec/mongoid/validatable/numericality_spec.rb +2 -0
- data/spec/mongoid/validatable/presence_spec.rb +28 -22
- data/spec/mongoid/validatable/uniqueness_spec.rb +102 -73
- data/spec/mongoid/validatable_spec.rb +5 -3
- data/spec/mongoid_spec.rb +2 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +112 -0
- data/spec/rails/mongoid_spec.rb +4 -2
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +386 -0
- data/spec/shared/lib/mrss/docker_runner.rb +271 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +199 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +120 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +339 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +379 -0
- data/spec/shared/shlib/set_env.sh +132 -0
- data/spec/spec_helper.rb +69 -80
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +53 -0
- data/spec/support/expectations.rb +21 -3
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +42 -0
- data/spec/{app → support}/models/account.rb +3 -1
- data/spec/{app → support}/models/acolyte.rb +2 -0
- data/spec/{app → support}/models/actor.rb +3 -1
- data/spec/support/models/actress.rb +4 -0
- data/spec/{app → support}/models/address.rb +6 -0
- data/spec/{app → support}/models/address_component.rb +2 -0
- data/spec/{app → support}/models/address_number.rb +2 -0
- data/spec/{app → support}/models/agency.rb +2 -0
- data/spec/{app → support}/models/agent.rb +2 -0
- data/spec/{app → support}/models/album.rb +2 -0
- data/spec/{app → support}/models/alert.rb +2 -0
- data/spec/{app → support}/models/animal.rb +2 -0
- data/spec/{app → support}/models/answer.rb +2 -0
- data/spec/{app → support}/models/appointment.rb +2 -0
- data/spec/support/models/armrest.rb +9 -0
- data/spec/support/models/array_field.rb +7 -0
- data/spec/{app → support}/models/article.rb +2 -0
- data/spec/{app → support}/models/artist.rb +4 -0
- data/spec/{app → support}/models/artwork.rb +2 -0
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/{app → support}/models/audio.rb +2 -0
- data/spec/{app → support}/models/augmentation.rb +2 -0
- data/spec/{app → support}/models/author.rb +2 -0
- data/spec/{app → support}/models/baby.rb +2 -0
- data/spec/{app → support}/models/band.rb +6 -0
- data/spec/{app → support}/models/bar.rb +2 -0
- data/spec/{app → support}/models/basic.rb +2 -0
- data/spec/support/models/bed.rb +3 -0
- data/spec/{app → support}/models/big_palette.rb +2 -0
- data/spec/{app → support}/models/birthday.rb +2 -0
- data/spec/support/models/bolt.rb +7 -0
- data/spec/{app → support}/models/bomb.rb +2 -0
- data/spec/{app → support}/models/book.rb +2 -0
- data/spec/{app → support}/models/breed.rb +2 -0
- data/spec/{app → support}/models/browser.rb +3 -1
- data/spec/{app → support}/models/building.rb +2 -0
- data/spec/{app → support}/models/building_address.rb +2 -0
- data/spec/{app → support}/models/bus.rb +2 -0
- data/spec/{app → support}/models/business.rb +2 -0
- data/spec/{app → support}/models/callback_test.rb +2 -0
- data/spec/{app → support}/models/canvas.rb +3 -1
- data/spec/support/models/car.rb +3 -0
- data/spec/{app → support}/models/cat.rb +2 -0
- data/spec/{app → support}/models/category.rb +2 -0
- data/spec/{app → support}/models/child.rb +2 -0
- data/spec/{app → support}/models/child_doc.rb +5 -3
- data/spec/{app → support}/models/church.rb +2 -0
- data/spec/{app → support}/models/circle.rb +2 -0
- data/spec/{app → support}/models/circuit.rb +2 -0
- data/spec/{app → support}/models/circus.rb +2 -0
- data/spec/{app → support}/models/code.rb +2 -0
- data/spec/support/models/coding/pull_request.rb +11 -0
- data/spec/support/models/coding.rb +3 -0
- data/spec/{app → support}/models/comment.rb +2 -0
- data/spec/{app → support}/models/company.rb +2 -0
- data/spec/{app → support}/models/consumption_period.rb +2 -0
- data/spec/{app → support}/models/contextable_item.rb +2 -0
- data/spec/{app → support}/models/contractor.rb +2 -0
- data/spec/{app → support}/models/cookie.rb +2 -0
- data/spec/{app → support}/models/country_code.rb +4 -0
- data/spec/{app → support}/models/courier_job.rb +2 -0
- data/spec/support/models/crate.rb +12 -0
- data/spec/support/models/customer.rb +10 -0
- data/spec/support/models/customer_address.rb +11 -0
- data/spec/support/models/deed.rb +7 -0
- data/spec/{app → support}/models/definition.rb +2 -0
- data/spec/support/models/delegating_patient.rb +15 -0
- data/spec/{app → support}/models/description.rb +2 -0
- data/spec/{app → support}/models/dictionary.rb +8 -0
- data/spec/{app → support}/models/division.rb +2 -0
- data/spec/{app → support}/models/doctor.rb +2 -0
- data/spec/{app → support}/models/dog.rb +2 -0
- data/spec/{app → support}/models/dokument.rb +2 -0
- data/spec/{app → support}/models/draft.rb +2 -0
- data/spec/{app → support}/models/dragon.rb +2 -0
- data/spec/{app → support}/models/driver.rb +3 -1
- data/spec/{app → support}/models/drug.rb +2 -0
- data/spec/{app → support}/models/dungeon.rb +2 -0
- data/spec/{app → support}/models/edit.rb +2 -0
- data/spec/{app → support}/models/email.rb +2 -0
- data/spec/{app → support}/models/employer.rb +2 -0
- data/spec/{app → support}/models/entry.rb +2 -0
- data/spec/support/models/eraser.rb +3 -0
- data/spec/{app → support}/models/even.rb +2 -0
- data/spec/{app → support}/models/event.rb +2 -0
- data/spec/{app → support}/models/exhibition.rb +2 -0
- data/spec/{app → support}/models/exhibitor.rb +2 -0
- data/spec/{app → support}/models/explosion.rb +2 -0
- data/spec/{app → support}/models/eye.rb +2 -0
- data/spec/{app → support}/models/eye_bowl.rb +2 -0
- data/spec/{app → support}/models/face.rb +2 -0
- data/spec/{app → support}/models/favorite.rb +2 -0
- data/spec/{app → support}/models/filesystem.rb +2 -0
- data/spec/{app → support}/models/fire_hydrant.rb +2 -0
- data/spec/{app → support}/models/firefox.rb +2 -0
- data/spec/{app → support}/models/fish.rb +2 -0
- data/spec/{app → support}/models/folder.rb +2 -0
- data/spec/{app → support}/models/folder_item.rb +2 -0
- data/spec/{app → support}/models/fruits.rb +2 -0
- data/spec/{app → support}/models/game.rb +2 -0
- data/spec/{app → support}/models/ghost.rb +2 -0
- data/spec/support/models/guitar.rb +4 -0
- data/spec/support/models/hole.rb +12 -0
- data/spec/{app → support}/models/home.rb +2 -0
- data/spec/{app → support}/models/house.rb +2 -0
- data/spec/{app → support}/models/html_writer.rb +2 -0
- data/spec/{app → support}/models/id_key.rb +2 -0
- data/spec/support/models/idnodef.rb +7 -0
- data/spec/{app → support}/models/image.rb +2 -0
- data/spec/{app → support}/models/implant.rb +2 -0
- data/spec/support/models/instrument.rb +8 -0
- data/spec/{app → support}/models/item.rb +3 -1
- data/spec/{app → support}/models/jar.rb +2 -0
- data/spec/{app → support}/models/kaleidoscope.rb +2 -0
- data/spec/{app → support}/models/kangaroo.rb +3 -1
- data/spec/{app → support}/models/label.rb +4 -1
- data/spec/{app → support}/models/language.rb +2 -0
- data/spec/{app → support}/models/lat_lng.rb +2 -0
- data/spec/{app → support}/models/league.rb +2 -0
- data/spec/support/models/learner.rb +4 -0
- data/spec/{app → support}/models/line_item.rb +2 -0
- data/spec/{app → support}/models/location.rb +2 -0
- data/spec/{app → support}/models/login.rb +2 -0
- data/spec/{app → support}/models/manufacturer.rb +2 -0
- data/spec/{app → support}/models/meat.rb +2 -0
- data/spec/{app → support}/models/membership.rb +2 -0
- data/spec/{app → support}/models/message.rb +2 -0
- data/spec/support/models/minim.rb +6 -0
- data/spec/{app → support}/models/mixed_drink.rb +2 -0
- data/spec/support/models/mop.rb +24 -0
- data/spec/{app → support}/models/movie.rb +2 -0
- data/spec/support/models/my_hash.rb +4 -0
- data/spec/{app → support}/models/name.rb +2 -0
- data/spec/support/models/name_only.rb +8 -0
- data/spec/{app → support}/models/node.rb +2 -0
- data/spec/{app → support}/models/note.rb +2 -0
- data/spec/support/models/nut.rb +7 -0
- data/spec/{app → support}/models/odd.rb +2 -0
- data/spec/support/models/order.rb +12 -0
- data/spec/{app → support}/models/ordered_post.rb +3 -1
- data/spec/{app → support}/models/ordered_preference.rb +2 -0
- data/spec/{app → support}/models/oscar.rb +2 -0
- data/spec/support/models/other_owner_object.rb +4 -0
- data/spec/{app → support}/models/override.rb +2 -0
- data/spec/{app → support}/models/ownable.rb +2 -0
- data/spec/{app → support}/models/owner.rb +4 -0
- data/spec/{app → support}/models/pack.rb +2 -0
- data/spec/{app → support}/models/page.rb +2 -0
- data/spec/{app → support}/models/page_question.rb +2 -0
- data/spec/{app → support}/models/palette.rb +3 -1
- data/spec/{app → support}/models/parent.rb +2 -0
- data/spec/{app → support}/models/parent_doc.rb +2 -0
- data/spec/support/models/passport.rb +13 -0
- data/spec/{app → support}/models/patient.rb +2 -0
- data/spec/{app → support}/models/pdf_writer.rb +2 -0
- data/spec/support/models/pencil.rb +3 -0
- data/spec/{app → support}/models/person.rb +21 -1
- data/spec/{app → support}/models/pet.rb +2 -0
- data/spec/{app → support}/models/pet_owner.rb +2 -0
- data/spec/{app → support}/models/phone.rb +5 -1
- data/spec/support/models/piano.rb +4 -0
- data/spec/{app → support}/models/pizza.rb +2 -0
- data/spec/{app → support}/models/player.rb +2 -0
- data/spec/{app → support}/models/post.rb +2 -0
- data/spec/{app → support}/models/post_genre.rb +2 -0
- data/spec/{app → support}/models/powerup.rb +2 -0
- data/spec/{app → support}/models/preference.rb +2 -0
- data/spec/{app → support}/models/princess.rb +2 -0
- data/spec/{app → support}/models/product.rb +2 -0
- data/spec/support/models/profile.rb +17 -0
- data/spec/{app → support}/models/pronunciation.rb +2 -0
- data/spec/{app → support}/models/pub.rb +2 -0
- data/spec/support/models/publication/encyclopedia.rb +11 -0
- data/spec/support/models/publication/review.rb +13 -0
- data/spec/support/models/publication.rb +4 -0
- data/spec/{app → support}/models/purchase.rb +2 -0
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/{app → support}/models/question.rb +2 -0
- data/spec/{app → support}/models/quiz.rb +2 -0
- data/spec/{app → support}/models/rating.rb +2 -0
- data/spec/{app → support}/models/record.rb +2 -0
- data/spec/{app → support}/models/registry.rb +2 -0
- data/spec/{app → support}/models/role.rb +2 -0
- data/spec/{app → support}/models/root_category.rb +2 -0
- data/spec/{app → support}/models/sandwich.rb +2 -0
- data/spec/{app → support}/models/scheduler.rb +2 -0
- data/spec/support/models/scribe.rb +7 -0
- data/spec/support/models/sealer.rb +7 -0
- data/spec/support/models/seat.rb +24 -0
- data/spec/{app → support}/models/seo.rb +2 -0
- data/spec/support/models/series.rb +7 -0
- data/spec/{app → support}/models/server.rb +2 -0
- data/spec/{app → support}/models/service.rb +2 -0
- data/spec/{app → support}/models/shape.rb +4 -2
- data/spec/{app → support}/models/shelf.rb +2 -0
- data/spec/{app → support}/models/shipment_address.rb +2 -0
- data/spec/{app → support}/models/shipping_container.rb +2 -0
- data/spec/{app → support}/models/shipping_pack.rb +2 -0
- data/spec/support/models/shirt.rb +11 -0
- data/spec/{app → support}/models/shop.rb +2 -0
- data/spec/{app → support}/models/short_agent.rb +2 -0
- data/spec/{app → support}/models/short_quiz.rb +2 -0
- data/spec/{app → support}/models/simple.rb +2 -0
- data/spec/{app → support}/models/slave.rb +2 -0
- data/spec/{app → support}/models/song.rb +2 -0
- data/spec/{app → support}/models/sound.rb +2 -0
- data/spec/support/models/spacer.rb +7 -0
- data/spec/{app → support}/models/square.rb +2 -0
- data/spec/{app → support}/models/staff.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +2 -0
- data/spec/support/models/store_as_dup_test3.rb +7 -0
- data/spec/support/models/store_as_dup_test4.rb +7 -0
- data/spec/{app → support}/models/strategy.rb +2 -0
- data/spec/{app → support}/models/sub_item.rb +2 -0
- data/spec/{app → support}/models/subscription.rb +2 -0
- data/spec/{app → support}/models/survey.rb +2 -0
- data/spec/{app → support}/models/symptom.rb +2 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +2 -0
- data/spec/{app → support}/models/target.rb +2 -0
- data/spec/{app → support}/models/template.rb +2 -0
- data/spec/{app → support}/models/thing.rb +2 -0
- data/spec/support/models/threadlocker.rb +7 -0
- data/spec/{app → support}/models/title.rb +2 -0
- data/spec/{app → support}/models/tool.rb +4 -2
- data/spec/{app → support}/models/topping.rb +2 -0
- data/spec/support/models/toy.rb +9 -0
- data/spec/{app → support}/models/track.rb +2 -0
- data/spec/{app → support}/models/translation.rb +2 -0
- data/spec/{app → support}/models/tree.rb +2 -0
- data/spec/support/models/truck.rb +7 -0
- data/spec/support/models/updatable.rb +7 -0
- data/spec/{app → support}/models/user.rb +2 -0
- data/spec/{app → support}/models/user_account.rb +2 -0
- data/spec/{app → support}/models/validation_callback.rb +2 -0
- data/spec/support/models/vehicle.rb +18 -0
- data/spec/{app → support}/models/version.rb +2 -0
- data/spec/{app → support}/models/vertex.rb +3 -1
- data/spec/{app → support}/models/vet_visit.rb +2 -0
- data/spec/{app → support}/models/video.rb +2 -0
- data/spec/support/models/video_game.rb +3 -0
- data/spec/support/models/washer.rb +7 -0
- data/spec/{app → support}/models/weapon.rb +2 -0
- data/spec/{app → support}/models/wiki_page.rb +3 -0
- data/spec/{app → support}/models/word.rb +2 -0
- data/spec/{app → support}/models/word_origin.rb +2 -0
- data/spec/{app → support}/models/writer.rb +4 -2
- data/spec/support/shared/time.rb +53 -0
- data/spec/support/spec_config.rb +60 -0
- data.tar.gz.sig +0 -0
- metadata +1131 -686
- metadata.gz.sig +0 -0
- data/lib/mongoid/association/touchable.rb +0 -97
- data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
- data/lib/mongoid/matchable/all.rb +0 -27
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -72
- data/lib/mongoid/matchable/elem_match.rb +0 -34
- data/lib/mongoid/matchable/exists.rb +0 -23
- data/lib/mongoid/matchable/gt.rb +0 -23
- data/lib/mongoid/matchable/gte.rb +0 -23
- data/lib/mongoid/matchable/in.rb +0 -24
- data/lib/mongoid/matchable/lt.rb +0 -23
- data/lib/mongoid/matchable/lte.rb +0 -23
- data/lib/mongoid/matchable/ne.rb +0 -21
- data/lib/mongoid/matchable/nin.rb +0 -22
- data/lib/mongoid/matchable/or.rb +0 -33
- data/lib/mongoid/matchable/regexp.rb +0 -27
- data/lib/mongoid/matchable/size.rb +0 -21
- data/lib/support/ruby_version.rb +0 -26
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/passport.rb +0 -5
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/profile.rb +0 -5
- data/spec/app/models/series.rb +0 -4
- data/spec/app/models/truck.rb +0 -3
- data/spec/app/models/vehicle.rb +0 -11
- data/spec/app/models/video_game.rb +0 -1
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
- data/spec/mongoid/matchable/all_spec.rb +0 -31
- data/spec/mongoid/matchable/and_spec.rb +0 -187
- data/spec/mongoid/matchable/default_spec.rb +0 -130
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -106
- data/spec/mongoid/matchable/exists_spec.rb +0 -57
- data/spec/mongoid/matchable/gt_spec.rb +0 -86
- data/spec/mongoid/matchable/gte_spec.rb +0 -84
- data/spec/mongoid/matchable/in_spec.rb +0 -49
- data/spec/mongoid/matchable/lt_spec.rb +0 -85
- data/spec/mongoid/matchable/lte_spec.rb +0 -85
- data/spec/mongoid/matchable/ne_spec.rb +0 -46
- data/spec/mongoid/matchable/nin_spec.rb +0 -48
- data/spec/mongoid/matchable/or_spec.rb +0 -131
- data/spec/mongoid/matchable/regexp_spec.rb +0 -59
- data/spec/mongoid/matchable/size_spec.rb +0 -25
- data/spec/mongoid/matchable_spec.rb +0 -828
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "spec_helper"
|
|
2
4
|
|
|
3
5
|
describe Mongoid::Association::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
|
|
@@ -1754,10 +1756,47 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1754
1756
|
end
|
|
1755
1757
|
end
|
|
1756
1758
|
|
|
1759
|
+
describe "#any?" do
|
|
1760
|
+
|
|
1761
|
+
let(:person) do
|
|
1762
|
+
Person.create!
|
|
1763
|
+
end
|
|
1764
|
+
|
|
1765
|
+
context "when nothing exists on the relation" do
|
|
1766
|
+
|
|
1767
|
+
context "when no document is added" do
|
|
1768
|
+
|
|
1769
|
+
let!(:sandwich) do
|
|
1770
|
+
Sandwich.create!
|
|
1771
|
+
end
|
|
1772
|
+
|
|
1773
|
+
it "returns false" do
|
|
1774
|
+
expect(sandwich.meats.any?).to be false
|
|
1775
|
+
end
|
|
1776
|
+
end
|
|
1777
|
+
|
|
1778
|
+
context "when the document is destroyed" do
|
|
1779
|
+
|
|
1780
|
+
before do
|
|
1781
|
+
Meat.create!
|
|
1782
|
+
end
|
|
1783
|
+
|
|
1784
|
+
let!(:sandwich) do
|
|
1785
|
+
Sandwich.create!
|
|
1786
|
+
end
|
|
1787
|
+
|
|
1788
|
+
it "returns false" do
|
|
1789
|
+
sandwich.destroy
|
|
1790
|
+
expect(sandwich.meats.any?).to be false
|
|
1791
|
+
end
|
|
1792
|
+
end
|
|
1793
|
+
end
|
|
1794
|
+
end
|
|
1795
|
+
|
|
1757
1796
|
context "when documents have been persisted" do
|
|
1758
1797
|
|
|
1759
1798
|
let!(:preference) do
|
|
1760
|
-
person.preferences.create(name: "setting")
|
|
1799
|
+
person.preferences.create!(name: "setting")
|
|
1761
1800
|
end
|
|
1762
1801
|
|
|
1763
1802
|
it "returns the number of persisted documents" do
|
|
@@ -1768,12 +1807,12 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1768
1807
|
context "when appending to a loaded relation" do
|
|
1769
1808
|
|
|
1770
1809
|
let!(:preference) do
|
|
1771
|
-
person.preferences.create(name: "setting")
|
|
1810
|
+
person.preferences.create!(name: "setting")
|
|
1772
1811
|
end
|
|
1773
1812
|
|
|
1774
1813
|
before do
|
|
1775
1814
|
person.preferences.count
|
|
1776
|
-
person.preferences << Preference.create(name: "two")
|
|
1815
|
+
person.preferences << Preference.create!(name: "two")
|
|
1777
1816
|
end
|
|
1778
1817
|
|
|
1779
1818
|
it "returns the number of persisted documents" do
|
|
@@ -1797,7 +1836,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1797
1836
|
context "when the documents are part of the relation" do
|
|
1798
1837
|
|
|
1799
1838
|
before do
|
|
1800
|
-
Preference.create(person_ids: [ person.id ])
|
|
1839
|
+
Preference.create!(person_ids: [ person.id ])
|
|
1801
1840
|
end
|
|
1802
1841
|
|
|
1803
1842
|
it "returns the count from the db" do
|
|
@@ -1808,7 +1847,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1808
1847
|
context "when the documents are not part of the relation" do
|
|
1809
1848
|
|
|
1810
1849
|
before do
|
|
1811
|
-
Preference.create
|
|
1850
|
+
Preference.create!
|
|
1812
1851
|
end
|
|
1813
1852
|
|
|
1814
1853
|
it "returns the count from the db" do
|
|
@@ -1822,7 +1861,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1822
1861
|
context "when documents have been persisted" do
|
|
1823
1862
|
|
|
1824
1863
|
let!(:house) do
|
|
1825
|
-
person.houses.create(name: "Wayne Manor")
|
|
1864
|
+
person.houses.create!(name: "Wayne Manor")
|
|
1826
1865
|
end
|
|
1827
1866
|
|
|
1828
1867
|
it "returns the number of persisted documents" do
|
|
@@ -1843,6 +1882,107 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1843
1882
|
end
|
|
1844
1883
|
end
|
|
1845
1884
|
|
|
1885
|
+
describe "#any?" do
|
|
1886
|
+
|
|
1887
|
+
let(:sandwich) do
|
|
1888
|
+
Sandwich.create!
|
|
1889
|
+
end
|
|
1890
|
+
|
|
1891
|
+
context "when nothing exists on the relation" do
|
|
1892
|
+
|
|
1893
|
+
context "when no document is added" do
|
|
1894
|
+
|
|
1895
|
+
let!(:sandwich) do
|
|
1896
|
+
Sandwich.create!
|
|
1897
|
+
end
|
|
1898
|
+
|
|
1899
|
+
it "returns false" do
|
|
1900
|
+
expect(sandwich.meats.any?).to be false
|
|
1901
|
+
end
|
|
1902
|
+
end
|
|
1903
|
+
|
|
1904
|
+
context "when the document is destroyed" do
|
|
1905
|
+
|
|
1906
|
+
before do
|
|
1907
|
+
Meat.create!
|
|
1908
|
+
end
|
|
1909
|
+
|
|
1910
|
+
let!(:sandwich) do
|
|
1911
|
+
Sandwich.create!
|
|
1912
|
+
end
|
|
1913
|
+
|
|
1914
|
+
it "returns false" do
|
|
1915
|
+
sandwich.destroy
|
|
1916
|
+
expect(sandwich.meats.any?).to be false
|
|
1917
|
+
end
|
|
1918
|
+
end
|
|
1919
|
+
end
|
|
1920
|
+
|
|
1921
|
+
context "when appending to a relation and _loaded/_unloaded are empty" do
|
|
1922
|
+
|
|
1923
|
+
let!(:sandwich) do
|
|
1924
|
+
Sandwich.create!
|
|
1925
|
+
end
|
|
1926
|
+
|
|
1927
|
+
before do
|
|
1928
|
+
sandwich.meats << Meat.new
|
|
1929
|
+
end
|
|
1930
|
+
|
|
1931
|
+
it "returns true" do
|
|
1932
|
+
expect(sandwich.meats.any?).to be true
|
|
1933
|
+
end
|
|
1934
|
+
end
|
|
1935
|
+
|
|
1936
|
+
context "when appending to a relation in a transaction" do
|
|
1937
|
+
require_transaction_support
|
|
1938
|
+
|
|
1939
|
+
let!(:sandwich) do
|
|
1940
|
+
Sandwich.create!
|
|
1941
|
+
end
|
|
1942
|
+
|
|
1943
|
+
it "returns true" do
|
|
1944
|
+
sandwich.with_session do |session|
|
|
1945
|
+
session.with_transaction do
|
|
1946
|
+
expect{ sandwich.meats << Meat.new }.to_not raise_error
|
|
1947
|
+
expect(sandwich.meats.any?).to be true
|
|
1948
|
+
end
|
|
1949
|
+
end
|
|
1950
|
+
end
|
|
1951
|
+
end
|
|
1952
|
+
|
|
1953
|
+
context "when documents have been persisted" do
|
|
1954
|
+
|
|
1955
|
+
let!(:meat) do
|
|
1956
|
+
sandwich.meats.create!
|
|
1957
|
+
end
|
|
1958
|
+
|
|
1959
|
+
it "returns true" do
|
|
1960
|
+
expect(sandwich.meats.any?).to be true
|
|
1961
|
+
end
|
|
1962
|
+
end
|
|
1963
|
+
|
|
1964
|
+
context "when documents have not been persisted" do
|
|
1965
|
+
|
|
1966
|
+
let!(:meat) do
|
|
1967
|
+
sandwich.meats.build
|
|
1968
|
+
end
|
|
1969
|
+
|
|
1970
|
+
it "returns false" do
|
|
1971
|
+
expect(sandwich.meats.any?).to be true
|
|
1972
|
+
end
|
|
1973
|
+
end
|
|
1974
|
+
|
|
1975
|
+
context "when new documents exist in the database" do
|
|
1976
|
+
before do
|
|
1977
|
+
Meat.create!(sandwiches: [sandwich])
|
|
1978
|
+
end
|
|
1979
|
+
|
|
1980
|
+
it "returns true" do
|
|
1981
|
+
expect(sandwich.meats.any?).to be true
|
|
1982
|
+
end
|
|
1983
|
+
end
|
|
1984
|
+
end
|
|
1985
|
+
|
|
1846
1986
|
[ :create, :create! ].each do |method|
|
|
1847
1987
|
|
|
1848
1988
|
describe "##{method}" do
|
|
@@ -1852,15 +1992,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1852
1992
|
context "when using string keys" do
|
|
1853
1993
|
|
|
1854
1994
|
let(:agent) do
|
|
1855
|
-
Agent.create(number: "007")
|
|
1995
|
+
Agent.create!(number: "007")
|
|
1856
1996
|
end
|
|
1857
1997
|
|
|
1858
1998
|
before do
|
|
1859
|
-
agent.accounts.
|
|
1999
|
+
agent.accounts.send(method, name: "test again")
|
|
1860
2000
|
end
|
|
1861
2001
|
|
|
1862
2002
|
it "does not convert the string key to an object id" do
|
|
1863
|
-
expect(agent.account_ids).to eq([ "
|
|
2003
|
+
expect(agent.account_ids).to eq([ "test-again" ])
|
|
1864
2004
|
end
|
|
1865
2005
|
end
|
|
1866
2006
|
|
|
@@ -1932,7 +2072,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1932
2072
|
context "when validation fails" do
|
|
1933
2073
|
|
|
1934
2074
|
let(:person) do
|
|
1935
|
-
Person.create
|
|
2075
|
+
Person.create!
|
|
1936
2076
|
end
|
|
1937
2077
|
|
|
1938
2078
|
context "when the relation is not polymorphic" do
|
|
@@ -1949,15 +2089,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
1949
2089
|
describe "#delete" do
|
|
1950
2090
|
|
|
1951
2091
|
let(:person) do
|
|
1952
|
-
Person.create
|
|
2092
|
+
Person.create!
|
|
1953
2093
|
end
|
|
1954
2094
|
|
|
1955
2095
|
let(:preference_one) do
|
|
1956
|
-
Preference.create(name: "Testing")
|
|
2096
|
+
Preference.create!(name: "Testing")
|
|
1957
2097
|
end
|
|
1958
2098
|
|
|
1959
2099
|
let(:preference_two) do
|
|
1960
|
-
Preference.create(name: "Test")
|
|
2100
|
+
Preference.create!(name: "Test")
|
|
1961
2101
|
end
|
|
1962
2102
|
|
|
1963
2103
|
before do
|
|
@@ -2032,7 +2172,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2032
2172
|
context "when :inverse_of is set" do
|
|
2033
2173
|
|
|
2034
2174
|
let(:event) do
|
|
2035
|
-
Event.create
|
|
2175
|
+
Event.create!
|
|
2036
2176
|
end
|
|
2037
2177
|
|
|
2038
2178
|
before do
|
|
@@ -2048,11 +2188,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2048
2188
|
context "when the relationships are self referencing" do
|
|
2049
2189
|
|
|
2050
2190
|
let(:tag_one) do
|
|
2051
|
-
Tag.create(text: "one")
|
|
2191
|
+
Tag.create!(text: "one")
|
|
2052
2192
|
end
|
|
2053
2193
|
|
|
2054
2194
|
let(:tag_two) do
|
|
2055
|
-
Tag.create(text: "two")
|
|
2195
|
+
Tag.create!(text: "two")
|
|
2056
2196
|
end
|
|
2057
2197
|
|
|
2058
2198
|
before do
|
|
@@ -2221,15 +2361,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2221
2361
|
context "when conditions are provided" do
|
|
2222
2362
|
|
|
2223
2363
|
let(:person) do
|
|
2224
|
-
Person.create
|
|
2364
|
+
Person.create!
|
|
2225
2365
|
end
|
|
2226
2366
|
|
|
2227
2367
|
let!(:preference_one) do
|
|
2228
|
-
person.preferences.create(name: "Testing")
|
|
2368
|
+
person.preferences.create!(name: "Testing")
|
|
2229
2369
|
end
|
|
2230
2370
|
|
|
2231
2371
|
let!(:preference_two) do
|
|
2232
|
-
person.preferences.create(name: "Test")
|
|
2372
|
+
person.preferences.create!(name: "Test")
|
|
2233
2373
|
end
|
|
2234
2374
|
|
|
2235
2375
|
let!(:deleted) do
|
|
@@ -2259,9 +2399,9 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2259
2399
|
context "when conditions are not provided" do
|
|
2260
2400
|
|
|
2261
2401
|
let(:person) do
|
|
2262
|
-
Person.create
|
|
2263
|
-
person.preferences.create(name: "Testing")
|
|
2264
|
-
person.preferences.create(name: "Test")
|
|
2402
|
+
Person.create!.tap do |person|
|
|
2403
|
+
person.preferences.create!(name: "Testing")
|
|
2404
|
+
person.preferences.create!(name: "Test")
|
|
2265
2405
|
end
|
|
2266
2406
|
end
|
|
2267
2407
|
|
|
@@ -2295,13 +2435,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2295
2435
|
describe "#exists?" do
|
|
2296
2436
|
|
|
2297
2437
|
let!(:person) do
|
|
2298
|
-
Person.create
|
|
2438
|
+
Person.create!
|
|
2299
2439
|
end
|
|
2300
2440
|
|
|
2301
2441
|
context "when documents exist in the database" do
|
|
2302
2442
|
|
|
2303
2443
|
before do
|
|
2304
|
-
person.preferences.create
|
|
2444
|
+
person.preferences.create!
|
|
2305
2445
|
end
|
|
2306
2446
|
|
|
2307
2447
|
it "returns true" do
|
|
@@ -2326,23 +2466,23 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2326
2466
|
context "when the relation is not polymorphic" do
|
|
2327
2467
|
|
|
2328
2468
|
let(:person) do
|
|
2329
|
-
Person.create
|
|
2469
|
+
Person.create!
|
|
2330
2470
|
end
|
|
2331
2471
|
|
|
2332
2472
|
let!(:preference_one) do
|
|
2333
|
-
person.preferences.create(name: "Test")
|
|
2473
|
+
person.preferences.create!(name: "Test")
|
|
2334
2474
|
end
|
|
2335
2475
|
|
|
2336
2476
|
let!(:preference_two) do
|
|
2337
|
-
person.preferences.create(name: "OMG I has relations")
|
|
2477
|
+
person.preferences.create!(name: "OMG I has relations")
|
|
2338
2478
|
end
|
|
2339
2479
|
|
|
2340
2480
|
let!(:unrelated_pref) do
|
|
2341
|
-
Preference.create(name: "orphan annie")
|
|
2481
|
+
Preference.create!(name: "orphan annie")
|
|
2342
2482
|
end
|
|
2343
2483
|
|
|
2344
2484
|
let!(:unrelated_pref_two) do
|
|
2345
|
-
Preference.create(name: "orphan two")
|
|
2485
|
+
Preference.create!(name: "orphan two")
|
|
2346
2486
|
end
|
|
2347
2487
|
|
|
2348
2488
|
context "when providing an id" do
|
|
@@ -2420,7 +2560,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2420
2560
|
end
|
|
2421
2561
|
end
|
|
2422
2562
|
|
|
2423
|
-
context "when the ids
|
|
2563
|
+
context "when the ids match unreferenced documents" do
|
|
2424
2564
|
|
|
2425
2565
|
let(:preferences) do
|
|
2426
2566
|
person.preferences.find(
|
|
@@ -2478,11 +2618,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2478
2618
|
context "when the relation is not polymorphic" do
|
|
2479
2619
|
|
|
2480
2620
|
let(:person) do
|
|
2481
|
-
Person.create
|
|
2621
|
+
Person.create!
|
|
2482
2622
|
end
|
|
2483
2623
|
|
|
2484
2624
|
let!(:preference) do
|
|
2485
|
-
person.preferences.create(name: "Testing")
|
|
2625
|
+
person.preferences.create!(name: "Testing")
|
|
2486
2626
|
end
|
|
2487
2627
|
|
|
2488
2628
|
context "when the document exists" do
|
|
@@ -2518,11 +2658,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2518
2658
|
context "when the relation is not polymorphic" do
|
|
2519
2659
|
|
|
2520
2660
|
let(:person) do
|
|
2521
|
-
Person.create
|
|
2661
|
+
Person.create!
|
|
2522
2662
|
end
|
|
2523
2663
|
|
|
2524
2664
|
let!(:preference) do
|
|
2525
|
-
person.preferences.create(name: "Testing")
|
|
2665
|
+
person.preferences.create!(name: "Testing")
|
|
2526
2666
|
end
|
|
2527
2667
|
|
|
2528
2668
|
context "when the document exists" do
|
|
@@ -2567,11 +2707,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2567
2707
|
context "when the relation is not polymorphic" do
|
|
2568
2708
|
|
|
2569
2709
|
let(:person) do
|
|
2570
|
-
Person.create
|
|
2710
|
+
Person.create!
|
|
2571
2711
|
end
|
|
2572
2712
|
|
|
2573
2713
|
let!(:preference) do
|
|
2574
|
-
person.preferences.create(name: "Testing")
|
|
2714
|
+
person.preferences.create!(name: "Testing")
|
|
2575
2715
|
end
|
|
2576
2716
|
|
|
2577
2717
|
context "when the document exists" do
|
|
@@ -2605,15 +2745,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2605
2745
|
describe "#max" do
|
|
2606
2746
|
|
|
2607
2747
|
let(:person) do
|
|
2608
|
-
Person.create
|
|
2748
|
+
Person.create!
|
|
2609
2749
|
end
|
|
2610
2750
|
|
|
2611
2751
|
let(:preference_one) do
|
|
2612
|
-
Preference.create(ranking: 5)
|
|
2752
|
+
Preference.create!(ranking: 5)
|
|
2613
2753
|
end
|
|
2614
2754
|
|
|
2615
2755
|
let(:preference_two) do
|
|
2616
|
-
Preference.create(ranking: 10)
|
|
2756
|
+
Preference.create!(ranking: 10)
|
|
2617
2757
|
end
|
|
2618
2758
|
|
|
2619
2759
|
before do
|
|
@@ -2634,15 +2774,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2634
2774
|
describe "#max_by" do
|
|
2635
2775
|
|
|
2636
2776
|
let(:person) do
|
|
2637
|
-
Person.create
|
|
2777
|
+
Person.create!
|
|
2638
2778
|
end
|
|
2639
2779
|
|
|
2640
2780
|
let(:preference_one) do
|
|
2641
|
-
Preference.create(ranking: 5)
|
|
2781
|
+
Preference.create!(ranking: 5)
|
|
2642
2782
|
end
|
|
2643
2783
|
|
|
2644
2784
|
let(:preference_two) do
|
|
2645
|
-
Preference.create(ranking: 10)
|
|
2785
|
+
Preference.create!(ranking: 10)
|
|
2646
2786
|
end
|
|
2647
2787
|
|
|
2648
2788
|
before do
|
|
@@ -2661,19 +2801,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2661
2801
|
describe "#method_missing" do
|
|
2662
2802
|
|
|
2663
2803
|
let!(:person) do
|
|
2664
|
-
Person.create
|
|
2804
|
+
Person.create!
|
|
2665
2805
|
end
|
|
2666
2806
|
|
|
2667
2807
|
let!(:preference_one) do
|
|
2668
|
-
person.preferences.create(name: "First", value: "Posting")
|
|
2808
|
+
person.preferences.create!(name: "First", value: "Posting")
|
|
2669
2809
|
end
|
|
2670
2810
|
|
|
2671
2811
|
let!(:preference_two) do
|
|
2672
|
-
person.preferences.create(name: "Second", value: "Testing")
|
|
2812
|
+
person.preferences.create!(name: "Second", value: "Testing")
|
|
2673
2813
|
end
|
|
2674
2814
|
|
|
2675
2815
|
let!(:unrelated) do
|
|
2676
|
-
Preference.create(name: "Third")
|
|
2816
|
+
Preference.create!(name: "Third")
|
|
2677
2817
|
end
|
|
2678
2818
|
|
|
2679
2819
|
context "when providing a single criteria" do
|
|
@@ -2686,7 +2826,8 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2686
2826
|
expect(preferences).to eq([ preference_one ])
|
|
2687
2827
|
end
|
|
2688
2828
|
|
|
2689
|
-
context 'when providing a collation'
|
|
2829
|
+
context 'when providing a collation' do
|
|
2830
|
+
min_server_version '3.4'
|
|
2690
2831
|
|
|
2691
2832
|
let(:preferences) do
|
|
2692
2833
|
person.preferences.where(name: "FIRST").collation(locale: 'en_US', strength: 2).to_a
|
|
@@ -2747,7 +2888,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2747
2888
|
context "when the inverse relation is not defined" do
|
|
2748
2889
|
|
|
2749
2890
|
let!(:house) do
|
|
2750
|
-
person.houses.create(name: "Wayne Manor")
|
|
2891
|
+
person.houses.create!(name: "Wayne Manor")
|
|
2751
2892
|
end
|
|
2752
2893
|
|
|
2753
2894
|
it "returns the distinct values for the fields" do
|
|
@@ -2761,15 +2902,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2761
2902
|
describe "#min" do
|
|
2762
2903
|
|
|
2763
2904
|
let(:person) do
|
|
2764
|
-
Person.create
|
|
2905
|
+
Person.create!
|
|
2765
2906
|
end
|
|
2766
2907
|
|
|
2767
2908
|
let(:preference_one) do
|
|
2768
|
-
Preference.create(ranking: 5)
|
|
2909
|
+
Preference.create!(ranking: 5)
|
|
2769
2910
|
end
|
|
2770
2911
|
|
|
2771
2912
|
let(:preference_two) do
|
|
2772
|
-
Preference.create(ranking: 10)
|
|
2913
|
+
Preference.create!(ranking: 10)
|
|
2773
2914
|
end
|
|
2774
2915
|
|
|
2775
2916
|
before do
|
|
@@ -2790,15 +2931,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2790
2931
|
describe "#min_by" do
|
|
2791
2932
|
|
|
2792
2933
|
let(:person) do
|
|
2793
|
-
Person.create
|
|
2934
|
+
Person.create!
|
|
2794
2935
|
end
|
|
2795
2936
|
|
|
2796
2937
|
let(:preference_one) do
|
|
2797
|
-
Preference.create(ranking: 5)
|
|
2938
|
+
Preference.create!(ranking: 5)
|
|
2798
2939
|
end
|
|
2799
2940
|
|
|
2800
2941
|
let(:preference_two) do
|
|
2801
|
-
Preference.create(ranking: 10)
|
|
2942
|
+
Preference.create!(ranking: 10)
|
|
2802
2943
|
end
|
|
2803
2944
|
|
|
2804
2945
|
before do
|
|
@@ -2824,15 +2965,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2824
2965
|
describe "#nullify_all" do
|
|
2825
2966
|
|
|
2826
2967
|
let(:person) do
|
|
2827
|
-
Person.create
|
|
2968
|
+
Person.create!
|
|
2828
2969
|
end
|
|
2829
2970
|
|
|
2830
2971
|
let!(:preference_one) do
|
|
2831
|
-
person.preferences.create(name: "One")
|
|
2972
|
+
person.preferences.create!(name: "One")
|
|
2832
2973
|
end
|
|
2833
2974
|
|
|
2834
2975
|
let!(:preference_two) do
|
|
2835
|
-
person.preferences.create(name: "Two")
|
|
2976
|
+
person.preferences.create!(name: "Two")
|
|
2836
2977
|
end
|
|
2837
2978
|
|
|
2838
2979
|
before do
|
|
@@ -2878,9 +3019,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2878
3019
|
person.preferences
|
|
2879
3020
|
end
|
|
2880
3021
|
|
|
2881
|
-
Array.public_instance_methods.each do |method|
|
|
3022
|
+
Array.public_instance_methods.sort.each do |method|
|
|
3023
|
+
|
|
3024
|
+
context "when checking Array##{method}" do
|
|
2882
3025
|
|
|
2883
|
-
|
|
3026
|
+
before do
|
|
3027
|
+
expect([].respond_to?(method)).to be true
|
|
3028
|
+
end
|
|
2884
3029
|
|
|
2885
3030
|
it "returns true" do
|
|
2886
3031
|
expect(preferences.respond_to?(method)).to be true
|
|
@@ -2888,9 +3033,9 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2888
3033
|
end
|
|
2889
3034
|
end
|
|
2890
3035
|
|
|
2891
|
-
Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy.public_instance_methods.each do |method|
|
|
3036
|
+
Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy.public_instance_methods.sort.each do |method|
|
|
2892
3037
|
|
|
2893
|
-
context "when checking
|
|
3038
|
+
context "when checking Proxy##{method}" do
|
|
2894
3039
|
|
|
2895
3040
|
it "returns true" do
|
|
2896
3041
|
expect(preferences.respond_to?(method)).to be true
|
|
@@ -2898,9 +3043,9 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2898
3043
|
end
|
|
2899
3044
|
end
|
|
2900
3045
|
|
|
2901
|
-
Preference.scopes.keys.each do |method|
|
|
3046
|
+
Preference.scopes.keys.sort.each do |method|
|
|
2902
3047
|
|
|
2903
|
-
context "when checking #{method}" do
|
|
3048
|
+
context "when checking scope #{method}" do
|
|
2904
3049
|
|
|
2905
3050
|
it "returns true" do
|
|
2906
3051
|
expect(preferences.respond_to?(method)).to be true
|
|
@@ -2911,20 +3056,36 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2911
3056
|
|
|
2912
3057
|
describe "#scoped" do
|
|
2913
3058
|
|
|
2914
|
-
let(:person) do
|
|
2915
|
-
Person.new
|
|
2916
|
-
end
|
|
2917
|
-
|
|
2918
3059
|
let(:scoped) do
|
|
2919
3060
|
person.preferences.scoped
|
|
2920
3061
|
end
|
|
2921
3062
|
|
|
2922
|
-
|
|
2923
|
-
|
|
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
|
|
2924
3076
|
end
|
|
2925
3077
|
|
|
2926
|
-
|
|
2927
|
-
|
|
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
|
|
2928
3089
|
end
|
|
2929
3090
|
end
|
|
2930
3091
|
|
|
@@ -2933,13 +3094,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2933
3094
|
describe "##{method}" do
|
|
2934
3095
|
|
|
2935
3096
|
let(:person) do
|
|
2936
|
-
Person.create
|
|
3097
|
+
Person.create!
|
|
2937
3098
|
end
|
|
2938
3099
|
|
|
2939
3100
|
context "when documents have been persisted" do
|
|
2940
3101
|
|
|
2941
3102
|
let!(:preference) do
|
|
2942
|
-
person.preferences.create(name: "Testing")
|
|
3103
|
+
person.preferences.create!(name: "Testing")
|
|
2943
3104
|
end
|
|
2944
3105
|
|
|
2945
3106
|
it "returns the number of documents" do
|
|
@@ -2951,7 +3112,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2951
3112
|
|
|
2952
3113
|
before do
|
|
2953
3114
|
person.preferences.build(name: "Test")
|
|
2954
|
-
person.preferences.create(name: "Test 2")
|
|
3115
|
+
person.preferences.create!(name: "Test 2")
|
|
2955
3116
|
end
|
|
2956
3117
|
|
|
2957
3118
|
it "returns the total number of documents" do
|
|
@@ -2966,15 +3127,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2966
3127
|
context "when the relation has no default scope" do
|
|
2967
3128
|
|
|
2968
3129
|
let!(:person) do
|
|
2969
|
-
Person.create
|
|
3130
|
+
Person.create!
|
|
2970
3131
|
end
|
|
2971
3132
|
|
|
2972
3133
|
let!(:preference_one) do
|
|
2973
|
-
person.preferences.create(name: "first")
|
|
3134
|
+
person.preferences.create!(name: "first")
|
|
2974
3135
|
end
|
|
2975
3136
|
|
|
2976
3137
|
let!(:preference_two) do
|
|
2977
|
-
Preference.create(name: "second")
|
|
3138
|
+
Preference.create!(name: "second")
|
|
2978
3139
|
end
|
|
2979
3140
|
|
|
2980
3141
|
let(:unscoped) do
|
|
@@ -2989,15 +3150,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
2989
3150
|
context "when the relation has a default scope" do
|
|
2990
3151
|
|
|
2991
3152
|
let!(:person) do
|
|
2992
|
-
Person.create
|
|
3153
|
+
Person.create!
|
|
2993
3154
|
end
|
|
2994
3155
|
|
|
2995
3156
|
let!(:house_one) do
|
|
2996
|
-
person.houses.create(name: "first")
|
|
3157
|
+
person.houses.create!(name: "first")
|
|
2997
3158
|
end
|
|
2998
3159
|
|
|
2999
3160
|
let!(:house_two) do
|
|
3000
|
-
House.create(name: "second")
|
|
3161
|
+
House.create!(name: "second")
|
|
3001
3162
|
end
|
|
3002
3163
|
|
|
3003
3164
|
let(:unscoped) do
|
|
@@ -3033,10 +3194,10 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3033
3194
|
end
|
|
3034
3195
|
|
|
3035
3196
|
before do
|
|
3036
|
-
person.update_attributes(
|
|
3197
|
+
person.update_attributes!(
|
|
3037
3198
|
houses: [ wife_house, exwife_house, girlfriend_house ]
|
|
3038
3199
|
)
|
|
3039
|
-
person.update_attributes(house_ids: [ girlfriend_house.id ])
|
|
3200
|
+
person.update_attributes!(house_ids: [ girlfriend_house.id ])
|
|
3040
3201
|
end
|
|
3041
3202
|
|
|
3042
3203
|
context "when reloading" do
|
|
@@ -3083,7 +3244,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3083
3244
|
end
|
|
3084
3245
|
|
|
3085
3246
|
let!(:business) do
|
|
3086
|
-
Business.create(name: "serious", owners: [ user ])
|
|
3247
|
+
Business.create!(name: "serious", owners: [ user ])
|
|
3087
3248
|
end
|
|
3088
3249
|
|
|
3089
3250
|
before do
|
|
@@ -3126,11 +3287,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3126
3287
|
context "when the documents are persisted" do
|
|
3127
3288
|
|
|
3128
3289
|
let(:user) do
|
|
3129
|
-
User.create(name: "tst")
|
|
3290
|
+
User.create!(name: "tst")
|
|
3130
3291
|
end
|
|
3131
3292
|
|
|
3132
3293
|
let(:business) do
|
|
3133
|
-
Business.create(name: "srs", owners: [ user ])
|
|
3294
|
+
Business.create!(name: "srs", owners: [ user ])
|
|
3134
3295
|
end
|
|
3135
3296
|
|
|
3136
3297
|
before do
|
|
@@ -3174,11 +3335,11 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3174
3335
|
context "when binding the relation multiple times" do
|
|
3175
3336
|
|
|
3176
3337
|
let(:person) do
|
|
3177
|
-
Person.create
|
|
3338
|
+
Person.create!
|
|
3178
3339
|
end
|
|
3179
3340
|
|
|
3180
3341
|
let(:preference) do
|
|
3181
|
-
person.preferences.create(name: "testing")
|
|
3342
|
+
person.preferences.create!(name: "testing")
|
|
3182
3343
|
end
|
|
3183
3344
|
|
|
3184
3345
|
before do
|
|
@@ -3197,19 +3358,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3197
3358
|
context "when the association has order criteria" do
|
|
3198
3359
|
|
|
3199
3360
|
let(:person) do
|
|
3200
|
-
Person.create
|
|
3361
|
+
Person.create!
|
|
3201
3362
|
end
|
|
3202
3363
|
|
|
3203
3364
|
let(:preference_one) do
|
|
3204
|
-
OrderedPreference.create(name: 'preference-1', value: 10)
|
|
3365
|
+
OrderedPreference.create!(name: 'preference-1', value: 10)
|
|
3205
3366
|
end
|
|
3206
3367
|
|
|
3207
3368
|
let(:preference_two) do
|
|
3208
|
-
OrderedPreference.create(name: 'preference-2', value: 20)
|
|
3369
|
+
OrderedPreference.create!(name: 'preference-2', value: 20)
|
|
3209
3370
|
end
|
|
3210
3371
|
|
|
3211
3372
|
let(:preference_three) do
|
|
3212
|
-
OrderedPreference.create(name: 'preference-3', value: 20)
|
|
3373
|
+
OrderedPreference.create!(name: 'preference-3', value: 20)
|
|
3213
3374
|
end
|
|
3214
3375
|
|
|
3215
3376
|
before do
|
|
@@ -3233,7 +3394,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3233
3394
|
context "when the parent is not a new record and freshly loaded" do
|
|
3234
3395
|
|
|
3235
3396
|
let(:person) do
|
|
3236
|
-
Person.create
|
|
3397
|
+
Person.create!
|
|
3237
3398
|
end
|
|
3238
3399
|
|
|
3239
3400
|
let(:preference) do
|
|
@@ -3242,7 +3403,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3242
3403
|
|
|
3243
3404
|
before do
|
|
3244
3405
|
person.preferences = [ preference ]
|
|
3245
|
-
person.save
|
|
3406
|
+
person.save!
|
|
3246
3407
|
person.reload
|
|
3247
3408
|
person.preferences = nil
|
|
3248
3409
|
end
|
|
@@ -3265,15 +3426,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3265
3426
|
context "when reloading the relation" do
|
|
3266
3427
|
|
|
3267
3428
|
let!(:person) do
|
|
3268
|
-
Person.create
|
|
3429
|
+
Person.create!
|
|
3269
3430
|
end
|
|
3270
3431
|
|
|
3271
3432
|
let!(:preference_one) do
|
|
3272
|
-
Preference.create(name: "one")
|
|
3433
|
+
Preference.create!(name: "one")
|
|
3273
3434
|
end
|
|
3274
3435
|
|
|
3275
3436
|
let!(:preference_two) do
|
|
3276
|
-
Preference.create(name: "two")
|
|
3437
|
+
Preference.create!(name: "two")
|
|
3277
3438
|
end
|
|
3278
3439
|
|
|
3279
3440
|
before do
|
|
@@ -3317,7 +3478,7 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3317
3478
|
context "when the document is new" do
|
|
3318
3479
|
|
|
3319
3480
|
let!(:person) do
|
|
3320
|
-
Person.create(preference_names: "one, two")
|
|
3481
|
+
Person.create!(preference_names: "one, two")
|
|
3321
3482
|
end
|
|
3322
3483
|
|
|
3323
3484
|
let(:preference_one) do
|
|
@@ -3353,23 +3514,23 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3353
3514
|
end
|
|
3354
3515
|
|
|
3355
3516
|
let(:preference_one) do
|
|
3356
|
-
Preference.create(name: "one")
|
|
3517
|
+
Preference.create!(name: "one")
|
|
3357
3518
|
end
|
|
3358
3519
|
|
|
3359
3520
|
let(:preference_two) do
|
|
3360
|
-
Preference.create(name: "two")
|
|
3521
|
+
Preference.create!(name: "two")
|
|
3361
3522
|
end
|
|
3362
3523
|
|
|
3363
3524
|
before do
|
|
3364
3525
|
person.preference_ids = [ preference_one.id, preference_two.id ]
|
|
3365
|
-
person.save
|
|
3526
|
+
person.save!
|
|
3366
3527
|
end
|
|
3367
3528
|
|
|
3368
3529
|
context "and the order is changed" do
|
|
3369
3530
|
|
|
3370
3531
|
before do
|
|
3371
3532
|
person.preference_ids = [ preference_two.id, preference_one.id ]
|
|
3372
|
-
person.save
|
|
3533
|
+
person.save!
|
|
3373
3534
|
end
|
|
3374
3535
|
|
|
3375
3536
|
let(:reloaded) do
|
|
@@ -3386,13 +3547,13 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3386
3547
|
context "and the order is changed and an element is added" do
|
|
3387
3548
|
|
|
3388
3549
|
let(:preference_three) do
|
|
3389
|
-
Preference.create(name: "three")
|
|
3550
|
+
Preference.create!(name: "three")
|
|
3390
3551
|
end
|
|
3391
3552
|
|
|
3392
3553
|
before do
|
|
3393
3554
|
person.preference_ids =
|
|
3394
3555
|
[ preference_two.id, preference_one.id, preference_three.id ]
|
|
3395
|
-
person.save
|
|
3556
|
+
person.save!
|
|
3396
3557
|
end
|
|
3397
3558
|
|
|
3398
3559
|
let(:reloaded) do
|
|
@@ -3409,16 +3570,16 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3409
3570
|
context "and the order is changed and an element is removed" do
|
|
3410
3571
|
|
|
3411
3572
|
let(:preference_three) do
|
|
3412
|
-
Preference.create(name: "three")
|
|
3573
|
+
Preference.create!(name: "three")
|
|
3413
3574
|
end
|
|
3414
3575
|
|
|
3415
3576
|
before do
|
|
3416
3577
|
person.preference_ids =
|
|
3417
3578
|
[ preference_one.id, preference_two.id, preference_three.id ]
|
|
3418
|
-
person.save
|
|
3579
|
+
person.save!
|
|
3419
3580
|
person.preference_ids =
|
|
3420
3581
|
[ preference_three.id, preference_two.id ]
|
|
3421
|
-
person.save
|
|
3582
|
+
person.save!
|
|
3422
3583
|
end
|
|
3423
3584
|
|
|
3424
3585
|
let(:reloaded) do
|
|
@@ -3468,15 +3629,15 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3468
3629
|
context "when the relation exists" do
|
|
3469
3630
|
|
|
3470
3631
|
let!(:person) do
|
|
3471
|
-
Person.create
|
|
3632
|
+
Person.create!
|
|
3472
3633
|
end
|
|
3473
3634
|
|
|
3474
3635
|
let!(:pref_one) do
|
|
3475
|
-
person.preferences.create
|
|
3636
|
+
person.preferences.create!
|
|
3476
3637
|
end
|
|
3477
3638
|
|
|
3478
3639
|
let!(:pref_two) do
|
|
3479
|
-
Preference.create
|
|
3640
|
+
Preference.create!
|
|
3480
3641
|
end
|
|
3481
3642
|
|
|
3482
3643
|
before do
|
|
@@ -3492,15 +3653,19 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3492
3653
|
context "when using a different primary key" do
|
|
3493
3654
|
|
|
3494
3655
|
let(:dog) do
|
|
3495
|
-
Dog.create(name: 'Doggie')
|
|
3656
|
+
Dog.create!(name: 'Doggie')
|
|
3496
3657
|
end
|
|
3497
3658
|
|
|
3498
3659
|
let(:cat) do
|
|
3499
|
-
Cat.create(name: 'Kitty')
|
|
3660
|
+
Cat.create!(name: 'Kitty')
|
|
3661
|
+
end
|
|
3662
|
+
|
|
3663
|
+
let(:another_cat) do
|
|
3664
|
+
Cat.create!(name: 'Kitten')
|
|
3500
3665
|
end
|
|
3501
3666
|
|
|
3502
3667
|
let(:fire_hydrant) do
|
|
3503
|
-
FireHydrant.create(location: '221B Baker Street')
|
|
3668
|
+
FireHydrant.create!(location: '221B Baker Street')
|
|
3504
3669
|
end
|
|
3505
3670
|
|
|
3506
3671
|
context "when adding to a one-way many to many" do
|
|
@@ -3514,6 +3679,28 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3514
3679
|
end
|
|
3515
3680
|
end
|
|
3516
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
|
+
|
|
3517
3704
|
context "when adding to a two-way many to many" do
|
|
3518
3705
|
|
|
3519
3706
|
before do
|
|
@@ -3570,10 +3757,10 @@ describe Mongoid::Association::Referenced::HasAndBelongsToMany::Proxy do
|
|
|
3570
3757
|
end
|
|
3571
3758
|
|
|
3572
3759
|
it "should assign relation from both sides" do
|
|
3573
|
-
p1 = Project.create name: 'Foo'
|
|
3574
|
-
p2 = Project.create name: 'Bar'
|
|
3575
|
-
d1 = Distributor.create name: 'Rock'
|
|
3576
|
-
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'
|
|
3577
3764
|
|
|
3578
3765
|
p1.distributors << d1
|
|
3579
3766
|
expect(p1.d_ids).to match_array([d1.id])
|