mongoid 7.0.0 → 7.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +30 -30
- data/LICENSE +1 -0
- data/README.md +34 -20
- data/Rakefile +75 -5
- data/lib/config/locales/en.yml +129 -70
- data/lib/mongoid/association/accessors.rb +143 -80
- data/lib/mongoid/association/bindable.rb +7 -26
- data/lib/mongoid/association/builders.rb +4 -12
- data/lib/mongoid/association/constrainable.rb +5 -6
- data/lib/mongoid/association/depending.rb +31 -19
- data/lib/mongoid/association/eager_loadable.rb +2 -3
- data/lib/mongoid/association/embedded/batchable.rb +19 -45
- data/lib/mongoid/association/embedded/cyclic.rb +10 -17
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +3 -7
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +7 -4
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +14 -24
- data/lib/mongoid/association/embedded/embedded_in.rb +6 -26
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +8 -5
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +113 -93
- data/lib/mongoid/association/embedded/embeds_many.rb +8 -35
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +4 -8
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +9 -6
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +45 -30
- data/lib/mongoid/association/embedded/embeds_one.rb +8 -31
- data/lib/mongoid/association/embedded.rb +2 -0
- data/lib/mongoid/association/macros.rb +44 -41
- data/lib/mongoid/association/many.rb +18 -32
- data/lib/mongoid/association/marshalable.rb +3 -6
- data/lib/mongoid/association/nested/many.rb +18 -27
- data/lib/mongoid/association/nested/nested_buildable.rb +5 -11
- data/lib/mongoid/association/nested/one.rb +16 -27
- data/lib/mongoid/association/nested.rb +3 -3
- data/lib/mongoid/association/one.rb +4 -11
- data/lib/mongoid/association/options.rb +8 -38
- data/lib/mongoid/association/proxy.rb +37 -36
- data/lib/mongoid/association/referenced/auto_save.rb +5 -11
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +4 -9
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +11 -9
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +40 -3
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +16 -27
- data/lib/mongoid/association/referenced/belongs_to.rb +14 -36
- data/lib/mongoid/association/referenced/counter_cache.rb +4 -15
- data/lib/mongoid/association/referenced/eager.rb +40 -36
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +12 -11
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +38 -56
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +23 -43
- data/lib/mongoid/association/referenced/has_many/binding.rb +3 -6
- data/lib/mongoid/association/referenced/has_many/buildable.rb +5 -5
- data/lib/mongoid/association/referenced/has_many/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +444 -456
- data/lib/mongoid/association/referenced/has_many/proxy.rb +78 -111
- data/lib/mongoid/association/referenced/has_many.rb +18 -42
- data/lib/mongoid/association/referenced/has_one/binding.rb +4 -9
- data/lib/mongoid/association/referenced/has_one/buildable.rb +20 -6
- data/lib/mongoid/association/referenced/has_one/eager.rb +2 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +13 -26
- data/lib/mongoid/association/referenced/has_one/proxy.rb +23 -25
- data/lib/mongoid/association/referenced/has_one.rb +13 -33
- data/lib/mongoid/association/referenced/syncable.rb +7 -22
- data/lib/mongoid/association/referenced.rb +2 -0
- data/lib/mongoid/association/reflections.rb +7 -6
- data/lib/mongoid/association/relatable.rb +118 -78
- data/lib/mongoid/association.rb +8 -23
- data/lib/mongoid/atomic/modifiers.rb +27 -51
- data/lib/mongoid/atomic/paths/embedded/many.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded/one.rb +4 -7
- data/lib/mongoid/atomic/paths/embedded.rb +3 -4
- data/lib/mongoid/atomic/paths/root.rb +4 -7
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +42 -47
- data/lib/mongoid/attributes/dynamic.rb +18 -32
- data/lib/mongoid/attributes/nested.rb +21 -13
- data/lib/mongoid/attributes/processing.rb +9 -24
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +3 -6
- data/lib/mongoid/attributes.rb +75 -81
- data/lib/mongoid/cacheable.rb +6 -9
- data/lib/mongoid/changeable.rb +6 -60
- data/lib/mongoid/clients/factory.rb +42 -17
- data/lib/mongoid/clients/options.rb +16 -17
- data/lib/mongoid/clients/sessions.rb +24 -12
- data/lib/mongoid/clients/storage_options.rb +7 -12
- data/lib/mongoid/clients/validators/storage.rb +2 -9
- data/lib/mongoid/clients/validators.rb +2 -1
- data/lib/mongoid/clients.rb +3 -10
- data/lib/mongoid/composable.rb +5 -9
- data/lib/mongoid/config/environment.rb +36 -14
- data/lib/mongoid/config/options.rb +20 -23
- data/lib/mongoid/config/validators/client.rb +2 -17
- data/lib/mongoid/config/validators/option.rb +2 -3
- data/lib/mongoid/config/validators.rb +2 -1
- data/lib/mongoid/config.rb +112 -41
- data/lib/mongoid/contextual/aggregable/memory.rb +17 -12
- data/lib/mongoid/contextual/aggregable/mongo.rb +26 -27
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +29 -31
- data/lib/mongoid/contextual/command.rb +2 -5
- data/lib/mongoid/contextual/geo_near.rb +6 -37
- data/lib/mongoid/contextual/map_reduce.rb +9 -37
- data/lib/mongoid/contextual/memory.rb +12 -65
- data/lib/mongoid/contextual/mongo.rb +163 -85
- data/lib/mongoid/contextual/none.rb +44 -28
- data/lib/mongoid/contextual/queryable.rb +2 -3
- data/lib/mongoid/contextual.rb +7 -9
- data/lib/mongoid/copyable.rb +16 -10
- data/lib/mongoid/criteria/findable.rb +12 -15
- data/lib/mongoid/criteria/includable.rb +8 -15
- data/lib/mongoid/criteria/inspectable.rb +2 -3
- data/lib/mongoid/criteria/marshalable.rb +2 -5
- data/lib/mongoid/criteria/modifiable.rb +15 -21
- data/lib/mongoid/criteria/options.rb +4 -5
- data/lib/mongoid/criteria/permission.rb +2 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -13
- data/lib/mongoid/criteria/queryable/expandable.rb +68 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +4 -27
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/date.rb +3 -8
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +5 -11
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +3 -26
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +3 -14
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +4 -13
- data/lib/mongoid/criteria/queryable/extensions/object.rb +4 -29
- data/lib/mongoid/criteria/queryable/extensions/range.rb +41 -17
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +9 -16
- data/lib/mongoid/criteria/queryable/extensions/set.rb +3 -4
- data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -18
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -10
- data/lib/mongoid/criteria/queryable/extensions/time.rb +4 -9
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +13 -6
- data/lib/mongoid/criteria/queryable/extensions.rb +1 -4
- data/lib/mongoid/criteria/queryable/key.rb +101 -27
- data/lib/mongoid/criteria/queryable/macroable.rb +3 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +184 -44
- data/lib/mongoid/criteria/queryable/optional.rb +5 -48
- data/lib/mongoid/criteria/queryable/options.rb +2 -19
- data/lib/mongoid/criteria/queryable/pipeline.rb +5 -15
- data/lib/mongoid/criteria/queryable/selectable.rb +436 -158
- data/lib/mongoid/criteria/queryable/selector.rb +45 -55
- data/lib/mongoid/criteria/queryable/smash.rb +2 -11
- data/lib/mongoid/criteria/queryable/storable.rb +237 -0
- data/lib/mongoid/criteria/queryable.rb +7 -9
- data/lib/mongoid/criteria/scopable.rb +27 -19
- data/lib/mongoid/criteria.rb +86 -73
- data/lib/mongoid/document.rb +37 -77
- data/lib/mongoid/equality.rb +29 -12
- data/lib/mongoid/errors/ambiguous_relationship.rb +4 -5
- data/lib/mongoid/errors/callback.rb +2 -3
- data/lib/mongoid/errors/criteria_argument_required.rb +18 -0
- data/lib/mongoid/errors/delete_restriction.rb +10 -13
- data/lib/mongoid/errors/document_not_destroyed.rb +4 -7
- data/lib/mongoid/errors/document_not_found.rb +2 -9
- data/lib/mongoid/errors/eager_load.rb +6 -5
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +2 -3
- data/lib/mongoid/errors/invalid_collection.rb +2 -1
- data/lib/mongoid/errors/invalid_config_file.rb +25 -0
- data/lib/mongoid/errors/invalid_config_option.rb +2 -3
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +2 -3
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +24 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +25 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +27 -0
- data/lib/mongoid/errors/invalid_field.rb +2 -5
- data/lib/mongoid/errors/invalid_field_operator.rb +32 -0
- data/lib/mongoid/errors/invalid_field_option.rb +2 -3
- data/lib/mongoid/errors/invalid_find.rb +2 -3
- data/lib/mongoid/errors/invalid_includes.rb +2 -3
- data/lib/mongoid/errors/invalid_index.rb +2 -3
- data/lib/mongoid/errors/invalid_options.rb +4 -5
- data/lib/mongoid/errors/invalid_path.rb +2 -3
- data/lib/mongoid/errors/invalid_persistence_option.rb +2 -5
- data/lib/mongoid/errors/invalid_query.rb +40 -0
- data/lib/mongoid/errors/invalid_relation.rb +4 -9
- data/lib/mongoid/errors/invalid_relation_option.rb +4 -5
- data/lib/mongoid/errors/invalid_scope.rb +2 -3
- data/lib/mongoid/errors/invalid_session_use.rb +3 -6
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -5
- data/lib/mongoid/errors/invalid_storage_options.rb +2 -3
- data/lib/mongoid/errors/invalid_storage_parent.rb +2 -3
- data/lib/mongoid/errors/invalid_time.rb +2 -3
- data/lib/mongoid/errors/invalid_value.rb +2 -1
- data/lib/mongoid/errors/inverse_not_found.rb +3 -4
- data/lib/mongoid/errors/mixed_client_configuration.rb +2 -3
- data/lib/mongoid/errors/mixed_relations.rb +2 -3
- data/lib/mongoid/errors/mongoid_error.rb +3 -10
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -4
- data/lib/mongoid/errors/no_client_config.rb +4 -5
- data/lib/mongoid/errors/no_client_database.rb +2 -3
- data/lib/mongoid/errors/no_client_hosts.rb +2 -3
- data/lib/mongoid/errors/no_clients_config.rb +2 -3
- data/lib/mongoid/errors/no_default_client.rb +3 -4
- data/lib/mongoid/errors/no_environment.rb +2 -3
- data/lib/mongoid/errors/no_map_reduce_output.rb +2 -3
- data/lib/mongoid/errors/no_metadata.rb +2 -3
- data/lib/mongoid/errors/no_parent.rb +2 -3
- data/lib/mongoid/errors/readonly_attribute.rb +2 -3
- data/lib/mongoid/errors/readonly_document.rb +3 -6
- data/lib/mongoid/errors/scope_overwrite.rb +2 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +2 -0
- data/lib/mongoid/errors/unknown_attribute.rb +2 -3
- data/lib/mongoid/errors/unknown_model.rb +2 -3
- data/lib/mongoid/errors/unsaved_document.rb +3 -2
- data/lib/mongoid/errors/unsupported_javascript.rb +2 -3
- data/lib/mongoid/errors/validations.rb +2 -1
- data/lib/mongoid/errors.rb +12 -1
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +28 -37
- data/lib/mongoid/extensions/big_decimal.rb +3 -12
- data/lib/mongoid/extensions/boolean.rb +3 -5
- data/lib/mongoid/extensions/date.rb +13 -12
- data/lib/mongoid/extensions/date_time.rb +4 -12
- data/lib/mongoid/extensions/decimal128.rb +2 -5
- data/lib/mongoid/extensions/false_class.rb +4 -7
- data/lib/mongoid/extensions/float.rb +5 -10
- data/lib/mongoid/extensions/hash.rb +51 -36
- data/lib/mongoid/extensions/integer.rb +5 -12
- data/lib/mongoid/extensions/module.rb +2 -3
- data/lib/mongoid/extensions/nil_class.rb +2 -5
- data/lib/mongoid/extensions/object.rb +17 -44
- data/lib/mongoid/extensions/object_id.rb +2 -7
- data/lib/mongoid/extensions/range.rb +2 -11
- data/lib/mongoid/extensions/regexp.rb +4 -4
- data/lib/mongoid/extensions/set.rb +2 -7
- data/lib/mongoid/extensions/string.rb +24 -42
- data/lib/mongoid/extensions/symbol.rb +2 -7
- data/lib/mongoid/extensions/time.rb +12 -9
- data/lib/mongoid/extensions/time_with_zone.rb +25 -7
- data/lib/mongoid/extensions/true_class.rb +4 -7
- data/lib/mongoid/extensions.rb +18 -3
- data/lib/mongoid/factory.rb +52 -13
- data/lib/mongoid/fields/foreign_key.rb +3 -22
- data/lib/mongoid/fields/localized.rb +2 -11
- data/lib/mongoid/fields/standard.rb +6 -36
- data/lib/mongoid/fields/validators/macro.rb +36 -18
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +115 -64
- data/lib/mongoid/findable.rb +59 -23
- data/lib/mongoid/indexable/specification.rb +3 -16
- data/lib/mongoid/indexable/validators/options.rb +2 -7
- data/lib/mongoid/indexable.rb +10 -25
- data/lib/mongoid/inspectable.rb +4 -11
- data/lib/mongoid/interceptable.rb +13 -30
- data/lib/mongoid/loggable.rb +13 -16
- data/lib/mongoid/matchable.rb +3 -150
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/bits.rb +41 -0
- data/lib/mongoid/matcher/bits_all_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_all_set.rb +20 -0
- data/lib/mongoid/matcher/bits_any_clear.rb +20 -0
- data/lib/mongoid/matcher/bits_any_set.rb +20 -0
- data/lib/mongoid/matcher/elem_match.rb +36 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
- data/lib/mongoid/matcher/eq.rb +11 -0
- data/lib/mongoid/matcher/eq_impl.rb +67 -0
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +26 -0
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +35 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +62 -0
- data/lib/mongoid/matcher/field_operator.rb +54 -0
- data/lib/mongoid/matcher/gt.rb +17 -0
- data/lib/mongoid/matcher/gte.rb +17 -0
- data/lib/mongoid/matcher/in.rb +25 -0
- data/lib/mongoid/matcher/lt.rb +17 -0
- data/lib/mongoid/matcher/lte.rb +17 -0
- data/lib/mongoid/matcher/mod.rb +17 -0
- data/lib/mongoid/matcher/ne.rb +16 -0
- data/lib/mongoid/matcher/nin.rb +11 -0
- data/lib/mongoid/matcher/nor.rb +25 -0
- data/lib/mongoid/matcher/not.rb +29 -0
- data/lib/mongoid/matcher/or.rb +21 -0
- data/lib/mongoid/matcher/regex.rb +41 -0
- data/lib/mongoid/matcher/size.rb +26 -0
- data/lib/mongoid/matcher/type.rb +99 -0
- data/lib/mongoid/matcher.rb +110 -0
- data/lib/mongoid/persistable/creatable.rb +6 -23
- data/lib/mongoid/persistable/deletable.rb +7 -23
- data/lib/mongoid/persistable/destroyable.rb +11 -10
- data/lib/mongoid/persistable/incrementable.rb +6 -7
- data/lib/mongoid/persistable/logical.rb +4 -6
- data/lib/mongoid/persistable/poppable.rb +3 -6
- data/lib/mongoid/persistable/pullable.rb +3 -8
- data/lib/mongoid/persistable/pushable.rb +14 -10
- data/lib/mongoid/persistable/renamable.rb +10 -8
- data/lib/mongoid/persistable/savable.rb +3 -8
- data/lib/mongoid/persistable/settable.rb +61 -19
- data/lib/mongoid/persistable/unsettable.rb +8 -8
- data/lib/mongoid/persistable/updatable.rb +33 -21
- data/lib/mongoid/persistable/upsertable.rb +4 -9
- data/lib/mongoid/persistable.rb +134 -39
- data/lib/mongoid/persistence_context.rb +51 -45
- data/lib/mongoid/positional.rb +3 -6
- data/lib/mongoid/query_cache.rb +138 -106
- data/lib/mongoid/railtie.rb +20 -16
- data/lib/mongoid/railties/controller_runtime.rb +88 -0
- data/lib/mongoid/railties/database.rake +9 -0
- data/lib/mongoid/reloadable.rb +14 -19
- data/lib/mongoid/scopable.rb +11 -38
- data/lib/mongoid/selectable.rb +8 -17
- data/lib/mongoid/serializable.rb +24 -29
- data/lib/mongoid/shardable.rb +80 -17
- data/lib/mongoid/stateful.rb +3 -10
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +12 -5
- data/lib/mongoid/tasks/database.rb +87 -7
- data/lib/mongoid/threaded/lifecycle.rb +2 -21
- data/lib/mongoid/threaded.rb +38 -55
- data/lib/mongoid/timestamps/created/short.rb +2 -1
- data/lib/mongoid/timestamps/created.rb +3 -2
- data/lib/mongoid/timestamps/short.rb +2 -1
- data/lib/mongoid/timestamps/timeless.rb +6 -9
- data/lib/mongoid/timestamps/updated/short.rb +2 -1
- data/lib/mongoid/timestamps/updated.rb +3 -4
- data/lib/mongoid/timestamps.rb +3 -2
- data/lib/mongoid/touchable.rb +132 -0
- data/lib/mongoid/traversable.rb +177 -57
- data/lib/mongoid/validatable/associated.rb +5 -6
- data/lib/mongoid/validatable/format.rb +2 -1
- data/lib/mongoid/validatable/length.rb +2 -1
- data/lib/mongoid/validatable/localizable.rb +2 -3
- data/lib/mongoid/validatable/macros.rb +3 -8
- data/lib/mongoid/validatable/presence.rb +8 -13
- data/lib/mongoid/validatable/queryable.rb +2 -3
- data/lib/mongoid/validatable/uniqueness.rb +21 -34
- data/lib/mongoid/validatable.rb +8 -27
- data/lib/mongoid/version.rb +3 -2
- data/lib/mongoid.rb +33 -15
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -2
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +45 -30
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -2
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
- data/lib/rails/generators/mongoid_generator.rb +2 -1
- data/lib/rails/mongoid.rb +4 -5
- data/spec/README.md +33 -0
- data/spec/config/mongoid.yml +13 -3
- data/spec/integration/app_spec.rb +343 -0
- data/spec/integration/associations/belongs_to_spec.rb +15 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +29 -0
- data/spec/integration/associations/embedded_spec.rb +268 -0
- data/spec/integration/associations/embeds_many_spec.rb +206 -0
- data/spec/integration/associations/embeds_one_spec.rb +23 -0
- data/spec/integration/associations/foreign_key_spec.rb +98 -0
- data/spec/integration/associations/foreign_key_spec_models.rb +64 -0
- data/spec/integration/associations/has_many_spec.rb +128 -0
- data/spec/integration/associations/has_one_spec.rb +176 -0
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +115 -0
- data/spec/integration/associations/reverse_population_spec.rb +34 -0
- data/spec/integration/associations/reverse_population_spec_models.rb +36 -0
- data/spec/integration/associations/scope_option_spec.rb +101 -0
- data/spec/integration/atomic/modifiers_spec.rb +116 -0
- data/spec/integration/bson_regexp_raw_spec.rb +19 -0
- data/spec/integration/callbacks_models.rb +61 -0
- data/spec/integration/callbacks_spec.rb +228 -0
- data/spec/integration/contextual/empty_spec.rb +141 -0
- data/spec/integration/criteria/alias_query_spec.rb +161 -0
- data/spec/integration/criteria/date_field_spec.rb +40 -0
- data/spec/integration/criteria/default_scope_spec.rb +72 -0
- data/spec/integration/criteria/logical_spec.rb +124 -0
- data/spec/integration/criteria/range_spec.rb +265 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +142 -0
- data/spec/integration/discriminator_key_spec.rb +353 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +51 -0
- data/spec/integration/i18n_fallbacks_spec.rb +89 -0
- data/spec/integration/matcher_examples_spec.rb +758 -0
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/bits_all_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_all_set.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_clear.yml +159 -0
- data/spec/integration/matcher_operator_data/bits_any_set.yml +159 -0
- data/spec/integration/matcher_operator_data/comment.yml +22 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +409 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +112 -0
- data/spec/integration/matcher_operator_data/in.yml +210 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/mod.yml +55 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_data/type.yml +70 -0
- data/spec/integration/matcher_operator_data/type_array.yml +16 -0
- data/spec/integration/matcher_operator_data/type_binary.yml +18 -0
- data/spec/integration/matcher_operator_data/type_boolean.yml +39 -0
- data/spec/integration/matcher_operator_data/type_code.yml +26 -0
- data/spec/integration/matcher_operator_data/type_code_with_scope.yml +26 -0
- data/spec/integration/matcher_operator_data/type_date.yml +39 -0
- data/spec/integration/matcher_operator_data/type_db_pointer.yml +19 -0
- data/spec/integration/matcher_operator_data/type_decimal.yml +40 -0
- data/spec/integration/matcher_operator_data/type_double.yml +15 -0
- data/spec/integration/matcher_operator_data/type_int32.yml +33 -0
- data/spec/integration/matcher_operator_data/type_int64.yml +33 -0
- data/spec/integration/matcher_operator_data/type_max_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_min_key.yml +17 -0
- data/spec/integration/matcher_operator_data/type_null.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object.yml +23 -0
- data/spec/integration/matcher_operator_data/type_object_id.yml +25 -0
- data/spec/integration/matcher_operator_data/type_regex.yml +44 -0
- data/spec/integration/matcher_operator_data/type_string.yml +15 -0
- data/spec/integration/matcher_operator_data/type_symbol.yml +32 -0
- data/spec/integration/matcher_operator_data/type_timestamp.yml +25 -0
- data/spec/integration/matcher_operator_data/type_undefined.yml +17 -0
- data/spec/integration/matcher_operator_spec.rb +124 -0
- data/spec/integration/matcher_spec.rb +283 -0
- data/spec/integration/server_query_spec.rb +141 -0
- data/spec/integration/shardable_spec.rb +148 -0
- data/spec/integration/stringified_symbol_field_spec.rb +203 -0
- data/spec/lite_spec_helper.rb +83 -0
- data/spec/mongoid/association/accessors_spec.rb +323 -77
- data/spec/mongoid/association/auto_save_spec.rb +74 -33
- data/spec/mongoid/association/builders_spec.rb +3 -1
- data/spec/mongoid/association/constrainable_spec.rb +2 -0
- data/spec/mongoid/association/counter_cache_spec.rb +34 -32
- data/spec/mongoid/association/depending_spec.rb +678 -332
- data/spec/mongoid/association/eager_spec.rb +6 -4
- data/spec/mongoid/association/embedded/cyclic_spec.rb +4 -2
- data/spec/mongoid/association/embedded/dirty_spec.rb +4 -2
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +65 -13
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +61 -1
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +672 -144
- data/spec/mongoid/association/embedded/embeds_many_models.rb +69 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +51 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +13 -1
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +2 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +23 -21
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +8 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +54 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +28 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +49 -1
- data/spec/mongoid/association/macros_spec.rb +11 -9
- data/spec/mongoid/association/nested/many_spec.rb +2 -0
- data/spec/mongoid/association/nested/one_spec.rb +18 -12
- data/spec/mongoid/association/options_spec.rb +2 -0
- data/spec/mongoid/association/polymorphic_spec.rb +61 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +57 -16
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +266 -17
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +99 -58
- data/spec/mongoid/association/referenced/belongs_to_query_spec.rb +57 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +95 -12
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +28 -1
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +67 -4
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +76 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +351 -164
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +67 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_query_spec.rb +39 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +49 -5
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +3 -1
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +40 -9
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +407 -121
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +681 -340
- data/spec/mongoid/association/referenced/has_many_models.rb +95 -0
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +26 -3
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +2 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +53 -7
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +34 -4
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +28 -26
- data/spec/mongoid/association/referenced/has_one_models.rb +97 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +144 -5
- data/spec/mongoid/association/reflections_spec.rb +2 -0
- data/spec/mongoid/association/syncable_spec.rb +33 -31
- data/spec/mongoid/association_spec.rb +2 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +49 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +2 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +2 -0
- data/spec/mongoid/atomic/paths_spec.rb +107 -12
- data/spec/mongoid/atomic_spec.rb +31 -6
- data/spec/mongoid/attributes/dynamic_spec.rb +152 -0
- data/spec/mongoid/attributes/nested_spec.rb +87 -69
- data/spec/mongoid/attributes/projector_data/embedded.yml +105 -0
- data/spec/mongoid/attributes/projector_data/fields.yml +93 -0
- data/spec/mongoid/attributes/projector_spec.rb +44 -0
- data/spec/mongoid/attributes/readonly_spec.rb +24 -22
- data/spec/mongoid/attributes_spec.rb +382 -35
- data/spec/mongoid/cacheable_spec.rb +3 -1
- data/spec/mongoid/changeable_spec.rb +60 -35
- data/spec/mongoid/clients/factory_spec.rb +148 -34
- data/spec/mongoid/clients/options_spec.rb +102 -66
- data/spec/mongoid/clients/sessions_spec.rb +39 -29
- data/spec/mongoid/clients/transactions_spec.rb +415 -0
- data/spec/mongoid/clients_spec.rb +78 -16
- data/spec/mongoid/composable_spec.rb +2 -0
- data/spec/mongoid/config/environment_spec.rb +88 -8
- data/spec/mongoid/config/options_spec.rb +22 -3
- data/spec/mongoid/config_spec.rb +280 -2
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +53 -11
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +122 -20
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +242 -81
- data/spec/mongoid/contextual/geo_near_spec.rb +31 -19
- data/spec/mongoid/contextual/map_reduce_spec.rb +24 -7
- data/spec/mongoid/contextual/memory_spec.rb +25 -23
- data/spec/mongoid/contextual/mongo_spec.rb +491 -144
- data/spec/mongoid/contextual/none_spec.rb +9 -81
- data/spec/mongoid/copyable_spec.rb +261 -30
- data/spec/mongoid/copyable_spec_models.rb +47 -0
- data/spec/mongoid/criteria/findable_spec.rb +77 -20
- data/spec/mongoid/criteria/inspectable_spec.rb +2 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +2 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +100 -48
- data/spec/mongoid/criteria/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +61 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +5 -3
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +35 -17
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +53 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +239 -178
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +9 -7
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +42 -23
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +30 -1
- data/spec/mongoid/criteria/queryable/key_spec.rb +50 -6
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +145 -12
- data/spec/mongoid/criteria/queryable/optional_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/options_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +3 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +2069 -0
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +38 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +994 -2900
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +41 -2
- data/spec/mongoid/criteria/queryable/smash_spec.rb +2 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +226 -0
- data/spec/mongoid/criteria/scopable_spec.rb +210 -0
- data/spec/mongoid/criteria_projection_spec.rb +410 -0
- data/spec/mongoid/criteria_spec.rb +807 -464
- data/spec/mongoid/document_fields_spec.rb +113 -0
- data/spec/mongoid/document_persistence_context_spec.rb +32 -0
- data/spec/mongoid/document_query_spec.rb +89 -0
- data/spec/mongoid/document_spec.rb +182 -28
- data/spec/mongoid/equality_spec.rb +144 -41
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +5 -3
- data/spec/mongoid/errors/callback_spec.rb +2 -0
- data/spec/mongoid/errors/delete_restriction_spec.rb +4 -2
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +2 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +2 -0
- data/spec/mongoid/errors/eager_load_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_option_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_includes_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_index_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_options_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_path_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_relation_spec.rb +4 -2
- data/spec/mongoid/errors/invalid_scope_spec.rb +3 -1
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +2 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +2 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -1
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +2 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +2 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +22 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_config_spec.rb +4 -2
- data/spec/mongoid/errors/no_client_database_spec.rb +5 -3
- data/spec/mongoid/errors/no_client_hosts_spec.rb +5 -3
- data/spec/mongoid/errors/no_clients_config_spec.rb +2 -0
- data/spec/mongoid/errors/no_environment_spec.rb +2 -0
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +2 -0
- data/spec/mongoid/errors/no_metadata_spec.rb +4 -2
- data/spec/mongoid/errors/no_parent_spec.rb +3 -1
- data/spec/mongoid/errors/readonly_attribute_spec.rb +2 -0
- data/spec/mongoid/errors/readonly_document_spec.rb +2 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +2 -0
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +2 -0
- data/spec/mongoid/errors/unknown_attribute_spec.rb +4 -2
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -1
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +2 -0
- data/spec/mongoid/errors/validations_spec.rb +2 -0
- data/spec/mongoid/extensions/array_spec.rb +25 -43
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -9
- data/spec/mongoid/extensions/binary_spec.rb +2 -0
- data/spec/mongoid/extensions/boolean_spec.rb +2 -0
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +335 -0
- data/spec/mongoid/extensions/date_spec.rb +8 -160
- data/spec/mongoid/extensions/date_time_spec.rb +17 -60
- data/spec/mongoid/extensions/decimal128_spec.rb +2 -0
- data/spec/mongoid/extensions/false_class_spec.rb +3 -1
- data/spec/mongoid/extensions/float_spec.rb +17 -3
- data/spec/mongoid/extensions/hash_spec.rb +105 -0
- data/spec/mongoid/extensions/integer_spec.rb +14 -2
- data/spec/mongoid/extensions/module_spec.rb +2 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +2 -0
- data/spec/mongoid/extensions/object_id_spec.rb +2 -0
- data/spec/mongoid/extensions/object_spec.rb +13 -24
- data/spec/mongoid/extensions/range_spec.rb +2 -0
- data/spec/mongoid/extensions/regexp_spec.rb +25 -0
- data/spec/mongoid/extensions/set_spec.rb +2 -0
- data/spec/mongoid/extensions/string_spec.rb +95 -34
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +84 -0
- data/spec/mongoid/extensions/symbol_spec.rb +2 -0
- data/spec/mongoid/extensions/time_spec.rb +29 -0
- data/spec/mongoid/extensions/time_with_zone_spec.rb +33 -0
- data/spec/mongoid/extensions/true_class_spec.rb +3 -1
- data/spec/mongoid/extensions_spec.rb +16 -2
- data/spec/mongoid/factory_spec.rb +287 -27
- data/spec/mongoid/fields/foreign_key_spec.rb +2 -0
- data/spec/mongoid/fields/localized_spec.rb +6 -4
- data/spec/mongoid/fields/standard_spec.rb +2 -0
- data/spec/mongoid/fields_spec.rb +419 -37
- data/spec/mongoid/findable_spec.rb +54 -20
- data/spec/mongoid/indexable/specification_spec.rb +2 -0
- data/spec/mongoid/indexable_spec.rb +36 -6
- data/spec/mongoid/inspectable_spec.rb +39 -2
- data/spec/mongoid/interceptable_spec.rb +168 -96
- data/spec/mongoid/interceptable_spec_models.rb +76 -0
- data/spec/mongoid/loggable_spec.rb +2 -0
- data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +239 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +40 -0
- data/spec/mongoid/persistable/creatable_spec.rb +112 -27
- data/spec/mongoid/persistable/deletable_spec.rb +273 -11
- data/spec/mongoid/persistable/destroyable_spec.rb +201 -11
- data/spec/mongoid/persistable/incrementable_spec.rb +29 -13
- data/spec/mongoid/persistable/logical_spec.rb +19 -3
- data/spec/mongoid/persistable/poppable_spec.rb +19 -3
- data/spec/mongoid/persistable/pullable_spec.rb +36 -6
- data/spec/mongoid/persistable/pushable_spec.rb +91 -7
- data/spec/mongoid/persistable/renamable_spec.rb +18 -2
- data/spec/mongoid/persistable/savable_spec.rb +188 -25
- data/spec/mongoid/persistable/settable_spec.rb +182 -17
- data/spec/mongoid/persistable/unsettable_spec.rb +19 -3
- data/spec/mongoid/persistable/updatable_spec.rb +45 -23
- data/spec/mongoid/persistable/upsertable_spec.rb +4 -2
- data/spec/mongoid/persistable_spec.rb +85 -9
- data/spec/mongoid/persistence_context_spec.rb +3 -1
- data/spec/mongoid/positional_spec.rb +2 -0
- data/spec/mongoid/query_cache_middleware_spec.rb +68 -0
- data/spec/mongoid/query_cache_spec.rb +575 -48
- data/spec/mongoid/relations/proxy_spec.rb +9 -7
- data/spec/mongoid/reloadable_spec.rb +298 -20
- data/spec/mongoid/scopable_spec.rb +82 -22
- data/spec/mongoid/selectable_spec.rb +8 -6
- data/spec/mongoid/serializable_spec.rb +160 -29
- data/spec/mongoid/shardable_models.rb +61 -0
- data/spec/mongoid/shardable_spec.rb +116 -17
- data/spec/mongoid/stateful_spec.rb +3 -1
- data/spec/mongoid/tasks/database_rake_spec.rb +15 -13
- data/spec/mongoid/tasks/database_spec.rb +3 -1
- data/spec/mongoid/threaded_spec.rb +72 -2
- data/spec/mongoid/timestamps/created/short_spec.rb +3 -1
- data/spec/mongoid/timestamps/created_spec.rb +3 -1
- data/spec/mongoid/timestamps/timeless_spec.rb +4 -2
- data/spec/mongoid/timestamps/updated/short_spec.rb +5 -3
- data/spec/mongoid/timestamps/updated_spec.rb +5 -3
- data/spec/mongoid/timestamps_spec.rb +8 -6
- data/spec/mongoid/{association/touchable_spec.rb → touchable_spec.rb} +206 -38
- data/spec/mongoid/touchable_spec_models.rb +53 -0
- data/spec/mongoid/traversable_spec.rb +1167 -1
- data/spec/mongoid/validatable/associated_spec.rb +2 -0
- data/spec/mongoid/validatable/format_spec.rb +2 -0
- data/spec/mongoid/validatable/length_spec.rb +2 -0
- data/spec/mongoid/validatable/numericality_spec.rb +2 -0
- data/spec/mongoid/validatable/presence_spec.rb +28 -22
- data/spec/mongoid/validatable/uniqueness_spec.rb +102 -73
- data/spec/mongoid/validatable_spec.rb +5 -3
- data/spec/mongoid_spec.rb +2 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +112 -0
- data/spec/rails/mongoid_spec.rb +4 -2
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/bin/s3-copy +45 -0
- data/spec/shared/bin/s3-upload +69 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +231 -0
- data/spec/shared/lib/mrss/constraints.rb +386 -0
- data/spec/shared/lib/mrss/docker_runner.rb +271 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +199 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +120 -0
- data/spec/shared/lib/mrss/session_registry.rb +69 -0
- data/spec/shared/lib/mrss/session_registry_legacy.rb +60 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +179 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +339 -0
- data/spec/shared/share/haproxy-1.conf +16 -0
- data/spec/shared/share/haproxy-2.conf +17 -0
- data/spec/shared/shlib/distro.sh +74 -0
- data/spec/shared/shlib/server.sh +379 -0
- data/spec/shared/shlib/set_env.sh +132 -0
- data/spec/spec_helper.rb +69 -80
- data/spec/support/authorization.rb +2 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +53 -0
- data/spec/support/expectations.rb +21 -3
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +42 -0
- data/spec/{app → support}/models/account.rb +3 -1
- data/spec/{app → support}/models/acolyte.rb +2 -0
- data/spec/{app → support}/models/actor.rb +3 -1
- data/spec/support/models/actress.rb +4 -0
- data/spec/{app → support}/models/address.rb +6 -0
- data/spec/{app → support}/models/address_component.rb +2 -0
- data/spec/{app → support}/models/address_number.rb +2 -0
- data/spec/{app → support}/models/agency.rb +2 -0
- data/spec/{app → support}/models/agent.rb +2 -0
- data/spec/{app → support}/models/album.rb +2 -0
- data/spec/{app → support}/models/alert.rb +2 -0
- data/spec/{app → support}/models/animal.rb +2 -0
- data/spec/{app → support}/models/answer.rb +2 -0
- data/spec/{app → support}/models/appointment.rb +2 -0
- data/spec/support/models/armrest.rb +9 -0
- data/spec/support/models/array_field.rb +7 -0
- data/spec/{app → support}/models/article.rb +2 -0
- data/spec/{app → support}/models/artist.rb +4 -0
- data/spec/{app → support}/models/artwork.rb +2 -0
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/{app → support}/models/audio.rb +2 -0
- data/spec/{app → support}/models/augmentation.rb +2 -0
- data/spec/{app → support}/models/author.rb +2 -0
- data/spec/{app → support}/models/baby.rb +2 -0
- data/spec/{app → support}/models/band.rb +6 -0
- data/spec/{app → support}/models/bar.rb +2 -0
- data/spec/{app → support}/models/basic.rb +2 -0
- data/spec/support/models/bed.rb +3 -0
- data/spec/{app → support}/models/big_palette.rb +2 -0
- data/spec/{app → support}/models/birthday.rb +2 -0
- data/spec/support/models/bolt.rb +7 -0
- data/spec/{app → support}/models/bomb.rb +2 -0
- data/spec/{app → support}/models/book.rb +2 -0
- data/spec/{app → support}/models/breed.rb +2 -0
- data/spec/{app → support}/models/browser.rb +3 -1
- data/spec/{app → support}/models/building.rb +2 -0
- data/spec/{app → support}/models/building_address.rb +2 -0
- data/spec/{app → support}/models/bus.rb +2 -0
- data/spec/{app → support}/models/business.rb +2 -0
- data/spec/{app → support}/models/callback_test.rb +2 -0
- data/spec/{app → support}/models/canvas.rb +3 -1
- data/spec/support/models/car.rb +3 -0
- data/spec/{app → support}/models/cat.rb +2 -0
- data/spec/{app → support}/models/category.rb +2 -0
- data/spec/{app → support}/models/child.rb +2 -0
- data/spec/{app → support}/models/child_doc.rb +5 -3
- data/spec/{app → support}/models/church.rb +2 -0
- data/spec/{app → support}/models/circle.rb +2 -0
- data/spec/{app → support}/models/circuit.rb +2 -0
- data/spec/{app → support}/models/circus.rb +2 -0
- data/spec/{app → support}/models/code.rb +2 -0
- data/spec/support/models/coding/pull_request.rb +11 -0
- data/spec/support/models/coding.rb +3 -0
- data/spec/{app → support}/models/comment.rb +2 -0
- data/spec/{app → support}/models/company.rb +2 -0
- data/spec/{app → support}/models/consumption_period.rb +2 -0
- data/spec/{app → support}/models/contextable_item.rb +2 -0
- data/spec/{app → support}/models/contractor.rb +2 -0
- data/spec/{app → support}/models/cookie.rb +2 -0
- data/spec/{app → support}/models/country_code.rb +4 -0
- data/spec/{app → support}/models/courier_job.rb +2 -0
- data/spec/support/models/crate.rb +12 -0
- data/spec/support/models/customer.rb +10 -0
- data/spec/support/models/customer_address.rb +11 -0
- data/spec/support/models/deed.rb +7 -0
- data/spec/{app → support}/models/definition.rb +2 -0
- data/spec/support/models/delegating_patient.rb +15 -0
- data/spec/{app → support}/models/description.rb +2 -0
- data/spec/{app → support}/models/dictionary.rb +8 -0
- data/spec/{app → support}/models/division.rb +2 -0
- data/spec/{app → support}/models/doctor.rb +2 -0
- data/spec/{app → support}/models/dog.rb +2 -0
- data/spec/{app → support}/models/dokument.rb +2 -0
- data/spec/{app → support}/models/draft.rb +2 -0
- data/spec/{app → support}/models/dragon.rb +2 -0
- data/spec/{app → support}/models/driver.rb +3 -1
- data/spec/{app → support}/models/drug.rb +2 -0
- data/spec/{app → support}/models/dungeon.rb +2 -0
- data/spec/{app → support}/models/edit.rb +2 -0
- data/spec/{app → support}/models/email.rb +2 -0
- data/spec/{app → support}/models/employer.rb +2 -0
- data/spec/{app → support}/models/entry.rb +2 -0
- data/spec/support/models/eraser.rb +3 -0
- data/spec/{app → support}/models/even.rb +2 -0
- data/spec/{app → support}/models/event.rb +2 -0
- data/spec/{app → support}/models/exhibition.rb +2 -0
- data/spec/{app → support}/models/exhibitor.rb +2 -0
- data/spec/{app → support}/models/explosion.rb +2 -0
- data/spec/{app → support}/models/eye.rb +2 -0
- data/spec/{app → support}/models/eye_bowl.rb +2 -0
- data/spec/{app → support}/models/face.rb +2 -0
- data/spec/{app → support}/models/favorite.rb +2 -0
- data/spec/{app → support}/models/filesystem.rb +2 -0
- data/spec/{app → support}/models/fire_hydrant.rb +2 -0
- data/spec/{app → support}/models/firefox.rb +2 -0
- data/spec/{app → support}/models/fish.rb +2 -0
- data/spec/{app → support}/models/folder.rb +2 -0
- data/spec/{app → support}/models/folder_item.rb +2 -0
- data/spec/{app → support}/models/fruits.rb +2 -0
- data/spec/{app → support}/models/game.rb +2 -0
- data/spec/{app → support}/models/ghost.rb +2 -0
- data/spec/support/models/guitar.rb +4 -0
- data/spec/support/models/hole.rb +12 -0
- data/spec/{app → support}/models/home.rb +2 -0
- data/spec/{app → support}/models/house.rb +2 -0
- data/spec/{app → support}/models/html_writer.rb +2 -0
- data/spec/{app → support}/models/id_key.rb +2 -0
- data/spec/support/models/idnodef.rb +7 -0
- data/spec/{app → support}/models/image.rb +2 -0
- data/spec/{app → support}/models/implant.rb +2 -0
- data/spec/support/models/instrument.rb +8 -0
- data/spec/{app → support}/models/item.rb +3 -1
- data/spec/{app → support}/models/jar.rb +2 -0
- data/spec/{app → support}/models/kaleidoscope.rb +2 -0
- data/spec/{app → support}/models/kangaroo.rb +3 -1
- data/spec/{app → support}/models/label.rb +4 -1
- data/spec/{app → support}/models/language.rb +2 -0
- data/spec/{app → support}/models/lat_lng.rb +2 -0
- data/spec/{app → support}/models/league.rb +2 -0
- data/spec/support/models/learner.rb +4 -0
- data/spec/{app → support}/models/line_item.rb +2 -0
- data/spec/{app → support}/models/location.rb +2 -0
- data/spec/{app → support}/models/login.rb +2 -0
- data/spec/{app → support}/models/manufacturer.rb +2 -0
- data/spec/{app → support}/models/meat.rb +2 -0
- data/spec/{app → support}/models/membership.rb +2 -0
- data/spec/{app → support}/models/message.rb +2 -0
- data/spec/support/models/minim.rb +6 -0
- data/spec/{app → support}/models/mixed_drink.rb +2 -0
- data/spec/support/models/mop.rb +24 -0
- data/spec/{app → support}/models/movie.rb +2 -0
- data/spec/support/models/my_hash.rb +4 -0
- data/spec/{app → support}/models/name.rb +2 -0
- data/spec/support/models/name_only.rb +8 -0
- data/spec/{app → support}/models/node.rb +2 -0
- data/spec/{app → support}/models/note.rb +2 -0
- data/spec/support/models/nut.rb +7 -0
- data/spec/{app → support}/models/odd.rb +2 -0
- data/spec/support/models/order.rb +12 -0
- data/spec/{app → support}/models/ordered_post.rb +3 -1
- data/spec/{app → support}/models/ordered_preference.rb +2 -0
- data/spec/{app → support}/models/oscar.rb +2 -0
- data/spec/support/models/other_owner_object.rb +4 -0
- data/spec/{app → support}/models/override.rb +2 -0
- data/spec/{app → support}/models/ownable.rb +2 -0
- data/spec/{app → support}/models/owner.rb +4 -0
- data/spec/{app → support}/models/pack.rb +2 -0
- data/spec/{app → support}/models/page.rb +2 -0
- data/spec/{app → support}/models/page_question.rb +2 -0
- data/spec/{app → support}/models/palette.rb +3 -1
- data/spec/{app → support}/models/parent.rb +2 -0
- data/spec/{app → support}/models/parent_doc.rb +2 -0
- data/spec/support/models/passport.rb +13 -0
- data/spec/{app → support}/models/patient.rb +2 -0
- data/spec/{app → support}/models/pdf_writer.rb +2 -0
- data/spec/support/models/pencil.rb +3 -0
- data/spec/{app → support}/models/person.rb +21 -1
- data/spec/{app → support}/models/pet.rb +2 -0
- data/spec/{app → support}/models/pet_owner.rb +2 -0
- data/spec/{app → support}/models/phone.rb +5 -1
- data/spec/support/models/piano.rb +4 -0
- data/spec/{app → support}/models/pizza.rb +2 -0
- data/spec/{app → support}/models/player.rb +2 -0
- data/spec/{app → support}/models/post.rb +2 -0
- data/spec/{app → support}/models/post_genre.rb +2 -0
- data/spec/{app → support}/models/powerup.rb +2 -0
- data/spec/{app → support}/models/preference.rb +2 -0
- data/spec/{app → support}/models/princess.rb +2 -0
- data/spec/{app → support}/models/product.rb +2 -0
- data/spec/support/models/profile.rb +17 -0
- data/spec/{app → support}/models/pronunciation.rb +2 -0
- data/spec/{app → support}/models/pub.rb +2 -0
- data/spec/support/models/publication/encyclopedia.rb +11 -0
- data/spec/support/models/publication/review.rb +13 -0
- data/spec/support/models/publication.rb +4 -0
- data/spec/{app → support}/models/purchase.rb +2 -0
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/{app → support}/models/question.rb +2 -0
- data/spec/{app → support}/models/quiz.rb +2 -0
- data/spec/{app → support}/models/rating.rb +2 -0
- data/spec/{app → support}/models/record.rb +2 -0
- data/spec/{app → support}/models/registry.rb +2 -0
- data/spec/{app → support}/models/role.rb +2 -0
- data/spec/{app → support}/models/root_category.rb +2 -0
- data/spec/{app → support}/models/sandwich.rb +2 -0
- data/spec/{app → support}/models/scheduler.rb +2 -0
- data/spec/support/models/scribe.rb +7 -0
- data/spec/support/models/sealer.rb +7 -0
- data/spec/support/models/seat.rb +24 -0
- data/spec/{app → support}/models/seo.rb +2 -0
- data/spec/support/models/series.rb +7 -0
- data/spec/{app → support}/models/server.rb +2 -0
- data/spec/{app → support}/models/service.rb +2 -0
- data/spec/{app → support}/models/shape.rb +4 -2
- data/spec/{app → support}/models/shelf.rb +2 -0
- data/spec/{app → support}/models/shipment_address.rb +2 -0
- data/spec/{app → support}/models/shipping_container.rb +2 -0
- data/spec/{app → support}/models/shipping_pack.rb +2 -0
- data/spec/support/models/shirt.rb +11 -0
- data/spec/{app → support}/models/shop.rb +2 -0
- data/spec/{app → support}/models/short_agent.rb +2 -0
- data/spec/{app → support}/models/short_quiz.rb +2 -0
- data/spec/{app → support}/models/simple.rb +2 -0
- data/spec/{app → support}/models/slave.rb +2 -0
- data/spec/{app → support}/models/song.rb +2 -0
- data/spec/{app → support}/models/sound.rb +2 -0
- data/spec/support/models/spacer.rb +7 -0
- data/spec/{app → support}/models/square.rb +2 -0
- data/spec/{app → support}/models/staff.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +2 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +2 -0
- data/spec/support/models/store_as_dup_test3.rb +7 -0
- data/spec/support/models/store_as_dup_test4.rb +7 -0
- data/spec/{app → support}/models/strategy.rb +2 -0
- data/spec/{app → support}/models/sub_item.rb +2 -0
- data/spec/{app → support}/models/subscription.rb +2 -0
- data/spec/{app → support}/models/survey.rb +2 -0
- data/spec/{app → support}/models/symptom.rb +2 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +2 -0
- data/spec/{app → support}/models/target.rb +2 -0
- data/spec/{app → support}/models/template.rb +2 -0
- data/spec/{app → support}/models/thing.rb +2 -0
- data/spec/support/models/threadlocker.rb +7 -0
- data/spec/{app → support}/models/title.rb +2 -0
- data/spec/{app → support}/models/tool.rb +4 -2
- data/spec/{app → support}/models/topping.rb +2 -0
- data/spec/support/models/toy.rb +9 -0
- data/spec/{app → support}/models/track.rb +2 -0
- data/spec/{app → support}/models/translation.rb +2 -0
- data/spec/{app → support}/models/tree.rb +2 -0
- data/spec/support/models/truck.rb +7 -0
- data/spec/support/models/updatable.rb +7 -0
- data/spec/{app → support}/models/user.rb +2 -0
- data/spec/{app → support}/models/user_account.rb +2 -0
- data/spec/{app → support}/models/validation_callback.rb +2 -0
- data/spec/support/models/vehicle.rb +18 -0
- data/spec/{app → support}/models/version.rb +2 -0
- data/spec/{app → support}/models/vertex.rb +3 -1
- data/spec/{app → support}/models/vet_visit.rb +2 -0
- data/spec/{app → support}/models/video.rb +2 -0
- data/spec/support/models/video_game.rb +3 -0
- data/spec/support/models/washer.rb +7 -0
- data/spec/{app → support}/models/weapon.rb +2 -0
- data/spec/{app → support}/models/wiki_page.rb +3 -0
- data/spec/{app → support}/models/word.rb +2 -0
- data/spec/{app → support}/models/word_origin.rb +2 -0
- data/spec/{app → support}/models/writer.rb +4 -2
- data/spec/support/shared/time.rb +53 -0
- data/spec/support/spec_config.rb +60 -0
- data.tar.gz.sig +0 -0
- metadata +1131 -686
- metadata.gz.sig +0 -0
- data/lib/mongoid/association/touchable.rb +0 -97
- data/lib/mongoid/criteria/queryable/forwardable.rb +0 -65
- data/lib/mongoid/matchable/all.rb +0 -27
- data/lib/mongoid/matchable/and.rb +0 -30
- data/lib/mongoid/matchable/default.rb +0 -72
- data/lib/mongoid/matchable/elem_match.rb +0 -34
- data/lib/mongoid/matchable/exists.rb +0 -23
- data/lib/mongoid/matchable/gt.rb +0 -23
- data/lib/mongoid/matchable/gte.rb +0 -23
- data/lib/mongoid/matchable/in.rb +0 -24
- data/lib/mongoid/matchable/lt.rb +0 -23
- data/lib/mongoid/matchable/lte.rb +0 -23
- data/lib/mongoid/matchable/ne.rb +0 -21
- data/lib/mongoid/matchable/nin.rb +0 -22
- data/lib/mongoid/matchable/or.rb +0 -33
- data/lib/mongoid/matchable/regexp.rb +0 -27
- data/lib/mongoid/matchable/size.rb +0 -21
- data/lib/support/ruby_version.rb +0 -26
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/passport.rb +0 -5
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/profile.rb +0 -5
- data/spec/app/models/series.rb +0 -4
- data/spec/app/models/truck.rb +0 -3
- data/spec/app/models/vehicle.rb +0 -11
- data/spec/app/models/video_game.rb +0 -1
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +0 -87
- data/spec/mongoid/matchable/all_spec.rb +0 -31
- data/spec/mongoid/matchable/and_spec.rb +0 -187
- data/spec/mongoid/matchable/default_spec.rb +0 -130
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -106
- data/spec/mongoid/matchable/exists_spec.rb +0 -57
- data/spec/mongoid/matchable/gt_spec.rb +0 -86
- data/spec/mongoid/matchable/gte_spec.rb +0 -84
- data/spec/mongoid/matchable/in_spec.rb +0 -49
- data/spec/mongoid/matchable/lt_spec.rb +0 -85
- data/spec/mongoid/matchable/lte_spec.rb +0 -85
- data/spec/mongoid/matchable/ne_spec.rb +0 -46
- data/spec/mongoid/matchable/nin_spec.rb +0 -48
- data/spec/mongoid/matchable/or_spec.rb +0 -131
- data/spec/mongoid/matchable/regexp_spec.rb +0 -59
- data/spec/mongoid/matchable/size_spec.rb +0 -25
- data/spec/mongoid/matchable_spec.rb +0 -828
|
@@ -1,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
|
|
153
158
|
|
|
154
|
-
|
|
155
|
-
|
|
159
|
+
let(:other) do
|
|
160
|
+
described_class.new([])
|
|
161
|
+
end
|
|
162
|
+
|
|
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,28 +255,139 @@ 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)
|
|
239
298
|
end
|
|
240
299
|
|
|
241
|
-
|
|
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
|
|
310
|
+
end
|
|
311
|
+
|
|
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
|
|
245
341
|
end
|
|
246
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
|
|
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 }
|
|
390
|
+
|
|
247
391
|
it "retains the correct length" do
|
|
248
392
|
expect(enumerable.length).to eq(2)
|
|
249
393
|
end
|
|
@@ -251,6 +395,148 @@ 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
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
context "when the documents have been loaded" do
|
|
417
|
+
let(:criteria) do
|
|
418
|
+
Post.where(person_id: person.id)
|
|
419
|
+
end
|
|
420
|
+
|
|
421
|
+
let!(:enumerable) do
|
|
422
|
+
described_class.new(criteria)
|
|
423
|
+
end
|
|
424
|
+
|
|
425
|
+
before do
|
|
426
|
+
enumerable.load_all!
|
|
427
|
+
end
|
|
428
|
+
|
|
429
|
+
it "is _loaded" do
|
|
430
|
+
expect(enumerable._loaded?).to be true
|
|
431
|
+
end
|
|
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
|
+
|
|
438
|
+
context "when a block is given" do
|
|
439
|
+
it "returns true when the predicate is true" do
|
|
440
|
+
expect(
|
|
441
|
+
enumerable.any? { |doc| true }
|
|
442
|
+
).to be true
|
|
443
|
+
end
|
|
444
|
+
|
|
445
|
+
it "returns false when the predicate is false" do
|
|
446
|
+
expect(
|
|
447
|
+
enumerable.any? { |doc| false }
|
|
448
|
+
).to be false
|
|
449
|
+
end
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
context "when an argument is given" do
|
|
453
|
+
|
|
454
|
+
it "returns true when the argument is true" do
|
|
455
|
+
expect(enumerable.any?(Post)).to be true
|
|
456
|
+
end
|
|
457
|
+
|
|
458
|
+
it "returns false when the argument is false" do
|
|
459
|
+
expect(enumerable.any?(Sandwich)).to be false
|
|
460
|
+
end
|
|
461
|
+
end
|
|
462
|
+
|
|
463
|
+
context "when both an argument and a block are given" do
|
|
464
|
+
|
|
465
|
+
it "gives precedence to the pattern" do
|
|
466
|
+
expect(
|
|
467
|
+
enumerable.any?(Post) { |doc| false }
|
|
468
|
+
).to be true
|
|
469
|
+
end
|
|
470
|
+
end
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
context "when the documents are not loaded" do
|
|
474
|
+
|
|
475
|
+
let(:criteria) do
|
|
476
|
+
Post.where(person_id: person.id)
|
|
477
|
+
end
|
|
478
|
+
|
|
479
|
+
let!(:enumerable) do
|
|
480
|
+
described_class.new(criteria)
|
|
481
|
+
end
|
|
482
|
+
|
|
483
|
+
it "is not _loaded" do
|
|
484
|
+
expect(enumerable._loaded?).to be false
|
|
485
|
+
end
|
|
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
|
+
|
|
508
|
+
context "when a block is given" do
|
|
509
|
+
it "returns true when the predicate is true" do
|
|
510
|
+
expect(
|
|
511
|
+
enumerable.any? { |doc| true }
|
|
512
|
+
).to be true
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
it "returns false when the predicate is false" do
|
|
516
|
+
expect(
|
|
517
|
+
enumerable.any? { |doc| false }
|
|
518
|
+
).to be false
|
|
519
|
+
end
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
context "when an argument is given" do
|
|
523
|
+
|
|
524
|
+
it "returns true when the argument is true" do
|
|
525
|
+
expect(enumerable.any?(Post)).to be true
|
|
526
|
+
end
|
|
527
|
+
|
|
528
|
+
it "returns false when the argument is false" do
|
|
529
|
+
expect(enumerable.any?(Sandwich)).to be false
|
|
530
|
+
end
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
context "when both an argument and a block are given" do
|
|
534
|
+
|
|
535
|
+
it "gives precedence to the pattern" do
|
|
536
|
+
expect(
|
|
537
|
+
enumerable.any?(Post) { |doc| false }
|
|
538
|
+
).to be true
|
|
539
|
+
end
|
|
254
540
|
end
|
|
255
541
|
end
|
|
256
542
|
end
|
|
@@ -258,15 +544,15 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
258
544
|
describe "#clear" do
|
|
259
545
|
|
|
260
546
|
let(:person) do
|
|
261
|
-
Person.create
|
|
547
|
+
Person.create!
|
|
262
548
|
end
|
|
263
549
|
|
|
264
550
|
let!(:post) do
|
|
265
|
-
Post.create(person_id: person.id)
|
|
551
|
+
Post.create!(person_id: person.id)
|
|
266
552
|
end
|
|
267
553
|
|
|
268
554
|
let!(:post_two) do
|
|
269
|
-
Post.create(person_id: person.id)
|
|
555
|
+
Post.create!(person_id: person.id)
|
|
270
556
|
end
|
|
271
557
|
|
|
272
558
|
let(:criteria) do
|
|
@@ -304,15 +590,15 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
304
590
|
describe "#clone" do
|
|
305
591
|
|
|
306
592
|
let(:person) do
|
|
307
|
-
Person.create
|
|
593
|
+
Person.create!
|
|
308
594
|
end
|
|
309
595
|
|
|
310
596
|
let!(:post) do
|
|
311
|
-
Post.create(title: "one", person_id: person.id)
|
|
597
|
+
Post.create!(title: "one", person_id: person.id)
|
|
312
598
|
end
|
|
313
599
|
|
|
314
600
|
let!(:post_two) do
|
|
315
|
-
Post.create(title: "two", person_id: person.id)
|
|
601
|
+
Post.create!(title: "two", person_id: person.id)
|
|
316
602
|
end
|
|
317
603
|
|
|
318
604
|
let(:criteria) do
|
|
@@ -344,13 +630,13 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
344
630
|
describe "#delete" do
|
|
345
631
|
|
|
346
632
|
let(:person) do
|
|
347
|
-
Person.create
|
|
633
|
+
Person.create!
|
|
348
634
|
end
|
|
349
635
|
|
|
350
636
|
context "when the document is loaded" do
|
|
351
637
|
|
|
352
638
|
let!(:post) do
|
|
353
|
-
Post.create(person_id: person.id)
|
|
639
|
+
Post.create!(person_id: person.id)
|
|
354
640
|
end
|
|
355
641
|
|
|
356
642
|
let!(:enumerable) do
|
|
@@ -404,7 +690,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
404
690
|
context "when the document is unloaded" do
|
|
405
691
|
|
|
406
692
|
let!(:post) do
|
|
407
|
-
Post.create(person_id: person.id)
|
|
693
|
+
Post.create!(person_id: person.id)
|
|
408
694
|
end
|
|
409
695
|
|
|
410
696
|
let(:criteria) do
|
|
@@ -431,7 +717,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
431
717
|
context "when the document is not found" do
|
|
432
718
|
|
|
433
719
|
let!(:post) do
|
|
434
|
-
Post.create(person_id: person.id)
|
|
720
|
+
Post.create!(person_id: person.id)
|
|
435
721
|
end
|
|
436
722
|
|
|
437
723
|
let(:criteria) do
|
|
@@ -457,13 +743,13 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
457
743
|
describe "#delete_if" do
|
|
458
744
|
|
|
459
745
|
let(:person) do
|
|
460
|
-
Person.create
|
|
746
|
+
Person.create!
|
|
461
747
|
end
|
|
462
748
|
|
|
463
749
|
context "when the document is loaded" do
|
|
464
750
|
|
|
465
751
|
let!(:post) do
|
|
466
|
-
Post.create(person_id: person.id)
|
|
752
|
+
Post.create!(person_id: person.id)
|
|
467
753
|
end
|
|
468
754
|
|
|
469
755
|
let!(:enumerable) do
|
|
@@ -517,7 +803,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
517
803
|
context "when the document is unloaded" do
|
|
518
804
|
|
|
519
805
|
let!(:post) do
|
|
520
|
-
Post.create(person_id: person.id)
|
|
806
|
+
Post.create!(person_id: person.id)
|
|
521
807
|
end
|
|
522
808
|
|
|
523
809
|
let(:criteria) do
|
|
@@ -544,7 +830,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
544
830
|
context "when the block doesn't match" do
|
|
545
831
|
|
|
546
832
|
let!(:post) do
|
|
547
|
-
Post.create(person_id: person.id)
|
|
833
|
+
Post.create!(person_id: person.id)
|
|
548
834
|
end
|
|
549
835
|
|
|
550
836
|
let(:criteria) do
|
|
@@ -568,11 +854,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
568
854
|
describe "#detect" do
|
|
569
855
|
|
|
570
856
|
let(:person) do
|
|
571
|
-
Person.create
|
|
857
|
+
Person.create!
|
|
572
858
|
end
|
|
573
859
|
|
|
574
860
|
let!(:post) do
|
|
575
|
-
Post.create(person: person, title: "test")
|
|
861
|
+
Post.create!(person: person, title: "test")
|
|
576
862
|
end
|
|
577
863
|
|
|
578
864
|
let(:criteria) do
|
|
@@ -598,11 +884,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
598
884
|
describe "#each" do
|
|
599
885
|
|
|
600
886
|
let(:person) do
|
|
601
|
-
Person.create
|
|
887
|
+
Person.create!
|
|
602
888
|
end
|
|
603
889
|
|
|
604
890
|
let!(:post) do
|
|
605
|
-
Post.create(person_id: person.id)
|
|
891
|
+
Post.create!(person_id: person.id)
|
|
606
892
|
end
|
|
607
893
|
|
|
608
894
|
context "when only a criteria target exists" do
|
|
@@ -629,18 +915,18 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
629
915
|
expect(enumerable).to be__loaded
|
|
630
916
|
end
|
|
631
917
|
|
|
632
|
-
context 'when the base
|
|
918
|
+
context 'when the base association is accessed from each document' do
|
|
633
919
|
|
|
634
920
|
let(:persons) do
|
|
635
921
|
described_class.new(criteria).collect(&:person)
|
|
636
922
|
end
|
|
637
923
|
|
|
638
924
|
before do
|
|
639
|
-
Post.create(person_id: person.id)
|
|
640
|
-
Post.create(person_id: person.id)
|
|
925
|
+
Post.create!(person_id: person.id)
|
|
926
|
+
Post.create!(person_id: person.id)
|
|
641
927
|
end
|
|
642
928
|
|
|
643
|
-
it 'sets the base
|
|
929
|
+
it 'sets the base association from the criteria' do
|
|
644
930
|
expect(persons.uniq.size).to eq(1)
|
|
645
931
|
end
|
|
646
932
|
end
|
|
@@ -748,7 +1034,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
748
1034
|
describe "#entries" do
|
|
749
1035
|
|
|
750
1036
|
let(:person) do
|
|
751
|
-
Person.create
|
|
1037
|
+
Person.create!
|
|
752
1038
|
end
|
|
753
1039
|
|
|
754
1040
|
let(:criteria) do
|
|
@@ -762,7 +1048,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
762
1048
|
context "when the added contains a persisted document" do
|
|
763
1049
|
|
|
764
1050
|
let!(:post) do
|
|
765
|
-
Post.create(person_id: person.id)
|
|
1051
|
+
Post.create!(person_id: person.id)
|
|
766
1052
|
end
|
|
767
1053
|
|
|
768
1054
|
before do
|
|
@@ -782,7 +1068,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
782
1068
|
describe "#first" do
|
|
783
1069
|
|
|
784
1070
|
let(:person) do
|
|
785
|
-
Person.create
|
|
1071
|
+
Person.create!
|
|
786
1072
|
end
|
|
787
1073
|
|
|
788
1074
|
context "when the enumerable is not loaded" do
|
|
@@ -800,7 +1086,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
800
1086
|
context "when added is empty" do
|
|
801
1087
|
|
|
802
1088
|
let!(:post) do
|
|
803
|
-
Post.create(person_id: person.id)
|
|
1089
|
+
Post.create!(person_id: person.id)
|
|
804
1090
|
end
|
|
805
1091
|
|
|
806
1092
|
let(:first) do
|
|
@@ -824,7 +1110,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
824
1110
|
context "when added is not empty" do
|
|
825
1111
|
|
|
826
1112
|
let!(:post) do
|
|
827
|
-
Post.create(person_id: person.id)
|
|
1113
|
+
Post.create!(person_id: person.id)
|
|
828
1114
|
end
|
|
829
1115
|
|
|
830
1116
|
let(:post_two) do
|
|
@@ -896,7 +1182,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
896
1182
|
context "when loaded is not empty" do
|
|
897
1183
|
|
|
898
1184
|
let!(:post) do
|
|
899
|
-
Post.create(person_id: person.id)
|
|
1185
|
+
Post.create!(person_id: person.id)
|
|
900
1186
|
end
|
|
901
1187
|
|
|
902
1188
|
let(:enumerable) do
|
|
@@ -915,7 +1201,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
915
1201
|
context "when loaded is empty" do
|
|
916
1202
|
|
|
917
1203
|
let!(:post) do
|
|
918
|
-
Post.create(person_id: person.id)
|
|
1204
|
+
Post.create!(person_id: person.id)
|
|
919
1205
|
end
|
|
920
1206
|
|
|
921
1207
|
let(:enumerable) do
|
|
@@ -954,7 +1240,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
954
1240
|
context 'when the id_sort option is none' do
|
|
955
1241
|
|
|
956
1242
|
let(:person) do
|
|
957
|
-
Person.create
|
|
1243
|
+
Person.create!
|
|
958
1244
|
end
|
|
959
1245
|
|
|
960
1246
|
let(:criteria) do
|
|
@@ -966,11 +1252,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
966
1252
|
end
|
|
967
1253
|
|
|
968
1254
|
let!(:first_post) do
|
|
969
|
-
person.posts.create(title: "One")
|
|
1255
|
+
person.posts.create!(title: "One")
|
|
970
1256
|
end
|
|
971
1257
|
|
|
972
1258
|
let!(:second_post) do
|
|
973
|
-
person.posts.create(title: "Two")
|
|
1259
|
+
person.posts.create!(title: "Two")
|
|
974
1260
|
end
|
|
975
1261
|
|
|
976
1262
|
it 'does not use the sort on id' do
|
|
@@ -981,7 +1267,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
981
1267
|
context 'when the id_sort option is not provided' do
|
|
982
1268
|
|
|
983
1269
|
let(:person) do
|
|
984
|
-
Person.create
|
|
1270
|
+
Person.create!
|
|
985
1271
|
end
|
|
986
1272
|
|
|
987
1273
|
let(:criteria) do
|
|
@@ -993,11 +1279,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
993
1279
|
end
|
|
994
1280
|
|
|
995
1281
|
let!(:first_post) do
|
|
996
|
-
person.posts.create(title: "One")
|
|
1282
|
+
person.posts.create!(title: "One")
|
|
997
1283
|
end
|
|
998
1284
|
|
|
999
1285
|
let!(:second_post) do
|
|
1000
|
-
person.posts.create(title: "Two")
|
|
1286
|
+
person.posts.create!(title: "Two")
|
|
1001
1287
|
end
|
|
1002
1288
|
|
|
1003
1289
|
it 'uses the sort on id' do
|
|
@@ -1009,15 +1295,15 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1009
1295
|
describe "#include?" do
|
|
1010
1296
|
|
|
1011
1297
|
let(:person) do
|
|
1012
|
-
Person.create
|
|
1298
|
+
Person.create!
|
|
1013
1299
|
end
|
|
1014
1300
|
|
|
1015
1301
|
let!(:post_one) do
|
|
1016
|
-
Post.create(person_id: person.id)
|
|
1302
|
+
Post.create!(person_id: person.id)
|
|
1017
1303
|
end
|
|
1018
1304
|
|
|
1019
1305
|
let!(:post_two) do
|
|
1020
|
-
Post.create(person_id: person.id)
|
|
1306
|
+
Post.create!(person_id: person.id)
|
|
1021
1307
|
end
|
|
1022
1308
|
|
|
1023
1309
|
context "when no criteria exists" do
|
|
@@ -1079,7 +1365,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1079
1365
|
described_class.new(criteria)
|
|
1080
1366
|
end
|
|
1081
1367
|
|
|
1082
|
-
let
|
|
1368
|
+
let(:included) do
|
|
1083
1369
|
enumerable.include?(post_two)
|
|
1084
1370
|
end
|
|
1085
1371
|
|
|
@@ -1095,7 +1381,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1095
1381
|
expect(enumerable.to_a.length).to eq(2)
|
|
1096
1382
|
end
|
|
1097
1383
|
|
|
1098
|
-
context "when iterating over the
|
|
1384
|
+
context "when iterating over the association a second time" do
|
|
1099
1385
|
|
|
1100
1386
|
before do
|
|
1101
1387
|
enumerable.each { |post| post }
|
|
@@ -1263,7 +1549,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1263
1549
|
describe "#last" do
|
|
1264
1550
|
|
|
1265
1551
|
let(:person) do
|
|
1266
|
-
Person.create
|
|
1552
|
+
Person.create!
|
|
1267
1553
|
end
|
|
1268
1554
|
|
|
1269
1555
|
context "when the enumerable is not loaded" do
|
|
@@ -1279,7 +1565,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1279
1565
|
context "when unloaded is not empty" do
|
|
1280
1566
|
|
|
1281
1567
|
let!(:post) do
|
|
1282
|
-
Post.create(person_id: person.id)
|
|
1568
|
+
Post.create!(person_id: person.id)
|
|
1283
1569
|
end
|
|
1284
1570
|
|
|
1285
1571
|
let(:last) do
|
|
@@ -1341,11 +1627,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1341
1627
|
context "when added is not empty" do
|
|
1342
1628
|
|
|
1343
1629
|
let!(:post_one) do
|
|
1344
|
-
person.posts.create
|
|
1630
|
+
person.posts.create!
|
|
1345
1631
|
end
|
|
1346
1632
|
|
|
1347
1633
|
let!(:post_two) do
|
|
1348
|
-
person.posts.create
|
|
1634
|
+
person.posts.create!
|
|
1349
1635
|
end
|
|
1350
1636
|
|
|
1351
1637
|
let(:last) do
|
|
@@ -1366,7 +1652,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1366
1652
|
context "when loaded is not empty" do
|
|
1367
1653
|
|
|
1368
1654
|
let!(:post) do
|
|
1369
|
-
Post.create(person_id: person.id)
|
|
1655
|
+
Post.create!(person_id: person.id)
|
|
1370
1656
|
end
|
|
1371
1657
|
|
|
1372
1658
|
let(:enumerable) do
|
|
@@ -1385,7 +1671,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1385
1671
|
context "when loaded is empty" do
|
|
1386
1672
|
|
|
1387
1673
|
let!(:post) do
|
|
1388
|
-
Post.create(person_id: person.id)
|
|
1674
|
+
Post.create!(person_id: person.id)
|
|
1389
1675
|
end
|
|
1390
1676
|
|
|
1391
1677
|
let(:enumerable) do
|
|
@@ -1424,7 +1710,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1424
1710
|
context 'when the id_sort option is none' do
|
|
1425
1711
|
|
|
1426
1712
|
let(:person) do
|
|
1427
|
-
Person.create
|
|
1713
|
+
Person.create!
|
|
1428
1714
|
end
|
|
1429
1715
|
|
|
1430
1716
|
let(:criteria) do
|
|
@@ -1436,11 +1722,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1436
1722
|
end
|
|
1437
1723
|
|
|
1438
1724
|
let!(:first_post) do
|
|
1439
|
-
person.posts.create(title: "One")
|
|
1725
|
+
person.posts.create!(title: "One")
|
|
1440
1726
|
end
|
|
1441
1727
|
|
|
1442
1728
|
let!(:second_post) do
|
|
1443
|
-
person.posts.create(title: "Two")
|
|
1729
|
+
person.posts.create!(title: "Two")
|
|
1444
1730
|
end
|
|
1445
1731
|
|
|
1446
1732
|
it 'does not use the sort on id' do
|
|
@@ -1451,7 +1737,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1451
1737
|
context 'when the id_sort option is not provided' do
|
|
1452
1738
|
|
|
1453
1739
|
let(:person) do
|
|
1454
|
-
Person.create
|
|
1740
|
+
Person.create!
|
|
1455
1741
|
end
|
|
1456
1742
|
|
|
1457
1743
|
let(:criteria) do
|
|
@@ -1463,11 +1749,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1463
1749
|
end
|
|
1464
1750
|
|
|
1465
1751
|
let!(:first_post) do
|
|
1466
|
-
person.posts.create(title: "One")
|
|
1752
|
+
person.posts.create!(title: "One")
|
|
1467
1753
|
end
|
|
1468
1754
|
|
|
1469
1755
|
let!(:second_post) do
|
|
1470
|
-
person.posts.create(title: "Two")
|
|
1756
|
+
person.posts.create!(title: "Two")
|
|
1471
1757
|
end
|
|
1472
1758
|
|
|
1473
1759
|
it 'uses the sort on id' do
|
|
@@ -1500,11 +1786,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1500
1786
|
describe "#load_all!" do
|
|
1501
1787
|
|
|
1502
1788
|
let(:person) do
|
|
1503
|
-
Person.create
|
|
1789
|
+
Person.create!
|
|
1504
1790
|
end
|
|
1505
1791
|
|
|
1506
1792
|
let!(:post) do
|
|
1507
|
-
Post.create(person_id: person.id)
|
|
1793
|
+
Post.create!(person_id: person.id)
|
|
1508
1794
|
end
|
|
1509
1795
|
|
|
1510
1796
|
let(:criteria) do
|
|
@@ -1535,15 +1821,15 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1535
1821
|
describe "#reset" do
|
|
1536
1822
|
|
|
1537
1823
|
let(:person) do
|
|
1538
|
-
Person.create
|
|
1824
|
+
Person.create!
|
|
1539
1825
|
end
|
|
1540
1826
|
|
|
1541
1827
|
let(:post) do
|
|
1542
|
-
Post.create(person_id: person.id)
|
|
1828
|
+
Post.create!(person_id: person.id)
|
|
1543
1829
|
end
|
|
1544
1830
|
|
|
1545
1831
|
let(:post_two) do
|
|
1546
|
-
Post.create(person_id: person.id)
|
|
1832
|
+
Post.create!(person_id: person.id)
|
|
1547
1833
|
end
|
|
1548
1834
|
|
|
1549
1835
|
let(:enumerable) do
|
|
@@ -1591,11 +1877,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1591
1877
|
describe "#size" do
|
|
1592
1878
|
|
|
1593
1879
|
let(:person) do
|
|
1594
|
-
Person.create
|
|
1880
|
+
Person.create!
|
|
1595
1881
|
end
|
|
1596
1882
|
|
|
1597
1883
|
let!(:post) do
|
|
1598
|
-
Post.create(person_id: person.id)
|
|
1884
|
+
Post.create!(person_id: person.id)
|
|
1599
1885
|
end
|
|
1600
1886
|
|
|
1601
1887
|
context "when the base is new" do
|
|
@@ -1607,7 +1893,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1607
1893
|
context "when the added contains a persisted document" do
|
|
1608
1894
|
|
|
1609
1895
|
let!(:post) do
|
|
1610
|
-
Post.create(person_id: person.id)
|
|
1896
|
+
Post.create!(person_id: person.id)
|
|
1611
1897
|
end
|
|
1612
1898
|
|
|
1613
1899
|
context "when the enumerable is not loaded" do
|
|
@@ -1678,7 +1964,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1678
1964
|
context "when the added contains persisted documents" do
|
|
1679
1965
|
|
|
1680
1966
|
let(:post_two) do
|
|
1681
|
-
Post.create(person_id: person.id)
|
|
1967
|
+
Post.create!(person_id: person.id)
|
|
1682
1968
|
end
|
|
1683
1969
|
|
|
1684
1970
|
before do
|
|
@@ -1699,11 +1985,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1699
1985
|
describe "#to_json" do
|
|
1700
1986
|
|
|
1701
1987
|
let(:person) do
|
|
1702
|
-
Person.create
|
|
1988
|
+
Person.create!
|
|
1703
1989
|
end
|
|
1704
1990
|
|
|
1705
1991
|
let!(:post) do
|
|
1706
|
-
Post.create(title: "test", person_id: person.id)
|
|
1992
|
+
Post.create!(title: "test", person_id: person.id)
|
|
1707
1993
|
end
|
|
1708
1994
|
|
|
1709
1995
|
let(:criteria) do
|
|
@@ -1730,11 +2016,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1730
2016
|
describe "#to_json(parameters)" do
|
|
1731
2017
|
|
|
1732
2018
|
let(:person) do
|
|
1733
|
-
Person.create
|
|
2019
|
+
Person.create!
|
|
1734
2020
|
end
|
|
1735
2021
|
|
|
1736
2022
|
let!(:post) do
|
|
1737
|
-
Post.create(title: "test", person_id: person.id)
|
|
2023
|
+
Post.create!(title: "test", person_id: person.id)
|
|
1738
2024
|
end
|
|
1739
2025
|
|
|
1740
2026
|
let(:criteria) do
|
|
@@ -1753,11 +2039,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1753
2039
|
describe "#as_json" do
|
|
1754
2040
|
|
|
1755
2041
|
let(:person) do
|
|
1756
|
-
Person.create
|
|
2042
|
+
Person.create!
|
|
1757
2043
|
end
|
|
1758
2044
|
|
|
1759
2045
|
let!(:post) do
|
|
1760
|
-
Post.create(title: "test", person_id: person.id)
|
|
2046
|
+
Post.create!(title: "test", person_id: person.id)
|
|
1761
2047
|
end
|
|
1762
2048
|
|
|
1763
2049
|
let(:criteria) do
|
|
@@ -1785,11 +2071,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1785
2071
|
describe "#as_json(parameters)" do
|
|
1786
2072
|
|
|
1787
2073
|
let(:person) do
|
|
1788
|
-
Person.create
|
|
2074
|
+
Person.create!
|
|
1789
2075
|
end
|
|
1790
2076
|
|
|
1791
2077
|
let!(:post) do
|
|
1792
|
-
Post.create(title: "test", person_id: person.id)
|
|
2078
|
+
Post.create!(title: "test", person_id: person.id)
|
|
1793
2079
|
end
|
|
1794
2080
|
|
|
1795
2081
|
let(:criteria) do
|
|
@@ -1812,11 +2098,11 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1812
2098
|
describe "#uniq" do
|
|
1813
2099
|
|
|
1814
2100
|
let(:person) do
|
|
1815
|
-
Person.create
|
|
2101
|
+
Person.create!
|
|
1816
2102
|
end
|
|
1817
2103
|
|
|
1818
2104
|
let!(:post) do
|
|
1819
|
-
Post.create(person_id: person.id)
|
|
2105
|
+
Post.create!(person_id: person.id)
|
|
1820
2106
|
end
|
|
1821
2107
|
|
|
1822
2108
|
let(:criteria) do
|
|
@@ -1848,7 +2134,7 @@ describe Mongoid::Association::Referenced::HasMany::Targets::Enumerable do
|
|
|
1848
2134
|
describe 'setting the same parent object on enumerated children objects' do
|
|
1849
2135
|
|
|
1850
2136
|
let(:person) do
|
|
1851
|
-
Person.create
|
|
2137
|
+
Person.create!
|
|
1852
2138
|
end
|
|
1853
2139
|
|
|
1854
2140
|
context 'when a single child is fetched' do
|