mongoid 3.1.5 → 8.0.2
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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data/CHANGELOG.md +636 -33
- data/LICENSE +2 -1
- data/README.md +32 -24
- data/Rakefile +75 -5
- data/lib/config/locales/en.yml +301 -132
- data/lib/mongoid/association/accessors.rb +431 -0
- data/lib/mongoid/association/bindable.rb +227 -0
- data/lib/mongoid/association/builders.rb +86 -0
- data/lib/mongoid/association/constrainable.rb +42 -0
- data/lib/mongoid/association/depending.rb +128 -0
- data/lib/mongoid/association/eager_loadable.rb +57 -0
- data/lib/mongoid/association/embedded/batchable.rb +398 -0
- data/lib/mongoid/association/embedded/cyclic.rb +102 -0
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +74 -0
- data/lib/mongoid/association/embedded/embedded_in/buildable.rb +38 -0
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +111 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +135 -0
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +42 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +45 -0
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +571 -0
- data/lib/mongoid/association/embedded/embeds_many.rb +183 -0
- data/lib/mongoid/association/embedded/embeds_one/binding.rb +43 -0
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +53 -0
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +164 -0
- data/lib/mongoid/association/embedded/embeds_one.rb +150 -0
- data/lib/mongoid/association/embedded.rb +6 -0
- data/lib/mongoid/association/macros.rb +228 -0
- data/lib/mongoid/association/many.rb +202 -0
- data/lib/mongoid/association/marshalable.rb +31 -0
- data/lib/mongoid/association/nested/many.rb +192 -0
- data/lib/mongoid/association/nested/nested_buildable.rb +66 -0
- data/lib/mongoid/association/nested/one.rb +116 -0
- data/lib/mongoid/association/nested.rb +15 -0
- data/lib/mongoid/association/one.rb +53 -0
- data/lib/mongoid/association/options.rb +122 -0
- data/lib/mongoid/association/proxy.rb +200 -0
- data/lib/mongoid/association/referenced/auto_save.rb +74 -0
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +83 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +48 -0
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +73 -0
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +124 -0
- data/lib/mongoid/association/referenced/belongs_to.rb +226 -0
- data/lib/mongoid/association/referenced/counter_cache.rb +152 -0
- data/lib/mongoid/association/referenced/eager.rb +163 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +72 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +40 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +53 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +345 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +273 -0
- data/lib/mongoid/association/referenced/has_many/binding.rb +36 -0
- data/lib/mongoid/association/referenced/has_many/buildable.rb +38 -0
- data/lib/mongoid/association/referenced/has_many/eager.rb +44 -0
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +494 -0
- data/lib/mongoid/association/referenced/has_many/proxy.rb +551 -0
- data/lib/mongoid/association/referenced/has_many.rb +251 -0
- data/lib/mongoid/association/referenced/has_one/binding.rb +42 -0
- data/lib/mongoid/association/referenced/has_one/buildable.rb +74 -0
- data/lib/mongoid/association/referenced/has_one/eager.rb +36 -0
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +113 -0
- data/lib/mongoid/association/referenced/has_one/proxy.rb +108 -0
- data/lib/mongoid/association/referenced/has_one.rb +184 -0
- data/lib/mongoid/association/referenced/syncable.rb +155 -0
- data/lib/mongoid/association/referenced.rb +9 -0
- data/lib/mongoid/association/reflections.rb +69 -0
- data/lib/mongoid/association/relatable.rb +489 -0
- data/lib/mongoid/association.rb +135 -0
- data/lib/mongoid/atomic/modifiers.rb +41 -61
- data/lib/mongoid/atomic/paths/embedded/many.rb +24 -8
- data/lib/mongoid/atomic/paths/embedded/one.rb +5 -8
- data/lib/mongoid/atomic/paths/embedded.rb +3 -34
- data/lib/mongoid/atomic/paths/root.rb +4 -20
- data/lib/mongoid/atomic/paths.rb +2 -1
- data/lib/mongoid/atomic.rb +52 -69
- data/lib/mongoid/attributes/dynamic.rb +141 -0
- data/lib/mongoid/attributes/nested.rb +93 -0
- data/lib/mongoid/attributes/processing.rb +35 -97
- data/lib/mongoid/attributes/projector.rb +119 -0
- data/lib/mongoid/attributes/readonly.rb +27 -10
- data/lib/mongoid/attributes.rb +159 -181
- data/lib/mongoid/cacheable.rb +33 -0
- data/lib/mongoid/changeable.rb +420 -0
- data/lib/mongoid/clients/factory.rb +105 -0
- data/lib/mongoid/clients/options.rb +111 -0
- data/lib/mongoid/clients/sessions.rb +113 -0
- data/lib/mongoid/clients/storage_options.rb +79 -0
- data/lib/mongoid/clients/validators/storage.rb +58 -0
- data/lib/mongoid/clients/validators.rb +3 -0
- data/lib/mongoid/clients.rb +79 -0
- data/lib/mongoid/composable.rb +128 -0
- data/lib/mongoid/config/environment.rb +51 -13
- data/lib/mongoid/config/options.rb +30 -18
- data/lib/mongoid/config/validators/client.rb +128 -0
- data/lib/mongoid/config/validators/option.rb +3 -4
- data/lib/mongoid/config/validators.rb +3 -2
- data/lib/mongoid/config.rb +170 -89
- data/lib/mongoid/contextual/aggregable/memory.rb +40 -27
- data/lib/mongoid/contextual/aggregable/mongo.rb +33 -36
- data/lib/mongoid/contextual/aggregable/none.rb +65 -0
- data/lib/mongoid/contextual/aggregable.rb +17 -0
- data/lib/mongoid/contextual/atomic.rb +80 -79
- data/lib/mongoid/contextual/command.rb +8 -11
- data/lib/mongoid/contextual/geo_near.rb +42 -44
- data/lib/mongoid/contextual/map_reduce.rb +33 -127
- data/lib/mongoid/contextual/memory.rb +226 -88
- data/lib/mongoid/contextual/mongo.rb +466 -293
- data/lib/mongoid/contextual/none.rb +193 -0
- data/lib/mongoid/contextual/queryable.rb +3 -4
- data/lib/mongoid/contextual.rb +11 -11
- data/lib/mongoid/copyable.rb +68 -20
- data/lib/mongoid/criteria/findable.rb +143 -0
- data/lib/mongoid/criteria/includable.rb +92 -0
- data/lib/mongoid/criteria/inspectable.rb +24 -0
- data/lib/mongoid/criteria/marshalable.rb +55 -0
- data/lib/mongoid/criteria/modifiable.rb +235 -0
- data/lib/mongoid/criteria/options.rb +24 -0
- data/lib/mongoid/criteria/permission.rb +71 -0
- data/lib/mongoid/criteria/queryable/aggregable.rb +109 -0
- data/lib/mongoid/criteria/queryable/expandable.rb +68 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +151 -0
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +57 -0
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +33 -0
- data/lib/mongoid/criteria/queryable/extensions/date.rb +63 -0
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +52 -0
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +163 -0
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +75 -0
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +81 -0
- data/lib/mongoid/criteria/queryable/extensions/object.rb +182 -0
- data/lib/mongoid/criteria/queryable/extensions/range.rb +102 -0
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +72 -0
- data/lib/mongoid/criteria/queryable/extensions/set.rb +33 -0
- data/lib/mongoid/criteria/queryable/extensions/string.rb +122 -0
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +74 -0
- data/lib/mongoid/criteria/queryable/extensions/time.rb +60 -0
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +66 -0
- data/lib/mongoid/criteria/queryable/extensions.rb +25 -0
- data/lib/mongoid/criteria/queryable/key.rb +177 -0
- data/lib/mongoid/criteria/queryable/macroable.rb +26 -0
- data/lib/mongoid/criteria/queryable/mergeable.rb +434 -0
- data/lib/mongoid/criteria/queryable/optional.rb +380 -0
- data/lib/mongoid/criteria/queryable/options.rb +136 -0
- data/lib/mongoid/criteria/queryable/pipeline.rb +106 -0
- data/lib/mongoid/criteria/queryable/selectable.rb +937 -0
- data/lib/mongoid/criteria/queryable/selector.rb +287 -0
- data/lib/mongoid/criteria/queryable/smash.rb +128 -0
- data/lib/mongoid/criteria/queryable/storable.rb +237 -0
- data/lib/mongoid/criteria/queryable.rb +90 -0
- data/lib/mongoid/criteria/scopable.rb +166 -0
- data/lib/mongoid/criteria.rb +177 -189
- data/lib/mongoid/deprecable.rb +36 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +193 -139
- data/lib/mongoid/equality.rb +35 -18
- data/lib/mongoid/errors/ambiguous_relationship.rb +5 -6
- 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 +22 -0
- data/lib/mongoid/errors/document_not_found.rb +36 -21
- data/lib/mongoid/errors/empty_config_file.rb +25 -0
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +19 -0
- 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 +31 -0
- 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 +10 -9
- 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 +26 -0
- data/lib/mongoid/errors/invalid_query.rb +40 -0
- data/lib/mongoid/errors/invalid_relation.rb +61 -0
- data/lib/mongoid/errors/invalid_relation_option.rb +28 -0
- data/lib/mongoid/errors/invalid_scope.rb +2 -3
- data/lib/mongoid/errors/invalid_session_use.rb +21 -0
- data/lib/mongoid/errors/invalid_set_polymorphic_relation.rb +6 -5
- data/lib/mongoid/errors/invalid_storage_options.rb +4 -5
- data/lib/mongoid/errors/invalid_storage_parent.rb +25 -0
- data/lib/mongoid/errors/invalid_time.rb +2 -3
- data/lib/mongoid/errors/inverse_not_found.rb +4 -5
- data/lib/mongoid/errors/mixed_client_configuration.rb +27 -0
- data/lib/mongoid/errors/mixed_relations.rb +2 -3
- data/lib/mongoid/errors/mongoid_error.rb +22 -23
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +3 -4
- data/lib/mongoid/errors/no_client_config.rb +21 -0
- data/lib/mongoid/errors/no_client_database.rb +26 -0
- data/lib/mongoid/errors/no_client_hosts.rb +26 -0
- data/lib/mongoid/errors/no_clients_config.rb +19 -0
- data/lib/mongoid/errors/no_default_client.rb +22 -0
- 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 +21 -0
- 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 +24 -0
- 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 +30 -9
- data/lib/mongoid/evolvable.rb +4 -5
- data/lib/mongoid/extensions/array.rb +45 -52
- data/lib/mongoid/extensions/big_decimal.rb +41 -22
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +19 -17
- data/lib/mongoid/extensions/date.rb +33 -23
- data/lib/mongoid/extensions/date_time.rb +5 -13
- data/lib/mongoid/extensions/decimal128.rb +36 -0
- data/lib/mongoid/extensions/false_class.rb +5 -8
- data/lib/mongoid/extensions/float.rb +11 -16
- data/lib/mongoid/extensions/hash.rb +88 -49
- data/lib/mongoid/extensions/integer.rb +10 -18
- data/lib/mongoid/extensions/module.rb +3 -4
- data/lib/mongoid/extensions/nil_class.rb +2 -5
- data/lib/mongoid/extensions/object.rb +38 -62
- data/lib/mongoid/extensions/object_id.rb +7 -12
- data/lib/mongoid/extensions/range.rb +46 -17
- data/lib/mongoid/extensions/regexp.rb +15 -8
- data/lib/mongoid/extensions/set.rb +17 -15
- data/lib/mongoid/extensions/string.rb +40 -80
- data/lib/mongoid/extensions/symbol.rb +7 -23
- data/lib/mongoid/extensions/time.rb +42 -25
- data/lib/mongoid/extensions/time_with_zone.rb +27 -10
- data/lib/mongoid/extensions/true_class.rb +5 -8
- data/lib/mongoid/extensions.rb +31 -13
- data/lib/mongoid/factory.rb +99 -11
- data/lib/mongoid/fields/foreign_key.rb +26 -34
- data/lib/mongoid/fields/localized.rb +24 -13
- data/lib/mongoid/fields/standard.rb +19 -73
- data/lib/mongoid/fields/validators/macro.rb +56 -15
- data/lib/mongoid/fields/validators.rb +2 -1
- data/lib/mongoid/fields.rb +342 -87
- data/lib/mongoid/findable.rb +219 -0
- data/lib/mongoid/indexable/specification.rb +103 -0
- data/lib/mongoid/indexable/validators/options.rb +110 -0
- data/lib/mongoid/indexable.rb +148 -0
- data/lib/mongoid/inspectable.rb +52 -0
- data/lib/mongoid/interceptable.rb +312 -0
- data/lib/mongoid/loggable.rb +15 -18
- data/lib/mongoid/matchable.rb +23 -0
- 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 +115 -0
- data/lib/mongoid/persistable/creatable.rb +181 -0
- data/lib/mongoid/persistable/deletable.rb +132 -0
- data/lib/mongoid/persistable/destroyable.rb +57 -0
- data/lib/mongoid/persistable/incrementable.rb +35 -0
- data/lib/mongoid/persistable/logical.rb +36 -0
- data/lib/mongoid/persistable/poppable.rb +36 -0
- data/lib/mongoid/persistable/pullable.rb +50 -0
- data/lib/mongoid/persistable/pushable.rb +66 -0
- data/lib/mongoid/persistable/renamable.rb +37 -0
- data/lib/mongoid/persistable/savable.rb +47 -0
- data/lib/mongoid/persistable/settable.rb +93 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +165 -0
- data/lib/mongoid/persistable/upsertable.rb +51 -0
- data/lib/mongoid/persistable.rb +305 -0
- data/lib/mongoid/persistence_context.rb +239 -0
- data/lib/mongoid/positional.rb +72 -0
- data/lib/mongoid/query_cache.rb +64 -0
- data/lib/mongoid/railtie.rb +35 -78
- data/lib/mongoid/railties/controller_runtime.rb +88 -0
- data/lib/mongoid/railties/database.rake +18 -25
- data/lib/mongoid/reloadable.rb +94 -0
- data/lib/mongoid/scopable.rb +324 -0
- data/lib/mongoid/selectable.rb +49 -0
- data/lib/mongoid/serializable.rb +170 -0
- data/lib/mongoid/shardable.rb +130 -0
- data/lib/mongoid/stateful.rb +134 -0
- data/lib/mongoid/stringified_symbol.rb +52 -0
- data/lib/mongoid/tasks/database.rake +38 -0
- data/lib/mongoid/tasks/database.rb +194 -0
- data/lib/mongoid/threaded/lifecycle.rb +28 -70
- data/lib/mongoid/threaded.rb +142 -219
- data/lib/mongoid/timestamps/created/short.rb +2 -1
- data/lib/mongoid/timestamps/created.rb +9 -5
- data/lib/mongoid/timestamps/short.rb +2 -1
- data/lib/mongoid/timestamps/timeless.rb +52 -16
- data/lib/mongoid/timestamps/updated/short.rb +4 -3
- data/lib/mongoid/timestamps/updated.rb +14 -9
- data/lib/mongoid/timestamps.rb +4 -3
- data/lib/mongoid/touchable.rb +131 -0
- data/lib/mongoid/traversable.rb +337 -0
- data/lib/mongoid/validatable/associated.rb +47 -0
- data/lib/mongoid/validatable/format.rb +21 -0
- data/lib/mongoid/validatable/length.rb +21 -0
- data/lib/mongoid/validatable/localizable.rb +29 -0
- data/lib/mongoid/validatable/macros.rb +89 -0
- data/lib/mongoid/validatable/presence.rb +81 -0
- data/lib/mongoid/validatable/queryable.rb +29 -0
- data/lib/mongoid/validatable/uniqueness.rb +304 -0
- data/lib/mongoid/validatable.rb +160 -0
- data/lib/mongoid/version.rb +3 -2
- data/lib/mongoid/warnings.rb +28 -0
- data/lib/mongoid.rb +68 -109
- data/lib/rails/generators/mongoid/config/config_generator.rb +10 -2
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +150 -45
- data/lib/rails/generators/mongoid/model/model_generator.rb +3 -3
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -4
- data/lib/rails/generators/mongoid_generator.rb +5 -41
- data/lib/rails/mongoid.rb +6 -129
- data/spec/README.md +33 -0
- data/spec/config/mongoid.yml +56 -25
- data/spec/config/mongoid_with_schema_map_uuid.yml +27 -0
- data/spec/integration/app_spec.rb +345 -0
- data/spec/integration/associations/belongs_to_spec.rb +33 -0
- data/spec/integration/associations/embedded_dirty_spec.rb +57 -0
- data/spec/integration/associations/embedded_spec.rb +283 -0
- 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 +21 -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 +155 -0
- data/spec/integration/callbacks_spec.rb +450 -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 +359 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +142 -0
- data/spec/integration/discriminator_key_spec.rb +392 -0
- data/spec/integration/discriminator_value_spec.rb +206 -0
- data/spec/integration/document_spec.rb +51 -0
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +89 -0
- data/spec/integration/matcher_examples_spec.rb +765 -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 +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 +83 -0
- data/spec/mongoid/association/accessors_spec.rb +1067 -0
- data/spec/mongoid/association/auto_save_spec.rb +403 -0
- data/spec/mongoid/association/builders_spec.rb +255 -0
- data/spec/mongoid/association/constrainable_spec.rb +117 -0
- data/spec/mongoid/association/counter_cache_spec.rb +452 -0
- data/spec/mongoid/association/depending_spec.rb +959 -0
- data/spec/mongoid/association/eager_spec.rb +282 -0
- data/spec/mongoid/association/embedded/cyclic_spec.rb +180 -0
- data/spec/mongoid/association/embedded/dirty_spec.rb +67 -0
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +174 -0
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +90 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +619 -0
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +903 -0
- data/spec/mongoid/association/embedded/embeds_many/binding_spec.rb +56 -0
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +218 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +4863 -0
- data/spec/mongoid/association/embedded/embeds_many_models.rb +226 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +63 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +932 -0
- data/spec/mongoid/association/embedded/embeds_one/binding_spec.rb +79 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +106 -0
- data/spec/mongoid/association/embedded/embeds_one/proxy_spec.rb +1025 -0
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +8 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +73 -0
- data/spec/mongoid/association/embedded/embeds_one_query_spec.rb +28 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +984 -0
- data/spec/mongoid/association/macros_spec.rb +1116 -0
- data/spec/mongoid/association/nested/many_spec.rb +232 -0
- data/spec/mongoid/association/nested/one_spec.rb +253 -0
- data/spec/mongoid/association/options_spec.rb +1323 -0
- data/spec/mongoid/association/polymorphic_spec.rb +162 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +244 -0
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +292 -0
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +412 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +1388 -0
- 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 +2046 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/binding_spec.rb +180 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +148 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/eager_spec.rb +196 -0
- 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 +3836 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +92 -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 +1104 -0
- data/spec/mongoid/association/referenced/has_many/binding_spec.rb +155 -0
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +251 -0
- data/spec/mongoid/association/referenced/has_many/eager_spec.rb +290 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2232 -0
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +4161 -0
- data/spec/mongoid/association/referenced/has_many_models.rb +97 -0
- data/spec/mongoid/association/referenced/has_many_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +1273 -0
- data/spec/mongoid/association/referenced/has_one/binding_spec.rb +133 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +159 -0
- data/spec/mongoid/association/referenced/has_one/eager_spec.rb +193 -0
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +1248 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +113 -0
- data/spec/mongoid/association/referenced/has_one_query_spec.rb +37 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +1383 -0
- data/spec/mongoid/association/reflections_spec.rb +92 -0
- data/spec/mongoid/association/syncable_spec.rb +513 -0
- data/spec/mongoid/association_spec.rb +191 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +88 -39
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +10 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +9 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +5 -61
- data/spec/mongoid/atomic/paths_spec.rb +115 -35
- data/spec/mongoid/atomic_spec.rb +89 -42
- data/spec/mongoid/attributes/dynamic_spec.rb +152 -0
- data/spec/mongoid/attributes/nested_spec.rb +5000 -0
- 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 +166 -64
- data/spec/mongoid/attributes_spec.rb +1418 -409
- data/spec/mongoid/cacheable_spec.rb +114 -0
- data/spec/mongoid/changeable_spec.rb +1914 -0
- data/spec/mongoid/clients/factory_spec.rb +426 -0
- data/spec/mongoid/clients/options_spec.rb +521 -0
- data/spec/mongoid/clients/sessions_spec.rb +297 -0
- data/spec/mongoid/clients/transactions_spec.rb +415 -0
- data/spec/mongoid/clients_spec.rb +1084 -0
- data/spec/mongoid/composable_spec.rb +33 -0
- data/spec/mongoid/config/environment_spec.rb +138 -17
- data/spec/mongoid/config/options_spec.rb +26 -7
- data/spec/mongoid/config_spec.rb +607 -93
- 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 +221 -56
- data/spec/mongoid/contextual/aggregable/none_spec.rb +60 -0
- data/spec/mongoid/contextual/atomic_spec.rb +577 -162
- data/spec/mongoid/contextual/geo_near_spec.rb +104 -38
- data/spec/mongoid/contextual/map_reduce_spec.rb +137 -142
- data/spec/mongoid/contextual/memory_spec.rb +1880 -269
- data/spec/mongoid/contextual/mongo_spec.rb +2523 -601
- data/spec/mongoid/contextual/none_spec.rb +123 -0
- data/spec/mongoid/copyable_spec.rb +833 -76
- data/spec/mongoid/copyable_spec_models.rb +47 -0
- data/spec/mongoid/criteria/findable_spec.rb +1132 -0
- 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 +29 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +47 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +1812 -0
- data/spec/mongoid/criteria/options_spec.rb +31 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +372 -0
- data/spec/mongoid/criteria/queryable/expandable_spec.rb +61 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +513 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +169 -0
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +60 -0
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +215 -0
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +343 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +434 -0
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +60 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +67 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +314 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +67 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +79 -0
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +119 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +110 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +370 -0
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +91 -0
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +92 -0
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +41 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +347 -0
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +169 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +406 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +387 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +96 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +182 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1317 -0
- data/spec/mongoid/criteria/queryable/options_spec.rb +362 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +214 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +139 -0
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +2119 -0
- data/spec/mongoid/criteria/queryable/selectable_shared_examples.rb +38 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +2462 -0
- data/spec/mongoid/criteria/queryable/selectable_where_spec.rb +589 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +895 -0
- data/spec/mongoid/criteria/queryable/smash_spec.rb +32 -0
- data/spec/mongoid/criteria/queryable/storable_spec.rb +226 -0
- data/spec/mongoid/criteria/scopable_spec.rb +601 -0
- data/spec/mongoid/criteria_projection_spec.rb +410 -0
- data/spec/mongoid/criteria_spec.rb +1828 -3572
- data/spec/mongoid/document_fields_spec.rb +262 -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 +452 -221
- data/spec/mongoid/equality_spec.rb +155 -52
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +8 -6
- data/spec/mongoid/errors/callback_spec.rb +5 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +7 -5
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +35 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +89 -11
- data/spec/mongoid/errors/invalid_collection_spec.rb +5 -3
- data/spec/mongoid/errors/invalid_config_file_spec.rb +31 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +5 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +5 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +6 -4
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +5 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +5 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +5 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +7 -5
- data/spec/mongoid/errors/invalid_path_spec.rb +5 -3
- data/spec/mongoid/errors/invalid_relation_spec.rb +39 -0
- data/spec/mongoid/errors/invalid_scope_spec.rb +7 -5
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +5 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +5 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +5 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +6 -4
- data/spec/mongoid/errors/mixed_client_configuration_spec.rb +31 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +5 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +45 -10
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +8 -6
- data/spec/mongoid/errors/no_client_config_spec.rb +31 -0
- data/spec/mongoid/errors/no_client_database_spec.rb +31 -0
- data/spec/mongoid/errors/no_client_hosts_spec.rb +31 -0
- data/spec/mongoid/errors/no_clients_config_spec.rb +31 -0
- data/spec/mongoid/errors/no_environment_spec.rb +8 -6
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +5 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +5 -3
- data/spec/mongoid/errors/no_parent_spec.rb +6 -4
- data/spec/mongoid/errors/readonly_attribute_spec.rb +5 -3
- data/spec/mongoid/errors/readonly_document_spec.rb +31 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +5 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +6 -4
- data/spec/mongoid/errors/unknown_attribute_spec.rb +7 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +6 -4
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +5 -3
- data/spec/mongoid/errors/validations_spec.rb +9 -7
- data/spec/mongoid/extensions/array_spec.rb +108 -116
- data/spec/mongoid/extensions/big_decimal_spec.rb +838 -49
- data/spec/mongoid/extensions/binary_spec.rb +55 -18
- data/spec/mongoid/extensions/boolean_spec.rb +76 -74
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +339 -0
- data/spec/mongoid/extensions/date_spec.rb +59 -145
- data/spec/mongoid/extensions/date_time_spec.rb +35 -76
- data/spec/mongoid/extensions/decimal128_spec.rb +46 -0
- data/spec/mongoid/extensions/false_class_spec.rb +7 -5
- data/spec/mongoid/extensions/float_spec.rb +69 -62
- data/spec/mongoid/extensions/hash_spec.rb +197 -30
- data/spec/mongoid/extensions/integer_spec.rb +63 -65
- data/spec/mongoid/extensions/module_spec.rb +4 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +3 -1
- data/spec/mongoid/extensions/object_id_spec.rb +136 -134
- data/spec/mongoid/extensions/object_spec.rb +53 -57
- data/spec/mongoid/extensions/range_spec.rb +287 -28
- data/spec/mongoid/extensions/regexp_spec.rb +71 -21
- data/spec/mongoid/extensions/set_spec.rb +112 -4
- data/spec/mongoid/extensions/string_spec.rb +188 -89
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +84 -0
- data/spec/mongoid/extensions/symbol_spec.rb +25 -30
- data/spec/mongoid/extensions/time_spec.rb +703 -110
- data/spec/mongoid/extensions/time_with_zone_spec.rb +82 -67
- data/spec/mongoid/extensions/true_class_spec.rb +7 -5
- data/spec/mongoid/extensions_spec.rb +43 -0
- data/spec/mongoid/factory_spec.rb +374 -25
- data/spec/mongoid/fields/foreign_key_spec.rb +116 -92
- data/spec/mongoid/fields/localized_spec.rb +177 -35
- data/spec/mongoid/fields/standard_spec.rb +15 -13
- data/spec/mongoid/fields_spec.rb +952 -238
- data/spec/mongoid/findable_spec.rb +632 -0
- data/spec/mongoid/indexable/specification_spec.rb +129 -0
- data/spec/mongoid/indexable_spec.rb +643 -0
- data/spec/mongoid/inspectable_spec.rb +86 -0
- data/spec/mongoid/interceptable_spec.rb +2373 -0
- data/spec/mongoid/interceptable_spec_models.rb +307 -0
- data/spec/mongoid/loggable_spec.rb +3 -1
- 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 +662 -0
- data/spec/mongoid/persistable/deletable_spec.rb +514 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +455 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +241 -0
- data/spec/mongoid/persistable/logical_spec.rb +159 -0
- data/spec/mongoid/persistable/poppable_spec.rb +131 -0
- data/spec/mongoid/persistable/pullable_spec.rb +258 -0
- data/spec/mongoid/persistable/pushable_spec.rb +353 -0
- data/spec/mongoid/persistable/renamable_spec.rb +151 -0
- data/spec/mongoid/persistable/savable_spec.rb +684 -0
- data/spec/mongoid/persistable/settable_spec.rb +544 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +171 -0
- data/spec/mongoid/persistable/updatable_spec.rb +760 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +122 -0
- data/spec/mongoid/persistable_spec.rb +321 -0
- data/spec/mongoid/persistence_context_spec.rb +745 -0
- data/spec/mongoid/positional_spec.rb +223 -0
- data/spec/mongoid/query_cache_middleware_spec.rb +50 -0
- data/spec/mongoid/query_cache_spec.rb +870 -0
- data/spec/mongoid/relations/proxy_spec.rb +125 -47
- data/spec/mongoid/reloadable_spec.rb +665 -0
- data/spec/mongoid/scopable_spec.rb +1234 -0
- data/spec/mongoid/selectable_spec.rb +136 -0
- data/spec/mongoid/serializable_spec.rb +963 -0
- data/spec/mongoid/shardable_models.rb +61 -0
- data/spec/mongoid/shardable_spec.rb +204 -0
- data/spec/mongoid/stateful_spec.rb +157 -0
- data/spec/mongoid/tasks/database_rake_spec.rb +287 -0
- data/spec/mongoid/tasks/database_spec.rb +181 -0
- data/spec/mongoid/threaded_spec.rb +88 -78
- data/spec/mongoid/timestamps/created/short_spec.rb +9 -7
- data/spec/mongoid/timestamps/created_spec.rb +8 -6
- data/spec/mongoid/timestamps/timeless_spec.rb +29 -10
- data/spec/mongoid/timestamps/updated/short_spec.rb +16 -14
- data/spec/mongoid/timestamps/updated_spec.rb +14 -16
- data/spec/mongoid/timestamps_spec.rb +406 -18
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +704 -0
- data/spec/mongoid/touchable_spec_models.rb +57 -0
- data/spec/mongoid/traversable_spec.rb +1410 -0
- data/spec/mongoid/validatable/associated_spec.rb +208 -0
- data/spec/mongoid/validatable/format_spec.rb +85 -0
- data/spec/mongoid/validatable/length_spec.rb +225 -0
- data/spec/mongoid/validatable/numericality_spec.rb +32 -0
- data/spec/mongoid/validatable/presence_spec.rb +592 -0
- data/spec/mongoid/validatable/uniqueness_spec.rb +2504 -0
- data/spec/mongoid/validatable_spec.rb +327 -0
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +20 -20
- data/spec/rails/controller_extension/controller_runtime_spec.rb +112 -0
- data/spec/rails/mongoid_spec.rb +37 -354
- 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 +378 -0
- data/spec/shared/lib/mrss/docker_runner.rb +291 -0
- data/spec/shared/lib/mrss/eg_config_utils.rb +51 -0
- data/spec/shared/lib/mrss/event_subscriber.rb +200 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +230 -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 +325 -0
- 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 +74 -0
- data/spec/shared/shlib/server.sh +392 -0
- data/spec/shared/shlib/set_env.sh +169 -0
- data/spec/spec_helper.rb +163 -42
- data/spec/support/authorization.rb +15 -0
- data/spec/support/client_registry.rb +9 -0
- data/spec/support/constraints.rb +77 -0
- data/spec/support/expectations.rb +32 -0
- data/spec/support/helpers.rb +11 -0
- data/spec/support/macros.rb +81 -0
- data/spec/support/models/account.rb +38 -0
- data/spec/support/models/acolyte.rb +19 -0
- data/spec/support/models/actor.rb +20 -0
- data/spec/support/models/actress.rb +4 -0
- data/spec/support/models/address.rb +85 -0
- data/spec/support/models/address_component.rb +7 -0
- data/spec/support/models/address_number.rb +8 -0
- data/spec/support/models/agency.rb +7 -0
- data/spec/support/models/agent.rb +18 -0
- data/spec/support/models/album.rb +20 -0
- data/spec/support/models/alert.rb +9 -0
- data/spec/support/models/animal.rb +28 -0
- data/spec/support/models/answer.rb +8 -0
- data/spec/support/models/appointment.rb +9 -0
- data/spec/support/models/armrest.rb +9 -0
- data/spec/support/models/array_field.rb +7 -0
- data/spec/support/models/article.rb +14 -0
- data/spec/support/models/artist.rb +91 -0
- data/spec/support/models/artwork.rb +6 -0
- data/spec/support/models/audible_sound.rb +3 -0
- data/spec/support/models/audio.rb +7 -0
- data/spec/support/models/augmentation.rb +25 -0
- data/spec/support/models/author.rb +8 -0
- data/spec/support/models/baby.rb +6 -0
- data/spec/support/models/band.rb +40 -0
- data/spec/support/models/bar.rb +12 -0
- data/spec/support/models/basic.rb +8 -0
- data/spec/support/models/bed.rb +3 -0
- data/spec/support/models/big_palette.rb +4 -0
- data/spec/support/models/birthday.rb +15 -0
- data/spec/support/models/bolt.rb +7 -0
- data/spec/support/models/bomb.rb +6 -0
- data/spec/support/models/book.rb +18 -0
- data/spec/support/models/breed.rb +6 -0
- data/spec/support/models/browser.rb +8 -0
- data/spec/support/models/building.rb +8 -0
- data/spec/support/models/building_address.rb +9 -0
- data/spec/support/models/bus.rb +9 -0
- data/spec/support/models/business.rb +7 -0
- data/spec/support/models/callback_test.rb +11 -0
- data/spec/support/models/canvas.rb +27 -0
- data/spec/support/models/car.rb +3 -0
- data/spec/support/models/cat.rb +10 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/category.rb +10 -0
- data/spec/support/models/child.rb +6 -0
- data/spec/support/models/child_doc.rb +24 -0
- data/spec/support/models/church.rb +8 -0
- data/spec/support/models/circle.rb +5 -0
- data/spec/support/models/circuit.rb +6 -0
- data/spec/support/models/circus.rb +12 -0
- data/spec/support/models/code.rb +15 -0
- data/spec/support/models/coding/pull_request.rb +11 -0
- data/spec/support/models/coding.rb +3 -0
- data/spec/support/models/comment.rb +18 -0
- data/spec/support/models/company.rb +7 -0
- data/spec/support/models/consumption_period.rb +9 -0
- data/spec/support/models/contextable_item.rb +7 -0
- data/spec/support/models/contractor.rb +7 -0
- data/spec/support/models/cookie.rb +8 -0
- data/spec/support/models/country_code.rb +12 -0
- data/spec/support/models/courier_job.rb +6 -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/support/models/definition.rb +11 -0
- data/spec/support/models/delegating_patient.rb +15 -0
- data/spec/support/models/description.rb +13 -0
- data/spec/support/models/dictionary.rb +18 -0
- data/spec/support/models/division.rb +12 -0
- data/spec/support/models/doctor.rb +14 -0
- data/spec/support/models/dog.rb +9 -0
- data/spec/support/models/dokument.rb +8 -0
- data/spec/support/models/draft.rb +11 -0
- data/spec/support/models/dragon.rb +6 -0
- data/spec/support/models/driver.rb +9 -0
- data/spec/support/models/drug.rb +8 -0
- data/spec/support/models/dungeon.rb +6 -0
- data/spec/support/models/edit.rb +7 -0
- data/spec/support/models/email.rb +8 -0
- data/spec/support/models/employer.rb +7 -0
- data/spec/support/models/entry.rb +8 -0
- data/spec/support/models/eraser.rb +3 -0
- data/spec/support/models/even.rb +9 -0
- data/spec/support/models/event.rb +24 -0
- data/spec/support/models/exhibition.rb +6 -0
- data/spec/support/models/exhibitor.rb +8 -0
- data/spec/support/models/explosion.rb +6 -0
- data/spec/support/models/eye.rb +11 -0
- data/spec/support/models/eye_bowl.rb +11 -0
- data/spec/support/models/face.rb +10 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/support/models/favorite.rb +8 -0
- data/spec/support/models/filesystem.rb +7 -0
- data/spec/support/models/fire_hydrant.rb +8 -0
- data/spec/support/models/firefox.rb +6 -0
- data/spec/support/models/fish.rb +9 -0
- data/spec/support/models/folder.rb +9 -0
- data/spec/support/models/folder_item.rb +11 -0
- data/spec/support/models/fruits.rb +36 -0
- data/spec/support/models/game.rb +21 -0
- data/spec/support/models/ghost.rb +9 -0
- data/spec/support/models/guitar.rb +4 -0
- data/spec/support/models/hole.rb +12 -0
- data/spec/support/models/home.rb +6 -0
- data/spec/support/models/house.rb +8 -0
- data/spec/support/models/html_writer.rb +5 -0
- data/spec/support/models/id_key.rb +8 -0
- data/spec/support/models/idnodef.rb +7 -0
- data/spec/support/models/image.rb +24 -0
- data/spec/support/models/implant.rb +27 -0
- data/spec/support/models/instrument.rb +8 -0
- data/spec/support/models/item.rb +10 -0
- data/spec/support/models/jar.rb +9 -0
- data/spec/support/models/kaleidoscope.rb +8 -0
- data/spec/support/models/kangaroo.rb +6 -0
- data/spec/support/models/label.rb +52 -0
- data/spec/support/models/language.rb +7 -0
- data/spec/support/models/lat_lng.rb +17 -0
- data/spec/support/models/league.rb +13 -0
- data/spec/support/models/learner.rb +4 -0
- data/spec/support/models/line_item.rb +8 -0
- data/spec/support/models/location.rb +10 -0
- data/spec/support/models/login.rb +10 -0
- data/spec/support/models/manufacturer.rb +9 -0
- data/spec/support/models/meat.rb +6 -0
- data/spec/support/models/membership.rb +7 -0
- data/spec/support/models/message.rb +13 -0
- data/spec/support/models/minim.rb +6 -0
- data/spec/support/models/mixed_drink.rb +6 -0
- data/spec/support/models/mop.rb +24 -0
- data/spec/support/models/movie.rb +15 -0
- data/spec/support/models/my_hash.rb +4 -0
- data/spec/support/models/name.rb +26 -0
- data/spec/support/models/name_only.rb +8 -0
- data/spec/support/models/node.rb +7 -0
- data/spec/support/models/note.rb +19 -0
- data/spec/support/models/nut.rb +7 -0
- data/spec/support/models/odd.rb +9 -0
- data/spec/support/models/order.rb +12 -0
- data/spec/support/models/ordered_post.rb +13 -0
- data/spec/support/models/ordered_preference.rb +8 -0
- data/spec/support/models/oscar.rb +16 -0
- data/spec/support/models/other_owner_object.rb +4 -0
- data/spec/support/models/override.rb +18 -0
- data/spec/support/models/ownable.rb +8 -0
- data/spec/support/models/owner.rb +10 -0
- data/spec/support/models/pack.rb +5 -0
- data/spec/support/models/page.rb +18 -0
- data/spec/support/models/page_question.rb +6 -0
- data/spec/support/models/palette.rb +9 -0
- data/spec/support/models/parent.rb +7 -0
- data/spec/support/models/parent_doc.rb +8 -0
- data/spec/support/models/passport.rb +22 -0
- data/spec/support/models/patient.rb +11 -0
- data/spec/support/models/pdf_writer.rb +5 -0
- data/spec/support/models/pencil.rb +3 -0
- data/spec/support/models/person.rb +231 -0
- data/spec/support/models/pet.rb +25 -0
- data/spec/support/models/pet_owner.rb +8 -0
- data/spec/support/models/phone.rb +13 -0
- data/spec/support/models/piano.rb +4 -0
- data/spec/support/models/pizza.rb +9 -0
- data/spec/support/models/player.rb +39 -0
- data/spec/support/models/post.rb +52 -0
- data/spec/support/models/post_genre.rb +8 -0
- data/spec/support/models/powerup.rb +25 -0
- data/spec/support/models/preference.rb +11 -0
- data/spec/support/models/princess.rb +12 -0
- data/spec/support/models/product.rb +19 -0
- data/spec/support/models/profile.rb +17 -0
- data/spec/support/models/pronunciation.rb +7 -0
- data/spec/support/models/pub.rb +8 -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/support/models/purchase.rb +6 -0
- data/spec/support/models/purchased_item.rb +10 -0
- data/spec/support/models/question.rb +10 -0
- data/spec/support/models/quiz.rb +9 -0
- data/spec/support/models/rating.rb +10 -0
- data/spec/support/models/record.rb +54 -0
- data/spec/support/models/registry.rb +7 -0
- data/spec/support/models/role.rb +9 -0
- data/spec/support/models/root_category.rb +6 -0
- data/spec/support/models/sandwich.rb +11 -0
- data/spec/support/models/scheduler.rb +9 -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/support/models/seo.rb +9 -0
- data/spec/support/models/series.rb +7 -0
- data/spec/support/models/server.rb +15 -0
- data/spec/support/models/service.rb +24 -0
- data/spec/support/models/shape.rb +14 -0
- data/spec/support/models/shelf.rb +7 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/support/models/shipment_address.rb +5 -0
- data/spec/support/models/shipping_container.rb +7 -0
- data/spec/support/models/shipping_pack.rb +5 -0
- data/spec/support/models/shirt.rb +11 -0
- data/spec/support/models/shop.rb +8 -0
- data/spec/support/models/short_agent.rb +6 -0
- data/spec/support/models/short_quiz.rb +7 -0
- data/spec/support/models/simple.rb +7 -0
- data/spec/support/models/slave.rb +8 -0
- data/spec/support/models/song.rb +10 -0
- data/spec/support/models/sound.rb +7 -0
- data/spec/support/models/spacer.rb +7 -0
- data/spec/support/models/square.rb +6 -0
- data/spec/support/models/staff.rb +9 -0
- data/spec/support/models/store_as_dup_test1.rb +7 -0
- data/spec/support/models/store_as_dup_test2.rb +7 -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/support/models/strategy.rb +5 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/support/models/sub_item.rb +5 -0
- data/spec/support/models/subscription.rb +7 -0
- data/spec/support/models/survey.rb +7 -0
- data/spec/support/models/symptom.rb +8 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/support/models/tag.rb +10 -0
- data/spec/support/models/target.rb +7 -0
- data/spec/support/models/template.rb +7 -0
- data/spec/support/models/thing.rb +11 -0
- data/spec/support/models/threadlocker.rb +7 -0
- data/spec/support/models/title.rb +5 -0
- data/spec/support/models/tool.rb +10 -0
- data/spec/support/models/topping.rb +7 -0
- data/spec/support/models/toy.rb +9 -0
- data/spec/support/models/track.rb +40 -0
- data/spec/support/models/translation.rb +7 -0
- data/spec/support/models/tree.rb +11 -0
- data/spec/support/models/truck.rb +7 -0
- data/spec/support/models/updatable.rb +7 -0
- data/spec/support/models/user.rb +23 -0
- data/spec/support/models/user_account.rb +12 -0
- data/spec/support/models/validation_callback.rb +12 -0
- data/spec/support/models/vehicle.rb +18 -0
- data/spec/support/models/version.rb +7 -0
- data/spec/support/models/vertex.rb +8 -0
- data/spec/support/models/vet_visit.rb +7 -0
- data/spec/support/models/video.rb +15 -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/support/models/wiki_page.rb +17 -0
- data/spec/support/models/word.rb +17 -0
- data/spec/support/models/word_origin.rb +13 -0
- data/spec/support/models/writer.rb +13 -0
- 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 +64 -0
- data.tar.gz.sig +0 -0
- metadata +1582 -912
- metadata.gz.sig +0 -0
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/callbacks.rb +0 -314
- data/lib/mongoid/components.rb +0 -93
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/config/validators/session.rb +0 -140
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/contextual/find_and_modify.rb +0 -69
- data/lib/mongoid/criterion/findable.rb +0 -179
- data/lib/mongoid/criterion/inspection.rb +0 -25
- data/lib/mongoid/criterion/marshalable.rb +0 -48
- data/lib/mongoid/criterion/modifiable.rb +0 -189
- data/lib/mongoid/criterion/scoping.rb +0 -158
- data/lib/mongoid/dirty.rb +0 -376
- data/lib/mongoid/errors/eager_load.rb +0 -22
- data/lib/mongoid/errors/mixed_session_configuration.rb +0 -28
- data/lib/mongoid/errors/no_default_session.rb +0 -23
- data/lib/mongoid/errors/no_session_config.rb +0 -22
- data/lib/mongoid/errors/no_session_database.rb +0 -27
- data/lib/mongoid/errors/no_session_hosts.rb +0 -27
- data/lib/mongoid/errors/no_sessions_config.rb +0 -20
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/finders.rb +0 -130
- data/lib/mongoid/hierarchy.rb +0 -188
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/indexes/validators/options.rb +0 -102
- data/lib/mongoid/indexes.rb +0 -154
- data/lib/mongoid/inspection.rb +0 -55
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers/all.rb +0 -27
- data/lib/mongoid/matchers/and.rb +0 -30
- data/lib/mongoid/matchers/default.rb +0 -72
- data/lib/mongoid/matchers/exists.rb +0 -23
- data/lib/mongoid/matchers/gt.rb +0 -21
- data/lib/mongoid/matchers/gte.rb +0 -21
- data/lib/mongoid/matchers/in.rb +0 -24
- data/lib/mongoid/matchers/lt.rb +0 -21
- data/lib/mongoid/matchers/lte.rb +0 -21
- data/lib/mongoid/matchers/ne.rb +0 -21
- data/lib/mongoid/matchers/nin.rb +0 -21
- data/lib/mongoid/matchers/or.rb +0 -33
- data/lib/mongoid/matchers/size.rb +0 -21
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/matchers.rb +0 -32
- data/lib/mongoid/multi_parameter_attributes.rb +0 -105
- data/lib/mongoid/nested_attributes.rb +0 -78
- data/lib/mongoid/observer.rb +0 -192
- data/lib/mongoid/paranoia.rb +0 -137
- data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
- data/lib/mongoid/persistence/atomic/bit.rb +0 -35
- data/lib/mongoid/persistence/atomic/inc.rb +0 -45
- data/lib/mongoid/persistence/atomic/operation.rb +0 -154
- data/lib/mongoid/persistence/atomic/pop.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
- data/lib/mongoid/persistence/atomic/push.rb +0 -25
- data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
- data/lib/mongoid/persistence/atomic/rename.rb +0 -30
- data/lib/mongoid/persistence/atomic/sets.rb +0 -28
- data/lib/mongoid/persistence/atomic/unset.rb +0 -27
- data/lib/mongoid/persistence/atomic.rb +0 -231
- data/lib/mongoid/persistence/deletion.rb +0 -32
- data/lib/mongoid/persistence/insertion.rb +0 -38
- data/lib/mongoid/persistence/modification.rb +0 -35
- data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
- data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
- data/lib/mongoid/persistence/operations/insert.rb +0 -34
- data/lib/mongoid/persistence/operations/remove.rb +0 -33
- data/lib/mongoid/persistence/operations/update.rb +0 -59
- data/lib/mongoid/persistence/operations/upsert.rb +0 -28
- data/lib/mongoid/persistence/operations.rb +0 -214
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/persistence.rb +0 -352
- data/lib/mongoid/railties/document.rb +0 -12
- data/lib/mongoid/relations/accessors.rb +0 -299
- data/lib/mongoid/relations/auto_save.rb +0 -107
- data/lib/mongoid/relations/binding.rb +0 -241
- data/lib/mongoid/relations/bindings/embedded/in.rb +0 -63
- data/lib/mongoid/relations/bindings/embedded/many.rb +0 -52
- data/lib/mongoid/relations/bindings/embedded/one.rb +0 -55
- data/lib/mongoid/relations/bindings/referenced/in.rb +0 -70
- data/lib/mongoid/relations/bindings/referenced/many.rb +0 -42
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +0 -67
- data/lib/mongoid/relations/bindings/referenced/one.rb +0 -44
- data/lib/mongoid/relations/bindings.rb +0 -9
- data/lib/mongoid/relations/builder.rb +0 -57
- data/lib/mongoid/relations/builders/embedded/in.rb +0 -29
- data/lib/mongoid/relations/builders/embedded/many.rb +0 -36
- data/lib/mongoid/relations/builders/embedded/one.rb +0 -30
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +0 -177
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +0 -127
- data/lib/mongoid/relations/builders/referenced/in.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many.rb +0 -27
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +0 -40
- data/lib/mongoid/relations/builders/referenced/one.rb +0 -26
- data/lib/mongoid/relations/builders.rb +0 -104
- data/lib/mongoid/relations/cascading/delete.rb +0 -44
- data/lib/mongoid/relations/cascading/destroy.rb +0 -43
- data/lib/mongoid/relations/cascading/nullify.rb +0 -35
- data/lib/mongoid/relations/cascading/restrict.rb +0 -39
- data/lib/mongoid/relations/cascading.rb +0 -58
- data/lib/mongoid/relations/constraint.rb +0 -49
- data/lib/mongoid/relations/conversions.rb +0 -34
- data/lib/mongoid/relations/counter_cache.rb +0 -107
- data/lib/mongoid/relations/cyclic.rb +0 -107
- data/lib/mongoid/relations/embedded/batchable.rb +0 -356
- data/lib/mongoid/relations/embedded/in.rb +0 -231
- data/lib/mongoid/relations/embedded/many.rb +0 -659
- data/lib/mongoid/relations/embedded/one.rb +0 -223
- data/lib/mongoid/relations/macros.rb +0 -359
- data/lib/mongoid/relations/many.rb +0 -217
- data/lib/mongoid/relations/marshalable.rb +0 -32
- data/lib/mongoid/relations/metadata.rb +0 -1227
- data/lib/mongoid/relations/nested_builder.rb +0 -74
- data/lib/mongoid/relations/one.rb +0 -60
- data/lib/mongoid/relations/options.rb +0 -48
- data/lib/mongoid/relations/polymorphic.rb +0 -40
- data/lib/mongoid/relations/proxy.rb +0 -264
- data/lib/mongoid/relations/referenced/in.rb +0 -314
- data/lib/mongoid/relations/referenced/many.rb +0 -789
- data/lib/mongoid/relations/referenced/many_to_many.rb +0 -495
- data/lib/mongoid/relations/referenced/one.rb +0 -297
- data/lib/mongoid/relations/reflections.rb +0 -62
- data/lib/mongoid/relations/synchronization.rb +0 -169
- data/lib/mongoid/relations/targets/enumerable.rb +0 -473
- data/lib/mongoid/relations/targets.rb +0 -2
- data/lib/mongoid/relations/touchable.rb +0 -61
- data/lib/mongoid/relations.rb +0 -162
- data/lib/mongoid/reloading.rb +0 -92
- data/lib/mongoid/scoping.rb +0 -356
- data/lib/mongoid/serialization.rb +0 -161
- data/lib/mongoid/sessions/factory.rb +0 -129
- data/lib/mongoid/sessions/mongo_uri.rb +0 -93
- data/lib/mongoid/sessions/validators/storage.rb +0 -49
- data/lib/mongoid/sessions/validators.rb +0 -2
- data/lib/mongoid/sessions.rb +0 -433
- data/lib/mongoid/sharding.rb +0 -61
- data/lib/mongoid/state.rb +0 -97
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/validations/associated.rb +0 -46
- data/lib/mongoid/validations/format.rb +0 -20
- data/lib/mongoid/validations/length.rb +0 -20
- data/lib/mongoid/validations/localizable.rb +0 -30
- data/lib/mongoid/validations/macros.rb +0 -93
- data/lib/mongoid/validations/presence.rb +0 -86
- data/lib/mongoid/validations/queryable.rb +0 -31
- data/lib/mongoid/validations/uniqueness.rb +0 -330
- data/lib/mongoid/validations.rb +0 -166
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/lib/support/ruby_version.rb +0 -26
- data/spec/app/models/account.rb +0 -32
- data/spec/app/models/acolyte.rb +0 -16
- data/spec/app/models/actor.rb +0 -19
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/actress.rb +0 -2
- data/spec/app/models/address.rb +0 -72
- data/spec/app/models/address_component.rb +0 -5
- data/spec/app/models/address_number.rb +0 -6
- data/spec/app/models/agency.rb +0 -5
- data/spec/app/models/agent.rb +0 -12
- data/spec/app/models/album.rb +0 -14
- data/spec/app/models/alert.rb +0 -5
- data/spec/app/models/animal.rb +0 -25
- data/spec/app/models/answer.rb +0 -4
- data/spec/app/models/appointment.rb +0 -7
- data/spec/app/models/article.rb +0 -13
- data/spec/app/models/artist.rb +0 -66
- data/spec/app/models/artwork.rb +0 -4
- data/spec/app/models/augmentation.rb +0 -11
- data/spec/app/models/author.rb +0 -6
- data/spec/app/models/band.rb +0 -25
- data/spec/app/models/bar.rb +0 -9
- data/spec/app/models/basic.rb +0 -6
- data/spec/app/models/bed.rb +0 -1
- data/spec/app/models/big_palette.rb +0 -2
- data/spec/app/models/birthday.rb +0 -13
- data/spec/app/models/book.rb +0 -12
- data/spec/app/models/breed.rb +0 -4
- data/spec/app/models/browser.rb +0 -6
- data/spec/app/models/building.rb +0 -7
- data/spec/app/models/building_address.rb +0 -7
- data/spec/app/models/bus.rb +0 -7
- data/spec/app/models/business.rb +0 -5
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/callback_test.rb +0 -9
- data/spec/app/models/canvas.rb +0 -25
- data/spec/app/models/car.rb +0 -1
- data/spec/app/models/cat.rb +0 -8
- data/spec/app/models/category.rb +0 -8
- data/spec/app/models/child.rb +0 -4
- data/spec/app/models/child_doc.rb +0 -22
- data/spec/app/models/church.rb +0 -4
- data/spec/app/models/circle.rb +0 -3
- data/spec/app/models/circuit.rb +0 -4
- data/spec/app/models/circus.rb +0 -7
- data/spec/app/models/code.rb +0 -5
- data/spec/app/models/comment.rb +0 -16
- data/spec/app/models/contractor.rb +0 -7
- data/spec/app/models/cookie.rb +0 -6
- data/spec/app/models/country_code.rb +0 -8
- data/spec/app/models/definition.rb +0 -8
- data/spec/app/models/description.rb +0 -11
- data/spec/app/models/dictionary.rb +0 -10
- data/spec/app/models/division.rb +0 -10
- data/spec/app/models/doctor.rb +0 -12
- data/spec/app/models/dog.rb +0 -7
- data/spec/app/models/dokument.rb +0 -5
- data/spec/app/models/driver.rb +0 -7
- data/spec/app/models/drug.rb +0 -8
- data/spec/app/models/email.rb +0 -6
- data/spec/app/models/employer.rb +0 -5
- data/spec/app/models/entry.rb +0 -6
- data/spec/app/models/eraser.rb +0 -1
- data/spec/app/models/event.rb +0 -22
- data/spec/app/models/exhibition.rb +0 -4
- data/spec/app/models/exhibitor.rb +0 -5
- data/spec/app/models/eye.rb +0 -9
- data/spec/app/models/eye_bowl.rb +0 -9
- data/spec/app/models/face.rb +0 -8
- data/spec/app/models/favorite.rb +0 -6
- data/spec/app/models/filesystem.rb +0 -4
- data/spec/app/models/fire_hydrant.rb +0 -6
- data/spec/app/models/firefox.rb +0 -4
- data/spec/app/models/fish.rb +0 -8
- data/spec/app/models/folder.rb +0 -7
- data/spec/app/models/folder_item.rb +0 -9
- data/spec/app/models/fruits.rb +0 -28
- data/spec/app/models/game.rb +0 -21
- data/spec/app/models/ghost.rb +0 -7
- data/spec/app/models/home.rb +0 -4
- data/spec/app/models/house.rb +0 -8
- data/spec/app/models/html_writer.rb +0 -3
- data/spec/app/models/image.rb +0 -22
- data/spec/app/models/implant.rb +0 -16
- data/spec/app/models/item.rb +0 -12
- data/spec/app/models/jar.rb +0 -7
- data/spec/app/models/label.rb +0 -40
- data/spec/app/models/language.rb +0 -5
- data/spec/app/models/lat_lng.rb +0 -15
- data/spec/app/models/league.rb +0 -11
- data/spec/app/models/learner.rb +0 -2
- data/spec/app/models/line_item.rb +0 -6
- data/spec/app/models/location.rb +0 -8
- data/spec/app/models/login.rb +0 -8
- data/spec/app/models/manufacturer.rb +0 -7
- data/spec/app/models/meat.rb +0 -4
- data/spec/app/models/membership.rb +0 -4
- data/spec/app/models/mixed_drink.rb +0 -4
- data/spec/app/models/movie.rb +0 -12
- data/spec/app/models/my_hash.rb +0 -2
- data/spec/app/models/name.rb +0 -23
- data/spec/app/models/node.rb +0 -5
- data/spec/app/models/note.rb +0 -12
- data/spec/app/models/ordered_post.rb +0 -6
- data/spec/app/models/ordered_preference.rb +0 -6
- data/spec/app/models/oscar.rb +0 -15
- data/spec/app/models/override.rb +0 -16
- data/spec/app/models/ownable.rb +0 -6
- data/spec/app/models/owner.rb +0 -6
- data/spec/app/models/pack.rb +0 -3
- data/spec/app/models/page.rb +0 -5
- data/spec/app/models/page_question.rb +0 -4
- data/spec/app/models/palette.rb +0 -7
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/parent.rb +0 -5
- data/spec/app/models/parent_doc.rb +0 -6
- data/spec/app/models/passport.rb +0 -5
- data/spec/app/models/patient.rb +0 -9
- data/spec/app/models/pdf_writer.rb +0 -3
- data/spec/app/models/pencil.rb +0 -1
- data/spec/app/models/person.rb +0 -201
- data/spec/app/models/pet.rb +0 -23
- data/spec/app/models/pet_owner.rb +0 -6
- data/spec/app/models/phone.rb +0 -11
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/app/models/pizza.rb +0 -7
- data/spec/app/models/player.rb +0 -35
- data/spec/app/models/post.rb +0 -43
- data/spec/app/models/powerup.rb +0 -11
- data/spec/app/models/preference.rb +0 -9
- data/spec/app/models/princess.rb +0 -8
- data/spec/app/models/product.rb +0 -17
- data/spec/app/models/profile.rb +0 -5
- data/spec/app/models/pronunciation.rb +0 -5
- data/spec/app/models/purchase.rb +0 -4
- data/spec/app/models/question.rb +0 -8
- data/spec/app/models/quiz.rb +0 -10
- data/spec/app/models/rating.rb +0 -8
- data/spec/app/models/record.rb +0 -46
- data/spec/app/models/registry.rb +0 -4
- data/spec/app/models/role.rb +0 -7
- data/spec/app/models/root_category.rb +0 -4
- data/spec/app/models/sandwich.rb +0 -4
- data/spec/app/models/scheduler.rb +0 -7
- data/spec/app/models/seo.rb +0 -7
- data/spec/app/models/series.rb +0 -4
- data/spec/app/models/server.rb +0 -13
- data/spec/app/models/service.rb +0 -22
- data/spec/app/models/shape.rb +0 -12
- data/spec/app/models/shelf.rb +0 -5
- data/spec/app/models/shipping_container.rb +0 -5
- data/spec/app/models/shipping_pack.rb +0 -3
- data/spec/app/models/shop.rb +0 -6
- data/spec/app/models/short_agent.rb +0 -4
- data/spec/app/models/short_quiz.rb +0 -5
- data/spec/app/models/slave.rb +0 -6
- data/spec/app/models/song.rb +0 -8
- data/spec/app/models/square.rb +0 -4
- data/spec/app/models/strategy.rb +0 -3
- data/spec/app/models/sub_item.rb +0 -3
- data/spec/app/models/subscription.rb +0 -4
- data/spec/app/models/survey.rb +0 -5
- data/spec/app/models/symptom.rb +0 -6
- data/spec/app/models/tag.rb +0 -8
- data/spec/app/models/target.rb +0 -5
- data/spec/app/models/template.rb +0 -5
- data/spec/app/models/thing.rb +0 -9
- data/spec/app/models/title.rb +0 -4
- data/spec/app/models/tool.rb +0 -8
- data/spec/app/models/topping.rb +0 -5
- data/spec/app/models/track.rb +0 -38
- data/spec/app/models/translation.rb +0 -5
- data/spec/app/models/tree.rb +0 -9
- data/spec/app/models/truck.rb +0 -3
- data/spec/app/models/user.rb +0 -21
- data/spec/app/models/user_account.rb +0 -10
- data/spec/app/models/validation_callback.rb +0 -10
- data/spec/app/models/vehicle.rb +0 -11
- data/spec/app/models/version.rb +0 -5
- data/spec/app/models/vet_visit.rb +0 -5
- data/spec/app/models/video.rb +0 -17
- data/spec/app/models/video_game.rb +0 -1
- data/spec/app/models/weapon.rb +0 -11
- data/spec/app/models/wiki_page.rb +0 -17
- data/spec/app/models/word.rb +0 -12
- data/spec/app/models/word_origin.rb +0 -11
- data/spec/app/models/writer.rb +0 -11
- data/spec/mongoid/atomic/positionable_spec.rb +0 -227
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/callbacks_spec.rb +0 -1564
- data/spec/mongoid/components_spec.rb +0 -24
- data/spec/mongoid/contextual/find_and_modify_spec.rb +0 -220
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/inspection_spec.rb +0 -27
- data/spec/mongoid/criterion/marshalable_spec.rb +0 -28
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/criterion/scoping_spec.rb +0 -391
- data/spec/mongoid/dirty_spec.rb +0 -1508
- data/spec/mongoid/errors/eager_load_spec.rb +0 -29
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +0 -29
- data/spec/mongoid/errors/no_session_config_spec.rb +0 -29
- data/spec/mongoid/errors/no_session_database_spec.rb +0 -29
- data/spec/mongoid/errors/no_session_hosts_spec.rb +0 -29
- data/spec/mongoid/errors/no_sessions_config_spec.rb +0 -29
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +0 -184
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +0 -201
- data/spec/mongoid/finders_spec.rb +0 -321
- data/spec/mongoid/hierarchy_spec.rb +0 -244
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/indexes_spec.rb +0 -404
- data/spec/mongoid/inspection_spec.rb +0 -57
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/all_spec.rb +0 -31
- data/spec/mongoid/matchers/and_spec.rb +0 -162
- data/spec/mongoid/matchers/default_spec.rb +0 -130
- data/spec/mongoid/matchers/exists_spec.rb +0 -57
- data/spec/mongoid/matchers/gt_spec.rb +0 -74
- data/spec/mongoid/matchers/gte_spec.rb +0 -74
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/lt_spec.rb +0 -74
- data/spec/mongoid/matchers/lte_spec.rb +0 -74
- data/spec/mongoid/matchers/ne_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/matchers/or_spec.rb +0 -106
- data/spec/mongoid/matchers/size_spec.rb +0 -25
- data/spec/mongoid/matchers_spec.rb +0 -532
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/nested_attributes_spec.rb +0 -4945
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/railties/document_spec.rb +0 -24
- data/spec/mongoid/relations/accessors_spec.rb +0 -844
- data/spec/mongoid/relations/auto_save_spec.rb +0 -261
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +0 -171
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +0 -54
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +0 -77
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +0 -241
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +0 -153
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +0 -178
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +0 -131
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +0 -34
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +0 -132
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +0 -99
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +0 -234
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +0 -250
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +0 -241
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +0 -137
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +0 -178
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +0 -124
- data/spec/mongoid/relations/builders_spec.rb +0 -226
- data/spec/mongoid/relations/cascading/delete_spec.rb +0 -101
- data/spec/mongoid/relations/cascading/destroy_spec.rb +0 -47
- data/spec/mongoid/relations/cascading/nullify_spec.rb +0 -32
- data/spec/mongoid/relations/cascading/restrict_spec.rb +0 -68
- data/spec/mongoid/relations/cascading_spec.rb +0 -355
- data/spec/mongoid/relations/constraint_spec.rb +0 -74
- data/spec/mongoid/relations/conversions_spec.rb +0 -126
- data/spec/mongoid/relations/counter_cache_spec.rb +0 -205
- data/spec/mongoid/relations/cyclic_spec.rb +0 -156
- data/spec/mongoid/relations/embedded/dirty_spec.rb +0 -65
- data/spec/mongoid/relations/embedded/in_spec.rb +0 -580
- data/spec/mongoid/relations/embedded/many_spec.rb +0 -3841
- data/spec/mongoid/relations/embedded/one_spec.rb +0 -1055
- data/spec/mongoid/relations/macros_spec.rb +0 -625
- data/spec/mongoid/relations/metadata_spec.rb +0 -2030
- data/spec/mongoid/relations/options_spec.rb +0 -35
- data/spec/mongoid/relations/polymorphic_spec.rb +0 -132
- data/spec/mongoid/relations/referenced/in_spec.rb +0 -1501
- data/spec/mongoid/relations/referenced/many_spec.rb +0 -3632
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +0 -3561
- data/spec/mongoid/relations/referenced/one_spec.rb +0 -1331
- data/spec/mongoid/relations/reflections_spec.rb +0 -101
- data/spec/mongoid/relations/synchronization_spec.rb +0 -453
- data/spec/mongoid/relations/targets/enumerable_spec.rb +0 -1710
- data/spec/mongoid/relations_spec.rb +0 -188
- data/spec/mongoid/reloading_spec.rb +0 -305
- data/spec/mongoid/scoping_spec.rb +0 -978
- data/spec/mongoid/serialization_spec.rb +0 -833
- data/spec/mongoid/sessions/factory_spec.rb +0 -312
- data/spec/mongoid/sessions/mongo_uri_spec.rb +0 -103
- data/spec/mongoid/sessions_spec.rb +0 -1111
- data/spec/mongoid/sharding_spec.rb +0 -61
- data/spec/mongoid/state_spec.rb +0 -102
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/validations/associated_spec.rb +0 -183
- data/spec/mongoid/validations/format_spec.rb +0 -83
- data/spec/mongoid/validations/length_spec.rb +0 -223
- data/spec/mongoid/validations/numericality_spec.rb +0 -30
- data/spec/mongoid/validations/presence_spec.rb +0 -592
- data/spec/mongoid/validations/uniqueness_spec.rb +0 -2399
- data/spec/mongoid/validations_spec.rb +0 -309
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
1
3
|
require "spec_helper"
|
|
2
4
|
|
|
3
5
|
describe Mongoid::Document do
|
|
@@ -10,8 +12,15 @@ describe Mongoid::Document do
|
|
|
10
12
|
Person.new
|
|
11
13
|
end
|
|
12
14
|
|
|
13
|
-
it "
|
|
14
|
-
|
|
15
|
+
it "defines a _destroy method" do
|
|
16
|
+
expect(Person.new).to respond_to(:_destroy)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe "#_destroy" do
|
|
20
|
+
|
|
21
|
+
it "default to false" do
|
|
22
|
+
expect(Person.new._destroy).to be false
|
|
23
|
+
end
|
|
15
24
|
end
|
|
16
25
|
|
|
17
26
|
describe ".included" do
|
|
@@ -44,25 +53,25 @@ describe Mongoid::Document do
|
|
|
44
53
|
|
|
45
54
|
context "when Document has been included in a model" do
|
|
46
55
|
it ".models should include that model" do
|
|
47
|
-
models.
|
|
56
|
+
expect(models).to include(klass)
|
|
48
57
|
end
|
|
49
58
|
end
|
|
50
59
|
|
|
51
60
|
context "before Document has been included" do
|
|
52
61
|
it ".models should *not* include that model" do
|
|
53
|
-
models.
|
|
62
|
+
expect(models).to_not include(new_klass)
|
|
54
63
|
end
|
|
55
64
|
end
|
|
56
65
|
|
|
57
66
|
context "after Document has been included" do
|
|
58
67
|
it ".models should include that model" do
|
|
59
|
-
models.
|
|
68
|
+
expect(models).to include(new_model)
|
|
60
69
|
end
|
|
61
70
|
end
|
|
62
71
|
|
|
63
72
|
context "after Document has been included multiple times" do
|
|
64
73
|
it ".models should include that model just once" do
|
|
65
|
-
models.count(twice_a_new_model).
|
|
74
|
+
expect(models.count(twice_a_new_model)).to be_eql(1)
|
|
66
75
|
end
|
|
67
76
|
end
|
|
68
77
|
end
|
|
@@ -76,22 +85,22 @@ describe Mongoid::Document do
|
|
|
76
85
|
end
|
|
77
86
|
|
|
78
87
|
it "includes the root" do
|
|
79
|
-
types.
|
|
88
|
+
expect(types).to include("Person")
|
|
80
89
|
end
|
|
81
90
|
|
|
82
91
|
it "includes the subclasses" do
|
|
83
|
-
types.
|
|
92
|
+
expect(types).to include("Doctor")
|
|
84
93
|
end
|
|
85
94
|
end
|
|
86
95
|
|
|
87
96
|
context "when the document is not subclassed" do
|
|
88
97
|
|
|
89
98
|
let(:types) do
|
|
90
|
-
|
|
99
|
+
Kangaroo._types
|
|
91
100
|
end
|
|
92
101
|
|
|
93
102
|
it "returns the document" do
|
|
94
|
-
types.
|
|
103
|
+
expect(types).to eq([ "Kangaroo" ])
|
|
95
104
|
end
|
|
96
105
|
end
|
|
97
106
|
|
|
@@ -106,76 +115,89 @@ describe Mongoid::Document do
|
|
|
106
115
|
end
|
|
107
116
|
|
|
108
117
|
it "should clear descendants' cache" do
|
|
109
|
-
Person._types.
|
|
118
|
+
expect(Person._types).to include(descendant.discriminator_value)
|
|
110
119
|
end
|
|
111
120
|
end
|
|
112
121
|
end
|
|
113
122
|
|
|
114
|
-
describe "
|
|
123
|
+
describe "._mongoid_clear_types" do
|
|
115
124
|
|
|
116
|
-
|
|
117
|
-
Person.new(title: "Sir")
|
|
118
|
-
end
|
|
125
|
+
context "when changing the discriminator_value" do
|
|
119
126
|
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
127
|
+
before do
|
|
128
|
+
Kangaroo._types
|
|
129
|
+
Kangaroo.discriminator_value = "dvalue"
|
|
130
|
+
end
|
|
124
131
|
|
|
125
|
-
|
|
132
|
+
after do
|
|
133
|
+
Kangaroo.discriminator_value = nil
|
|
134
|
+
end
|
|
126
135
|
|
|
127
|
-
|
|
128
|
-
|
|
136
|
+
it "has the correct _types" do
|
|
137
|
+
expect(Kangaroo._types).to eq(["dvalue"])
|
|
138
|
+
end
|
|
129
139
|
end
|
|
130
140
|
|
|
131
|
-
context "when the
|
|
141
|
+
context "when changing the discriminator_value in child" do
|
|
132
142
|
|
|
133
|
-
|
|
134
|
-
|
|
143
|
+
before do
|
|
144
|
+
Shape._types
|
|
145
|
+
Circle.discriminator_value = "dvalue"
|
|
135
146
|
end
|
|
136
|
-
end
|
|
137
147
|
|
|
138
|
-
|
|
148
|
+
after do
|
|
149
|
+
Circle.discriminator_value = nil
|
|
150
|
+
end
|
|
139
151
|
|
|
140
|
-
|
|
141
|
-
|
|
152
|
+
it "has the correct _types" do
|
|
153
|
+
expect(Circle._types).to eq(["dvalue"])
|
|
142
154
|
end
|
|
143
155
|
|
|
144
|
-
|
|
156
|
+
it "has the new Circle discriminator value" do
|
|
157
|
+
expect(Shape._types).to include("dvalue")
|
|
158
|
+
end
|
|
145
159
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
160
|
+
it "doesn't have the old Circle discriminator value" do
|
|
161
|
+
expect(Shape._types).to_not include("Cirlce")
|
|
162
|
+
end
|
|
163
|
+
end
|
|
164
|
+
end
|
|
149
165
|
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
166
|
+
describe "#attributes" do
|
|
167
|
+
|
|
168
|
+
let!(:person) do
|
|
169
|
+
Person.create!(title: "Sir")
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it "returns the attributes with indifferent access" do
|
|
173
|
+
expect(person[:title]).to eq("Sir")
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
context "when instantiating a new document" do
|
|
177
|
+
it "returns a Hash" do
|
|
178
|
+
expect(person.attributes.class).to eq(Hash)
|
|
153
179
|
end
|
|
180
|
+
end
|
|
154
181
|
|
|
155
|
-
|
|
182
|
+
context "when retrieving a document from the database" do
|
|
156
183
|
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
184
|
+
let(:from_db) { Person.first }
|
|
185
|
+
|
|
186
|
+
context "when legacy_attributes is false" do
|
|
187
|
+
config_override :legacy_attributes, false
|
|
160
188
|
|
|
161
|
-
it "
|
|
162
|
-
|
|
189
|
+
it "returns a Hash" do
|
|
190
|
+
expect(from_db.attributes.class).to eq(Hash)
|
|
163
191
|
end
|
|
164
192
|
end
|
|
165
193
|
|
|
166
|
-
context "
|
|
167
|
-
|
|
168
|
-
Artist.new
|
|
169
|
-
end
|
|
170
|
-
before do
|
|
171
|
-
artist.save
|
|
172
|
-
end
|
|
194
|
+
context "when legacy_attributes is true" do
|
|
195
|
+
config_override :legacy_attributes, true
|
|
173
196
|
|
|
174
|
-
it "
|
|
175
|
-
|
|
197
|
+
it "returns a BSON::Document" do
|
|
198
|
+
expect(from_db.attributes.class).to eq(BSON::Document)
|
|
176
199
|
end
|
|
177
200
|
end
|
|
178
|
-
|
|
179
201
|
end
|
|
180
202
|
end
|
|
181
203
|
|
|
@@ -186,7 +208,7 @@ describe Mongoid::Document do
|
|
|
186
208
|
end
|
|
187
209
|
|
|
188
210
|
it "returns a [doc.class, doc.id] array" do
|
|
189
|
-
person.identity.
|
|
211
|
+
expect(person.identity).to eq([person.class, person.id])
|
|
190
212
|
end
|
|
191
213
|
end
|
|
192
214
|
|
|
@@ -197,7 +219,7 @@ describe Mongoid::Document do
|
|
|
197
219
|
end
|
|
198
220
|
|
|
199
221
|
it "returns the identity hash" do
|
|
200
|
-
person.hash.
|
|
222
|
+
expect(person.hash).to eq(person.identity.hash)
|
|
201
223
|
end
|
|
202
224
|
end
|
|
203
225
|
|
|
@@ -208,15 +230,40 @@ describe Mongoid::Document do
|
|
|
208
230
|
end
|
|
209
231
|
|
|
210
232
|
it "sets persisted to false" do
|
|
211
|
-
person.
|
|
233
|
+
expect(person).to_not be_persisted
|
|
212
234
|
end
|
|
213
235
|
|
|
214
236
|
it "creates an id for the document" do
|
|
215
|
-
person.id.
|
|
237
|
+
expect(person.id).to be_a(BSON::ObjectId)
|
|
216
238
|
end
|
|
217
239
|
|
|
218
240
|
it "sets the attributes" do
|
|
219
|
-
person.title.
|
|
241
|
+
expect(person.title).to eq("Sir")
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
context "when the model has a default scope" do
|
|
245
|
+
|
|
246
|
+
context "when the default scope is settable" do
|
|
247
|
+
|
|
248
|
+
let(:sound) do
|
|
249
|
+
Sound.new
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
it "sets the default scoping on the model" do
|
|
253
|
+
expect(sound).to be_active
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
context "when the default scope is not settable" do
|
|
258
|
+
|
|
259
|
+
let(:audio) do
|
|
260
|
+
Audio.new
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
it "does not set the default scoping" do
|
|
264
|
+
expect(audio.attributes.except('_id')).to be_empty
|
|
265
|
+
end
|
|
266
|
+
end
|
|
220
267
|
end
|
|
221
268
|
|
|
222
269
|
context "when accessing a relation from an overridden setter" do
|
|
@@ -226,11 +273,11 @@ describe Mongoid::Document do
|
|
|
226
273
|
end
|
|
227
274
|
|
|
228
275
|
it "allows access to the relation" do
|
|
229
|
-
doctor.users.first.
|
|
276
|
+
expect(doctor.users.first).to be_a(User)
|
|
230
277
|
end
|
|
231
278
|
|
|
232
279
|
it "properly allows super calls" do
|
|
233
|
-
doctor.specialty.
|
|
280
|
+
expect(doctor.specialty).to eq("surgery")
|
|
234
281
|
end
|
|
235
282
|
end
|
|
236
283
|
|
|
@@ -249,7 +296,7 @@ describe Mongoid::Document do
|
|
|
249
296
|
end
|
|
250
297
|
|
|
251
298
|
it "runs the callbacks" do
|
|
252
|
-
person.title.
|
|
299
|
+
expect(person.title).to eq("Madam")
|
|
253
300
|
end
|
|
254
301
|
end
|
|
255
302
|
|
|
@@ -270,28 +317,7 @@ describe Mongoid::Document do
|
|
|
270
317
|
end
|
|
271
318
|
|
|
272
319
|
it "runs the callbacks" do
|
|
273
|
-
person.game.name.
|
|
274
|
-
end
|
|
275
|
-
end
|
|
276
|
-
|
|
277
|
-
context "when instantiating model" do
|
|
278
|
-
|
|
279
|
-
let(:person) do
|
|
280
|
-
Person.instantiate("_id" => Moped::BSON::ObjectId.new, "title" => "Sir")
|
|
281
|
-
end
|
|
282
|
-
|
|
283
|
-
before do
|
|
284
|
-
Person.set_callback :initialize, :after do |doc|
|
|
285
|
-
doc.title = "Madam"
|
|
286
|
-
end
|
|
287
|
-
end
|
|
288
|
-
|
|
289
|
-
after do
|
|
290
|
-
Person.reset_callbacks(:initialize)
|
|
291
|
-
end
|
|
292
|
-
|
|
293
|
-
it "runs the callbacks" do
|
|
294
|
-
person.title.should eq("Madam")
|
|
320
|
+
expect(person.game.name).to eq("Ms. Pacman")
|
|
295
321
|
end
|
|
296
322
|
end
|
|
297
323
|
end
|
|
@@ -299,7 +325,7 @@ describe Mongoid::Document do
|
|
|
299
325
|
context "when defaults are defined" do
|
|
300
326
|
|
|
301
327
|
it "sets the default values" do
|
|
302
|
-
person.age.
|
|
328
|
+
expect(person.age).to eq(100)
|
|
303
329
|
end
|
|
304
330
|
end
|
|
305
331
|
|
|
@@ -312,7 +338,7 @@ describe Mongoid::Document do
|
|
|
312
338
|
end
|
|
313
339
|
|
|
314
340
|
it "yields to the block" do
|
|
315
|
-
person.title.
|
|
341
|
+
expect(person.title).to eq("King")
|
|
316
342
|
end
|
|
317
343
|
end
|
|
318
344
|
end
|
|
@@ -322,7 +348,7 @@ describe Mongoid::Document do
|
|
|
322
348
|
context "when passing a block" do
|
|
323
349
|
|
|
324
350
|
let(:id) do
|
|
325
|
-
|
|
351
|
+
BSON::ObjectId.new
|
|
326
352
|
end
|
|
327
353
|
|
|
328
354
|
let(:document) do
|
|
@@ -332,22 +358,14 @@ describe Mongoid::Document do
|
|
|
332
358
|
end
|
|
333
359
|
|
|
334
360
|
it "yields to the block" do
|
|
335
|
-
document.likes.
|
|
361
|
+
expect(document.likes).to eq(1000)
|
|
336
362
|
end
|
|
337
363
|
end
|
|
338
364
|
|
|
339
365
|
context "when an id exists" do
|
|
340
366
|
|
|
341
|
-
before do
|
|
342
|
-
Mongoid.identity_map_enabled = true
|
|
343
|
-
end
|
|
344
|
-
|
|
345
|
-
after do
|
|
346
|
-
Mongoid.identity_map_enabled = false
|
|
347
|
-
end
|
|
348
|
-
|
|
349
367
|
let(:id) do
|
|
350
|
-
|
|
368
|
+
BSON::ObjectId.new
|
|
351
369
|
end
|
|
352
370
|
|
|
353
371
|
let!(:person) do
|
|
@@ -355,15 +373,11 @@ describe Mongoid::Document do
|
|
|
355
373
|
end
|
|
356
374
|
|
|
357
375
|
it "sets the attributes" do
|
|
358
|
-
person.title.
|
|
376
|
+
expect(person.title).to eq("Sir")
|
|
359
377
|
end
|
|
360
378
|
|
|
361
379
|
it "sets persisted to true" do
|
|
362
|
-
person.
|
|
363
|
-
end
|
|
364
|
-
|
|
365
|
-
it "puts the document in the identity map" do
|
|
366
|
-
Mongoid::IdentityMap.get(Person, id).should eq(person)
|
|
380
|
+
expect(person).to be_persisted
|
|
367
381
|
end
|
|
368
382
|
end
|
|
369
383
|
|
|
@@ -374,7 +388,7 @@ describe Mongoid::Document do
|
|
|
374
388
|
end
|
|
375
389
|
|
|
376
390
|
it "creates a new document" do
|
|
377
|
-
person.
|
|
391
|
+
expect(person).to be_a(Person)
|
|
378
392
|
end
|
|
379
393
|
end
|
|
380
394
|
end
|
|
@@ -386,7 +400,7 @@ describe Mongoid::Document do
|
|
|
386
400
|
end
|
|
387
401
|
|
|
388
402
|
it "returns the class model name" do
|
|
389
|
-
person.model_name.
|
|
403
|
+
expect(person.model_name).to eq("Person")
|
|
390
404
|
end
|
|
391
405
|
end
|
|
392
406
|
|
|
@@ -397,22 +411,141 @@ describe Mongoid::Document do
|
|
|
397
411
|
end
|
|
398
412
|
|
|
399
413
|
it "returns the internal attributes" do
|
|
400
|
-
person.raw_attributes["title"].
|
|
414
|
+
expect(person.raw_attributes["title"]).to eq("Sir")
|
|
401
415
|
end
|
|
402
416
|
end
|
|
403
417
|
|
|
404
|
-
describe "#
|
|
418
|
+
describe "#as_json" do
|
|
405
419
|
|
|
406
|
-
let(:person) do
|
|
407
|
-
Person.new
|
|
420
|
+
let!(:person) do
|
|
421
|
+
Person.new(title: "Sir")
|
|
408
422
|
end
|
|
409
423
|
|
|
410
|
-
|
|
411
|
-
|
|
424
|
+
context "when no options are provided" do
|
|
425
|
+
|
|
426
|
+
it "does not apply any options" do
|
|
427
|
+
expect(person.as_json["title"]).to eq("Sir")
|
|
428
|
+
expect(person.as_json["age"]).to eq(100)
|
|
429
|
+
end
|
|
430
|
+
|
|
431
|
+
context "when options for the super method are provided" do
|
|
432
|
+
|
|
433
|
+
let(:options) do
|
|
434
|
+
{ only: :title }
|
|
435
|
+
end
|
|
436
|
+
|
|
437
|
+
it "passes the options through to the super method" do
|
|
438
|
+
expect(person.as_json(options)["title"]).to eq("Sir")
|
|
439
|
+
expect(person.as_json(options).keys).not_to include("age")
|
|
440
|
+
end
|
|
441
|
+
end
|
|
412
442
|
end
|
|
413
443
|
|
|
414
|
-
|
|
415
|
-
|
|
444
|
+
context "when the Mongoid-specific options are provided" do
|
|
445
|
+
|
|
446
|
+
let(:options) do
|
|
447
|
+
{ compact: true }
|
|
448
|
+
end
|
|
449
|
+
|
|
450
|
+
it "applies the Mongoid-specific options" do
|
|
451
|
+
expect(person.as_json(options)["title"]).to eq("Sir")
|
|
452
|
+
expect(person.as_json(options)["age"]).to eq(100)
|
|
453
|
+
expect(person.as_json(options).keys).not_to include("lunch_time")
|
|
454
|
+
end
|
|
455
|
+
|
|
456
|
+
context "when options for the super method are provided" do
|
|
457
|
+
|
|
458
|
+
let(:options) do
|
|
459
|
+
{ compact: true, only: [:title, :pets, :ssn] }
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
it "passes the options through to the super method" do
|
|
463
|
+
expect(person.as_json(options)["title"]).to eq("Sir")
|
|
464
|
+
expect(person.as_json(options)["pets"]).to eq(false)
|
|
465
|
+
end
|
|
466
|
+
|
|
467
|
+
it "applies the Mongoid-specific options" do
|
|
468
|
+
expect(person.as_json(options).keys).not_to include("ssn")
|
|
469
|
+
end
|
|
470
|
+
end
|
|
471
|
+
end
|
|
472
|
+
|
|
473
|
+
context 'deprecated :compact option' do
|
|
474
|
+
# Since rails 6 differs in how it treats id fields,
|
|
475
|
+
# run this test on one version of rails. Currently rails 6 is in beta,
|
|
476
|
+
# when it is released this version should be changed to 6.
|
|
477
|
+
max_rails_version '5.2'
|
|
478
|
+
|
|
479
|
+
before do
|
|
480
|
+
# These tests require a specific set of defined attributes
|
|
481
|
+
# on the model
|
|
482
|
+
expect(church.as_json.keys.sort).to eq(%w(_id location name))
|
|
483
|
+
end
|
|
484
|
+
|
|
485
|
+
context 'deprecation' do
|
|
486
|
+
let(:church) do
|
|
487
|
+
Church.create!(name: 'St. Basil')
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
let(:message) do
|
|
491
|
+
'#as_json :compact option is deprecated. Please call #compact on the returned Hash object instead.'
|
|
492
|
+
end
|
|
493
|
+
|
|
494
|
+
it 'logs a deprecation warning when :compact is given' do
|
|
495
|
+
expect(Mongoid::Warnings).to receive(:warn_as_json_compact_deprecated)
|
|
496
|
+
church.as_json(compact: true)
|
|
497
|
+
end
|
|
498
|
+
|
|
499
|
+
it 'does not log a deprecation warning when :compact is not given' do
|
|
500
|
+
expect(Mongoid::Warnings).to_not receive(:warn_as_json_compact_deprecated)
|
|
501
|
+
church.as_json
|
|
502
|
+
end
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
context 'there is a nil valued attribute' do
|
|
506
|
+
let(:church) do
|
|
507
|
+
Church.create!(name: 'St. Basil')
|
|
508
|
+
end
|
|
509
|
+
|
|
510
|
+
it 'returns non-nil fields and _id only' do
|
|
511
|
+
actual = church.as_json(compact: true)
|
|
512
|
+
expect(actual).to eq('_id' => church.id, 'name' => 'St. Basil')
|
|
513
|
+
end
|
|
514
|
+
end
|
|
515
|
+
|
|
516
|
+
context 'all attrbutes are nil valued' do
|
|
517
|
+
let(:church) do
|
|
518
|
+
Church.create!
|
|
519
|
+
end
|
|
520
|
+
|
|
521
|
+
it 'returns a hash with _id only' do
|
|
522
|
+
actual = church.as_json(compact: true)
|
|
523
|
+
expect(actual).to eq('_id' => church.id)
|
|
524
|
+
end
|
|
525
|
+
end
|
|
526
|
+
|
|
527
|
+
context 'there are no nil valued attributes' do
|
|
528
|
+
let(:church) do
|
|
529
|
+
Church.create!(name: 'St. Basil', location: {})
|
|
530
|
+
end
|
|
531
|
+
|
|
532
|
+
it 'returns all fields and _id' do
|
|
533
|
+
actual = church.as_json(compact: true)
|
|
534
|
+
expect(actual).to eq('_id' => church.id, 'name' => 'St. Basil',
|
|
535
|
+
'location' => {})
|
|
536
|
+
end
|
|
537
|
+
end
|
|
538
|
+
|
|
539
|
+
context 'when option is specified as a truthy value' do
|
|
540
|
+
let(:church) do
|
|
541
|
+
Church.create!(name: 'St. Basil')
|
|
542
|
+
end
|
|
543
|
+
|
|
544
|
+
it 'returns non-nil fields and _id only' do
|
|
545
|
+
actual = church.as_json(compact: 1)
|
|
546
|
+
expect(actual).to eq('_id' => church.id, 'name' => 'St. Basil')
|
|
547
|
+
end
|
|
548
|
+
end
|
|
416
549
|
end
|
|
417
550
|
end
|
|
418
551
|
|
|
@@ -435,15 +568,27 @@ describe Mongoid::Document do
|
|
|
435
568
|
end
|
|
436
569
|
|
|
437
570
|
it "includes embeds one attributes" do
|
|
438
|
-
person.as_document.
|
|
571
|
+
expect(person.as_document).to have_key("name")
|
|
572
|
+
end
|
|
573
|
+
|
|
574
|
+
it "includes embeds one attributes as a symbol" do
|
|
575
|
+
expect(person.as_document).to have_key(:name)
|
|
439
576
|
end
|
|
440
577
|
|
|
441
578
|
it "includes embeds many attributes" do
|
|
442
|
-
person.as_document.
|
|
579
|
+
expect(person.as_document).to have_key("addresses")
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
it "includes embeds many attributes as a symbol" do
|
|
583
|
+
expect(person.as_document).to have_key(:addresses)
|
|
443
584
|
end
|
|
444
585
|
|
|
445
586
|
it "includes second level embeds many attributes" do
|
|
446
|
-
person.as_document["addresses"].first.
|
|
587
|
+
expect(person.as_document["addresses"].first).to have_key("locations")
|
|
588
|
+
end
|
|
589
|
+
|
|
590
|
+
it "includes second level embeds many attributes as a symbol" do
|
|
591
|
+
expect(person.as_document["addresses"].first).to have_key(:locations)
|
|
447
592
|
end
|
|
448
593
|
|
|
449
594
|
context "with relation define store_as option in embeded_many" do
|
|
@@ -453,23 +598,27 @@ describe Mongoid::Document do
|
|
|
453
598
|
end
|
|
454
599
|
|
|
455
600
|
it 'includes the store_as key association' do
|
|
456
|
-
person.as_document.
|
|
601
|
+
expect(person.as_document).to have_key("mobile_phones")
|
|
602
|
+
end
|
|
603
|
+
|
|
604
|
+
it 'includes the store_as key association as a symbol' do
|
|
605
|
+
expect(person.as_document).to have_key(:mobile_phones)
|
|
457
606
|
end
|
|
458
607
|
|
|
459
608
|
it 'should not include the key of association' do
|
|
460
|
-
person.as_document.
|
|
609
|
+
expect(person.as_document).to_not have_key("phones")
|
|
461
610
|
end
|
|
462
611
|
end
|
|
463
612
|
|
|
464
613
|
context "when removing an embedded document" do
|
|
465
614
|
|
|
466
615
|
before do
|
|
467
|
-
person.save
|
|
616
|
+
person.save!
|
|
468
617
|
person.addresses.delete(address)
|
|
469
618
|
end
|
|
470
619
|
|
|
471
620
|
it "does not include the document in the hash" do
|
|
472
|
-
person.as_document
|
|
621
|
+
expect(person.as_document).to_not have_key("addresses")
|
|
473
622
|
end
|
|
474
623
|
end
|
|
475
624
|
|
|
@@ -477,13 +626,13 @@ describe Mongoid::Document do
|
|
|
477
626
|
|
|
478
627
|
before do
|
|
479
628
|
# Save the doc, then set an embeds_one relation to nil
|
|
480
|
-
person.save
|
|
629
|
+
person.save!
|
|
481
630
|
person.name = nil
|
|
482
|
-
person.save
|
|
631
|
+
person.save!
|
|
483
632
|
end
|
|
484
633
|
|
|
485
634
|
it "does not include the document in the hash" do
|
|
486
|
-
person.as_document.
|
|
635
|
+
expect(person.as_document).to_not have_key("name")
|
|
487
636
|
end
|
|
488
637
|
end
|
|
489
638
|
end
|
|
@@ -497,31 +646,35 @@ describe Mongoid::Document do
|
|
|
497
646
|
end
|
|
498
647
|
|
|
499
648
|
it "returns nil" do
|
|
500
|
-
person.to_key.
|
|
649
|
+
expect(person.to_key).to be_nil
|
|
501
650
|
end
|
|
502
651
|
end
|
|
503
652
|
|
|
504
653
|
context "when the document is not new" do
|
|
505
654
|
|
|
506
655
|
let(:person) do
|
|
507
|
-
Person.
|
|
656
|
+
Person.create!
|
|
508
657
|
end
|
|
509
658
|
|
|
510
659
|
it "returns the id in an array" do
|
|
511
|
-
person.to_key.
|
|
660
|
+
expect(person.to_key).to eq([ person.id.to_s ])
|
|
661
|
+
end
|
|
662
|
+
|
|
663
|
+
it "can query using the key" do
|
|
664
|
+
expect(person.id).to eq Person.find(person.to_key).first.id
|
|
512
665
|
end
|
|
513
666
|
end
|
|
514
667
|
|
|
515
668
|
context "when the document is destroyed" do
|
|
516
669
|
|
|
517
670
|
let(:person) do
|
|
518
|
-
Person.instantiate("_id" =>
|
|
671
|
+
Person.instantiate("_id" => BSON::ObjectId.new).tap do |peep|
|
|
519
672
|
peep.destroyed = true
|
|
520
673
|
end
|
|
521
674
|
end
|
|
522
675
|
|
|
523
676
|
it "returns the id in an array" do
|
|
524
|
-
person.to_key.
|
|
677
|
+
expect(person.to_key).to eq([ person.id.to_s ])
|
|
525
678
|
end
|
|
526
679
|
end
|
|
527
680
|
end
|
|
@@ -535,18 +688,18 @@ describe Mongoid::Document do
|
|
|
535
688
|
end
|
|
536
689
|
|
|
537
690
|
it "returns nil" do
|
|
538
|
-
person.to_param.
|
|
691
|
+
expect(person.to_param).to be_nil
|
|
539
692
|
end
|
|
540
693
|
end
|
|
541
694
|
|
|
542
695
|
context "when the document is not new" do
|
|
543
696
|
|
|
544
697
|
let(:person) do
|
|
545
|
-
Person.instantiate("_id" =>
|
|
698
|
+
Person.instantiate("_id" => BSON::ObjectId.new)
|
|
546
699
|
end
|
|
547
700
|
|
|
548
701
|
it "returns the id as a string" do
|
|
549
|
-
person.to_param.
|
|
702
|
+
expect(person.to_param).to eq(person.id.to_s)
|
|
550
703
|
end
|
|
551
704
|
end
|
|
552
705
|
end
|
|
@@ -560,7 +713,7 @@ describe Mongoid::Document do
|
|
|
560
713
|
context "when attributes are not frozen" do
|
|
561
714
|
|
|
562
715
|
it "return false" do
|
|
563
|
-
person.
|
|
716
|
+
expect(person).to_not be_frozen
|
|
564
717
|
expect {
|
|
565
718
|
person.title = "something"
|
|
566
719
|
}.to_not raise_error
|
|
@@ -573,7 +726,7 @@ describe Mongoid::Document do
|
|
|
573
726
|
end
|
|
574
727
|
|
|
575
728
|
it "return true" do
|
|
576
|
-
person.
|
|
729
|
+
expect(person).to be_frozen
|
|
577
730
|
end
|
|
578
731
|
end
|
|
579
732
|
end
|
|
@@ -584,25 +737,49 @@ describe Mongoid::Document do
|
|
|
584
737
|
Person.new
|
|
585
738
|
end
|
|
586
739
|
|
|
587
|
-
context "when
|
|
740
|
+
context "when freezing the model" do
|
|
741
|
+
|
|
742
|
+
context "when not frozen" do
|
|
588
743
|
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
744
|
+
it "freezes attributes" do
|
|
745
|
+
expect(person.freeze).to eq(person)
|
|
746
|
+
expect { person.title = "something" }.to raise_error(RuntimeError)
|
|
747
|
+
end
|
|
592
748
|
end
|
|
593
|
-
end
|
|
594
749
|
|
|
595
|
-
|
|
750
|
+
context "when frozen" do
|
|
596
751
|
|
|
597
|
-
|
|
598
|
-
|
|
752
|
+
before do
|
|
753
|
+
person.raw_attributes.freeze
|
|
754
|
+
end
|
|
755
|
+
|
|
756
|
+
it "keeps things frozen" do
|
|
757
|
+
person.freeze
|
|
758
|
+
expect {
|
|
759
|
+
person.title = "something"
|
|
760
|
+
}.to raise_error(RuntimeError)
|
|
761
|
+
end
|
|
599
762
|
end
|
|
763
|
+
end
|
|
600
764
|
|
|
601
|
-
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
|
|
605
|
-
|
|
765
|
+
context "when freezing attributes of the model" do
|
|
766
|
+
|
|
767
|
+
context "when assigning a frozen value" do
|
|
768
|
+
|
|
769
|
+
context "when the frozen value is a hash" do
|
|
770
|
+
|
|
771
|
+
let(:hash) do
|
|
772
|
+
{"foo" => {"bar" => {"baz" => [1,2,3]}}}
|
|
773
|
+
end
|
|
774
|
+
|
|
775
|
+
let(:assign_hash) do
|
|
776
|
+
person.map = hash.freeze
|
|
777
|
+
end
|
|
778
|
+
|
|
779
|
+
it "no mutation occurs during assignment" do
|
|
780
|
+
expect{ assign_hash }.not_to raise_error
|
|
781
|
+
end
|
|
782
|
+
end
|
|
606
783
|
end
|
|
607
784
|
end
|
|
608
785
|
end
|
|
@@ -610,7 +787,7 @@ describe Mongoid::Document do
|
|
|
610
787
|
describe ".logger" do
|
|
611
788
|
|
|
612
789
|
it "returns the mongoid logger" do
|
|
613
|
-
Person.logger.
|
|
790
|
+
expect(Person.logger).to eq(Mongoid.logger)
|
|
614
791
|
end
|
|
615
792
|
end
|
|
616
793
|
|
|
@@ -621,7 +798,7 @@ describe Mongoid::Document do
|
|
|
621
798
|
end
|
|
622
799
|
|
|
623
800
|
it "returns the mongoid logger" do
|
|
624
|
-
person.send(:logger).
|
|
801
|
+
expect(person.send(:logger)).to eq(Mongoid.logger)
|
|
625
802
|
end
|
|
626
803
|
end
|
|
627
804
|
|
|
@@ -632,7 +809,7 @@ describe Mongoid::Document do
|
|
|
632
809
|
end
|
|
633
810
|
|
|
634
811
|
it "resets to the global scope" do
|
|
635
|
-
movie.global_set.
|
|
812
|
+
expect(movie.global_set).to be_a(::Set)
|
|
636
813
|
end
|
|
637
814
|
end
|
|
638
815
|
context "when a model name conflicts with a mongoid internal" do
|
|
@@ -642,7 +819,7 @@ describe Mongoid::Document do
|
|
|
642
819
|
end
|
|
643
820
|
|
|
644
821
|
it "allows the model name" do
|
|
645
|
-
scheduler.strategy.
|
|
822
|
+
expect(scheduler.strategy).to be_a(Strategy)
|
|
646
823
|
end
|
|
647
824
|
end
|
|
648
825
|
|
|
@@ -652,16 +829,16 @@ describe Mongoid::Document do
|
|
|
652
829
|
|
|
653
830
|
it "sets the defaults before yielding" do
|
|
654
831
|
Person.new do |person|
|
|
655
|
-
person.age.
|
|
832
|
+
expect(person.age).to eq(100)
|
|
656
833
|
end
|
|
657
834
|
end
|
|
658
835
|
end
|
|
659
836
|
end
|
|
660
837
|
|
|
661
|
-
context "defining a
|
|
838
|
+
context "defining a BSON::ObjectId as a field" do
|
|
662
839
|
|
|
663
840
|
let(:bson_id) do
|
|
664
|
-
|
|
841
|
+
BSON::ObjectId.new
|
|
665
842
|
end
|
|
666
843
|
|
|
667
844
|
let(:person) do
|
|
@@ -669,15 +846,15 @@ describe Mongoid::Document do
|
|
|
669
846
|
end
|
|
670
847
|
|
|
671
848
|
before do
|
|
672
|
-
person.save
|
|
849
|
+
person.save!
|
|
673
850
|
end
|
|
674
851
|
|
|
675
852
|
it "persists the correct type" do
|
|
676
|
-
person.reload.bson_id.
|
|
853
|
+
expect(person.reload.bson_id).to be_a(BSON::ObjectId)
|
|
677
854
|
end
|
|
678
855
|
|
|
679
856
|
it "has the correct value" do
|
|
680
|
-
person.bson_id.
|
|
857
|
+
expect(person.bson_id).to eq(bson_id)
|
|
681
858
|
end
|
|
682
859
|
end
|
|
683
860
|
|
|
@@ -692,7 +869,7 @@ describe Mongoid::Document do
|
|
|
692
869
|
end
|
|
693
870
|
|
|
694
871
|
it "converts them to nil" do
|
|
695
|
-
post.person_id.
|
|
872
|
+
expect(post.person_id).to be_nil
|
|
696
873
|
end
|
|
697
874
|
end
|
|
698
875
|
|
|
@@ -736,27 +913,58 @@ describe Mongoid::Document do
|
|
|
736
913
|
end
|
|
737
914
|
|
|
738
915
|
context "when no embedded documents are present" do
|
|
916
|
+
context "when using the default discriminator key" do
|
|
917
|
+
let(:person) do
|
|
918
|
+
manager.becomes(Person)
|
|
919
|
+
end
|
|
739
920
|
|
|
740
|
-
|
|
741
|
-
|
|
742
|
-
|
|
921
|
+
it "copies attributes" do
|
|
922
|
+
expect(person.title).to eq('Sir')
|
|
923
|
+
end
|
|
743
924
|
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
925
|
+
it "keeps the same object id" do
|
|
926
|
+
expect(person.id).to eq(manager.id)
|
|
927
|
+
end
|
|
747
928
|
|
|
748
|
-
|
|
749
|
-
|
|
929
|
+
it "sets the class type" do
|
|
930
|
+
expect(person._type).to eq("Person")
|
|
931
|
+
end
|
|
932
|
+
|
|
933
|
+
it "raises an error when inappropriate class is provided" do
|
|
934
|
+
expect {
|
|
935
|
+
manager.becomes(String)
|
|
936
|
+
}.to raise_error(ArgumentError, /A class which includes Mongoid::Document is expected/)
|
|
937
|
+
end
|
|
750
938
|
end
|
|
751
939
|
|
|
752
|
-
|
|
753
|
-
|
|
940
|
+
context "when using a custom discriminator key" do
|
|
941
|
+
before do
|
|
942
|
+
Person.discriminator_key = "dkey"
|
|
943
|
+
end
|
|
944
|
+
|
|
945
|
+
after do
|
|
946
|
+
Person.discriminator_key = nil
|
|
947
|
+
end
|
|
948
|
+
|
|
949
|
+
it "sets the class type with new discriminator key" do
|
|
950
|
+
expect(person.dkey).to eq("Person")
|
|
951
|
+
end
|
|
754
952
|
end
|
|
755
953
|
|
|
756
|
-
|
|
757
|
-
|
|
758
|
-
|
|
759
|
-
|
|
954
|
+
context "when using a custom discriminator key and discriminator value" do
|
|
955
|
+
before do
|
|
956
|
+
Person.discriminator_key = "dkey"
|
|
957
|
+
Person.discriminator_value = "dvalue"
|
|
958
|
+
end
|
|
959
|
+
|
|
960
|
+
after do
|
|
961
|
+
Person.discriminator_key = nil
|
|
962
|
+
Person.discriminator_value = nil
|
|
963
|
+
end
|
|
964
|
+
|
|
965
|
+
it "sets the class type with new discriminator key" do
|
|
966
|
+
expect(person.dkey).to eq("dvalue")
|
|
967
|
+
end
|
|
760
968
|
end
|
|
761
969
|
end
|
|
762
970
|
|
|
@@ -773,11 +981,11 @@ describe Mongoid::Document do
|
|
|
773
981
|
end
|
|
774
982
|
|
|
775
983
|
it "copies the embedded documents" do
|
|
776
|
-
person.appointments.first.
|
|
984
|
+
expect(person.appointments.first).to eq(appointment)
|
|
777
985
|
end
|
|
778
986
|
|
|
779
987
|
it "returns new instances" do
|
|
780
|
-
person.appointments.first.
|
|
988
|
+
expect(person.appointments.first).to_not equal(appointment)
|
|
781
989
|
end
|
|
782
990
|
end
|
|
783
991
|
|
|
@@ -794,22 +1002,22 @@ describe Mongoid::Document do
|
|
|
794
1002
|
end
|
|
795
1003
|
|
|
796
1004
|
it "copies the embedded documents" do
|
|
797
|
-
person.addresses.first.
|
|
1005
|
+
expect(person.addresses.first).to eq(address)
|
|
798
1006
|
end
|
|
799
1007
|
|
|
800
1008
|
it "returns new instances" do
|
|
801
|
-
person.addresses.first.
|
|
1009
|
+
expect(person.addresses.first).to_not equal(address)
|
|
802
1010
|
end
|
|
803
1011
|
end
|
|
804
1012
|
|
|
805
1013
|
context "when embedded doc is persisted" do
|
|
806
1014
|
|
|
807
1015
|
let(:manager) do
|
|
808
|
-
Manager.create(title: "Sir")
|
|
1016
|
+
Manager.create!(title: "Sir")
|
|
809
1017
|
end
|
|
810
1018
|
|
|
811
1019
|
let!(:address) do
|
|
812
|
-
manager.addresses.create(street: "hobrecht")
|
|
1020
|
+
manager.addresses.create!(street: "hobrecht")
|
|
813
1021
|
end
|
|
814
1022
|
|
|
815
1023
|
let(:person) do
|
|
@@ -821,11 +1029,11 @@ describe Mongoid::Document do
|
|
|
821
1029
|
end
|
|
822
1030
|
|
|
823
1031
|
it "copies the embedded documents" do
|
|
824
|
-
person.addresses.first.
|
|
1032
|
+
expect(person.addresses.first).to eq(address)
|
|
825
1033
|
end
|
|
826
1034
|
|
|
827
1035
|
it "copies the embedded documents only once" do
|
|
828
|
-
person.reload.addresses.length.
|
|
1036
|
+
expect(person.reload.addresses.length).to eq(1)
|
|
829
1037
|
end
|
|
830
1038
|
end
|
|
831
1039
|
end
|
|
@@ -842,7 +1050,7 @@ describe Mongoid::Document do
|
|
|
842
1050
|
end
|
|
843
1051
|
|
|
844
1052
|
it "copies the localize attribute" do
|
|
845
|
-
person.desc.
|
|
1053
|
+
expect(person.desc).to eq("description")
|
|
846
1054
|
end
|
|
847
1055
|
end
|
|
848
1056
|
|
|
@@ -853,14 +1061,14 @@ describe Mongoid::Document do
|
|
|
853
1061
|
end
|
|
854
1062
|
|
|
855
1063
|
it "copies the state" do
|
|
856
|
-
person.
|
|
1064
|
+
expect(person).to be_a_new_record
|
|
857
1065
|
end
|
|
858
1066
|
end
|
|
859
1067
|
|
|
860
1068
|
context "when the document is persisted" do
|
|
861
1069
|
|
|
862
1070
|
before do
|
|
863
|
-
manager.save
|
|
1071
|
+
manager.save!
|
|
864
1072
|
end
|
|
865
1073
|
|
|
866
1074
|
let(:person) do
|
|
@@ -868,7 +1076,7 @@ describe Mongoid::Document do
|
|
|
868
1076
|
end
|
|
869
1077
|
|
|
870
1078
|
it "copies the state" do
|
|
871
|
-
person.
|
|
1079
|
+
expect(person).to be_persisted
|
|
872
1080
|
end
|
|
873
1081
|
end
|
|
874
1082
|
|
|
@@ -883,14 +1091,14 @@ describe Mongoid::Document do
|
|
|
883
1091
|
end
|
|
884
1092
|
|
|
885
1093
|
it "copies the state" do
|
|
886
|
-
person.
|
|
1094
|
+
expect(person).to be_destroyed
|
|
887
1095
|
end
|
|
888
1096
|
end
|
|
889
1097
|
|
|
890
1098
|
context "when the document is dirty" do
|
|
891
1099
|
|
|
892
1100
|
before do
|
|
893
|
-
manager.save
|
|
1101
|
+
manager.save!
|
|
894
1102
|
manager.ssn = "123-22-1234"
|
|
895
1103
|
end
|
|
896
1104
|
|
|
@@ -899,11 +1107,11 @@ describe Mongoid::Document do
|
|
|
899
1107
|
end
|
|
900
1108
|
|
|
901
1109
|
it "copies over the dirty changes" do
|
|
902
|
-
person.changes["ssn"].
|
|
1110
|
+
expect(person.changes["ssn"]).to eq([ nil, "123-22-1234" ])
|
|
903
1111
|
end
|
|
904
1112
|
|
|
905
1113
|
it "adds the _type change" do
|
|
906
|
-
person.changes["_type"].
|
|
1114
|
+
expect(person.changes["_type"]).to eq([ "Manager", "Person" ])
|
|
907
1115
|
end
|
|
908
1116
|
end
|
|
909
1117
|
|
|
@@ -919,7 +1127,7 @@ describe Mongoid::Document do
|
|
|
919
1127
|
end
|
|
920
1128
|
|
|
921
1129
|
it "copies the errors" do
|
|
922
|
-
person.errors.
|
|
1130
|
+
expect(person.errors).to include(:ssn)
|
|
923
1131
|
end
|
|
924
1132
|
end
|
|
925
1133
|
end
|
|
@@ -937,15 +1145,15 @@ describe Mongoid::Document do
|
|
|
937
1145
|
end
|
|
938
1146
|
|
|
939
1147
|
it "copies attributes" do
|
|
940
|
-
manager.title.
|
|
1148
|
+
expect(manager.title).to eq('Sir')
|
|
941
1149
|
end
|
|
942
1150
|
|
|
943
1151
|
it "keeps the same object id" do
|
|
944
|
-
manager.id.
|
|
1152
|
+
expect(manager.id).to eq(person.id)
|
|
945
1153
|
end
|
|
946
1154
|
|
|
947
1155
|
it "sets the class type" do
|
|
948
|
-
manager._type.
|
|
1156
|
+
expect(manager._type).to eq("Manager")
|
|
949
1157
|
end
|
|
950
1158
|
|
|
951
1159
|
it "raises an error when inappropriate class is provided" do
|
|
@@ -966,11 +1174,11 @@ describe Mongoid::Document do
|
|
|
966
1174
|
end
|
|
967
1175
|
|
|
968
1176
|
it "copies the embedded documents" do
|
|
969
|
-
manager.addresses.first.
|
|
1177
|
+
expect(manager.addresses.first).to eq(address)
|
|
970
1178
|
end
|
|
971
1179
|
|
|
972
1180
|
it "returns new instances" do
|
|
973
|
-
manager.addresses.first.
|
|
1181
|
+
expect(manager.addresses.first).to_not equal(address)
|
|
974
1182
|
end
|
|
975
1183
|
end
|
|
976
1184
|
|
|
@@ -981,14 +1189,14 @@ describe Mongoid::Document do
|
|
|
981
1189
|
end
|
|
982
1190
|
|
|
983
1191
|
it "copies the state" do
|
|
984
|
-
manager.
|
|
1192
|
+
expect(manager).to be_a_new_record
|
|
985
1193
|
end
|
|
986
1194
|
end
|
|
987
1195
|
|
|
988
1196
|
context "when the document is persisted" do
|
|
989
1197
|
|
|
990
1198
|
before do
|
|
991
|
-
person.save
|
|
1199
|
+
person.save!
|
|
992
1200
|
end
|
|
993
1201
|
|
|
994
1202
|
let(:manager) do
|
|
@@ -996,25 +1204,29 @@ describe Mongoid::Document do
|
|
|
996
1204
|
end
|
|
997
1205
|
|
|
998
1206
|
it "copies the state" do
|
|
999
|
-
manager.
|
|
1207
|
+
expect(manager).to be_persisted
|
|
1000
1208
|
end
|
|
1001
1209
|
|
|
1002
1210
|
context "when downcasted document is saved" do
|
|
1003
1211
|
|
|
1004
1212
|
before do
|
|
1005
|
-
manager.save
|
|
1213
|
+
manager.save!
|
|
1006
1214
|
end
|
|
1007
1215
|
|
|
1008
1216
|
it "keeps the type" do
|
|
1009
|
-
manager.
|
|
1217
|
+
expect(manager).to be_an_instance_of(Manager)
|
|
1218
|
+
end
|
|
1219
|
+
|
|
1220
|
+
it "copies over the dirty changes" do
|
|
1221
|
+
expect(manager.changes["ssn"]).to eq(person.changes["ssn"])
|
|
1010
1222
|
end
|
|
1011
1223
|
|
|
1012
1224
|
it "can by queried by the parent class" do
|
|
1013
|
-
Person.find(manager.id).
|
|
1225
|
+
expect(Person.find(manager.id)).to be_an_instance_of(Manager)
|
|
1014
1226
|
end
|
|
1015
1227
|
|
|
1016
1228
|
it "can by queried by the main class" do
|
|
1017
|
-
Manager.find(manager.id).
|
|
1229
|
+
expect(Manager.find(manager.id)).to be_an_instance_of(Manager)
|
|
1018
1230
|
end
|
|
1019
1231
|
end
|
|
1020
1232
|
end
|
|
@@ -1030,14 +1242,14 @@ describe Mongoid::Document do
|
|
|
1030
1242
|
end
|
|
1031
1243
|
|
|
1032
1244
|
it "copies the state" do
|
|
1033
|
-
manager.
|
|
1245
|
+
expect(manager).to be_destroyed
|
|
1034
1246
|
end
|
|
1035
1247
|
end
|
|
1036
1248
|
|
|
1037
1249
|
context "when the document is dirty" do
|
|
1038
1250
|
|
|
1039
1251
|
before do
|
|
1040
|
-
person.save
|
|
1252
|
+
person.save!
|
|
1041
1253
|
person.ssn = "123-22-1234"
|
|
1042
1254
|
end
|
|
1043
1255
|
|
|
@@ -1046,11 +1258,11 @@ describe Mongoid::Document do
|
|
|
1046
1258
|
end
|
|
1047
1259
|
|
|
1048
1260
|
it "copies over the dirty changes" do
|
|
1049
|
-
manager.changes["ssn"].
|
|
1261
|
+
expect(manager.changes["ssn"]).to eq([ nil, "123-22-1234" ])
|
|
1050
1262
|
end
|
|
1051
1263
|
|
|
1052
1264
|
it "adds the _type change" do
|
|
1053
|
-
manager.changes["_type"].
|
|
1265
|
+
expect(manager.changes["_type"]).to eq([ "Person", "Manager" ])
|
|
1054
1266
|
end
|
|
1055
1267
|
end
|
|
1056
1268
|
|
|
@@ -1066,7 +1278,24 @@ describe Mongoid::Document do
|
|
|
1066
1278
|
end
|
|
1067
1279
|
|
|
1068
1280
|
it "copies the errors" do
|
|
1069
|
-
manager.errors.
|
|
1281
|
+
expect(manager.errors).to include(:ssn)
|
|
1282
|
+
end
|
|
1283
|
+
|
|
1284
|
+
end
|
|
1285
|
+
|
|
1286
|
+
context "when the subclass validates attributes not present on the parent class" do
|
|
1287
|
+
|
|
1288
|
+
before do
|
|
1289
|
+
Manager.validates_inclusion_of(:level, in: [1, 2])
|
|
1290
|
+
end
|
|
1291
|
+
|
|
1292
|
+
let(:manager) do
|
|
1293
|
+
person.becomes(Manager)
|
|
1294
|
+
end
|
|
1295
|
+
|
|
1296
|
+
it "validates the instance of the subclass" do
|
|
1297
|
+
manager.level = 3
|
|
1298
|
+
expect(manager.valid?).to be false
|
|
1070
1299
|
end
|
|
1071
1300
|
end
|
|
1072
1301
|
|
|
@@ -1077,7 +1306,7 @@ describe Mongoid::Document do
|
|
|
1077
1306
|
end
|
|
1078
1307
|
|
|
1079
1308
|
it "applies default attributes" do
|
|
1080
|
-
manager.level.
|
|
1309
|
+
expect(manager.level).to eq(1)
|
|
1081
1310
|
end
|
|
1082
1311
|
end
|
|
1083
1312
|
end
|
|
@@ -1085,22 +1314,20 @@ describe Mongoid::Document do
|
|
|
1085
1314
|
|
|
1086
1315
|
context "when marshalling the document" do
|
|
1087
1316
|
|
|
1088
|
-
let(:
|
|
1089
|
-
|
|
1090
|
-
person.addresses.extension
|
|
1091
|
-
end
|
|
1317
|
+
let(:agency) do
|
|
1318
|
+
Agency.new
|
|
1092
1319
|
end
|
|
1093
1320
|
|
|
1094
|
-
let!(:
|
|
1095
|
-
|
|
1321
|
+
let!(:agent) do
|
|
1322
|
+
agency.agents.build(title: "VIP")
|
|
1096
1323
|
end
|
|
1097
1324
|
|
|
1098
1325
|
describe Marshal, ".dump" do
|
|
1099
1326
|
|
|
1100
1327
|
it "successfully dumps the document" do
|
|
1101
1328
|
expect {
|
|
1102
|
-
Marshal.dump(
|
|
1103
|
-
Marshal.dump(
|
|
1329
|
+
Marshal.dump(agency)
|
|
1330
|
+
Marshal.dump(agent)
|
|
1104
1331
|
}.not_to raise_error
|
|
1105
1332
|
end
|
|
1106
1333
|
end
|
|
@@ -1108,7 +1335,7 @@ describe Mongoid::Document do
|
|
|
1108
1335
|
describe Marshal, ".load" do
|
|
1109
1336
|
|
|
1110
1337
|
it "successfully loads the document" do
|
|
1111
|
-
expect
|
|
1338
|
+
expect(Marshal.load(Marshal.dump(agency))).to eq(agency)
|
|
1112
1339
|
end
|
|
1113
1340
|
end
|
|
1114
1341
|
end
|
|
@@ -1123,22 +1350,26 @@ describe Mongoid::Document do
|
|
|
1123
1350
|
|
|
1124
1351
|
describe "#fetch" do
|
|
1125
1352
|
|
|
1126
|
-
let
|
|
1127
|
-
|
|
1353
|
+
let(:agency) do
|
|
1354
|
+
Agency.new
|
|
1355
|
+
end
|
|
1356
|
+
|
|
1357
|
+
let(:agent) do
|
|
1358
|
+
agency.agents.build(title: "VIP", address: address)
|
|
1128
1359
|
end
|
|
1129
1360
|
|
|
1130
|
-
let
|
|
1131
|
-
|
|
1361
|
+
let(:address) do
|
|
1362
|
+
Address.new(city: 'Berlin')
|
|
1132
1363
|
end
|
|
1133
1364
|
|
|
1134
1365
|
it "stores the parent object" do
|
|
1135
|
-
cache.fetch("key") {
|
|
1136
|
-
cache.fetch("key").
|
|
1366
|
+
expect(cache.fetch("key") { agency }).to eq(agency)
|
|
1367
|
+
expect(cache.fetch("key")).to eq(agency)
|
|
1137
1368
|
end
|
|
1138
1369
|
|
|
1139
1370
|
it "stores the embedded object" do
|
|
1140
|
-
cache.fetch("key") {
|
|
1141
|
-
cache.fetch("key").
|
|
1371
|
+
expect(cache.fetch("key") { agent }).to eq(agent)
|
|
1372
|
+
expect(cache.fetch("key").address).to eq(agent.address)
|
|
1142
1373
|
end
|
|
1143
1374
|
end
|
|
1144
1375
|
end
|