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
@@ -120,7 +120,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
120
120
|
it "adds the uniqueness error to the aliased field name" do
|
121
121
|
dictionary.valid?
|
122
122
|
expect(dictionary.errors).to have_key(:language)
|
123
|
-
expect(dictionary.errors[:language]).to eq([ "
|
123
|
+
expect(dictionary.errors[:language]).to eq([ "has already been taken" ])
|
124
124
|
end
|
125
125
|
end
|
126
126
|
|
@@ -137,7 +137,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
137
137
|
it "adds the uniqueness error to the underlying field name" do
|
138
138
|
dictionary.valid?
|
139
139
|
expect(dictionary.errors).to have_key(:l)
|
140
|
-
expect(dictionary.errors[:l]).to eq([ "
|
140
|
+
expect(dictionary.errors[:l]).to eq([ "has already been taken" ])
|
141
141
|
end
|
142
142
|
end
|
143
143
|
end
|
@@ -239,7 +239,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
239
239
|
|
240
240
|
it "adds the uniqueness error" do
|
241
241
|
dictionary.valid?
|
242
|
-
expect(dictionary.errors[:description]).to eq([ "
|
242
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
243
243
|
end
|
244
244
|
end
|
245
245
|
|
@@ -260,7 +260,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
260
260
|
|
261
261
|
it "adds the uniqueness error" do
|
262
262
|
dictionary.valid?
|
263
|
-
expect(dictionary.errors[:description]).to eq([ "
|
263
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
264
264
|
end
|
265
265
|
end
|
266
266
|
end
|
@@ -330,7 +330,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
330
330
|
|
331
331
|
it "adds the uniqueness error" do
|
332
332
|
dictionary.valid?
|
333
|
-
expect(dictionary.errors[:description]).to eq([ "
|
333
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
334
334
|
end
|
335
335
|
end
|
336
336
|
|
@@ -351,7 +351,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
351
351
|
|
352
352
|
it "adds the uniqueness error" do
|
353
353
|
dictionary.valid?
|
354
|
-
expect(dictionary.errors[:description]).to eq([ "
|
354
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
355
355
|
end
|
356
356
|
end
|
357
357
|
end
|
@@ -399,7 +399,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
399
399
|
|
400
400
|
it "adds the uniqueness error" do
|
401
401
|
dictionary.valid?
|
402
|
-
expect(dictionary.errors[:description]).to eq([ "
|
402
|
+
expect(dictionary.errors[:description]).to eq([ "has already been taken" ])
|
403
403
|
end
|
404
404
|
end
|
405
405
|
end
|
@@ -460,7 +460,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
460
460
|
|
461
461
|
it "adds the uniqueness error" do
|
462
462
|
dictionary.valid?
|
463
|
-
expect(dictionary.errors[:name]).to eq([ "
|
463
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
464
464
|
end
|
465
465
|
end
|
466
466
|
|
@@ -623,7 +623,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
623
623
|
|
624
624
|
it "adds the uniqueness errors" do
|
625
625
|
dictionary.valid?
|
626
|
-
expect(dictionary.errors[:name]).to eq([ "
|
626
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
627
627
|
end
|
628
628
|
end
|
629
629
|
|
@@ -701,7 +701,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
701
701
|
|
702
702
|
it "should set an error for associated object not being unique" do
|
703
703
|
item.update_attributes(folder_id: personal_folder.id)
|
704
|
-
expect(item.errors.messages[:name].first).to eq("
|
704
|
+
expect(item.errors.messages[:name].first).to eq("has already been taken")
|
705
705
|
end
|
706
706
|
end
|
707
707
|
|
@@ -753,7 +753,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
753
753
|
|
754
754
|
it "adds the uniqueness errors" do
|
755
755
|
dictionary.valid?
|
756
|
-
expect(dictionary.errors[:name]).to eq([ "
|
756
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
757
757
|
end
|
758
758
|
end
|
759
759
|
|
@@ -792,7 +792,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
792
792
|
|
793
793
|
it "adds the uniqueness errors" do
|
794
794
|
dictionary.valid?
|
795
|
-
expect(dictionary.errors[:name]).to eq([ "
|
795
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
796
796
|
end
|
797
797
|
end
|
798
798
|
end
|
@@ -815,7 +815,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
815
815
|
|
816
816
|
expect do
|
817
817
|
Dictionary.create!(name: "French-English", year: 1960)
|
818
|
-
end.to raise_error(Mongoid::Errors::Validations, /Name
|
818
|
+
end.to raise_error(Mongoid::Errors::Validations, /Name has already been taken/)
|
819
819
|
|
820
820
|
expect(Dictionary.all.size).to eq(1)
|
821
821
|
end
|
@@ -954,7 +954,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
954
954
|
|
955
955
|
it "adds the uniqueness errors" do
|
956
956
|
dictionary.valid?
|
957
|
-
expect(dictionary.errors[:name]).to eq([ "
|
957
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
958
958
|
end
|
959
959
|
end
|
960
960
|
|
@@ -1018,7 +1018,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1018
1018
|
|
1019
1019
|
it "adds the uniqueness error" do
|
1020
1020
|
dictionary.valid?
|
1021
|
-
expect(dictionary.errors[:name]).to eq([ "
|
1021
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
1022
1022
|
end
|
1023
1023
|
end
|
1024
1024
|
|
@@ -1096,7 +1096,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1096
1096
|
|
1097
1097
|
it "adds the uniqueness error" do
|
1098
1098
|
dictionary.valid?
|
1099
|
-
expect(dictionary.errors[:name]).to eq([ "
|
1099
|
+
expect(dictionary.errors[:name]).to eq([ "has already been taken" ])
|
1100
1100
|
end
|
1101
1101
|
end
|
1102
1102
|
|
@@ -1218,7 +1218,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1218
1218
|
|
1219
1219
|
it "adds the uniqueness error" do
|
1220
1220
|
login.valid?
|
1221
|
-
expect(login.errors[:username]).to eq([ "
|
1221
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
1222
1222
|
end
|
1223
1223
|
end
|
1224
1224
|
|
@@ -1323,7 +1323,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1323
1323
|
|
1324
1324
|
it "adds the uniqueness errors" do
|
1325
1325
|
login.valid?
|
1326
|
-
expect(login.errors[:username]).to eq([ "
|
1326
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
1327
1327
|
end
|
1328
1328
|
end
|
1329
1329
|
|
@@ -1383,7 +1383,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1383
1383
|
|
1384
1384
|
it "adds the uniqueness error" do
|
1385
1385
|
login.valid?
|
1386
|
-
expect(login.errors[:username]).to eq([ "
|
1386
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
1387
1387
|
end
|
1388
1388
|
end
|
1389
1389
|
|
@@ -1461,7 +1461,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1461
1461
|
|
1462
1462
|
it "adds the uniqueness error" do
|
1463
1463
|
login.valid?
|
1464
|
-
expect(login.errors[:username]).to eq([ "
|
1464
|
+
expect(login.errors[:username]).to eq([ "has already been taken" ])
|
1465
1465
|
end
|
1466
1466
|
end
|
1467
1467
|
|
@@ -1710,7 +1710,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1710
1710
|
|
1711
1711
|
it "adds the uniqueness error" do
|
1712
1712
|
definition.valid?
|
1713
|
-
expect(definition.errors[:description]).to eq([ "
|
1713
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
1714
1714
|
end
|
1715
1715
|
end
|
1716
1716
|
|
@@ -1838,7 +1838,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1838
1838
|
|
1839
1839
|
it "adds the uniqueness errors" do
|
1840
1840
|
definition.valid?
|
1841
|
-
expect(definition.errors[:description]).to eq([ "
|
1841
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
1842
1842
|
end
|
1843
1843
|
end
|
1844
1844
|
|
@@ -1976,7 +1976,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
1976
1976
|
|
1977
1977
|
it "adds the uniqueness errors" do
|
1978
1978
|
definition.valid?
|
1979
|
-
expect(definition.errors[:description]).to eq([ "
|
1979
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
1980
1980
|
end
|
1981
1981
|
end
|
1982
1982
|
|
@@ -2040,7 +2040,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2040
2040
|
|
2041
2041
|
it "adds the uniqueness error" do
|
2042
2042
|
definition.valid?
|
2043
|
-
expect(definition.errors[:description]).to eq([ "
|
2043
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
2044
2044
|
end
|
2045
2045
|
end
|
2046
2046
|
|
@@ -2118,7 +2118,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2118
2118
|
|
2119
2119
|
it "adds the uniqueness error" do
|
2120
2120
|
definition.valid?
|
2121
|
-
expect(definition.errors[:description]).to eq([ "
|
2121
|
+
expect(definition.errors[:description]).to eq([ "has already been taken" ])
|
2122
2122
|
end
|
2123
2123
|
end
|
2124
2124
|
|
@@ -2214,7 +2214,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2214
2214
|
it "adds the uniqueness error to the aliased field name" do
|
2215
2215
|
definition.valid?
|
2216
2216
|
expect(definition.errors).to have_key(:part)
|
2217
|
-
expect(definition.errors[:part]).to eq([ "
|
2217
|
+
expect(definition.errors[:part]).to eq([ "has already been taken" ])
|
2218
2218
|
end
|
2219
2219
|
end
|
2220
2220
|
|
@@ -2231,7 +2231,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2231
2231
|
it "adds the uniqueness error to the underlying field name" do
|
2232
2232
|
definition.valid?
|
2233
2233
|
expect(definition.errors).to have_key(:p)
|
2234
|
-
expect(definition.errors[:p]).to eq([ "
|
2234
|
+
expect(definition.errors[:p]).to eq([ "has already been taken" ])
|
2235
2235
|
end
|
2236
2236
|
end
|
2237
2237
|
|
@@ -2250,7 +2250,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2250
2250
|
it "adds the uniqueness error to the aliased field name" do
|
2251
2251
|
definition.valid?
|
2252
2252
|
expect(definition.errors).to have_key(:synonyms)
|
2253
|
-
expect(definition.errors[:synonyms]).to eq([ "
|
2253
|
+
expect(definition.errors[:synonyms]).to eq([ "has already been taken" ])
|
2254
2254
|
end
|
2255
2255
|
end
|
2256
2256
|
|
@@ -2267,7 +2267,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2267
2267
|
it "adds the uniqueness error to the aliased field name" do
|
2268
2268
|
definition.valid?
|
2269
2269
|
expect(definition.errors).to have_key(:syn)
|
2270
|
-
expect(definition.errors[:syn]).to eq([ "
|
2270
|
+
expect(definition.errors[:syn]).to eq([ "has already been taken" ])
|
2271
2271
|
end
|
2272
2272
|
end
|
2273
2273
|
end
|
@@ -2319,7 +2319,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2319
2319
|
|
2320
2320
|
it "adds the uniqueness error" do
|
2321
2321
|
word_origin.valid?
|
2322
|
-
expect(word_origin.errors[:origin_id]).to eq([ "
|
2322
|
+
expect(word_origin.errors[:origin_id]).to eq([ "has already been taken" ])
|
2323
2323
|
end
|
2324
2324
|
end
|
2325
2325
|
|
@@ -2444,7 +2444,7 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2444
2444
|
it "should be invalid" do
|
2445
2445
|
subclass_document_with_duplicated_name.tap do |d|
|
2446
2446
|
expect(d).to be_invalid
|
2447
|
-
expect(d.errors[:name]).to eq([ "
|
2447
|
+
expect(d.errors[:name]).to eq([ "has already been taken" ])
|
2448
2448
|
end
|
2449
2449
|
end
|
2450
2450
|
end
|
@@ -2472,4 +2472,33 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
2472
2472
|
}.to raise_error(Mongo::Error::OperationFailure)
|
2473
2473
|
end
|
2474
2474
|
end
|
2475
|
+
|
2476
|
+
describe "i18n" do
|
2477
|
+
|
2478
|
+
context 'when using a different locale' do
|
2479
|
+
|
2480
|
+
around do |example|
|
2481
|
+
I18n.with_locale(:fr) { example.run }
|
2482
|
+
end
|
2483
|
+
|
2484
|
+
before do
|
2485
|
+
# Translation key location is as per rails-i18n gem.
|
2486
|
+
# See: https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml
|
2487
|
+
I18n.backend.store_translations(:fr, { errors: { messages: { taken: 'est déjà utilisé(e)' } } })
|
2488
|
+
end
|
2489
|
+
|
2490
|
+
after do
|
2491
|
+
# i18n 1.0 requires +send+ because +translations+ aren't public.
|
2492
|
+
# Newer i18n versions have it as public.
|
2493
|
+
I18n.backend.send(:translations).delete(:fr)
|
2494
|
+
end
|
2495
|
+
|
2496
|
+
it "correctly translates the error message" do
|
2497
|
+
Circus.create!(slogan: 'The Greatest Show on Mars')
|
2498
|
+
dict = Circus.new(slogan: 'The Greatest Show on Mars')
|
2499
|
+
dict.valid?
|
2500
|
+
expect(dict.errors.messages[:slogan]).to eq(["est déjà utilisé(e)"])
|
2501
|
+
end
|
2502
|
+
end
|
2503
|
+
end
|
2475
2504
|
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "spec_helper"
|
4
|
+
|
5
|
+
describe Mongoid::Warnings do
|
6
|
+
|
7
|
+
describe ".warn_*" do
|
8
|
+
|
9
|
+
context "when calling a warn_* method" do
|
10
|
+
|
11
|
+
let(:id) { :geo_haystack_deprecated }
|
12
|
+
let(:message) do
|
13
|
+
'The geoHaystack type is deprecated.'
|
14
|
+
end
|
15
|
+
|
16
|
+
before do
|
17
|
+
warn_id = id
|
18
|
+
Mongoid::Warnings.class_eval do
|
19
|
+
instance_variable_set("@#{warn_id}", false)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
it "logs the warning" do
|
24
|
+
expect_any_instance_of(Logger).to receive(:warn).once.with(message)
|
25
|
+
Mongoid::Warnings.send("warn_#{id}")
|
26
|
+
end
|
27
|
+
|
28
|
+
it "logs the warning only once" do
|
29
|
+
expect_any_instance_of(Logger).to receive(:warn).once.with(message)
|
30
|
+
Mongoid::Warnings.send("warn_#{id}")
|
31
|
+
Mongoid::Warnings.send("warn_#{id}")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
@@ -30,11 +30,11 @@ describe "Mongoid::Railties::ControllerRuntime" do
|
|
30
30
|
|
31
31
|
clear_metric!
|
32
32
|
instance.succeeded event_payload
|
33
|
-
expect(collector.runtime).to eq(
|
33
|
+
expect(collector.runtime).to eq(42000)
|
34
34
|
|
35
35
|
clear_metric!
|
36
36
|
instance.failed event_payload
|
37
|
-
expect(collector.runtime).to eq(
|
37
|
+
expect(collector.runtime).to eq(42000)
|
38
38
|
end
|
39
39
|
|
40
40
|
it "resets the metric and returns the value" do
|
data/spec/rails/mongoid_spec.rb
CHANGED
@@ -30,6 +30,7 @@ describe "Rails::Mongoid" do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
context "when preload models config is false" do
|
33
|
+
config_override :preload_models, false
|
33
34
|
|
34
35
|
let(:files) do
|
35
36
|
[
|
@@ -38,10 +39,6 @@ describe "Rails::Mongoid" do
|
|
38
39
|
]
|
39
40
|
end
|
40
41
|
|
41
|
-
before(:all) do
|
42
|
-
Mongoid.preload_models = false
|
43
|
-
end
|
44
|
-
|
45
42
|
it "does not load any models" do
|
46
43
|
allow(Dir).to receive(:glob).with("/rails/root/app/models/**/*.rb").and_return(files)
|
47
44
|
expect(Rails::Mongoid).to receive(:load_model).never
|
@@ -50,10 +47,7 @@ describe "Rails::Mongoid" do
|
|
50
47
|
end
|
51
48
|
|
52
49
|
context "when preload models config is true" do
|
53
|
-
|
54
|
-
before(:all) do
|
55
|
-
Mongoid.preload_models = true
|
56
|
-
end
|
50
|
+
config_override :preload_models, true
|
57
51
|
|
58
52
|
context "when all models are in the models directory" do
|
59
53
|
|
@@ -112,6 +106,7 @@ describe "Rails::Mongoid" do
|
|
112
106
|
end
|
113
107
|
|
114
108
|
context "even when preload models config is false" do
|
109
|
+
config_override :preload_models, false
|
115
110
|
|
116
111
|
let(:files) do
|
117
112
|
[
|
@@ -120,10 +115,6 @@ describe "Rails::Mongoid" do
|
|
120
115
|
]
|
121
116
|
end
|
122
117
|
|
123
|
-
before(:all) do
|
124
|
-
Mongoid.preload_models = false
|
125
|
-
end
|
126
|
-
|
127
118
|
it "loads all models" do
|
128
119
|
allow(Dir).to receive(:glob).with("/rails/root/app/models/**/*.rb").and_return(files)
|
129
120
|
expect(Rails::Mongoid).to receive(:load_model).with("address")
|
@@ -133,6 +124,7 @@ describe "Rails::Mongoid" do
|
|
133
124
|
end
|
134
125
|
|
135
126
|
context "when list of models to load was configured" do
|
127
|
+
config_override :preload_models, %w(user AddressNumber)
|
136
128
|
|
137
129
|
let(:files) do
|
138
130
|
[
|
@@ -141,10 +133,6 @@ describe "Rails::Mongoid" do
|
|
141
133
|
]
|
142
134
|
end
|
143
135
|
|
144
|
-
before(:all) do
|
145
|
-
Mongoid.preload_models = ["user", "AddressNumber"]
|
146
|
-
end
|
147
|
-
|
148
136
|
it "loads selected models only" do
|
149
137
|
allow(Dir).to receive(:glob).with("/rails/root/app/models/**/*.rb").and_return(files)
|
150
138
|
expect(Rails::Mongoid).to receive(:load_model).with("user")
|
@@ -84,32 +84,22 @@ module Mrss
|
|
84
84
|
|
85
85
|
# Locates command stated events for the specified command name,
|
86
86
|
# asserts that there is exactly one such event, and returns it.
|
87
|
-
def single_command_started_event(command_name, include_auth: false
|
87
|
+
def single_command_started_event(command_name, include_auth: false)
|
88
88
|
events = if include_auth
|
89
89
|
started_events
|
90
90
|
else
|
91
91
|
non_auth_command_started_events
|
92
92
|
end
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
# Locates command succeeded events for the specified command name,
|
97
|
-
# asserts that there is exactly one such event, and returns it.
|
98
|
-
def single_command_succeeded_event(command_name, database_name: nil)
|
99
|
-
get_one_event(succeeded_events, command_name, 'succeeded', database_name: database_name)
|
100
|
-
end
|
101
|
-
|
102
|
-
def get_one_event(events, command_name, kind, database_name: nil)
|
103
|
-
events = events.select do |event|
|
104
|
-
event.command_name == command_name and
|
105
|
-
database_name.nil? || database_name == event.database_name
|
93
|
+
events.select! do |event|
|
94
|
+
event.command[command_name]
|
106
95
|
end
|
107
96
|
if events.length != 1
|
108
|
-
raise "Expected a single
|
97
|
+
raise "Expected a single #{command_name} event but we have #{events.length}"
|
109
98
|
end
|
110
99
|
events.first
|
111
100
|
end
|
112
101
|
|
102
|
+
|
113
103
|
# Get the first succeeded event published for the name, and then delete it.
|
114
104
|
#
|
115
105
|
# @param [ String ] name The event name.
|
data/spec/support/constraints.rb
CHANGED
@@ -27,6 +27,30 @@ module Constraints
|
|
27
27
|
Mongo::VERSION.split('.')[0...precision].map(&:to_i)
|
28
28
|
end
|
29
29
|
|
30
|
+
def min_bson_version(version)
|
31
|
+
required_version = version.split('.').map(&:to_i)
|
32
|
+
actual_version = bson_version(required_version.length)
|
33
|
+
before(:all) do
|
34
|
+
if (actual_version <=> required_version) < 0
|
35
|
+
skip "bson-ruby version #{version} or higher is required"
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def max_bson_version(version)
|
41
|
+
required_version = version.split('.').map(&:to_i)
|
42
|
+
actual_version = bson_version(required_version.length)
|
43
|
+
before(:all) do
|
44
|
+
if (actual_version <=> required_version) > 0
|
45
|
+
skip "bson-ruby version #{version} or lower is required"
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def bson_version(precision)
|
51
|
+
BSON::VERSION.split('.')[0...precision].map(&:to_i)
|
52
|
+
end
|
53
|
+
|
30
54
|
def min_rails_version(version)
|
31
55
|
unless version =~ /\A\d+\.\d+\z/
|
32
56
|
raise ArgumentError, "Version can only be major.minor: #{version}"
|
data/spec/support/macros.rb
CHANGED
@@ -39,6 +39,28 @@ module Mongoid
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
+
def driver_config_override(key, value)
|
43
|
+
around do |example|
|
44
|
+
existing = Mongo.send(key)
|
45
|
+
|
46
|
+
Mongo.send("#{key}=", value)
|
47
|
+
|
48
|
+
example.run
|
49
|
+
|
50
|
+
Mongo.send("#{key}=", existing)
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
def with_driver_config_values(key, *values, &block)
|
55
|
+
values.each do |value|
|
56
|
+
context "when #{key} is #{value}" do
|
57
|
+
driver_config_override key, value
|
58
|
+
|
59
|
+
class_exec(value, &block)
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
42
64
|
def restore_config_clients
|
43
65
|
around do |example|
|
44
66
|
# Duplicate the config because some tests mutate it.
|
@@ -47,5 +69,13 @@ module Mongoid
|
|
47
69
|
Mongoid::Config.send(:clients=, old_config)
|
48
70
|
end
|
49
71
|
end
|
72
|
+
|
73
|
+
def query_cache_enabled
|
74
|
+
around do |example|
|
75
|
+
Mongoid::QueryCache.cache do
|
76
|
+
example.run
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
50
80
|
end
|
51
81
|
end
|
@@ -10,4 +10,16 @@ class Augmentation
|
|
10
10
|
after_build do
|
11
11
|
self.name = "Infolink (#{player.frags})"
|
12
12
|
end
|
13
|
+
|
14
|
+
field :after_find_player
|
15
|
+
field :after_initialize_player
|
16
|
+
field :after_default_player, default: ->{ self.player&._id }
|
17
|
+
|
18
|
+
after_find do |doc|
|
19
|
+
doc.after_find_player = player&._id
|
20
|
+
end
|
21
|
+
|
22
|
+
after_initialize do |doc|
|
23
|
+
doc.after_initialize_player = player&._id
|
24
|
+
end
|
13
25
|
end
|
data/spec/support/models/band.rb
CHANGED
@@ -20,10 +20,13 @@ class Band
|
|
20
20
|
field :y, as: :years, type: Integer
|
21
21
|
field :founded, type: Date
|
22
22
|
field :deleted, type: Boolean
|
23
|
+
field :mojo, type: Object
|
24
|
+
field :fans
|
23
25
|
|
24
26
|
embeds_many :records, cascade_callbacks: true
|
25
27
|
embeds_many :notes, as: :noteable, cascade_callbacks: true, validate: false
|
26
28
|
embeds_many :labels
|
29
|
+
embeds_many :fanatics
|
27
30
|
embeds_one :label, cascade_callbacks: true
|
28
31
|
|
29
32
|
scope :highly_rated, -> { gte(rating: 7) }
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class Catalog
|
4
|
+
include Mongoid::Document
|
5
|
+
|
6
|
+
field :array_field, type: Array
|
7
|
+
field :big_decimal_field, type: BigDecimal
|
8
|
+
field :boolean_field, type: Boolean
|
9
|
+
field :date_field, type: Date
|
10
|
+
field :date_time_field, type: DateTime
|
11
|
+
field :float_field, type: Float
|
12
|
+
field :hash_field, type: Hash
|
13
|
+
field :integer_field, type: Integer
|
14
|
+
field :object_id_field, type: BSON::ObjectId
|
15
|
+
field :binary_field, type: BSON::Binary
|
16
|
+
field :range_field, type: Range
|
17
|
+
field :regexp_field, type: Regexp
|
18
|
+
field :set_field, type: Set
|
19
|
+
field :string_field, type: String
|
20
|
+
field :stringified_symbol_field, type: StringifiedSymbol
|
21
|
+
field :symbol_field, type: Symbol
|
22
|
+
field :time_field, type: Time
|
23
|
+
field :time_with_zone_field, type: ActiveSupport::TimeWithZone
|
24
|
+
end
|
@@ -12,7 +12,16 @@ class Implant
|
|
12
12
|
doc.name = "Cochlear Implant (#{player.frags})"
|
13
13
|
end
|
14
14
|
|
15
|
+
field :after_find_player
|
16
|
+
field :after_initialize_player
|
17
|
+
field :after_default_player, default: ->{ self.player&._id }
|
18
|
+
|
15
19
|
after_find do |doc|
|
16
20
|
doc.impressions += 1
|
21
|
+
doc.after_find_player = player&._id
|
22
|
+
end
|
23
|
+
|
24
|
+
after_initialize do |doc|
|
25
|
+
doc.after_initialize_player = player&._id
|
17
26
|
end
|
18
27
|
end
|
@@ -6,6 +6,8 @@ class Label
|
|
6
6
|
|
7
7
|
field :name, type: String
|
8
8
|
field :sales, type: BigDecimal
|
9
|
+
field :age, type: Integer
|
10
|
+
|
9
11
|
field :after_create_called, type: Mongoid::Boolean, default: false
|
10
12
|
field :after_save_called, type: Mongoid::Boolean, default: false
|
11
13
|
field :after_update_called, type: Mongoid::Boolean, default: false
|
@@ -10,4 +10,13 @@ class Passport
|
|
10
10
|
field :localized_translations, localize: true
|
11
11
|
|
12
12
|
embedded_in :person, autobuild: true
|
13
|
+
|
14
|
+
embeds_many :passport_pages
|
15
|
+
end
|
16
|
+
|
17
|
+
class PassportPage
|
18
|
+
include Mongoid::Document
|
19
|
+
|
20
|
+
field :num_stamps, type: Integer
|
21
|
+
embedded_in :passport
|
13
22
|
end
|