mongoid 7.0.13 → 8.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +30 -30
- data/README.md +32 -19
- data/Rakefile +43 -0
- data/lib/config/locales/en.yml +178 -95
- data/lib/mongoid/association/accessors.rb +175 -83
- data/lib/mongoid/association/bindable.rb +57 -28
- data/lib/mongoid/association/builders.rb +8 -14
- data/lib/mongoid/association/constrainable.rb +5 -7
- data/lib/mongoid/association/depending.rb +9 -18
- data/lib/mongoid/association/eager_loadable.rb +31 -10
- data/lib/mongoid/association/embedded/batchable.rb +67 -53
- data/lib/mongoid/association/embedded/cyclic.rb +10 -17
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +27 -9
- 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 +9 -28
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +5 -8
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +8 -5
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +143 -122
- data/lib/mongoid/association/embedded/embeds_many.rb +8 -36
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +26 -9
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +63 -29
- data/lib/mongoid/association/embedded/embeds_one.rb +9 -33
- data/lib/mongoid/association/embedded.rb +2 -0
- data/lib/mongoid/association/macros.rb +71 -41
- data/lib/mongoid/association/many.rb +25 -35
- data/lib/mongoid/association/marshalable.rb +3 -6
- data/lib/mongoid/association/nested/many.rb +22 -30
- data/lib/mongoid/association/nested/nested_buildable.rb +9 -15
- data/lib/mongoid/association/nested/one.rb +19 -30
- data/lib/mongoid/association/nested.rb +3 -3
- data/lib/mongoid/association/one.rb +5 -12
- data/lib/mongoid/association/options.rb +16 -46
- data/lib/mongoid/association/proxy.rb +37 -38
- data/lib/mongoid/association/referenced/auto_save.rb +9 -14
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +5 -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 +19 -31
- data/lib/mongoid/association/referenced/belongs_to.rb +16 -38
- data/lib/mongoid/association/referenced/counter_cache.rb +14 -25
- data/lib/mongoid/association/referenced/eager.rb +41 -40
- 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 +105 -68
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +29 -46
- 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 +440 -456
- data/lib/mongoid/association/referenced/has_many/proxy.rb +101 -124
- data/lib/mongoid/association/referenced/has_many.rb +21 -45
- 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 +16 -29
- data/lib/mongoid/association/referenced/has_one/proxy.rb +25 -30
- data/lib/mongoid/association/referenced/has_one.rb +16 -36
- data/lib/mongoid/association/referenced/syncable.rb +11 -26
- data/lib/mongoid/association/referenced.rb +2 -0
- data/lib/mongoid/association/reflections.rb +7 -6
- data/lib/mongoid/association/relatable.rb +62 -84
- data/lib/mongoid/association.rb +13 -27
- data/lib/mongoid/atomic/modifiers.rb +29 -53
- data/lib/mongoid/atomic/paths/embedded/many.rb +23 -7
- data/lib/mongoid/atomic/paths/embedded/one.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded.rb +2 -3
- data/lib/mongoid/atomic/paths/root.rb +4 -7
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +45 -51
- data/lib/mongoid/attributes/dynamic.rb +6 -21
- data/lib/mongoid/attributes/nested.rb +11 -14
- data/lib/mongoid/attributes/processing.rb +46 -30
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +5 -8
- data/lib/mongoid/attributes.rb +80 -98
- data/lib/mongoid/cacheable.rb +7 -10
- data/lib/mongoid/changeable.rb +49 -70
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +15 -14
- data/lib/mongoid/clients/sessions.rb +4 -20
- data/lib/mongoid/clients/storage_options.rb +7 -12
- data/lib/mongoid/clients/validators/storage.rb +5 -12
- 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 +30 -5
- data/lib/mongoid/config/options.rb +23 -23
- data/lib/mongoid/config/validators/client.rb +8 -23
- data/lib/mongoid/config/validators/option.rb +2 -3
- data/lib/mongoid/config/validators.rb +2 -1
- data/lib/mongoid/config.rb +164 -48
- data/lib/mongoid/contextual/aggregable/memory.rb +40 -27
- data/lib/mongoid/contextual/aggregable/mongo.rb +32 -33
- 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 +13 -44
- data/lib/mongoid/contextual/map_reduce.rb +7 -35
- data/lib/mongoid/contextual/memory.rb +187 -81
- data/lib/mongoid/contextual/mongo.rb +360 -239
- data/lib/mongoid/contextual/none.rb +109 -31
- data/lib/mongoid/contextual/queryable.rb +3 -4
- data/lib/mongoid/contextual.rb +9 -11
- data/lib/mongoid/copyable.rb +42 -17
- data/lib/mongoid/criteria/findable.rb +19 -19
- data/lib/mongoid/criteria/includable.rb +30 -33
- data/lib/mongoid/criteria/inspectable.rb +2 -3
- data/lib/mongoid/criteria/marshalable.rb +12 -7
- data/lib/mongoid/criteria/modifiable.rb +2 -19
- data/lib/mongoid/criteria/options.rb +2 -3
- data/lib/mongoid/criteria/permission.rb +3 -2
- data/lib/mongoid/criteria/queryable/aggregable.rb +4 -15
- data/lib/mongoid/criteria/queryable/expandable.rb +68 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +7 -41
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +28 -8
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +5 -6
- data/lib/mongoid/criteria/queryable/extensions/date.rb +9 -9
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +11 -12
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +4 -41
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +4 -21
- data/lib/mongoid/criteria/queryable/extensions/object.rb +6 -30
- data/lib/mongoid/criteria/queryable/extensions/range.rb +49 -17
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +9 -16
- data/lib/mongoid/criteria/queryable/extensions/set.rb +4 -5
- data/lib/mongoid/criteria/queryable/extensions/string.rb +7 -32
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +7 -22
- data/lib/mongoid/criteria/queryable/extensions/time.rb +9 -9
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +9 -9
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -4
- data/lib/mongoid/criteria/queryable/key.rb +39 -24
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +200 -40
- data/lib/mongoid/criteria/queryable/optional.rb +10 -59
- data/lib/mongoid/criteria/queryable/options.rb +4 -21
- data/lib/mongoid/criteria/queryable/pipeline.rb +5 -15
- data/lib/mongoid/criteria/queryable/selectable.rb +417 -171
- data/lib/mongoid/criteria/queryable/selector.rb +127 -30
- data/lib/mongoid/criteria/queryable/smash.rb +42 -18
- data/lib/mongoid/criteria/queryable/storable.rb +237 -0
- data/lib/mongoid/criteria/queryable.rb +18 -15
- data/lib/mongoid/criteria/scopable.rb +29 -21
- data/lib/mongoid/criteria/translator.rb +45 -0
- data/lib/mongoid/criteria.rb +95 -107
- data/lib/mongoid/deprecable.rb +37 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +148 -97
- data/lib/mongoid/equality.rb +35 -18
- 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 +35 -21
- 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 +3 -4
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +3 -4
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +24 -0
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -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 +8 -7
- 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_field_type.rb +26 -0
- 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 +5 -10
- 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 +3 -4
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -3
- data/lib/mongoid/errors/invalid_time.rb +2 -3
- 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 +6 -13
- 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 +3 -4
- data/lib/mongoid/errors/no_client_hosts.rb +3 -4
- 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 +3 -4
- 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 +3 -1
- data/lib/mongoid/errors/unknown_attribute.rb +3 -4
- 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 +14 -3
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +37 -44
- data/lib/mongoid/extensions/big_decimal.rb +35 -21
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +10 -6
- data/lib/mongoid/extensions/date.rb +32 -25
- data/lib/mongoid/extensions/date_time.rb +5 -13
- data/lib/mongoid/extensions/decimal128.rb +2 -5
- data/lib/mongoid/extensions/false_class.rb +5 -8
- data/lib/mongoid/extensions/float.rb +12 -14
- data/lib/mongoid/extensions/hash.rb +87 -45
- data/lib/mongoid/extensions/integer.rb +12 -16
- data/lib/mongoid/extensions/module.rb +3 -4
- data/lib/mongoid/extensions/nil_class.rb +2 -5
- data/lib/mongoid/extensions/object.rb +25 -50
- data/lib/mongoid/extensions/object_id.rb +2 -7
- data/lib/mongoid/extensions/range.rb +42 -20
- data/lib/mongoid/extensions/regexp.rb +13 -7
- data/lib/mongoid/extensions/set.rb +13 -11
- data/lib/mongoid/extensions/string.rb +30 -61
- data/lib/mongoid/extensions/symbol.rb +6 -22
- data/lib/mongoid/extensions/time.rb +37 -23
- data/lib/mongoid/extensions/time_with_zone.rb +26 -9
- data/lib/mongoid/extensions/true_class.rb +5 -8
- data/lib/mongoid/extensions.rb +19 -3
- data/lib/mongoid/factory.rb +104 -17
- data/lib/mongoid/fields/foreign_key.rb +14 -26
- data/lib/mongoid/fields/localized.rb +11 -15
- data/lib/mongoid/fields/standard.rb +13 -43
- data/lib/mongoid/fields/validators/macro.rb +32 -20
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +328 -85
- data/lib/mongoid/findable.rb +90 -33
- data/lib/mongoid/indexable/specification.rb +5 -18
- data/lib/mongoid/indexable/validators/options.rb +8 -9
- data/lib/mongoid/indexable.rb +6 -21
- data/lib/mongoid/inspectable.rb +4 -11
- data/lib/mongoid/interceptable.rb +191 -41
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +3 -154
- 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 +130 -0
- data/lib/mongoid/persistable/creatable.rb +22 -30
- data/lib/mongoid/persistable/deletable.rb +6 -22
- data/lib/mongoid/persistable/destroyable.rb +12 -11
- data/lib/mongoid/persistable/incrementable.rb +6 -7
- data/lib/mongoid/persistable/logical.rb +4 -6
- data/lib/mongoid/persistable/poppable.rb +3 -6
- data/lib/mongoid/persistable/pullable.rb +3 -8
- data/lib/mongoid/persistable/pushable.rb +3 -8
- data/lib/mongoid/persistable/renamable.rb +10 -8
- data/lib/mongoid/persistable/savable.rb +5 -10
- data/lib/mongoid/persistable/settable.rb +3 -6
- data/lib/mongoid/persistable/unsettable.rb +9 -9
- data/lib/mongoid/persistable/updatable.rb +50 -31
- data/lib/mongoid/persistable/upsertable.rb +5 -10
- data/lib/mongoid/persistable.rb +135 -40
- data/lib/mongoid/persistence_context.rb +85 -45
- data/lib/mongoid/positional.rb +2 -5
- data/lib/mongoid/query_cache.rb +13 -280
- data/lib/mongoid/railtie.rb +3 -16
- data/lib/mongoid/railties/controller_runtime.rb +4 -2
- data/lib/mongoid/railties/database.rake +9 -0
- data/lib/mongoid/reloadable.rb +19 -22
- data/lib/mongoid/scopable.rb +34 -57
- data/lib/mongoid/selectable.rb +8 -18
- data/lib/mongoid/serializable.rb +33 -34
- data/lib/mongoid/shardable.rb +108 -21
- data/lib/mongoid/stateful.rb +38 -19
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +12 -5
- data/lib/mongoid/tasks/database.rb +85 -7
- data/lib/mongoid/threaded/lifecycle.rb +7 -26
- data/lib/mongoid/threaded.rb +44 -67
- data/lib/mongoid/timestamps/created/short.rb +2 -1
- data/lib/mongoid/timestamps/created.rb +4 -3
- 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 +5 -6
- data/lib/mongoid/timestamps.rb +3 -2
- data/lib/mongoid/touchable.rb +54 -25
- data/lib/mongoid/traversable.rb +185 -61
- data/lib/mongoid/validatable/associated.rb +99 -22
- data/lib/mongoid/validatable/format.rb +2 -1
- data/lib/mongoid/validatable/length.rb +2 -1
- data/lib/mongoid/validatable/localizable.rb +3 -4
- data/lib/mongoid/validatable/macros.rb +2 -9
- data/lib/mongoid/validatable/presence.rb +10 -15
- data/lib/mongoid/validatable/queryable.rb +2 -3
- data/lib/mongoid/validatable/uniqueness.rb +29 -41
- data/lib/mongoid/validatable.rb +22 -33
- data/lib/mongoid/version.rb +2 -2
- data/lib/mongoid/warnings.rb +28 -0
- data/lib/mongoid.rb +34 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +2 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +53 -32
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -2
- data/lib/rails/generators/mongoid_generator.rb +2 -1
- data/lib/rails/mongoid.rb +4 -5
- data/spec/README.md +19 -4
- data/spec/config/mongoid.yml +17 -0
- data/spec/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/app_spec.rb +31 -27
- data/spec/integration/associations/belongs_to_spec.rb +20 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +57 -0
- data/spec/integration/associations/embedded_spec.rb +162 -55
- data/spec/integration/associations/embeds_many_spec.rb +219 -0
- data/spec/integration/associations/embeds_one_spec.rb +41 -0
- data/spec/integration/associations/foreign_key_spec.rb +107 -0
- data/spec/integration/associations/foreign_key_spec_models.rb +64 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +61 -0
- data/spec/integration/associations/has_many_spec.rb +128 -0
- data/spec/integration/associations/has_one_spec.rb +272 -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 +107 -1
- data/spec/integration/callbacks_spec.rb +262 -8
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +1 -2
- data/spec/integration/criteria/default_scope_spec.rb +72 -0
- data/spec/integration/criteria/logical_spec.rb +124 -0
- data/spec/integration/criteria/range_spec.rb +359 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +125 -15
- data/spec/integration/discriminator_key_spec.rb +392 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +30 -1
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +73 -0
- data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +130 -45
- 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 +41 -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 +122 -0
- data/spec/integration/matcher_spec.rb +283 -0
- data/spec/integration/persistence/range_field_spec.rb +350 -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 +18 -6
- data/spec/mongoid/association/accessors_spec.rb +284 -77
- data/spec/mongoid/association/auto_save_spec.rb +74 -33
- data/spec/mongoid/association/builders_spec.rb +3 -1
- data/spec/mongoid/association/constrainable_spec.rb +2 -0
- data/spec/mongoid/association/counter_cache_spec.rb +35 -33
- data/spec/mongoid/association/depending_spec.rb +431 -338
- data/spec/mongoid/association/eager_spec.rb +8 -5
- 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 +4 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +56 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +84 -22
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +3 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +114 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +687 -173
- data/spec/mongoid/association/embedded/embeds_many_models.rb +174 -1
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +63 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +71 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +27 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +23 -21
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +22 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +28 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +31 -1
- data/spec/mongoid/association/macros_spec.rb +11 -9
- data/spec/mongoid/association/nested/many_spec.rb +2 -0
- data/spec/mongoid/association/nested/one_spec.rb +18 -12
- data/spec/mongoid/association/options_spec.rb +2 -0
- data/spec/mongoid/association/polymorphic_spec.rb +2 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +4 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +111 -16
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +242 -12
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +114 -58
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +57 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +26 -3
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +28 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +46 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +25 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +418 -361
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +68 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +39 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +81 -4
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +132 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +40 -9
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +314 -133
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +848 -451
- data/spec/mongoid/association/referenced/has_many_models.rb +61 -1
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +48 -0
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +55 -9
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +34 -4
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +135 -27
- data/spec/mongoid/association/referenced/has_one_models.rb +65 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +24 -1
- data/spec/mongoid/association/reflections_spec.rb +2 -0
- data/spec/mongoid/association/syncable_spec.rb +47 -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 +66 -26
- data/spec/mongoid/atomic_spec.rb +53 -6
- data/spec/mongoid/attributes/dynamic_spec.rb +0 -1
- data/spec/mongoid/attributes/nested_spec.rb +149 -78
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
- 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 +40 -0
- data/spec/mongoid/attributes/readonly_spec.rb +24 -22
- data/spec/mongoid/attributes_spec.rb +683 -65
- data/spec/mongoid/cacheable_spec.rb +6 -4
- data/spec/mongoid/changeable_spec.rb +185 -43
- data/spec/mongoid/clients/factory_spec.rb +128 -28
- data/spec/mongoid/clients/options_spec.rb +45 -26
- data/spec/mongoid/clients/sessions_spec.rb +25 -66
- data/spec/mongoid/clients/transactions_spec.rb +54 -29
- data/spec/mongoid/clients_spec.rb +65 -8
- data/spec/mongoid/composable_spec.rb +2 -0
- data/spec/mongoid/config/environment_spec.rb +126 -8
- data/spec/mongoid/config/options_spec.rb +22 -3
- data/spec/mongoid/config_spec.rb +377 -1
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +433 -153
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
- 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 +205 -67
- data/spec/mongoid/contextual/geo_near_spec.rb +20 -18
- data/spec/mongoid/contextual/map_reduce_spec.rb +6 -18
- data/spec/mongoid/contextual/memory_spec.rb +1360 -91
- data/spec/mongoid/contextual/mongo_spec.rb +1871 -544
- data/spec/mongoid/contextual/none_spec.rb +39 -73
- data/spec/mongoid/copyable_spec.rb +657 -26
- data/spec/mongoid/copyable_spec_models.rb +30 -0
- data/spec/mongoid/criteria/findable_spec.rb +161 -228
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/inspectable_spec.rb +2 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +20 -1
- data/spec/mongoid/criteria/modifiable_spec.rb +43 -40
- data/spec/mongoid/criteria/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +61 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +9 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +136 -26
- 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 +13 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +46 -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 -15
- 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 +73 -8
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +239 -178
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +2 -59
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +2 -59
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +34 -16
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +13 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +145 -12
- data/spec/mongoid/criteria/queryable/optional_spec.rb +18 -485
- 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 +1643 -286
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +38 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +1191 -2752
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +91 -4
- data/spec/mongoid/criteria/queryable/smash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +298 -0
- data/spec/mongoid/criteria/scopable_spec.rb +129 -0
- data/spec/mongoid/criteria/translator_spec.rb +132 -0
- data/spec/mongoid/criteria_projection_spec.rb +409 -0
- data/spec/mongoid/criteria_spec.rb +1322 -1723
- data/spec/mongoid/document_fields_spec.rb +179 -5
- data/spec/mongoid/document_persistence_context_spec.rb +0 -1
- data/spec/mongoid/document_query_spec.rb +89 -0
- data/spec/mongoid/document_spec.rb +153 -87
- 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 +78 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +2 -0
- data/spec/mongoid/errors/{eager_load_spec.rb → invalid_config_file_spec.rb} +7 -5
- 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 +3 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -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 +24 -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 +5 -3
- 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 +3 -1
- 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 +41 -45
- data/spec/mongoid/extensions/big_decimal_spec.rb +714 -212
- data/spec/mongoid/extensions/binary_spec.rb +46 -9
- data/spec/mongoid/extensions/boolean_spec.rb +70 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +339 -0
- data/spec/mongoid/extensions/date_spec.rb +58 -140
- data/spec/mongoid/extensions/date_time_spec.rb +32 -69
- 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 +66 -73
- data/spec/mongoid/extensions/hash_spec.rb +138 -3
- data/spec/mongoid/extensions/integer_spec.rb +61 -63
- 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 +257 -54
- data/spec/mongoid/extensions/regexp_spec.rb +60 -33
- data/spec/mongoid/extensions/set_spec.rb +108 -0
- data/spec/mongoid/extensions/string_spec.rb +111 -50
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +84 -0
- data/spec/mongoid/extensions/symbol_spec.rb +20 -25
- data/spec/mongoid/extensions/time_spec.rb +663 -66
- data/spec/mongoid/extensions/time_with_zone_spec.rb +50 -31
- data/spec/mongoid/extensions/true_class_spec.rb +3 -1
- data/spec/mongoid/extensions_spec.rb +16 -2
- data/spec/mongoid/factory_spec.rb +347 -27
- data/spec/mongoid/fields/foreign_key_spec.rb +2 -0
- data/spec/mongoid/fields/localized_spec.rb +43 -16
- data/spec/mongoid/fields/standard_spec.rb +2 -0
- data/spec/mongoid/fields_spec.rb +776 -80
- data/spec/mongoid/findable_spec.rb +133 -34
- data/spec/mongoid/indexable/specification_spec.rb +4 -2
- data/spec/mongoid/indexable_spec.rb +65 -18
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +955 -103
- data/spec/mongoid/interceptable_spec_models.rb +307 -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 +36 -0
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +114 -29
- data/spec/mongoid/persistable/deletable_spec.rb +274 -12
- data/spec/mongoid/persistable/destroyable_spec.rb +202 -12
- data/spec/mongoid/persistable/incrementable_spec.rb +23 -7
- data/spec/mongoid/persistable/logical_spec.rb +19 -3
- data/spec/mongoid/persistable/poppable_spec.rb +19 -3
- data/spec/mongoid/persistable/pullable_spec.rb +36 -6
- data/spec/mongoid/persistable/pushable_spec.rb +36 -6
- data/spec/mongoid/persistable/renamable_spec.rb +18 -2
- data/spec/mongoid/persistable/savable_spec.rb +188 -25
- data/spec/mongoid/persistable/settable_spec.rb +24 -8
- data/spec/mongoid/persistable/unsettable_spec.rb +19 -3
- data/spec/mongoid/persistable/updatable_spec.rb +45 -23
- data/spec/mongoid/persistable/upsertable_spec.rb +18 -2
- data/spec/mongoid/persistable_spec.rb +85 -9
- data/spec/mongoid/persistence_context_spec.rb +52 -1
- data/spec/mongoid/positional_spec.rb +2 -0
- data/spec/mongoid/query_cache_middleware_spec.rb +50 -0
- data/spec/mongoid/query_cache_spec.rb +339 -87
- data/spec/mongoid/relations/proxy_spec.rb +8 -6
- data/spec/mongoid/reloadable_spec.rb +357 -22
- data/spec/mongoid/scopable_spec.rb +121 -37
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +160 -29
- data/spec/mongoid/shardable_models.rb +75 -0
- data/spec/mongoid/shardable_spec.rb +239 -34
- data/spec/mongoid/stateful_spec.rb +31 -1
- data/spec/mongoid/tasks/database_rake_spec.rb +2 -0
- data/spec/mongoid/tasks/database_spec.rb +2 -0
- data/spec/mongoid/threaded_spec.rb +4 -2
- data/spec/mongoid/timestamps/created/short_spec.rb +3 -1
- data/spec/mongoid/timestamps/created_spec.rb +3 -1
- data/spec/mongoid/timestamps/timeless_spec.rb +4 -2
- data/spec/mongoid/timestamps/updated/short_spec.rb +5 -3
- data/spec/mongoid/timestamps/updated_spec.rb +5 -3
- data/spec/mongoid/timestamps_spec.rb +398 -6
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +296 -33
- data/spec/mongoid/touchable_spec_models.rb +57 -0
- data/spec/mongoid/traversable_spec.rb +1160 -1
- data/spec/mongoid/validatable/associated_spec.rb +15 -30
- 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 +128 -98
- data/spec/mongoid/validatable_spec.rb +5 -3
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +3 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +5 -3
- data/spec/rails/mongoid_spec.rb +8 -18
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/cluster_config.rb +14 -4
- data/spec/shared/lib/mrss/constraints.rb +51 -27
- data/spec/shared/lib/mrss/docker_runner.rb +37 -4
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +210 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +48 -1
- data/spec/shared/lib/mrss/server_version_registry.rb +16 -18
- 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 +18 -1
- data/spec/shared/lib/mrss/utils.rb +28 -6
- data/spec/shared/share/Dockerfile.erb +156 -66
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/config.sh +27 -0
- data/spec/shared/shlib/distro.sh +2 -1
- data/spec/shared/shlib/server.sh +171 -45
- data/spec/shared/shlib/set_env.sh +47 -6
- data/spec/spec_helper.rb +38 -36
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +39 -8
- data/spec/support/expectations.rb +5 -1
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +77 -0
- data/spec/{app → support}/models/account.rb +3 -1
- data/spec/{app → support}/models/acolyte.rb +2 -0
- data/spec/{app → support}/models/actor.rb +3 -1
- data/spec/support/models/actress.rb +4 -0
- data/spec/{app → support}/models/address.rb +6 -0
- data/spec/{app → support}/models/address_component.rb +2 -0
- data/spec/{app → support}/models/address_number.rb +2 -0
- data/spec/{app → support}/models/agency.rb +2 -0
- data/spec/{app → support}/models/agent.rb +2 -0
- data/spec/{app → support}/models/album.rb +2 -0
- data/spec/{app → support}/models/alert.rb +2 -0
- data/spec/{app → support}/models/animal.rb +2 -0
- data/spec/{app → support}/models/answer.rb +2 -0
- data/spec/{app → support}/models/appointment.rb +2 -0
- data/spec/support/models/armrest.rb +9 -0
- data/spec/{app → support}/models/article.rb +2 -0
- data/spec/{app → support}/models/artist.rb +4 -0
- data/spec/{app → support}/models/artwork.rb +2 -0
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/{app → support}/models/audio.rb +2 -0
- data/spec/support/models/augmentation.rb +25 -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 +9 -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/support/models/catalog.rb +24 -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/support/models/circus.rb +12 -0
- data/spec/{app → support}/models/code.rb +4 -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/{app → support}/models/customer.rb +0 -1
- data/spec/{app → support}/models/customer_address.rb +0 -1
- data/spec/support/models/deed.rb +7 -0
- data/spec/{app → support}/models/definition.rb +2 -0
- data/spec/{app → support}/models/delegating_patient.rb +0 -1
- data/spec/{app → support}/models/description.rb +2 -0
- data/spec/{app → support}/models/dictionary.rb +8 -0
- data/spec/{app → support}/models/division.rb +2 -0
- data/spec/{app → support}/models/doctor.rb +2 -0
- data/spec/{app → support}/models/dog.rb +2 -0
- data/spec/{app → support}/models/dokument.rb +2 -0
- data/spec/{app → support}/models/draft.rb +2 -0
- data/spec/{app → support}/models/dragon.rb +2 -0
- data/spec/{app → support}/models/driver.rb +3 -1
- data/spec/{app → support}/models/drug.rb +2 -0
- data/spec/{app → support}/models/dungeon.rb +2 -0
- data/spec/{app → support}/models/edit.rb +2 -0
- data/spec/{app → support}/models/email.rb +2 -0
- data/spec/{app → support}/models/employer.rb +2 -0
- data/spec/{app → support}/models/entry.rb +2 -0
- data/spec/support/models/eraser.rb +3 -0
- data/spec/{app → support}/models/even.rb +2 -0
- data/spec/{app → support}/models/event.rb +2 -0
- data/spec/{app → support}/models/exhibition.rb +2 -0
- data/spec/{app → support}/models/exhibitor.rb +2 -0
- data/spec/{app → support}/models/explosion.rb +2 -0
- data/spec/{app → support}/models/eye.rb +2 -0
- data/spec/{app → support}/models/eye_bowl.rb +2 -0
- data/spec/{app → support}/models/face.rb +2 -0
- data/spec/support/models/fanatic.rb +8 -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 +11 -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 +6 -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 +3 -0
- data/spec/{app → support}/models/message.rb +2 -0
- data/spec/{app → support}/models/minim.rb +0 -1
- data/spec/{app → support}/models/mixed_drink.rb +2 -0
- data/spec/support/models/mop.rb +24 -0
- data/spec/{app → support}/models/movie.rb +2 -0
- data/spec/support/models/my_hash.rb +4 -0
- data/spec/{app → support}/models/name.rb +12 -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 +22 -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 +23 -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 +4 -0
- data/spec/{app → support}/models/post.rb +2 -0
- data/spec/{app → support}/models/post_genre.rb +2 -0
- data/spec/support/models/powerup.rb +25 -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/support/models/purse.rb +9 -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 +3 -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/school.rb +14 -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/support/models/shield.rb +18 -0
- data/spec/{app → support}/models/shipment_address.rb +2 -0
- data/spec/{app → support}/models/shipping_container.rb +2 -0
- data/spec/{app → support}/models/shipping_pack.rb +2 -0
- data/spec/support/models/shirt.rb +11 -0
- data/spec/{app → support}/models/shop.rb +2 -0
- data/spec/{app → support}/models/short_agent.rb +2 -0
- data/spec/{app → support}/models/short_quiz.rb +2 -0
- data/spec/{app → support}/models/simple.rb +2 -0
- data/spec/{app → support}/models/slave.rb +2 -0
- data/spec/{app → support}/models/song.rb +2 -0
- data/spec/{app → support}/models/sound.rb +2 -0
- data/spec/support/models/spacer.rb +7 -0
- data/spec/{app → support}/models/square.rb +2 -0
- data/spec/{app → support}/models/staff.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +2 -0
- data/spec/{app → support}/models/strategy.rb +2 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/{app → support}/models/sub_item.rb +2 -0
- data/spec/{app → support}/models/subscription.rb +2 -0
- data/spec/{app → support}/models/survey.rb +2 -0
- data/spec/{app → support}/models/symptom.rb +2 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +2 -0
- data/spec/{app → support}/models/target.rb +2 -0
- data/spec/{app → support}/models/template.rb +2 -0
- data/spec/{app → support}/models/thing.rb +2 -0
- data/spec/support/models/threadlocker.rb +7 -0
- data/spec/{app → support}/models/title.rb +2 -0
- data/spec/{app → support}/models/tool.rb +4 -2
- data/spec/{app → support}/models/topping.rb +2 -0
- data/spec/support/models/toy.rb +9 -0
- data/spec/{app → support}/models/track.rb +2 -0
- data/spec/{app → support}/models/translation.rb +2 -0
- data/spec/{app → support}/models/tree.rb +2 -0
- data/spec/support/models/truck.rb +7 -0
- data/spec/{app → support}/models/user.rb +2 -0
- data/spec/{app → support}/models/user_account.rb +2 -0
- data/spec/{app → support}/models/validation_callback.rb +2 -0
- data/spec/support/models/vehicle.rb +18 -0
- data/spec/{app → support}/models/version.rb +2 -0
- data/spec/{app → support}/models/vertex.rb +3 -1
- data/spec/{app → support}/models/vet_visit.rb +2 -0
- data/spec/{app → support}/models/video.rb +2 -0
- data/spec/support/models/video_game.rb +3 -0
- data/spec/support/models/washer.rb +7 -0
- data/spec/support/models/weapon.rb +25 -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/schema_maps/schema_map_aws.json +17 -0
- data/spec/support/schema_maps/schema_map_aws_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_azure.json +17 -0
- data/spec/support/schema_maps/schema_map_azure_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_gcp.json +17 -0
- data/spec/support/schema_maps/schema_map_gcp_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_kmip.json +17 -0
- data/spec/support/schema_maps/schema_map_kmip_key_alt_names.json +12 -0
- data/spec/support/schema_maps/schema_map_local.json +18 -0
- data/spec/support/schema_maps/schema_map_local_key_alt_names.json +12 -0
- data/spec/support/shared/time.rb +53 -0
- data/spec/support/spec_config.rb +12 -3
- data.tar.gz.sig +0 -0
- metadata +1162 -764
- metadata.gz.sig +0 -0
- data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
- data/lib/mongoid/errors/eager_load.rb +0 -22
- data/lib/mongoid/errors/invalid_value.rb +0 -16
- data/lib/mongoid/matchable/all.rb +0 -28
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -119
- data/lib/mongoid/matchable/elem_match.rb +0 -34
- data/lib/mongoid/matchable/eq.rb +0 -22
- data/lib/mongoid/matchable/exists.rb +0 -23
- data/lib/mongoid/matchable/gt.rb +0 -23
- data/lib/mongoid/matchable/gte.rb +0 -23
- data/lib/mongoid/matchable/in.rb +0 -24
- data/lib/mongoid/matchable/lt.rb +0 -23
- data/lib/mongoid/matchable/lte.rb +0 -23
- data/lib/mongoid/matchable/ne.rb +0 -21
- data/lib/mongoid/matchable/nin.rb +0 -22
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/matchable/or.rb +0 -33
- data/lib/mongoid/matchable/regexp.rb +0 -27
- data/lib/mongoid/matchable/size.rb +0 -21
- data/lib/support/ruby_version.rb +0 -26
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/augmentation.rb +0 -11
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/circus.rb +0 -7
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/other_owner_object.rb +0 -2
- data/spec/app/models/passport.rb +0 -5
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/powerup.rb +0 -11
- 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/app/models/weapon.rb +0 -11
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
- data/spec/mongoid/matchable/all_spec.rb +0 -31
- data/spec/mongoid/matchable/and_spec.rb +0 -187
- data/spec/mongoid/matchable/default_spec.rb +0 -137
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -106
- data/spec/mongoid/matchable/eq_spec.rb +0 -48
- data/spec/mongoid/matchable/exists_spec.rb +0 -57
- data/spec/mongoid/matchable/gt_spec.rb +0 -86
- data/spec/mongoid/matchable/gte_spec.rb +0 -84
- data/spec/mongoid/matchable/in_spec.rb +0 -49
- data/spec/mongoid/matchable/lt_spec.rb +0 -85
- data/spec/mongoid/matchable/lte_spec.rb +0 -85
- data/spec/mongoid/matchable/ne_spec.rb +0 -46
- data/spec/mongoid/matchable/nin_spec.rb +0 -48
- data/spec/mongoid/matchable/nor_spec.rb +0 -209
- data/spec/mongoid/matchable/or_spec.rb +0 -131
- data/spec/mongoid/matchable/regexp_spec.rb +0 -59
- data/spec/mongoid/matchable/size_spec.rb +0 -25
- data/spec/mongoid/matchable_spec.rb +0 -853
- data/spec/support/cluster_config.rb +0 -158
- data/spec/support/session_registry.rb +0 -50
- /data/spec/{app → support}/models/array_field.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
- /data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
- /data/spec/{app → support}/models/updatable.rb +0 -0
|
@@ -1,17 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "spec_helper"
|
|
2
4
|
|
|
3
|
-
describe Mongoid::Association::Referenced::HasMany::
|
|
5
|
+
describe Mongoid::Association::Referenced::HasMany::Enumerable do
|
|
4
6
|
|
|
5
7
|
describe "#==" do
|
|
6
8
|
|
|
7
9
|
context "when comparing with an enumerable" do
|
|
8
10
|
|
|
9
11
|
let(:person) do
|
|
10
|
-
Person.create
|
|
12
|
+
Person.create!
|
|
11
13
|
end
|
|
12
14
|
|
|
13
15
|
let!(:post) do
|
|
14
|
-
Post.create(person_id: person.id)
|
|
16
|
+
Post.create!(person_id: person.id)
|
|
15
17
|
end
|
|
16
18
|
|
|
17
19
|
context "when only a criteria target exists" do
|
|
@@ -85,7 +87,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
85
87
|
context "when the loaded has no docs and added is persisted" do
|
|
86
88
|
|
|
87
89
|
before do
|
|
88
|
-
post.save
|
|
90
|
+
post.save!
|
|
89
91
|
enumerable._added[post.id] = post
|
|
90
92
|
end
|
|
91
93
|
|
|
@@ -111,72 +113,103 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
111
113
|
|
|
112
114
|
describe "#===" do
|
|
113
115
|
|
|
114
|
-
let(:
|
|
115
|
-
described_class.new([])
|
|
116
|
-
end
|
|
116
|
+
let(:data) { [] }
|
|
117
117
|
|
|
118
|
-
|
|
118
|
+
shared_examples 'standard library-compatible enumerable' do
|
|
119
|
+
context "when compared to an array class" do
|
|
119
120
|
|
|
120
|
-
|
|
121
|
-
|
|
121
|
+
it "returns false" do
|
|
122
|
+
expect(enumerable === Array).to be false
|
|
123
|
+
end
|
|
122
124
|
end
|
|
123
|
-
end
|
|
124
125
|
|
|
125
|
-
|
|
126
|
+
context "when compared to an enumerable class" do
|
|
126
127
|
|
|
127
|
-
|
|
128
|
-
|
|
128
|
+
it "returns false" do
|
|
129
|
+
expect(enumerable === described_class).to be false
|
|
130
|
+
end
|
|
129
131
|
end
|
|
130
|
-
end
|
|
131
132
|
|
|
132
|
-
|
|
133
|
+
context "when compared to a different class" do
|
|
133
134
|
|
|
134
|
-
|
|
135
|
-
|
|
135
|
+
it "returns false" do
|
|
136
|
+
expect(enumerable === Mongoid::Document).to be false
|
|
137
|
+
end
|
|
136
138
|
end
|
|
137
|
-
end
|
|
138
139
|
|
|
139
|
-
|
|
140
|
+
context "when compared to an array instance" do
|
|
140
141
|
|
|
141
|
-
|
|
142
|
+
context "when the entries are equal" do
|
|
142
143
|
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
144
|
+
let(:data) do
|
|
145
|
+
[Post.new(id: 2)]
|
|
146
|
+
end
|
|
146
147
|
|
|
147
|
-
|
|
148
|
-
|
|
148
|
+
let(:other) do
|
|
149
|
+
described_class.new([Post.new(id: 2)])
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
it "returns true" do
|
|
153
|
+
expect(enumerable === other).to be true
|
|
154
|
+
end
|
|
149
155
|
end
|
|
150
|
-
end
|
|
151
156
|
|
|
152
|
-
|
|
157
|
+
context "when the entries are both empty" do
|
|
158
|
+
|
|
159
|
+
let(:other) do
|
|
160
|
+
described_class.new([])
|
|
161
|
+
end
|
|
153
162
|
|
|
154
|
-
|
|
155
|
-
|
|
163
|
+
it "returns true" do
|
|
164
|
+
expect(enumerable === other).to be true
|
|
165
|
+
end
|
|
156
166
|
end
|
|
157
167
|
|
|
158
|
-
|
|
159
|
-
|
|
168
|
+
context "when the entries are not equal" do
|
|
169
|
+
|
|
170
|
+
let(:other) do
|
|
171
|
+
described_class.new([ Band.new ])
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
it "returns false" do
|
|
175
|
+
expect(enumerable === other).to be false
|
|
176
|
+
end
|
|
160
177
|
end
|
|
161
178
|
end
|
|
162
179
|
end
|
|
180
|
+
|
|
181
|
+
context 'enumerable' do
|
|
182
|
+
let(:enumerable) do
|
|
183
|
+
described_class.new(data)
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
include_examples 'standard library-compatible enumerable'
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
context 'Array instance' do
|
|
190
|
+
let(:enumerable) do
|
|
191
|
+
data
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
include_examples 'standard library-compatible enumerable'
|
|
195
|
+
end
|
|
163
196
|
end
|
|
164
197
|
|
|
165
198
|
describe "#<<" do
|
|
166
199
|
|
|
167
200
|
let(:person) do
|
|
168
|
-
Person.create
|
|
201
|
+
Person.create!
|
|
169
202
|
end
|
|
170
203
|
|
|
171
204
|
let!(:post) do
|
|
172
|
-
Post.create(person_id: person.id)
|
|
205
|
+
Post.create!(person_id: person.id)
|
|
173
206
|
end
|
|
174
207
|
|
|
175
208
|
let!(:enumerable) do
|
|
176
209
|
described_class.new([])
|
|
177
210
|
end
|
|
178
211
|
|
|
179
|
-
context "when the
|
|
212
|
+
context "when the association is empty" do
|
|
180
213
|
|
|
181
214
|
let!(:added) do
|
|
182
215
|
enumerable << post
|
|
@@ -198,18 +231,18 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
198
231
|
end
|
|
199
232
|
end
|
|
200
233
|
|
|
201
|
-
describe "#
|
|
234
|
+
describe "#empty?" do
|
|
202
235
|
|
|
203
236
|
let(:person) do
|
|
204
|
-
Person.create
|
|
237
|
+
Person.create!
|
|
205
238
|
end
|
|
206
239
|
|
|
207
240
|
let!(:post_one) do
|
|
208
|
-
Post.create(person_id: person.id)
|
|
241
|
+
Post.create!(person_id: person.id)
|
|
209
242
|
end
|
|
210
243
|
|
|
211
244
|
let!(:post_two) do
|
|
212
|
-
Post.create(person_id: person.id)
|
|
245
|
+
Post.create!(person_id: person.id)
|
|
213
246
|
end
|
|
214
247
|
|
|
215
248
|
context "when only a criteria target exists" do
|
|
@@ -222,27 +255,138 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
222
255
|
described_class.new(criteria)
|
|
223
256
|
end
|
|
224
257
|
|
|
225
|
-
let
|
|
226
|
-
enumerable.
|
|
258
|
+
let(:empty) do
|
|
259
|
+
enumerable.empty?
|
|
227
260
|
end
|
|
228
261
|
|
|
229
|
-
it "returns
|
|
230
|
-
expect(
|
|
262
|
+
it "returns false" do
|
|
263
|
+
expect(empty).to be false
|
|
231
264
|
end
|
|
232
265
|
|
|
233
|
-
|
|
234
|
-
|
|
266
|
+
context 'when #empty? is called' do
|
|
267
|
+
|
|
268
|
+
before { empty }
|
|
269
|
+
|
|
270
|
+
it "retains the correct length" do
|
|
271
|
+
expect(enumerable.length).to eq(2)
|
|
272
|
+
end
|
|
273
|
+
|
|
274
|
+
it "retains the correct length when calling to_a" do
|
|
275
|
+
expect(enumerable.to_a.length).to eq(2)
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
context "when iterating over the association a second time" do
|
|
279
|
+
|
|
280
|
+
before do
|
|
281
|
+
enumerable.each { |post| post }
|
|
282
|
+
end
|
|
283
|
+
|
|
284
|
+
it "retains the correct length" do
|
|
285
|
+
expect(enumerable.length).to eq(2)
|
|
286
|
+
end
|
|
287
|
+
|
|
288
|
+
it "retains the correct length when calling to_a" do
|
|
289
|
+
expect(enumerable.to_a.length).to eq(2)
|
|
290
|
+
end
|
|
291
|
+
end
|
|
235
292
|
end
|
|
293
|
+
end
|
|
236
294
|
|
|
237
|
-
|
|
238
|
-
|
|
295
|
+
context "when the documents have been loaded" do
|
|
296
|
+
let(:criteria) do
|
|
297
|
+
Post.where(person_id: person.id)
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
let!(:enumerable) do
|
|
301
|
+
described_class.new(criteria)
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
before do
|
|
305
|
+
enumerable.load_all!
|
|
306
|
+
end
|
|
307
|
+
|
|
308
|
+
it "is _loaded" do
|
|
309
|
+
expect(enumerable._loaded?).to be true
|
|
239
310
|
end
|
|
240
311
|
|
|
241
|
-
|
|
312
|
+
it "it does not call #exists? on the unloaded scope" do
|
|
313
|
+
expect(enumerable._unloaded).to_not receive(:exists?)
|
|
314
|
+
expect(enumerable.empty?).to be false
|
|
315
|
+
end
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
context "when the documents are not loaded" do
|
|
319
|
+
|
|
320
|
+
let(:criteria) do
|
|
321
|
+
Post.where(person_id: person.id)
|
|
322
|
+
end
|
|
323
|
+
|
|
324
|
+
let!(:enumerable) do
|
|
325
|
+
described_class.new(criteria)
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
it "is not _loaded" do
|
|
329
|
+
expect(enumerable._loaded?).to be false
|
|
330
|
+
end
|
|
331
|
+
|
|
332
|
+
it "it calls #exists? on the unloaded scope" do
|
|
333
|
+
expect(enumerable._unloaded).to receive(:exists?)
|
|
334
|
+
expect(enumerable.empty?).to be true
|
|
335
|
+
end
|
|
336
|
+
|
|
337
|
+
context "when documents are added" do
|
|
242
338
|
|
|
243
339
|
before do
|
|
244
|
-
enumerable
|
|
340
|
+
enumerable << post_one
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
it "is not _loaded" do
|
|
344
|
+
expect(enumerable._loaded?).to be false
|
|
345
|
+
end
|
|
346
|
+
|
|
347
|
+
it "it does not call #exists? on the unloaded scope" do
|
|
348
|
+
expect(enumerable._unloaded).to_not receive(:exists?)
|
|
349
|
+
expect(enumerable.empty?).to be false
|
|
245
350
|
end
|
|
351
|
+
end
|
|
352
|
+
end
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
describe "#any?" do
|
|
356
|
+
|
|
357
|
+
let(:person) do
|
|
358
|
+
Person.create!
|
|
359
|
+
end
|
|
360
|
+
|
|
361
|
+
let!(:post_one) do
|
|
362
|
+
Post.create!(person_id: person.id)
|
|
363
|
+
end
|
|
364
|
+
|
|
365
|
+
let!(:post_two) do
|
|
366
|
+
Post.create!(person_id: person.id)
|
|
367
|
+
end
|
|
368
|
+
|
|
369
|
+
context "when only a criteria target exists" do
|
|
370
|
+
|
|
371
|
+
let(:criteria) do
|
|
372
|
+
Post.where(person_id: person.id)
|
|
373
|
+
end
|
|
374
|
+
|
|
375
|
+
let!(:enumerable) do
|
|
376
|
+
described_class.new(criteria)
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
let(:any) do
|
|
380
|
+
enumerable.any?
|
|
381
|
+
end
|
|
382
|
+
|
|
383
|
+
it "returns true" do
|
|
384
|
+
expect(any).to be true
|
|
385
|
+
end
|
|
386
|
+
|
|
387
|
+
context 'when #any? is called' do
|
|
388
|
+
|
|
389
|
+
before { any }
|
|
246
390
|
|
|
247
391
|
it "retains the correct length" do
|
|
248
392
|
expect(enumerable.length).to eq(2)
|
|
@@ -251,6 +395,21 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
251
395
|
it "retains the correct length when calling to_a" do
|
|
252
396
|
expect(enumerable.to_a.length).to eq(2)
|
|
253
397
|
end
|
|
398
|
+
|
|
399
|
+
context "when iterating over the association a second time" do
|
|
400
|
+
|
|
401
|
+
before do
|
|
402
|
+
enumerable.each { |post| post }
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
it "retains the correct length" do
|
|
406
|
+
expect(enumerable.length).to eq(2)
|
|
407
|
+
end
|
|
408
|
+
|
|
409
|
+
it "retains the correct length when calling to_a" do
|
|
410
|
+
expect(enumerable.to_a.length).to eq(2)
|
|
411
|
+
end
|
|
412
|
+
end
|
|
254
413
|
end
|
|
255
414
|
end
|
|
256
415
|
|
|
@@ -271,6 +430,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
271
430
|
expect(enumerable._loaded?).to be true
|
|
272
431
|
end
|
|
273
432
|
|
|
433
|
+
it "it does not call #exists? on the unloaded scope" do
|
|
434
|
+
expect(enumerable._unloaded).to_not receive(:exists?)
|
|
435
|
+
expect(enumerable.any?).to be true
|
|
436
|
+
end
|
|
437
|
+
|
|
274
438
|
context "when a block is given" do
|
|
275
439
|
it "returns true when the predicate is true" do
|
|
276
440
|
expect(
|
|
@@ -286,7 +450,6 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
286
450
|
end
|
|
287
451
|
|
|
288
452
|
context "when an argument is given" do
|
|
289
|
-
ruby_version_gte '2.5'
|
|
290
453
|
|
|
291
454
|
it "returns true when the argument is true" do
|
|
292
455
|
expect(enumerable.any?(Post)).to be true
|
|
@@ -298,7 +461,6 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
298
461
|
end
|
|
299
462
|
|
|
300
463
|
context "when both an argument and a block are given" do
|
|
301
|
-
ruby_version_gte '2.5'
|
|
302
464
|
|
|
303
465
|
it "gives precedence to the pattern" do
|
|
304
466
|
expect(
|
|
@@ -322,6 +484,27 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
322
484
|
expect(enumerable._loaded?).to be false
|
|
323
485
|
end
|
|
324
486
|
|
|
487
|
+
it "it calls #exists? on the unloaded scope" do
|
|
488
|
+
expect(enumerable._unloaded).to receive(:exists?)
|
|
489
|
+
expect(enumerable.any?).to be false
|
|
490
|
+
end
|
|
491
|
+
|
|
492
|
+
context "when documents are added" do
|
|
493
|
+
|
|
494
|
+
before do
|
|
495
|
+
enumerable << post_one
|
|
496
|
+
end
|
|
497
|
+
|
|
498
|
+
it "is not _loaded" do
|
|
499
|
+
expect(enumerable._loaded?).to be false
|
|
500
|
+
end
|
|
501
|
+
|
|
502
|
+
it "it does not call #exists? on the unloaded scope" do
|
|
503
|
+
expect(enumerable._unloaded).to_not receive(:exists?)
|
|
504
|
+
expect(enumerable.any?).to be true
|
|
505
|
+
end
|
|
506
|
+
end
|
|
507
|
+
|
|
325
508
|
context "when a block is given" do
|
|
326
509
|
it "returns true when the predicate is true" do
|
|
327
510
|
expect(
|
|
@@ -337,7 +520,6 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
337
520
|
end
|
|
338
521
|
|
|
339
522
|
context "when an argument is given" do
|
|
340
|
-
ruby_version_gte '2.5'
|
|
341
523
|
|
|
342
524
|
it "returns true when the argument is true" do
|
|
343
525
|
expect(enumerable.any?(Post)).to be true
|
|
@@ -349,7 +531,6 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
349
531
|
end
|
|
350
532
|
|
|
351
533
|
context "when both an argument and a block are given" do
|
|
352
|
-
ruby_version_gte '2.5'
|
|
353
534
|
|
|
354
535
|
it "gives precedence to the pattern" do
|
|
355
536
|
expect(
|
|
@@ -363,15 +544,15 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
363
544
|
describe "#clear" do
|
|
364
545
|
|
|
365
546
|
let(:person) do
|
|
366
|
-
Person.create
|
|
547
|
+
Person.create!
|
|
367
548
|
end
|
|
368
549
|
|
|
369
550
|
let!(:post) do
|
|
370
|
-
Post.create(person_id: person.id)
|
|
551
|
+
Post.create!(person_id: person.id)
|
|
371
552
|
end
|
|
372
553
|
|
|
373
554
|
let!(:post_two) do
|
|
374
|
-
Post.create(person_id: person.id)
|
|
555
|
+
Post.create!(person_id: person.id)
|
|
375
556
|
end
|
|
376
557
|
|
|
377
558
|
let(:criteria) do
|
|
@@ -409,15 +590,15 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
409
590
|
describe "#clone" do
|
|
410
591
|
|
|
411
592
|
let(:person) do
|
|
412
|
-
Person.create
|
|
593
|
+
Person.create!
|
|
413
594
|
end
|
|
414
595
|
|
|
415
596
|
let!(:post) do
|
|
416
|
-
Post.create(title: "one", person_id: person.id)
|
|
597
|
+
Post.create!(title: "one", person_id: person.id)
|
|
417
598
|
end
|
|
418
599
|
|
|
419
600
|
let!(:post_two) do
|
|
420
|
-
Post.create(title: "two", person_id: person.id)
|
|
601
|
+
Post.create!(title: "two", person_id: person.id)
|
|
421
602
|
end
|
|
422
603
|
|
|
423
604
|
let(:criteria) do
|
|
@@ -449,13 +630,13 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
449
630
|
describe "#delete" do
|
|
450
631
|
|
|
451
632
|
let(:person) do
|
|
452
|
-
Person.create
|
|
633
|
+
Person.create!
|
|
453
634
|
end
|
|
454
635
|
|
|
455
636
|
context "when the document is loaded" do
|
|
456
637
|
|
|
457
638
|
let!(:post) do
|
|
458
|
-
Post.create(person_id: person.id)
|
|
639
|
+
Post.create!(person_id: person.id)
|
|
459
640
|
end
|
|
460
641
|
|
|
461
642
|
let!(:enumerable) do
|
|
@@ -509,7 +690,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
509
690
|
context "when the document is unloaded" do
|
|
510
691
|
|
|
511
692
|
let!(:post) do
|
|
512
|
-
Post.create(person_id: person.id)
|
|
693
|
+
Post.create!(person_id: person.id)
|
|
513
694
|
end
|
|
514
695
|
|
|
515
696
|
let(:criteria) do
|
|
@@ -536,7 +717,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
536
717
|
context "when the document is not found" do
|
|
537
718
|
|
|
538
719
|
let!(:post) do
|
|
539
|
-
Post.create(person_id: person.id)
|
|
720
|
+
Post.create!(person_id: person.id)
|
|
540
721
|
end
|
|
541
722
|
|
|
542
723
|
let(:criteria) do
|
|
@@ -562,13 +743,13 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
562
743
|
describe "#delete_if" do
|
|
563
744
|
|
|
564
745
|
let(:person) do
|
|
565
|
-
Person.create
|
|
746
|
+
Person.create!
|
|
566
747
|
end
|
|
567
748
|
|
|
568
749
|
context "when the document is loaded" do
|
|
569
750
|
|
|
570
751
|
let!(:post) do
|
|
571
|
-
Post.create(person_id: person.id)
|
|
752
|
+
Post.create!(person_id: person.id)
|
|
572
753
|
end
|
|
573
754
|
|
|
574
755
|
let!(:enumerable) do
|
|
@@ -622,7 +803,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
622
803
|
context "when the document is unloaded" do
|
|
623
804
|
|
|
624
805
|
let!(:post) do
|
|
625
|
-
Post.create(person_id: person.id)
|
|
806
|
+
Post.create!(person_id: person.id)
|
|
626
807
|
end
|
|
627
808
|
|
|
628
809
|
let(:criteria) do
|
|
@@ -649,7 +830,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
649
830
|
context "when the block doesn't match" do
|
|
650
831
|
|
|
651
832
|
let!(:post) do
|
|
652
|
-
Post.create(person_id: person.id)
|
|
833
|
+
Post.create!(person_id: person.id)
|
|
653
834
|
end
|
|
654
835
|
|
|
655
836
|
let(:criteria) do
|
|
@@ -673,11 +854,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
673
854
|
describe "#detect" do
|
|
674
855
|
|
|
675
856
|
let(:person) do
|
|
676
|
-
Person.create
|
|
857
|
+
Person.create!
|
|
677
858
|
end
|
|
678
859
|
|
|
679
860
|
let!(:post) do
|
|
680
|
-
Post.create(person: person, title: "test")
|
|
861
|
+
Post.create!(person: person, title: "test")
|
|
681
862
|
end
|
|
682
863
|
|
|
683
864
|
let(:criteria) do
|
|
@@ -703,11 +884,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
703
884
|
describe "#each" do
|
|
704
885
|
|
|
705
886
|
let(:person) do
|
|
706
|
-
Person.create
|
|
887
|
+
Person.create!
|
|
707
888
|
end
|
|
708
889
|
|
|
709
890
|
let!(:post) do
|
|
710
|
-
Post.create(person_id: person.id)
|
|
891
|
+
Post.create!(person_id: person.id)
|
|
711
892
|
end
|
|
712
893
|
|
|
713
894
|
context "when only a criteria target exists" do
|
|
@@ -734,18 +915,18 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
734
915
|
expect(enumerable).to be__loaded
|
|
735
916
|
end
|
|
736
917
|
|
|
737
|
-
context 'when the base
|
|
918
|
+
context 'when the base association is accessed from each document' do
|
|
738
919
|
|
|
739
920
|
let(:persons) do
|
|
740
921
|
described_class.new(criteria).collect(&:person)
|
|
741
922
|
end
|
|
742
923
|
|
|
743
924
|
before do
|
|
744
|
-
Post.create(person_id: person.id)
|
|
745
|
-
Post.create(person_id: person.id)
|
|
925
|
+
Post.create!(person_id: person.id)
|
|
926
|
+
Post.create!(person_id: person.id)
|
|
746
927
|
end
|
|
747
928
|
|
|
748
|
-
it 'sets the base
|
|
929
|
+
it 'sets the base association from the criteria' do
|
|
749
930
|
expect(persons.uniq.size).to eq(1)
|
|
750
931
|
end
|
|
751
932
|
end
|
|
@@ -853,7 +1034,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
853
1034
|
describe "#entries" do
|
|
854
1035
|
|
|
855
1036
|
let(:person) do
|
|
856
|
-
Person.create
|
|
1037
|
+
Person.create!
|
|
857
1038
|
end
|
|
858
1039
|
|
|
859
1040
|
let(:criteria) do
|
|
@@ -867,7 +1048,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
867
1048
|
context "when the added contains a persisted document" do
|
|
868
1049
|
|
|
869
1050
|
let!(:post) do
|
|
870
|
-
Post.create(person_id: person.id)
|
|
1051
|
+
Post.create!(person_id: person.id)
|
|
871
1052
|
end
|
|
872
1053
|
|
|
873
1054
|
before do
|
|
@@ -887,7 +1068,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
887
1068
|
describe "#first" do
|
|
888
1069
|
|
|
889
1070
|
let(:person) do
|
|
890
|
-
Person.create
|
|
1071
|
+
Person.create!
|
|
891
1072
|
end
|
|
892
1073
|
|
|
893
1074
|
context "when the enumerable is not loaded" do
|
|
@@ -905,7 +1086,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
905
1086
|
context "when added is empty" do
|
|
906
1087
|
|
|
907
1088
|
let!(:post) do
|
|
908
|
-
Post.create(person_id: person.id)
|
|
1089
|
+
Post.create!(person_id: person.id)
|
|
909
1090
|
end
|
|
910
1091
|
|
|
911
1092
|
let(:first) do
|
|
@@ -929,7 +1110,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
929
1110
|
context "when added is not empty" do
|
|
930
1111
|
|
|
931
1112
|
let!(:post) do
|
|
932
|
-
Post.create(person_id: person.id)
|
|
1113
|
+
Post.create!(person_id: person.id)
|
|
933
1114
|
end
|
|
934
1115
|
|
|
935
1116
|
let(:post_two) do
|
|
@@ -1001,7 +1182,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1001
1182
|
context "when loaded is not empty" do
|
|
1002
1183
|
|
|
1003
1184
|
let!(:post) do
|
|
1004
|
-
Post.create(person_id: person.id)
|
|
1185
|
+
Post.create!(person_id: person.id)
|
|
1005
1186
|
end
|
|
1006
1187
|
|
|
1007
1188
|
let(:enumerable) do
|
|
@@ -1020,7 +1201,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1020
1201
|
context "when loaded is empty" do
|
|
1021
1202
|
|
|
1022
1203
|
let!(:post) do
|
|
1023
|
-
Post.create(person_id: person.id)
|
|
1204
|
+
Post.create!(person_id: person.id)
|
|
1024
1205
|
end
|
|
1025
1206
|
|
|
1026
1207
|
let(:enumerable) do
|
|
@@ -1056,10 +1237,10 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1056
1237
|
end
|
|
1057
1238
|
end
|
|
1058
1239
|
|
|
1059
|
-
context 'when
|
|
1240
|
+
context 'when including a limit' do
|
|
1060
1241
|
|
|
1061
1242
|
let(:person) do
|
|
1062
|
-
Person.create
|
|
1243
|
+
Person.create!
|
|
1063
1244
|
end
|
|
1064
1245
|
|
|
1065
1246
|
let(:criteria) do
|
|
@@ -1071,22 +1252,22 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1071
1252
|
end
|
|
1072
1253
|
|
|
1073
1254
|
let!(:first_post) do
|
|
1074
|
-
person.posts.create(title: "One")
|
|
1255
|
+
person.posts.create!(title: "One")
|
|
1075
1256
|
end
|
|
1076
1257
|
|
|
1077
1258
|
let!(:second_post) do
|
|
1078
|
-
person.posts.create(title: "Two")
|
|
1259
|
+
person.posts.create!(title: "Two")
|
|
1079
1260
|
end
|
|
1080
1261
|
|
|
1081
|
-
it '
|
|
1082
|
-
expect(enumerable.first(
|
|
1262
|
+
it 'returns the matching document' do
|
|
1263
|
+
expect(enumerable.first(1)).to eq([first_post])
|
|
1083
1264
|
end
|
|
1084
1265
|
end
|
|
1085
1266
|
|
|
1086
|
-
context 'when
|
|
1267
|
+
context 'when no parameters are provided' do
|
|
1087
1268
|
|
|
1088
1269
|
let(:person) do
|
|
1089
|
-
Person.create
|
|
1270
|
+
Person.create!
|
|
1090
1271
|
end
|
|
1091
1272
|
|
|
1092
1273
|
let(:criteria) do
|
|
@@ -1098,11 +1279,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1098
1279
|
end
|
|
1099
1280
|
|
|
1100
1281
|
let!(:first_post) do
|
|
1101
|
-
person.posts.create(title: "One")
|
|
1282
|
+
person.posts.create!(title: "One")
|
|
1102
1283
|
end
|
|
1103
1284
|
|
|
1104
1285
|
let!(:second_post) do
|
|
1105
|
-
person.posts.create(title: "Two")
|
|
1286
|
+
person.posts.create!(title: "Two")
|
|
1106
1287
|
end
|
|
1107
1288
|
|
|
1108
1289
|
it 'uses the sort on id' do
|
|
@@ -1114,15 +1295,15 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1114
1295
|
describe "#include?" do
|
|
1115
1296
|
|
|
1116
1297
|
let(:person) do
|
|
1117
|
-
Person.create
|
|
1298
|
+
Person.create!
|
|
1118
1299
|
end
|
|
1119
1300
|
|
|
1120
1301
|
let!(:post_one) do
|
|
1121
|
-
Post.create(person_id: person.id)
|
|
1302
|
+
Post.create!(person_id: person.id)
|
|
1122
1303
|
end
|
|
1123
1304
|
|
|
1124
1305
|
let!(:post_two) do
|
|
1125
|
-
Post.create(person_id: person.id)
|
|
1306
|
+
Post.create!(person_id: person.id)
|
|
1126
1307
|
end
|
|
1127
1308
|
|
|
1128
1309
|
context "when no criteria exists" do
|
|
@@ -1184,7 +1365,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1184
1365
|
described_class.new(criteria)
|
|
1185
1366
|
end
|
|
1186
1367
|
|
|
1187
|
-
let
|
|
1368
|
+
let(:included) do
|
|
1188
1369
|
enumerable.include?(post_two)
|
|
1189
1370
|
end
|
|
1190
1371
|
|
|
@@ -1200,7 +1381,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1200
1381
|
expect(enumerable.to_a.length).to eq(2)
|
|
1201
1382
|
end
|
|
1202
1383
|
|
|
1203
|
-
context "when iterating over the
|
|
1384
|
+
context "when iterating over the association a second time" do
|
|
1204
1385
|
|
|
1205
1386
|
before do
|
|
1206
1387
|
enumerable.each { |post| post }
|
|
@@ -1368,7 +1549,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1368
1549
|
describe "#last" do
|
|
1369
1550
|
|
|
1370
1551
|
let(:person) do
|
|
1371
|
-
Person.create
|
|
1552
|
+
Person.create!
|
|
1372
1553
|
end
|
|
1373
1554
|
|
|
1374
1555
|
context "when the enumerable is not loaded" do
|
|
@@ -1384,7 +1565,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1384
1565
|
context "when unloaded is not empty" do
|
|
1385
1566
|
|
|
1386
1567
|
let!(:post) do
|
|
1387
|
-
Post.create(person_id: person.id)
|
|
1568
|
+
Post.create!(person_id: person.id)
|
|
1388
1569
|
end
|
|
1389
1570
|
|
|
1390
1571
|
let(:last) do
|
|
@@ -1446,11 +1627,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1446
1627
|
context "when added is not empty" do
|
|
1447
1628
|
|
|
1448
1629
|
let!(:post_one) do
|
|
1449
|
-
person.posts.create
|
|
1630
|
+
person.posts.create!
|
|
1450
1631
|
end
|
|
1451
1632
|
|
|
1452
1633
|
let!(:post_two) do
|
|
1453
|
-
person.posts.create
|
|
1634
|
+
person.posts.create!
|
|
1454
1635
|
end
|
|
1455
1636
|
|
|
1456
1637
|
let(:last) do
|
|
@@ -1471,7 +1652,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1471
1652
|
context "when loaded is not empty" do
|
|
1472
1653
|
|
|
1473
1654
|
let!(:post) do
|
|
1474
|
-
Post.create(person_id: person.id)
|
|
1655
|
+
Post.create!(person_id: person.id)
|
|
1475
1656
|
end
|
|
1476
1657
|
|
|
1477
1658
|
let(:enumerable) do
|
|
@@ -1490,7 +1671,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1490
1671
|
context "when loaded is empty" do
|
|
1491
1672
|
|
|
1492
1673
|
let!(:post) do
|
|
1493
|
-
Post.create(person_id: person.id)
|
|
1674
|
+
Post.create!(person_id: person.id)
|
|
1494
1675
|
end
|
|
1495
1676
|
|
|
1496
1677
|
let(:enumerable) do
|
|
@@ -1526,10 +1707,10 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1526
1707
|
end
|
|
1527
1708
|
end
|
|
1528
1709
|
|
|
1529
|
-
context 'when
|
|
1710
|
+
context 'when including a limit' do
|
|
1530
1711
|
|
|
1531
1712
|
let(:person) do
|
|
1532
|
-
Person.create
|
|
1713
|
+
Person.create!
|
|
1533
1714
|
end
|
|
1534
1715
|
|
|
1535
1716
|
let(:criteria) do
|
|
@@ -1541,22 +1722,22 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1541
1722
|
end
|
|
1542
1723
|
|
|
1543
1724
|
let!(:first_post) do
|
|
1544
|
-
person.posts.create(title: "One")
|
|
1725
|
+
person.posts.create!(title: "One")
|
|
1545
1726
|
end
|
|
1546
1727
|
|
|
1547
1728
|
let!(:second_post) do
|
|
1548
|
-
person.posts.create(title: "Two")
|
|
1729
|
+
person.posts.create!(title: "Two")
|
|
1549
1730
|
end
|
|
1550
1731
|
|
|
1551
|
-
it '
|
|
1552
|
-
expect(enumerable.last(
|
|
1732
|
+
it 'returns the matching document' do
|
|
1733
|
+
expect(enumerable.last(1)).to eq([second_post])
|
|
1553
1734
|
end
|
|
1554
1735
|
end
|
|
1555
1736
|
|
|
1556
|
-
context 'when
|
|
1737
|
+
context 'when no parameters are provided' do
|
|
1557
1738
|
|
|
1558
1739
|
let(:person) do
|
|
1559
|
-
Person.create
|
|
1740
|
+
Person.create!
|
|
1560
1741
|
end
|
|
1561
1742
|
|
|
1562
1743
|
let(:criteria) do
|
|
@@ -1568,11 +1749,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1568
1749
|
end
|
|
1569
1750
|
|
|
1570
1751
|
let!(:first_post) do
|
|
1571
|
-
person.posts.create(title: "One")
|
|
1752
|
+
person.posts.create!(title: "One")
|
|
1572
1753
|
end
|
|
1573
1754
|
|
|
1574
1755
|
let!(:second_post) do
|
|
1575
|
-
person.posts.create(title: "Two")
|
|
1756
|
+
person.posts.create!(title: "Two")
|
|
1576
1757
|
end
|
|
1577
1758
|
|
|
1578
1759
|
it 'uses the sort on id' do
|
|
@@ -1605,11 +1786,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1605
1786
|
describe "#load_all!" do
|
|
1606
1787
|
|
|
1607
1788
|
let(:person) do
|
|
1608
|
-
Person.create
|
|
1789
|
+
Person.create!
|
|
1609
1790
|
end
|
|
1610
1791
|
|
|
1611
1792
|
let!(:post) do
|
|
1612
|
-
Post.create(person_id: person.id)
|
|
1793
|
+
Post.create!(person_id: person.id)
|
|
1613
1794
|
end
|
|
1614
1795
|
|
|
1615
1796
|
let(:criteria) do
|
|
@@ -1640,15 +1821,15 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1640
1821
|
describe "#reset" do
|
|
1641
1822
|
|
|
1642
1823
|
let(:person) do
|
|
1643
|
-
Person.create
|
|
1824
|
+
Person.create!
|
|
1644
1825
|
end
|
|
1645
1826
|
|
|
1646
1827
|
let(:post) do
|
|
1647
|
-
Post.create(person_id: person.id)
|
|
1828
|
+
Post.create!(person_id: person.id)
|
|
1648
1829
|
end
|
|
1649
1830
|
|
|
1650
1831
|
let(:post_two) do
|
|
1651
|
-
Post.create(person_id: person.id)
|
|
1832
|
+
Post.create!(person_id: person.id)
|
|
1652
1833
|
end
|
|
1653
1834
|
|
|
1654
1835
|
let(:enumerable) do
|
|
@@ -1696,11 +1877,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1696
1877
|
describe "#size" do
|
|
1697
1878
|
|
|
1698
1879
|
let(:person) do
|
|
1699
|
-
Person.create
|
|
1880
|
+
Person.create!
|
|
1700
1881
|
end
|
|
1701
1882
|
|
|
1702
1883
|
let!(:post) do
|
|
1703
|
-
Post.create(person_id: person.id)
|
|
1884
|
+
Post.create!(person_id: person.id)
|
|
1704
1885
|
end
|
|
1705
1886
|
|
|
1706
1887
|
context "when the base is new" do
|
|
@@ -1712,7 +1893,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1712
1893
|
context "when the added contains a persisted document" do
|
|
1713
1894
|
|
|
1714
1895
|
let!(:post) do
|
|
1715
|
-
Post.create(person_id: person.id)
|
|
1896
|
+
Post.create!(person_id: person.id)
|
|
1716
1897
|
end
|
|
1717
1898
|
|
|
1718
1899
|
context "when the enumerable is not loaded" do
|
|
@@ -1783,7 +1964,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1783
1964
|
context "when the added contains persisted documents" do
|
|
1784
1965
|
|
|
1785
1966
|
let(:post_two) do
|
|
1786
|
-
Post.create(person_id: person.id)
|
|
1967
|
+
Post.create!(person_id: person.id)
|
|
1787
1968
|
end
|
|
1788
1969
|
|
|
1789
1970
|
before do
|
|
@@ -1804,11 +1985,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1804
1985
|
describe "#to_json" do
|
|
1805
1986
|
|
|
1806
1987
|
let(:person) do
|
|
1807
|
-
Person.create
|
|
1988
|
+
Person.create!
|
|
1808
1989
|
end
|
|
1809
1990
|
|
|
1810
1991
|
let!(:post) do
|
|
1811
|
-
Post.create(title: "test", person_id: person.id)
|
|
1992
|
+
Post.create!(title: "test", person_id: person.id)
|
|
1812
1993
|
end
|
|
1813
1994
|
|
|
1814
1995
|
let(:criteria) do
|
|
@@ -1835,11 +2016,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1835
2016
|
describe "#to_json(parameters)" do
|
|
1836
2017
|
|
|
1837
2018
|
let(:person) do
|
|
1838
|
-
Person.create
|
|
2019
|
+
Person.create!
|
|
1839
2020
|
end
|
|
1840
2021
|
|
|
1841
2022
|
let!(:post) do
|
|
1842
|
-
Post.create(title: "test", person_id: person.id)
|
|
2023
|
+
Post.create!(title: "test", person_id: person.id)
|
|
1843
2024
|
end
|
|
1844
2025
|
|
|
1845
2026
|
let(:criteria) do
|
|
@@ -1858,11 +2039,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1858
2039
|
describe "#as_json" do
|
|
1859
2040
|
|
|
1860
2041
|
let(:person) do
|
|
1861
|
-
Person.create
|
|
2042
|
+
Person.create!
|
|
1862
2043
|
end
|
|
1863
2044
|
|
|
1864
2045
|
let!(:post) do
|
|
1865
|
-
Post.create(title: "test", person_id: person.id)
|
|
2046
|
+
Post.create!(title: "test", person_id: person.id)
|
|
1866
2047
|
end
|
|
1867
2048
|
|
|
1868
2049
|
let(:criteria) do
|
|
@@ -1890,11 +2071,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1890
2071
|
describe "#as_json(parameters)" do
|
|
1891
2072
|
|
|
1892
2073
|
let(:person) do
|
|
1893
|
-
Person.create
|
|
2074
|
+
Person.create!
|
|
1894
2075
|
end
|
|
1895
2076
|
|
|
1896
2077
|
let!(:post) do
|
|
1897
|
-
Post.create(title: "test", person_id: person.id)
|
|
2078
|
+
Post.create!(title: "test", person_id: person.id)
|
|
1898
2079
|
end
|
|
1899
2080
|
|
|
1900
2081
|
let(:criteria) do
|
|
@@ -1917,11 +2098,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1917
2098
|
describe "#uniq" do
|
|
1918
2099
|
|
|
1919
2100
|
let(:person) do
|
|
1920
|
-
Person.create
|
|
2101
|
+
Person.create!
|
|
1921
2102
|
end
|
|
1922
2103
|
|
|
1923
2104
|
let!(:post) do
|
|
1924
|
-
Post.create(person_id: person.id)
|
|
2105
|
+
Post.create!(person_id: person.id)
|
|
1925
2106
|
end
|
|
1926
2107
|
|
|
1927
2108
|
let(:criteria) do
|
|
@@ -1953,7 +2134,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1953
2134
|
describe 'setting the same parent object on enumerated children objects' do
|
|
1954
2135
|
|
|
1955
2136
|
let(:person) do
|
|
1956
|
-
Person.create
|
|
2137
|
+
Person.create!
|
|
1957
2138
|
end
|
|
1958
2139
|
|
|
1959
2140
|
context 'when a single child is fetched' do
|