mongoid 7.5.0 → 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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/README.md +3 -3
- data/lib/config/locales/en.yml +47 -30
- data/lib/mongoid/association/accessors.rb +38 -9
- data/lib/mongoid/association/bindable.rb +50 -2
- data/lib/mongoid/association/builders.rb +4 -2
- data/lib/mongoid/association/constrainable.rb +0 -1
- data/lib/mongoid/association/eager_loadable.rb +29 -7
- data/lib/mongoid/association/embedded/batchable.rb +53 -13
- data/lib/mongoid/association/embedded/cyclic.rb +1 -1
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in.rb +3 -2
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +50 -28
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +18 -4
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +23 -4
- data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
- data/lib/mongoid/association/macros.rb +2 -1
- data/lib/mongoid/association/many.rb +11 -7
- data/lib/mongoid/association/nested/many.rb +5 -4
- data/lib/mongoid/association/nested/nested_buildable.rb +4 -4
- data/lib/mongoid/association/nested/one.rb +5 -5
- data/lib/mongoid/association/one.rb +2 -2
- data/lib/mongoid/association/options.rb +9 -9
- data/lib/mongoid/association/proxy.rb +14 -3
- data/lib/mongoid/association/referenced/auto_save.rb +4 -3
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +5 -6
- data/lib/mongoid/association/referenced/belongs_to.rb +2 -2
- data/lib/mongoid/association/referenced/counter_cache.rb +10 -10
- data/lib/mongoid/association/referenced/eager.rb +2 -2
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +66 -13
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +20 -28
- data/lib/mongoid/association/referenced/has_many/proxy.rb +24 -18
- data/lib/mongoid/association/referenced/has_many.rb +3 -3
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_one/nested_builder.rb +5 -5
- data/lib/mongoid/association/referenced/has_one/proxy.rb +9 -12
- data/lib/mongoid/association/referenced/has_one.rb +3 -3
- data/lib/mongoid/association/referenced/syncable.rb +4 -4
- data/lib/mongoid/association/reflections.rb +2 -2
- data/lib/mongoid/association/relatable.rb +44 -10
- data/lib/mongoid/association.rb +5 -5
- data/lib/mongoid/atomic/modifiers.rb +2 -2
- data/lib/mongoid/atomic/paths/embedded/many.rb +19 -0
- data/lib/mongoid/attributes/dynamic.rb +3 -3
- data/lib/mongoid/attributes/nested.rb +5 -5
- data/lib/mongoid/attributes/processing.rb +10 -3
- data/lib/mongoid/attributes/projector.rb +1 -1
- data/lib/mongoid/attributes/readonly.rb +2 -2
- data/lib/mongoid/attributes.rb +43 -40
- data/lib/mongoid/changeable.rb +42 -7
- data/lib/mongoid/clients/options.rb +5 -1
- data/lib/mongoid/clients/sessions.rb +2 -14
- data/lib/mongoid/clients/validators/storage.rb +3 -3
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config.rb +27 -17
- data/lib/mongoid/contextual/aggregable/memory.rb +24 -16
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -5
- data/lib/mongoid/contextual/aggregable/none.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +7 -7
- data/lib/mongoid/contextual/map_reduce.rb +2 -2
- data/lib/mongoid/contextual/memory.rb +59 -32
- data/lib/mongoid/contextual/mongo.rb +184 -256
- data/lib/mongoid/contextual/none.rb +34 -16
- data/lib/mongoid/contextual/queryable.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -2
- data/lib/mongoid/copyable.rb +32 -8
- data/lib/mongoid/criteria/findable.rb +7 -4
- data/lib/mongoid/criteria/includable.rb +24 -20
- data/lib/mongoid/criteria/marshalable.rb +10 -2
- data/lib/mongoid/criteria/permission.rb +1 -1
- data/lib/mongoid/criteria/queryable/aggregable.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/array.rb +2 -15
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -16
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/set.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/string.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -2
- data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
- data/lib/mongoid/criteria/queryable/key.rb +3 -3
- data/lib/mongoid/criteria/queryable/optional.rb +5 -11
- data/lib/mongoid/criteria/queryable/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/pipeline.rb +1 -1
- data/lib/mongoid/criteria/queryable/selectable.rb +5 -27
- data/lib/mongoid/criteria/queryable/selector.rb +92 -7
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable.rb +12 -7
- data/lib/mongoid/criteria/scopable.rb +2 -2
- data/lib/mongoid/criteria.rb +15 -37
- data/lib/mongoid/deprecable.rb +36 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +98 -36
- data/lib/mongoid/equality.rb +12 -12
- data/lib/mongoid/errors/document_not_found.rb +10 -6
- data/lib/mongoid/errors/invalid_config_option.rb +1 -1
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +1 -1
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
- data/lib/mongoid/errors/invalid_field.rb +6 -2
- data/lib/mongoid/errors/invalid_field_type.rb +26 -0
- data/lib/mongoid/errors/invalid_relation.rb +1 -1
- data/lib/mongoid/errors/invalid_relation_option.rb +1 -1
- data/lib/mongoid/errors/invalid_session_use.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/mongoid_error.rb +3 -3
- data/lib/mongoid/errors/nested_attributes_metadata_not_found.rb +1 -1
- data/lib/mongoid/errors/no_client_database.rb +1 -1
- data/lib/mongoid/errors/no_client_hosts.rb +1 -1
- data/lib/mongoid/errors/readonly_attribute.rb +1 -1
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
- data/lib/mongoid/errors/unknown_attribute.rb +1 -1
- data/lib/mongoid/errors.rb +2 -2
- data/lib/mongoid/extensions/array.rb +9 -7
- data/lib/mongoid/extensions/big_decimal.rb +29 -10
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +8 -2
- data/lib/mongoid/extensions/date.rb +26 -20
- data/lib/mongoid/extensions/date_time.rb +1 -1
- data/lib/mongoid/extensions/false_class.rb +1 -1
- data/lib/mongoid/extensions/float.rb +4 -5
- data/lib/mongoid/extensions/hash.rb +13 -6
- data/lib/mongoid/extensions/integer.rb +4 -5
- data/lib/mongoid/extensions/module.rb +1 -1
- data/lib/mongoid/extensions/object.rb +8 -6
- data/lib/mongoid/extensions/range.rb +41 -10
- data/lib/mongoid/extensions/regexp.rb +11 -4
- data/lib/mongoid/extensions/set.rb +11 -4
- data/lib/mongoid/extensions/string.rb +11 -22
- data/lib/mongoid/extensions/symbol.rb +4 -15
- data/lib/mongoid/extensions/time.rb +27 -16
- data/lib/mongoid/extensions/time_with_zone.rb +1 -2
- data/lib/mongoid/extensions/true_class.rb +1 -1
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +42 -7
- data/lib/mongoid/fields/foreign_key.rb +11 -4
- data/lib/mongoid/fields/localized.rb +2 -2
- data/lib/mongoid/fields/standard.rb +7 -7
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +57 -15
- data/lib/mongoid/findable.rb +28 -22
- data/lib/mongoid/indexable/specification.rb +2 -2
- data/lib/mongoid/indexable/validators/options.rb +6 -2
- data/lib/mongoid/interceptable.rb +73 -13
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher.rb +12 -7
- data/lib/mongoid/persistable/creatable.rb +18 -9
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistable/destroyable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +2 -2
- data/lib/mongoid/persistable/unsettable.rb +1 -1
- data/lib/mongoid/persistable/updatable.rb +19 -12
- data/lib/mongoid/persistable/upsertable.rb +1 -1
- data/lib/mongoid/persistable.rb +3 -3
- data/lib/mongoid/persistence_context.rb +22 -5
- data/lib/mongoid/query_cache.rb +8 -260
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/reloadable.rb +7 -3
- data/lib/mongoid/scopable.rb +17 -15
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +10 -6
- data/lib/mongoid/stateful.rb +35 -9
- data/lib/mongoid/tasks/database.rb +0 -2
- data/lib/mongoid/threaded/lifecycle.rb +5 -5
- data/lib/mongoid/threaded.rb +9 -9
- data/lib/mongoid/timestamps/created.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +2 -3
- data/lib/mongoid/traversable.rb +4 -3
- data/lib/mongoid/validatable/localizable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +0 -2
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +9 -8
- data/lib/mongoid/validatable.rb +6 -6
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +3 -4
- data/lib/mongoid.rb +1 -0
- data/spec/config/mongoid.yml +16 -0
- data/spec/integration/app_spec.rb +8 -12
- data/spec/integration/associations/belongs_to_spec.rb +18 -0
- data/spec/integration/associations/embedded_spec.rb +15 -0
- data/spec/integration/associations/embeds_many_spec.rb +15 -2
- data/spec/integration/associations/embeds_one_spec.rb +18 -0
- data/spec/integration/associations/foreign_key_spec.rb +9 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
- data/spec/integration/associations/has_one_spec.rb +97 -1
- data/spec/integration/associations/scope_option_spec.rb +1 -1
- data/spec/integration/callbacks_models.rb +95 -1
- data/spec/integration/callbacks_spec.rb +226 -4
- data/spec/integration/criteria/range_spec.rb +95 -1
- data/spec/integration/discriminator_key_spec.rb +115 -76
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +1 -15
- data/spec/integration/matcher_examples_spec.rb +20 -13
- data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
- data/spec/integration/matcher_operator_spec.rb +3 -5
- data/spec/integration/persistence/range_field_spec.rb +350 -0
- data/spec/mongoid/association/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +9 -9
- data/spec/mongoid/association/eager_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +69 -9
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +219 -8
- data/spec/mongoid/association/embedded/embeds_many_models.rb +157 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +12 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +15 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +67 -4
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +82 -13
- data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
- data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
- data/spec/mongoid/association/syncable_spec.rb +14 -0
- data/spec/mongoid/atomic/paths_spec.rb +0 -14
- data/spec/mongoid/attributes/nested_spec.rb +80 -11
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
- data/spec/mongoid/attributes/projector_spec.rb +1 -5
- data/spec/mongoid/attributes_spec.rb +524 -27
- data/spec/mongoid/changeable_spec.rb +130 -13
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +32 -2
- data/spec/mongoid/config_spec.rb +58 -13
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
- 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/map_reduce_spec.rb +2 -16
- data/spec/mongoid/contextual/memory_spec.rb +521 -14
- data/spec/mongoid/contextual/mongo_spec.rb +564 -394
- data/spec/mongoid/contextual/none_spec.rb +11 -19
- data/spec/mongoid/copyable_spec.rb +451 -1
- data/spec/mongoid/criteria/findable_spec.rb +86 -210
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +0 -484
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +50 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +77 -85
- data/spec/mongoid/criteria/queryable/selector_spec.rb +14 -2
- data/spec/mongoid/criteria_spec.rb +469 -1201
- data/spec/mongoid/document_fields_spec.rb +173 -24
- data/spec/mongoid/document_spec.rb +32 -41
- data/spec/mongoid/equality_spec.rb +12 -12
- data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
- data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
- data/spec/mongoid/extensions/array_spec.rb +16 -2
- data/spec/mongoid/extensions/big_decimal_spec.rb +697 -212
- data/spec/mongoid/extensions/binary_spec.rb +44 -9
- data/spec/mongoid/extensions/boolean_spec.rb +68 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
- data/spec/mongoid/extensions/date_spec.rb +71 -1
- data/spec/mongoid/extensions/date_time_spec.rb +15 -9
- data/spec/mongoid/extensions/float_spec.rb +48 -76
- data/spec/mongoid/extensions/hash_spec.rb +30 -0
- data/spec/mongoid/extensions/integer_spec.rb +45 -66
- data/spec/mongoid/extensions/range_spec.rb +255 -54
- data/spec/mongoid/extensions/regexp_spec.rb +58 -33
- data/spec/mongoid/extensions/set_spec.rb +106 -0
- data/spec/mongoid/extensions/string_spec.rb +53 -25
- data/spec/mongoid/extensions/symbol_spec.rb +18 -25
- data/spec/mongoid/extensions/time_spec.rb +634 -66
- data/spec/mongoid/extensions/time_with_zone_spec.rb +17 -31
- data/spec/mongoid/factory_spec.rb +61 -1
- data/spec/mongoid/fields_spec.rb +321 -50
- data/spec/mongoid/findable_spec.rb +64 -29
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +39 -20
- data/spec/mongoid/interceptable_spec.rb +584 -5
- data/spec/mongoid/interceptable_spec_models.rb +235 -4
- data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +2 -2
- data/spec/mongoid/persistable/deletable_spec.rb +2 -2
- data/spec/mongoid/persistable/destroyable_spec.rb +2 -2
- data/spec/mongoid/persistable/upsertable_spec.rb +14 -0
- data/spec/mongoid/persistence_context_spec.rb +50 -1
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
- data/spec/mongoid/query_cache_spec.rb +0 -154
- data/spec/mongoid/reloadable_spec.rb +35 -2
- data/spec/mongoid/scopable_spec.rb +54 -16
- data/spec/mongoid/shardable_spec.rb +14 -0
- data/spec/mongoid/stateful_spec.rb +28 -0
- data/spec/mongoid/timestamps_spec.rb +390 -0
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +116 -0
- data/spec/mongoid/touchable_spec_models.rb +12 -8
- data/spec/mongoid/traversable_spec.rb +4 -11
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +60 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/event_subscriber.rb +5 -15
- data/spec/support/constraints.rb +24 -0
- data/spec/support/macros.rb +30 -0
- data/spec/support/models/augmentation.rb +12 -0
- data/spec/support/models/band.rb +3 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/circus.rb +3 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/support/models/implant.rb +9 -0
- data/spec/support/models/label.rb +2 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +1 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/registry.rb +1 -0
- data/spec/support/models/school.rb +14 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/support/models/weapon.rb +12 -0
- data.tar.gz.sig +0 -0
- metadata +49 -13
- metadata.gz.sig +0 -0
- data/lib/mongoid/errors/eager_load.rb +0 -23
- data/lib/mongoid/errors/invalid_value.rb +0 -17
- data/spec/mongoid/errors/eager_load_spec.rb +0 -31
| @@ -40,20 +40,167 @@ describe Mongoid::Document do | |
| 40 40 | 
             
                  end
         | 
| 41 41 |  | 
| 42 42 | 
             
                  it 'assigns as a BSON::Binary object' do
         | 
| 43 | 
            -
                    pending 'https://jira.mongodb.org/browse/MONGOID-4823'
         | 
| 44 | 
            -
             | 
| 45 43 | 
             
                    registry.data.should be_a(BSON::Binary)
         | 
| 46 44 | 
             
                  end
         | 
| 47 45 |  | 
| 48 46 | 
             
                  it 'persists' do
         | 
| 49 | 
            -
                    pending 'https://jira.mongodb.org/browse/MONGOID-4823'
         | 
| 50 | 
            -
             | 
| 51 47 | 
             
                    registry.save!
         | 
| 52 48 |  | 
| 53 49 | 
             
                    _registry = Registry.find(registry.id)
         | 
| 54 50 | 
             
                    _registry.data.should == BSON::Binary.new(data)
         | 
| 55 51 | 
             
                  end
         | 
| 56 52 | 
             
                end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                context 'when assigned nil' do
         | 
| 55 | 
            +
                  let(:data) do
         | 
| 56 | 
            +
                    nil
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                  let(:registry) do
         | 
| 60 | 
            +
                    Registry.new(data: data)
         | 
| 61 | 
            +
                  end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                  it 'assigns nil' do
         | 
| 64 | 
            +
                    registry.data.should be nil
         | 
| 65 | 
            +
                  end
         | 
| 66 | 
            +
             | 
| 67 | 
            +
                  it 'persists' do
         | 
| 68 | 
            +
                    registry.save!
         | 
| 69 | 
            +
             | 
| 70 | 
            +
                    _registry = Registry.find(registry.id)
         | 
| 71 | 
            +
                    _registry.data.should be nil
         | 
| 72 | 
            +
                  end
         | 
| 73 | 
            +
                end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                context 'when assigned an invalid type' do
         | 
| 76 | 
            +
                  let(:data) do
         | 
| 77 | 
            +
                    true
         | 
| 78 | 
            +
                  end
         | 
| 79 | 
            +
             | 
| 80 | 
            +
                  let(:registry) do
         | 
| 81 | 
            +
                    Registry.new(data: data)
         | 
| 82 | 
            +
                  end
         | 
| 83 | 
            +
             | 
| 84 | 
            +
                  it 'assigns nil' do
         | 
| 85 | 
            +
                    registry.data.should be nil
         | 
| 86 | 
            +
                  end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
                  it 'persists' do
         | 
| 89 | 
            +
                    registry.save!
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                    _registry = Registry.find(registry.id)
         | 
| 92 | 
            +
                    _registry.data.should be nil
         | 
| 93 | 
            +
                  end
         | 
| 94 | 
            +
                end
         | 
| 95 | 
            +
              end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
              describe 'BSON::ObjectId field' do
         | 
| 98 | 
            +
                context 'when assigned a BSON::ObjectId instance' do
         | 
| 99 | 
            +
                  let(:obj_id) do
         | 
| 100 | 
            +
                    BSON::ObjectId.new
         | 
| 101 | 
            +
                  end
         | 
| 102 | 
            +
             | 
| 103 | 
            +
                  let(:registry) do
         | 
| 104 | 
            +
                    Registry.new(obj_id: obj_id)
         | 
| 105 | 
            +
                  end
         | 
| 106 | 
            +
             | 
| 107 | 
            +
                  it 'does not freeze the specified data' do
         | 
| 108 | 
            +
                    registry
         | 
| 109 | 
            +
             | 
| 110 | 
            +
                    obj_id.should_not be_frozen
         | 
| 111 | 
            +
                  end
         | 
| 112 | 
            +
             | 
| 113 | 
            +
                  it 'persists' do
         | 
| 114 | 
            +
                    registry.save!
         | 
| 115 | 
            +
             | 
| 116 | 
            +
                    _registry = Registry.find(registry.id)
         | 
| 117 | 
            +
                    _registry.obj_id.should == obj_id
         | 
| 118 | 
            +
                  end
         | 
| 119 | 
            +
                end
         | 
| 120 | 
            +
             | 
| 121 | 
            +
                context 'when assigned a valid string' do
         | 
| 122 | 
            +
                  let(:obj_id) do
         | 
| 123 | 
            +
                    BSON::ObjectId.new.to_s
         | 
| 124 | 
            +
                  end
         | 
| 125 | 
            +
             | 
| 126 | 
            +
                  let(:registry) do
         | 
| 127 | 
            +
                    Registry.new(obj_id: obj_id)
         | 
| 128 | 
            +
                  end
         | 
| 129 | 
            +
             | 
| 130 | 
            +
                  it 'assigns as a BSON::Binary object' do
         | 
| 131 | 
            +
                    registry.obj_id.should be_a(BSON::ObjectId)
         | 
| 132 | 
            +
                  end
         | 
| 133 | 
            +
             | 
| 134 | 
            +
                  it 'persists' do
         | 
| 135 | 
            +
                    registry.save!
         | 
| 136 | 
            +
             | 
| 137 | 
            +
                    _registry = Registry.find(registry.id)
         | 
| 138 | 
            +
                    _registry.obj_id.should == BSON::ObjectId.from_string(obj_id)
         | 
| 139 | 
            +
                  end
         | 
| 140 | 
            +
                end
         | 
| 141 | 
            +
             | 
| 142 | 
            +
                context 'when assigned nil' do
         | 
| 143 | 
            +
                  let(:obj_id) do
         | 
| 144 | 
            +
                    nil
         | 
| 145 | 
            +
                  end
         | 
| 146 | 
            +
             | 
| 147 | 
            +
                  let(:registry) do
         | 
| 148 | 
            +
                    Registry.new(obj_id: obj_id)
         | 
| 149 | 
            +
                  end
         | 
| 150 | 
            +
             | 
| 151 | 
            +
                  it 'assigns nil' do
         | 
| 152 | 
            +
                    registry.obj_id.should be nil
         | 
| 153 | 
            +
                  end
         | 
| 154 | 
            +
             | 
| 155 | 
            +
                  it 'persists' do
         | 
| 156 | 
            +
                    registry.save!
         | 
| 157 | 
            +
             | 
| 158 | 
            +
                    _registry = Registry.find(registry.id)
         | 
| 159 | 
            +
                    _registry.obj_id.should be nil
         | 
| 160 | 
            +
                  end
         | 
| 161 | 
            +
                end
         | 
| 162 | 
            +
             | 
| 163 | 
            +
                context 'when assigned an invalid string' do
         | 
| 164 | 
            +
                  let(:obj_id) do
         | 
| 165 | 
            +
                    "hello"
         | 
| 166 | 
            +
                  end
         | 
| 167 | 
            +
             | 
| 168 | 
            +
                  let(:registry) do
         | 
| 169 | 
            +
                    Registry.new(obj_id: obj_id)
         | 
| 170 | 
            +
                  end
         | 
| 171 | 
            +
             | 
| 172 | 
            +
                  it 'assigns nil' do
         | 
| 173 | 
            +
                    registry.obj_id.should == "hello"
         | 
| 174 | 
            +
                  end
         | 
| 175 | 
            +
             | 
| 176 | 
            +
                  it 'persists' do
         | 
| 177 | 
            +
                    registry.save!
         | 
| 178 | 
            +
             | 
| 179 | 
            +
                    _registry = Registry.find(registry.id)
         | 
| 180 | 
            +
                    _registry.obj_id.should == "hello"
         | 
| 181 | 
            +
                  end
         | 
| 182 | 
            +
                end
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                context 'when assigned an invalid type' do
         | 
| 185 | 
            +
                  let(:obj_id) do
         | 
| 186 | 
            +
                    :sym
         | 
| 187 | 
            +
                  end
         | 
| 188 | 
            +
             | 
| 189 | 
            +
                  let(:registry) do
         | 
| 190 | 
            +
                    Registry.new(obj_id: obj_id)
         | 
| 191 | 
            +
                  end
         | 
| 192 | 
            +
             | 
| 193 | 
            +
                  it 'assigns nil' do
         | 
| 194 | 
            +
                    registry.obj_id.should == :sym
         | 
| 195 | 
            +
                  end
         | 
| 196 | 
            +
             | 
| 197 | 
            +
                  it 'persists' do
         | 
| 198 | 
            +
                    registry.save!
         | 
| 199 | 
            +
             | 
| 200 | 
            +
                    _registry = Registry.find(registry.id)
         | 
| 201 | 
            +
                    _registry.obj_id.should == :sym
         | 
| 202 | 
            +
                  end
         | 
| 203 | 
            +
                end
         | 
| 57 204 | 
             
              end
         | 
| 58 205 |  | 
| 59 206 | 
             
              describe 'Hash field' do
         | 
| @@ -86,28 +233,30 @@ describe Mongoid::Document do | |
| 86 233 | 
             
              end
         | 
| 87 234 |  | 
| 88 235 | 
             
              context 'Regexp field' do
         | 
| 89 | 
            -
                 | 
| 90 | 
            -
                   | 
| 91 | 
            -
             | 
| 92 | 
            -
             | 
| 93 | 
            -
             | 
| 94 | 
            -
                     | 
| 95 | 
            -
                       | 
| 96 | 
            -
             | 
| 97 | 
            -
             | 
| 98 | 
            -
             | 
| 99 | 
            -
                    ).to be == 1
         | 
| 100 | 
            -
                  end
         | 
| 101 | 
            -
                end
         | 
| 102 | 
            -
             | 
| 103 | 
            -
                context "< 3.2" do
         | 
| 104 | 
            -
                  max_server_version("3.1")
         | 
| 105 | 
            -
                  include_examples "persists strings as regexp", 11
         | 
| 236 | 
            +
                it 'persists strings as regexp' do
         | 
| 237 | 
            +
                  mop = Mop.create!(regexp_field: 'foo')
         | 
| 238 | 
            +
                  expect(mop.regexp_field).to be_a Regexp
         | 
| 239 | 
            +
                  expect(Mop.find(mop.id).regexp_field).to be_a Regexp
         | 
| 240 | 
            +
                  expect(
         | 
| 241 | 
            +
                    Mop.collection.find(
         | 
| 242 | 
            +
                      "_id" => mop.id,
         | 
| 243 | 
            +
                      "regexp_field" => { "$type" => 'regex' }
         | 
| 244 | 
            +
                    ).count
         | 
| 245 | 
            +
                  ).to be == 1
         | 
| 106 246 | 
             
                end
         | 
| 247 | 
            +
              end
         | 
| 107 248 |  | 
| 108 | 
            -
             | 
| 109 | 
            -
             | 
| 110 | 
            -
                   | 
| 249 | 
            +
              context 'BSON::Regexp::Raw field' do
         | 
| 250 | 
            +
                it 'round-trips BSON::Regexp::Raws' do
         | 
| 251 | 
            +
                  mop = Mop.create!(bson_regexp_field: BSON::Regexp::Raw.new('foo'))
         | 
| 252 | 
            +
                  expect(mop.bson_regexp_field).to be_a BSON::Regexp::Raw
         | 
| 253 | 
            +
                  expect(Mop.find(mop.id).bson_regexp_field).to be_a BSON::Regexp::Raw
         | 
| 254 | 
            +
                  expect(
         | 
| 255 | 
            +
                    Mop.collection.find(
         | 
| 256 | 
            +
                      "_id" => mop.id,
         | 
| 257 | 
            +
                      "bson_regexp_field" => { "$type" => 'regex' }
         | 
| 258 | 
            +
                    ).count
         | 
| 259 | 
            +
                  ).to be == 1
         | 
| 111 260 | 
             
                end
         | 
| 112 261 | 
             
              end
         | 
| 113 262 | 
             
            end
         | 
| @@ -165,13 +165,40 @@ describe Mongoid::Document do | |
| 165 165 |  | 
| 166 166 | 
             
              describe "#attributes" do
         | 
| 167 167 |  | 
| 168 | 
            -
                let(:person) do
         | 
| 169 | 
            -
                  Person. | 
| 168 | 
            +
                let!(:person) do
         | 
| 169 | 
            +
                  Person.create!(title: "Sir")
         | 
| 170 170 | 
             
                end
         | 
| 171 171 |  | 
| 172 172 | 
             
                it "returns the attributes with indifferent access" do
         | 
| 173 173 | 
             
                  expect(person[:title]).to eq("Sir")
         | 
| 174 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)
         | 
| 179 | 
            +
                  end
         | 
| 180 | 
            +
                end
         | 
| 181 | 
            +
             | 
| 182 | 
            +
                context "when retrieving a document from the database" do
         | 
| 183 | 
            +
             | 
| 184 | 
            +
                  let(:from_db) { Person.first }
         | 
| 185 | 
            +
             | 
| 186 | 
            +
                  context "when legacy_attributes is false" do
         | 
| 187 | 
            +
                    config_override :legacy_attributes, false
         | 
| 188 | 
            +
             | 
| 189 | 
            +
                    it "returns a Hash" do
         | 
| 190 | 
            +
                      expect(from_db.attributes.class).to eq(Hash)
         | 
| 191 | 
            +
                    end
         | 
| 192 | 
            +
                  end
         | 
| 193 | 
            +
             | 
| 194 | 
            +
                  context "when legacy_attributes is true" do
         | 
| 195 | 
            +
                    config_override :legacy_attributes, true
         | 
| 196 | 
            +
             | 
| 197 | 
            +
                    it "returns a BSON::Document" do
         | 
| 198 | 
            +
                      expect(from_db.attributes.class).to eq(BSON::Document)
         | 
| 199 | 
            +
                    end
         | 
| 200 | 
            +
                  end
         | 
| 201 | 
            +
                end
         | 
| 175 202 | 
             
              end
         | 
| 176 203 |  | 
| 177 204 | 
             
              describe "#identity" do
         | 
| @@ -293,27 +320,6 @@ describe Mongoid::Document do | |
| 293 320 | 
             
                      expect(person.game.name).to eq("Ms. Pacman")
         | 
| 294 321 | 
             
                    end
         | 
| 295 322 | 
             
                  end
         | 
| 296 | 
            -
             | 
| 297 | 
            -
                  context "when instantiating model" do
         | 
| 298 | 
            -
             | 
| 299 | 
            -
                    let(:person) do
         | 
| 300 | 
            -
                      Person.instantiate("_id" => BSON::ObjectId.new, "title" => "Sir")
         | 
| 301 | 
            -
                    end
         | 
| 302 | 
            -
             | 
| 303 | 
            -
                    before do
         | 
| 304 | 
            -
                      Person.set_callback :initialize, :after do |doc|
         | 
| 305 | 
            -
                        doc.title = "Madam"
         | 
| 306 | 
            -
                      end
         | 
| 307 | 
            -
                    end
         | 
| 308 | 
            -
             | 
| 309 | 
            -
                    after do
         | 
| 310 | 
            -
                      Person.reset_callbacks(:initialize)
         | 
| 311 | 
            -
                    end
         | 
| 312 | 
            -
             | 
| 313 | 
            -
                    it "runs the callbacks" do
         | 
| 314 | 
            -
                      expect(person.title).to eq("Madam")
         | 
| 315 | 
            -
                    end
         | 
| 316 | 
            -
                  end
         | 
| 317 323 | 
             
                end
         | 
| 318 324 |  | 
| 319 325 | 
             
                context "when defaults are defined" do
         | 
| @@ -409,21 +415,6 @@ describe Mongoid::Document do | |
| 409 415 | 
             
                end
         | 
| 410 416 | 
             
              end
         | 
| 411 417 |  | 
| 412 | 
            -
              describe "#to_a" do
         | 
| 413 | 
            -
             | 
| 414 | 
            -
                let(:person) do
         | 
| 415 | 
            -
                  Person.new
         | 
| 416 | 
            -
                end
         | 
| 417 | 
            -
             | 
| 418 | 
            -
                let(:people) do
         | 
| 419 | 
            -
                  person.to_a
         | 
| 420 | 
            -
                end
         | 
| 421 | 
            -
             | 
| 422 | 
            -
                it "returns the document in an array" do
         | 
| 423 | 
            -
                  expect(people).to eq([ person ])
         | 
| 424 | 
            -
                end
         | 
| 425 | 
            -
              end
         | 
| 426 | 
            -
             | 
| 427 418 | 
             
              describe "#as_json" do
         | 
| 428 419 |  | 
| 429 420 | 
             
                let!(:person) do
         | 
| @@ -501,12 +492,12 @@ describe Mongoid::Document do | |
| 501 492 | 
             
                    end
         | 
| 502 493 |  | 
| 503 494 | 
             
                    it 'logs a deprecation warning when :compact is given' do
         | 
| 504 | 
            -
                       | 
| 495 | 
            +
                      expect(Mongoid::Warnings).to receive(:warn_as_json_compact_deprecated)
         | 
| 505 496 | 
             
                      church.as_json(compact: true)
         | 
| 506 497 | 
             
                    end
         | 
| 507 498 |  | 
| 508 499 | 
             
                    it 'does not log a deprecation warning when :compact is not given' do
         | 
| 509 | 
            -
                       | 
| 500 | 
            +
                      expect(Mongoid::Warnings).to_not receive(:warn_as_json_compact_deprecated)
         | 
| 510 501 | 
             
                      church.as_json
         | 
| 511 502 | 
             
                    end
         | 
| 512 503 | 
             
                  end
         | 
| @@ -627,7 +618,7 @@ describe Mongoid::Document do | |
| 627 618 | 
             
                  end
         | 
| 628 619 |  | 
| 629 620 | 
             
                  it "does not include the document in the hash" do
         | 
| 630 | 
            -
                    expect(person.as_document | 
| 621 | 
            +
                    expect(person.as_document).to_not have_key("addresses")
         | 
| 631 622 | 
             
                  end
         | 
| 632 623 | 
             
                end
         | 
| 633 624 |  | 
| @@ -85,8 +85,8 @@ describe Mongoid::Equality do | |
| 85 85 |  | 
| 86 86 | 
             
              describe ".===" do
         | 
| 87 87 |  | 
| 88 | 
            -
                context "when legacy_triple_equals is set" do
         | 
| 89 | 
            -
                  config_override :legacy_triple_equals,  | 
| 88 | 
            +
                context "when legacy_triple_equals is not set" do
         | 
| 89 | 
            +
                  config_override :legacy_triple_equals, false
         | 
| 90 90 |  | 
| 91 91 | 
             
                  context "when comparable is an instance of this document" do
         | 
| 92 92 |  | 
| @@ -128,8 +128,8 @@ describe Mongoid::Equality do | |
| 128 128 | 
             
                  end
         | 
| 129 129 | 
             
                end
         | 
| 130 130 |  | 
| 131 | 
            -
                context "when legacy_triple_equals is  | 
| 132 | 
            -
                  config_override :legacy_triple_equals,  | 
| 131 | 
            +
                context "when legacy_triple_equals is set" do
         | 
| 132 | 
            +
                  config_override :legacy_triple_equals, true
         | 
| 133 133 |  | 
| 134 134 | 
             
                  context "when comparable is an instance of this document" do
         | 
| 135 135 |  | 
| @@ -205,8 +205,8 @@ describe Mongoid::Equality do | |
| 205 205 |  | 
| 206 206 | 
             
                    context "when the class is the same" do
         | 
| 207 207 |  | 
| 208 | 
            -
                      it "returns  | 
| 209 | 
            -
                        expect(person === Person).to be  | 
| 208 | 
            +
                      it "returns true" do
         | 
| 209 | 
            +
                        expect(person === Person).to be true
         | 
| 210 210 | 
             
                      end
         | 
| 211 211 | 
             
                    end
         | 
| 212 212 |  | 
| @@ -219,8 +219,8 @@ describe Mongoid::Equality do | |
| 219 219 |  | 
| 220 220 | 
             
                    context "when the class is a superclass" do
         | 
| 221 221 |  | 
| 222 | 
            -
                      it "returns  | 
| 223 | 
            -
                        expect(Doctor.new === Person).to be  | 
| 222 | 
            +
                      it "returns true" do
         | 
| 223 | 
            +
                        expect(Doctor.new === Person).to be true
         | 
| 224 224 | 
             
                      end
         | 
| 225 225 | 
             
                    end
         | 
| 226 226 | 
             
                  end
         | 
| @@ -256,8 +256,8 @@ describe Mongoid::Equality do | |
| 256 256 | 
             
                  context "when comparing to a class" do
         | 
| 257 257 | 
             
                    context "when the class is the same" do
         | 
| 258 258 |  | 
| 259 | 
            -
                      it "returns  | 
| 260 | 
            -
                        expect(person === Person).to be  | 
| 259 | 
            +
                      it "returns false" do
         | 
| 260 | 
            +
                        expect(person === Person).to be false
         | 
| 261 261 | 
             
                      end
         | 
| 262 262 | 
             
                    end
         | 
| 263 263 |  | 
| @@ -270,8 +270,8 @@ describe Mongoid::Equality do | |
| 270 270 |  | 
| 271 271 | 
             
                    context "when the class is a superclass" do
         | 
| 272 272 |  | 
| 273 | 
            -
                      it "returns  | 
| 274 | 
            -
                        expect(Doctor.new === Person).to be  | 
| 273 | 
            +
                      it "returns false" do
         | 
| 274 | 
            +
                        expect(Doctor.new === Person).to be false
         | 
| 275 275 | 
             
                      end
         | 
| 276 276 | 
             
                    end
         | 
| 277 277 | 
             
                  end
         | 
| @@ -81,10 +81,37 @@ describe Mongoid::Errors::DocumentNotFound do | |
| 81 81 | 
             
                  end
         | 
| 82 82 | 
             
                end
         | 
| 83 83 |  | 
| 84 | 
            +
                context "when providing an _id and a shard key" do
         | 
| 85 | 
            +
             | 
| 86 | 
            +
                  let(:id) { BSON::ObjectId.new }
         | 
| 87 | 
            +
                  let(:doc) { { _id: id, a: "syd" } }
         | 
| 88 | 
            +
                  let(:error) do
         | 
| 89 | 
            +
                    described_class.new(Person, id, doc)
         | 
| 90 | 
            +
                  end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
                  it "contains the problem in the message" do
         | 
| 93 | 
            +
                    expect(error.message).to include(
         | 
| 94 | 
            +
                      "Document not found for class Person with id #{id.to_s} and shard key a: syd."
         | 
| 95 | 
            +
                    )
         | 
| 96 | 
            +
                  end
         | 
| 97 | 
            +
             | 
| 98 | 
            +
                  it "contains the summary in the message" do
         | 
| 99 | 
            +
                    expect(error.message).to include(
         | 
| 100 | 
            +
                      "When calling Person.find with an id and a shard key"
         | 
| 101 | 
            +
                    )
         | 
| 102 | 
            +
                  end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
                  it "contains the resolution in the message" do
         | 
| 105 | 
            +
                    expect(error.message).to include(
         | 
| 106 | 
            +
                      "Search for an id/shard key that is in the database or set"
         | 
| 107 | 
            +
                    )
         | 
| 108 | 
            +
                  end
         | 
| 109 | 
            +
                end
         | 
| 110 | 
            +
             | 
| 84 111 | 
             
                context "when providing an id in a hash without a shard key" do
         | 
| 85 112 |  | 
| 86 113 | 
             
                  let(:error) do
         | 
| 87 | 
            -
                    described_class.new(Person, 1, 1)
         | 
| 114 | 
            +
                    described_class.new(Person, 1, { _id: 1 })
         | 
| 88 115 | 
             
                  end
         | 
| 89 116 |  | 
| 90 117 | 
             
                  it "contains the problem in the message" do
         | 
| @@ -125,7 +152,7 @@ describe Mongoid::Errors::DocumentNotFound do | |
| 125 152 |  | 
| 126 153 | 
             
                  it "contains the resolution in the message" do
         | 
| 127 154 | 
             
                    expect(error.message).to include(
         | 
| 128 | 
            -
                      "Create a document of class Person or use a finder method that  | 
| 155 | 
            +
                      "Create a document of class Person or use a finder method that does not raise an exception when no documents are found."
         | 
| 129 156 | 
             
                    )
         | 
| 130 157 | 
             
                  end
         | 
| 131 158 | 
             
                end
         | 
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "spec_helper"
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Mongoid::Errors::InvalidFieldType do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              describe "#message" do
         | 
| 8 | 
            +
             | 
| 9 | 
            +
                let(:error) do
         | 
| 10 | 
            +
                  described_class.new(Person, :first_name, :stringgy)
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                context 'when type is a symbol' do
         | 
| 14 | 
            +
                  let(:error) do
         | 
| 15 | 
            +
                    described_class.new(Person, :first_name, :stringgy)
         | 
| 16 | 
            +
                  end
         | 
| 17 | 
            +
             | 
| 18 | 
            +
                  it "contains the problem in the message" do
         | 
| 19 | 
            +
                    expect(error.message).to include(
         | 
| 20 | 
            +
                      "Invalid field type :stringgy for field 'first_name' on model 'Person'."
         | 
| 21 | 
            +
                    )
         | 
| 22 | 
            +
                  end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                  it "contains the summary in the message" do
         | 
| 25 | 
            +
                    expect(error.message).to include(
         | 
| 26 | 
            +
                      "Model 'Person' defines a field 'first_name' with an unknown type value :stringgy."
         | 
| 27 | 
            +
                    )
         | 
| 28 | 
            +
                  end
         | 
| 29 | 
            +
                end
         | 
| 30 | 
            +
             | 
| 31 | 
            +
                context 'when type is a string' do
         | 
| 32 | 
            +
                  let(:error) do
         | 
| 33 | 
            +
                    described_class.new(Person, :first_name, 'stringgy')
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                  it "contains the problem in the message" do
         | 
| 37 | 
            +
                    expect(error.message).to include(
         | 
| 38 | 
            +
                      %q,Invalid field type "stringgy" for field 'first_name' on model 'Person'.,
         | 
| 39 | 
            +
                    )
         | 
| 40 | 
            +
                  end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                  it "contains the summary in the message" do
         | 
| 43 | 
            +
                    expect(error.message).to include(
         | 
| 44 | 
            +
                      %q,Model 'Person' defines a field 'first_name' with an unknown type value "stringgy".,
         | 
| 45 | 
            +
                    )
         | 
| 46 | 
            +
                  end
         | 
| 47 | 
            +
                end
         | 
| 48 | 
            +
             | 
| 49 | 
            +
                it "contains the resolution in the message" do
         | 
| 50 | 
            +
                  expect(error.message).to include(
         | 
| 51 | 
            +
                    'Please provide a valid type value for the field.'
         | 
| 52 | 
            +
                  )
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
            end
         | 
| @@ -9,7 +9,9 @@ describe Mongoid::Errors::MongoidError do | |
| 9 9 | 
             
              let(:options) { {} }
         | 
| 10 10 |  | 
| 11 11 | 
             
              before do
         | 
| 12 | 
            -
                 | 
| 12 | 
            +
                # JRuby 9.3 RUBY_VERSION is set to 2.6.8, but the behavior matches Ruby 2.7.
         | 
| 13 | 
            +
                # See https://github.com/jruby/jruby/issues/7184
         | 
| 14 | 
            +
                if RUBY_VERSION >= '2.7' || (BSON::Environment.jruby? && JRUBY_VERSION >= '9.3')
         | 
| 13 15 | 
             
                  {"message_title" => "message", "summary_title" => "summary", "resolution_title" => "resolution"}.each do |key, name|
         | 
| 14 16 | 
             
                    expect(::I18n).to receive(:translate).with("mongoid.errors.messages.#{key}", **{}).and_return(name)
         | 
| 15 17 | 
             
                  end
         | 
| @@ -12,19 +12,19 @@ describe Mongoid::Errors::NoEnvironment do | |
| 12 12 |  | 
| 13 13 | 
             
                it "contains the problem in the message" do
         | 
| 14 14 | 
             
                  expect(error.message).to include(
         | 
| 15 | 
            -
                    " | 
| 15 | 
            +
                    "Mongoid could not determine the environment"
         | 
| 16 16 | 
             
                  )
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| 19 19 | 
             
                it "contains the summary in the message" do
         | 
| 20 20 | 
             
                  expect(error.message).to include(
         | 
| 21 | 
            -
                    " | 
| 21 | 
            +
                    "it was not specified in any of the following locations"
         | 
| 22 22 | 
             
                  )
         | 
| 23 23 | 
             
                end
         | 
| 24 24 |  | 
| 25 25 | 
             
                it "contains the resolution in the message" do
         | 
| 26 26 | 
             
                  expect(error.message).to include(
         | 
| 27 | 
            -
                    " | 
| 27 | 
            +
                    "Please ensure an environment is set"
         | 
| 28 28 | 
             
                  )
         | 
| 29 29 | 
             
                end
         | 
| 30 30 | 
             
              end
         | 
| @@ -12,7 +12,7 @@ describe Mongoid::Errors::TooManyNestedAttributeRecords do | |
| 12 12 |  | 
| 13 13 | 
             
                it "contains the problem in the message" do
         | 
| 14 14 | 
             
                  expect(error.message).to include(
         | 
| 15 | 
            -
                    "Accepting nested attributes for favorites is limited to 5  | 
| 15 | 
            +
                    "Accepting nested attributes for favorites is limited to 5 documents."
         | 
| 16 16 | 
             
                  )
         | 
| 17 17 | 
             
                end
         | 
| 18 18 |  | 
| @@ -488,12 +488,12 @@ describe Mongoid::Extensions::Array do | |
| 488 488 | 
             
                  Date.new(2012, 1, 1)
         | 
| 489 489 | 
             
                end
         | 
| 490 490 |  | 
| 491 | 
            -
                let(: | 
| 491 | 
            +
                let(:input) do
         | 
| 492 492 | 
             
                  [ date ]
         | 
| 493 493 | 
             
                end
         | 
| 494 494 |  | 
| 495 495 | 
             
                let(:mongoized) do
         | 
| 496 | 
            -
                  Array.mongoize( | 
| 496 | 
            +
                  Array.mongoize(input)
         | 
| 497 497 | 
             
                end
         | 
| 498 498 |  | 
| 499 499 | 
             
                it "mongoizes each element in the array" do
         | 
| @@ -503,6 +503,20 @@ describe Mongoid::Extensions::Array do | |
| 503 503 | 
             
                it "converts the elements properly" do
         | 
| 504 504 | 
             
                  expect(mongoized.first).to eq(Time.utc(2012, 1, 1, 0, 0, 0))
         | 
| 505 505 | 
             
                end
         | 
| 506 | 
            +
             | 
| 507 | 
            +
                context "when passing in a set" do
         | 
| 508 | 
            +
                  let(:input) do
         | 
| 509 | 
            +
                    [ date ].to_set
         | 
| 510 | 
            +
                  end
         | 
| 511 | 
            +
             | 
| 512 | 
            +
                  it "mongoizes to an array" do
         | 
| 513 | 
            +
                    expect(mongoized).to be_a(Array)
         | 
| 514 | 
            +
                  end
         | 
| 515 | 
            +
             | 
| 516 | 
            +
                  it "converts the elements properly" do
         | 
| 517 | 
            +
                    expect(mongoized.first).to eq(Time.utc(2012, 1, 1, 0, 0, 0))
         | 
| 518 | 
            +
                  end
         | 
| 519 | 
            +
                end
         | 
| 506 520 | 
             
              end
         | 
| 507 521 |  | 
| 508 522 | 
             
              describe "#mongoize" do
         |