mongoid 7.5.4 → 8.1.7
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
- data/CHANGELOG.md +3 -3
- data/README.md +6 -6
- data/Rakefile +44 -46
- data/lib/config/locales/en.yml +92 -43
- data/lib/mongoid/association/accessors.rb +44 -11
- data/lib/mongoid/association/bindable.rb +50 -2
- data/lib/mongoid/association/builders.rb +5 -3
- data/lib/mongoid/association/constrainable.rb +0 -1
- data/lib/mongoid/association/eager_loadable.rb +29 -7
- data/lib/mongoid/association/embedded/batchable.rb +34 -11
- 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/buildable.rb +2 -2
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +4 -3
- 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 +4 -3
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +85 -46
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -2
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +19 -5
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +24 -5
- data/lib/mongoid/association/embedded/embeds_one.rb +3 -3
- data/lib/mongoid/association/macros.rb +8 -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 +45 -7
- data/lib/mongoid/association/one.rb +2 -2
- data/lib/mongoid/association/options.rb +9 -9
- data/lib/mongoid/association/proxy.rb +15 -4
- 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 +70 -13
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +22 -30
- data/lib/mongoid/association/referenced/has_many/proxy.rb +40 -21
- 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 +4 -4
- 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.rb +16 -7
- data/lib/mongoid/attributes/dynamic.rb +4 -4
- data/lib/mongoid/attributes/nested.rb +6 -6
- data/lib/mongoid/attributes/processing.rb +37 -6
- data/lib/mongoid/attributes/projector.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +3 -3
- data/lib/mongoid/attributes.rb +51 -42
- data/lib/mongoid/changeable.rb +147 -14
- data/lib/mongoid/clients/options.rb +5 -1
- data/lib/mongoid/clients/sessions.rb +2 -14
- data/lib/mongoid/clients/storage_options.rb +2 -5
- data/lib/mongoid/clients/validators/storage.rb +3 -15
- data/lib/mongoid/collection_configurable.rb +58 -0
- data/lib/mongoid/composable.rb +2 -0
- data/lib/mongoid/config/defaults.rb +60 -0
- data/lib/mongoid/config/options.rb +3 -0
- data/lib/mongoid/config/validators/async_query_executor.rb +24 -0
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config/validators.rb +1 -0
- data/lib/mongoid/config.rb +153 -18
- 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 +285 -58
- data/lib/mongoid/contextual/mongo/documents_loader.rb +177 -0
- data/lib/mongoid/contextual/mongo.rb +540 -346
- data/lib/mongoid/contextual/none.rb +193 -20
- data/lib/mongoid/contextual/queryable.rb +1 -1
- data/lib/mongoid/contextual.rb +14 -2
- data/lib/mongoid/copyable.rb +32 -8
- data/lib/mongoid/criteria/findable.rb +8 -5
- data/lib/mongoid/criteria/includable.rb +27 -22
- 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 +3 -16
- 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 +1 -17
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +15 -9
- 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 +4 -14
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +4 -12
- 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 +4 -4
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -1
- data/lib/mongoid/criteria/queryable/optional.rb +11 -17
- 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 +47 -38
- 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/translator.rb +45 -0
- data/lib/mongoid/criteria.rb +20 -40
- data/lib/mongoid/deprecable.rb +37 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +127 -35
- data/lib/mongoid/equality.rb +8 -8
- data/lib/mongoid/errors/create_collection_failure.rb +33 -0
- data/lib/mongoid/errors/document_not_found.rb +10 -6
- data/lib/mongoid/errors/drop_collection_failure.rb +27 -0
- data/lib/mongoid/errors/immutable_attribute.rb +26 -0
- data/lib/mongoid/errors/invalid_async_query_executor.rb +25 -0
- 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_global_executor_concurrency.rb +22 -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/invalid_storage_parent.rb +2 -0
- 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 +6 -3
- data/lib/mongoid/extensions/array.rb +9 -7
- data/lib/mongoid/extensions/big_decimal.rb +33 -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 +7 -4
- data/lib/mongoid/extensions/hash.rb +38 -9
- data/lib/mongoid/extensions/integer.rb +7 -4
- data/lib/mongoid/extensions/module.rb +1 -1
- data/lib/mongoid/extensions/object.rb +10 -8
- 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 +29 -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 +55 -7
- data/lib/mongoid/fields/foreign_key.rb +11 -4
- data/lib/mongoid/fields/localized.rb +19 -4
- data/lib/mongoid/fields/standard.rb +17 -7
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +142 -28
- data/lib/mongoid/findable.rb +54 -24
- data/lib/mongoid/indexable/specification.rb +2 -2
- data/lib/mongoid/indexable/validators/options.rb +6 -2
- data/lib/mongoid/interceptable.rb +186 -16
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher/eq_impl.rb +1 -1
- data/lib/mongoid/matcher/type.rb +1 -1
- data/lib/mongoid/matcher.rb +48 -14
- data/lib/mongoid/persistable/creatable.rb +19 -9
- data/lib/mongoid/persistable/deletable.rb +2 -2
- data/lib/mongoid/persistable/destroyable.rb +1 -1
- data/lib/mongoid/persistable/savable.rb +14 -2
- data/lib/mongoid/persistable/unsettable.rb +2 -2
- data/lib/mongoid/persistable/updatable.rb +69 -12
- data/lib/mongoid/persistable/upsertable.rb +21 -2
- data/lib/mongoid/persistable.rb +6 -3
- data/lib/mongoid/persistence_context.rb +6 -4
- data/lib/mongoid/query_cache.rb +13 -261
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/railties/database.rake +7 -2
- data/lib/mongoid/reloadable.rb +10 -8
- data/lib/mongoid/scopable.rb +15 -13
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +17 -13
- data/lib/mongoid/stateful.rb +57 -10
- data/lib/mongoid/tasks/database.rake +12 -0
- data/lib/mongoid/tasks/database.rb +20 -2
- data/lib/mongoid/threaded/lifecycle.rb +5 -5
- data/lib/mongoid/threaded.rb +42 -12
- data/lib/mongoid/timestamps/created.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +2 -2
- data/lib/mongoid/touchable.rb +3 -4
- data/lib/mongoid/traversable.rb +10 -5
- data/lib/mongoid/utils.rb +22 -0
- data/lib/mongoid/validatable/associated.rb +98 -17
- data/lib/mongoid/validatable/localizable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +5 -7
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +9 -8
- data/lib/mongoid/validatable.rb +17 -6
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid/warnings.rb +19 -4
- data/lib/mongoid.rb +17 -3
- data/spec/config/mongoid.yml +16 -0
- data/spec/integration/app_spec.rb +24 -19
- 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 +61 -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 +132 -1
- data/spec/integration/callbacks_spec.rb +381 -4
- data/spec/integration/criteria/range_spec.rb +95 -1
- data/spec/integration/discriminator_key_spec.rb +118 -80
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +3 -32
- 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 +96 -9
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +290 -65
- data/spec/mongoid/association/embedded/embeds_many_models.rb +37 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +16 -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/proxy_spec.rb +15 -2
- 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 +19 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +4 -20
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +186 -229
- 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 +215 -177
- 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 +15 -1
- 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 +526 -33
- data/spec/mongoid/changeable_spec.rb +429 -37
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +149 -15
- data/spec/mongoid/collection_configurable_spec.rb +158 -0
- data/spec/mongoid/config/defaults_spec.rb +160 -0
- data/spec/mongoid/config_spec.rb +214 -31
- 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 +850 -88
- data/spec/mongoid/contextual/mongo/documents_loader_spec.rb +187 -0
- data/spec/mongoid/contextual/mongo_spec.rb +2256 -1005
- data/spec/mongoid/contextual/none_spec.rb +60 -21
- data/spec/mongoid/copyable_spec.rb +453 -11
- 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/string_spec.rb +4 -69
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +0 -59
- 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 +15 -484
- data/spec/mongoid/criteria/queryable/options_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +469 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +78 -86
- data/spec/mongoid/criteria/queryable/selector_spec.rb +15 -3
- data/spec/mongoid/criteria/translator_spec.rb +132 -0
- data/spec/mongoid/criteria_projection_spec.rb +1 -5
- data/spec/mongoid/criteria_spec.rb +469 -1205
- data/spec/mongoid/document_fields_spec.rb +173 -24
- data/spec/mongoid/document_spec.rb +32 -41
- 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/readonly_document_spec.rb +2 -2
- 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 +712 -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 +53 -74
- data/spec/mongoid/extensions/hash_spec.rb +33 -3
- data/spec/mongoid/extensions/integer_spec.rb +50 -64
- 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 +639 -106
- data/spec/mongoid/extensions/time_with_zone_spec.rb +24 -83
- data/spec/mongoid/factory_spec.rb +61 -1
- data/spec/mongoid/fields/localized_spec.rb +80 -37
- data/spec/mongoid/fields_spec.rb +503 -87
- data/spec/mongoid/findable_spec.rb +450 -58
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +55 -30
- data/spec/mongoid/interceptable_spec.rb +824 -22
- 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 +28 -8
- data/spec/mongoid/persistable/destroyable_spec.rb +28 -8
- data/spec/mongoid/persistable/incrementable_spec.rb +37 -0
- data/spec/mongoid/persistable/logical_spec.rb +37 -0
- data/spec/mongoid/persistable/poppable_spec.rb +36 -0
- data/spec/mongoid/persistable/pullable_spec.rb +72 -0
- data/spec/mongoid/persistable/pushable_spec.rb +72 -0
- data/spec/mongoid/persistable/renamable_spec.rb +36 -0
- data/spec/mongoid/persistable/savable_spec.rb +96 -0
- data/spec/mongoid/persistable/settable_spec.rb +37 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +36 -0
- data/spec/mongoid/persistable/updatable_spec.rb +20 -28
- data/spec/mongoid/persistable/upsertable_spec.rb +89 -1
- data/spec/mongoid/persistence_context_spec.rb +31 -57
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
- data/spec/mongoid/query_cache_spec.rb +56 -215
- data/spec/mongoid/reloadable_spec.rb +83 -6
- data/spec/mongoid/scopable_spec.rb +91 -1
- data/spec/mongoid/serializable_spec.rb +25 -39
- data/spec/mongoid/shardable_spec.rb +4 -4
- data/spec/mongoid/stateful_spec.rb +150 -8
- data/spec/mongoid/tasks/database_rake_spec.rb +74 -0
- data/spec/mongoid/tasks/database_spec.rb +127 -0
- data/spec/mongoid/timestamps_spec.rb +392 -4
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +390 -2
- data/spec/mongoid/touchable_spec_models.rb +14 -8
- data/spec/mongoid/traversable_spec.rb +13 -35
- data/spec/mongoid/validatable/associated_spec.rb +27 -34
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +58 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +34 -16
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/spec_helper.rb +5 -0
- data/spec/support/constraints.rb +24 -0
- data/spec/support/immutable_ids.rb +118 -0
- data/spec/support/macros.rb +78 -0
- data/spec/support/models/artist.rb +0 -1
- data/spec/support/models/augmentation.rb +12 -0
- data/spec/support/models/band.rb +5 -0
- data/spec/support/models/book.rb +1 -0
- data/spec/support/models/building.rb +2 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/circus.rb +3 -0
- data/spec/support/models/cover.rb +10 -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/lat_lng.rb +6 -0
- data/spec/support/models/name.rb +10 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +2 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/product.rb +1 -0
- data/spec/support/models/purse.rb +9 -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
- metadata +101 -96
- checksums.yaml.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/criteria/queryable/extensions/bignum_spec.rb +0 -60
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +0 -60
- data/spec/mongoid/errors/eager_load_spec.rb +0 -31
- data/spec/shared/LICENSE +0 -20
- data/spec/shared/bin/get-mongodb-download-url +0 -17
- data/spec/shared/bin/s3-copy +0 -45
- data/spec/shared/bin/s3-upload +0 -69
- data/spec/shared/lib/mrss/child_process_helper.rb +0 -80
- data/spec/shared/lib/mrss/cluster_config.rb +0 -231
- data/spec/shared/lib/mrss/constraints.rb +0 -378
- data/spec/shared/lib/mrss/docker_runner.rb +0 -291
- data/spec/shared/lib/mrss/eg_config_utils.rb +0 -51
- data/spec/shared/lib/mrss/event_subscriber.rb +0 -210
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -238
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
- data/spec/shared/lib/mrss/session_registry.rb +0 -69
- data/spec/shared/lib/mrss/session_registry_legacy.rb +0 -60
- data/spec/shared/lib/mrss/spec_organizer.rb +0 -179
- data/spec/shared/lib/mrss/utils.rb +0 -15
- data/spec/shared/share/Dockerfile.erb +0 -325
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/shared/shlib/config.sh +0 -27
- data/spec/shared/shlib/distro.sh +0 -74
- data/spec/shared/shlib/server.sh +0 -392
- data/spec/shared/shlib/set_env.sh +0 -169
- data.tar.gz.sig +0 -0
- metadata.gz.sig +0 -3
@@ -6,20 +6,12 @@ describe Mongoid::Extensions::Time do
|
|
6
6
|
|
7
7
|
describe ".demongoize" do
|
8
8
|
|
9
|
-
after(:all) do
|
10
|
-
Mongoid.use_utc = false
|
11
|
-
Mongoid.use_activesupport_time_zone = true
|
12
|
-
end
|
13
|
-
|
14
9
|
let!(:time) do
|
15
10
|
Time.local(2010, 11, 19)
|
16
11
|
end
|
17
12
|
|
18
13
|
context "when the time zone is not defined" do
|
19
|
-
|
20
|
-
before do
|
21
|
-
Mongoid.use_utc = false
|
22
|
-
end
|
14
|
+
config_override :use_utc, false
|
23
15
|
|
24
16
|
context "when the local time is not observing daylight saving" do
|
25
17
|
|
@@ -57,19 +49,21 @@ describe Mongoid::Extensions::Time do
|
|
57
49
|
end
|
58
50
|
|
59
51
|
context "when using the ActiveSupport time zone" do
|
52
|
+
config_override :use_activesupport_time_zone, true
|
53
|
+
time_zone_override "Stockholm"
|
60
54
|
|
61
|
-
|
62
|
-
Mongoid.use_activesupport_time_zone = true
|
63
|
-
Time.zone = "Stockholm"
|
64
|
-
end
|
55
|
+
context "when demongoizing a Time" do
|
65
56
|
|
66
|
-
|
67
|
-
|
68
|
-
|
57
|
+
it "returns an ActiveSupport::TimeWithZone" do
|
58
|
+
expect(Time.demongoize(time).class).to eq(ActiveSupport::TimeWithZone)
|
59
|
+
end
|
69
60
|
end
|
70
61
|
|
71
|
-
|
72
|
-
|
62
|
+
context "when demongoizing a Date" do
|
63
|
+
|
64
|
+
it "returns an ActiveSupport::TimeWithZone" do
|
65
|
+
expect(Time.demongoize(Date.today).class).to eq(ActiveSupport::TimeWithZone)
|
66
|
+
end
|
73
67
|
end
|
74
68
|
|
75
69
|
context "when the local time is not observing daylight saving" do
|
@@ -114,35 +108,20 @@ describe Mongoid::Extensions::Time do
|
|
114
108
|
end
|
115
109
|
|
116
110
|
context "when the time zone is defined as UTC" do
|
117
|
-
|
118
|
-
before do
|
119
|
-
Mongoid.use_utc = true
|
120
|
-
end
|
121
|
-
|
122
|
-
after do
|
123
|
-
Mongoid.use_utc = false
|
124
|
-
end
|
111
|
+
config_override :use_utc, true
|
125
112
|
|
126
113
|
it "returns utc" do
|
127
114
|
expect(Time.demongoize(time.dup.utc).utc_offset).to eq(0)
|
128
115
|
end
|
129
116
|
|
130
117
|
context "when using the ActiveSupport time zone" do
|
118
|
+
config_override :use_activesupport_time_zone, true
|
119
|
+
time_zone_override "Stockholm"
|
131
120
|
|
132
121
|
let(:time) do
|
133
122
|
Time.utc(2010, 11, 19, 0, 30)
|
134
123
|
end
|
135
124
|
|
136
|
-
before do
|
137
|
-
Mongoid.use_activesupport_time_zone = true
|
138
|
-
Time.zone = "Stockholm"
|
139
|
-
end
|
140
|
-
|
141
|
-
after do
|
142
|
-
Time.zone = nil
|
143
|
-
Mongoid.use_activesupport_time_zone = false
|
144
|
-
end
|
145
|
-
|
146
125
|
it "returns utc" do
|
147
126
|
expect(Time.demongoize(time)).to eq(
|
148
127
|
ActiveSupport::TimeZone['UTC'].local(2010, 11, 19, 0, 30)
|
@@ -163,6 +142,330 @@ describe Mongoid::Extensions::Time do
|
|
163
142
|
expect(Time.demongoize(nil)).to be_nil
|
164
143
|
end
|
165
144
|
end
|
145
|
+
|
146
|
+
context "when the value is uncastable" do
|
147
|
+
|
148
|
+
it "returns nil" do
|
149
|
+
expect(Time.demongoize("bogus")).to be_nil
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
context "when the value is a string" do
|
154
|
+
|
155
|
+
context "when use_utc is false" do
|
156
|
+
config_override :use_utc, false
|
157
|
+
|
158
|
+
context "when using active support's time zone" do
|
159
|
+
include_context 'using AS time zone'
|
160
|
+
|
161
|
+
context "when the string is a valid time with time zone" do
|
162
|
+
|
163
|
+
let(:string) do
|
164
|
+
# JST is +0900
|
165
|
+
"2010-11-19 00:24:49.123457 +1100"
|
166
|
+
end
|
167
|
+
|
168
|
+
let(:mongoized) do
|
169
|
+
Time.demongoize(string)
|
170
|
+
end
|
171
|
+
|
172
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
173
|
+
|
174
|
+
it "converts to the AS time zone" do
|
175
|
+
expect(mongoized.zone).to eq("JST")
|
176
|
+
end
|
177
|
+
|
178
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
179
|
+
it_behaves_like 'maintains precision when mongoized'
|
180
|
+
end
|
181
|
+
|
182
|
+
context "when the string is a valid time without time zone" do
|
183
|
+
|
184
|
+
let(:string) do
|
185
|
+
"2010-11-19 00:24:49.123457"
|
186
|
+
end
|
187
|
+
|
188
|
+
let(:mongoized) do
|
189
|
+
Time.demongoize(string)
|
190
|
+
end
|
191
|
+
|
192
|
+
let(:expected_time) { Time.parse("2010-11-18 15:24:49.123457 +0000").in_time_zone }
|
193
|
+
|
194
|
+
it "converts to the AS time zone" do
|
195
|
+
expect(mongoized.zone).to eq("JST")
|
196
|
+
end
|
197
|
+
|
198
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
199
|
+
it_behaves_like 'maintains precision when mongoized'
|
200
|
+
end
|
201
|
+
|
202
|
+
context "when the string is a valid time without time" do
|
203
|
+
|
204
|
+
let(:string) do
|
205
|
+
"2010-11-19"
|
206
|
+
end
|
207
|
+
|
208
|
+
let(:mongoized) do
|
209
|
+
Time.demongoize(string)
|
210
|
+
end
|
211
|
+
|
212
|
+
let(:expected_time) { Time.parse("2010-11-18 15:00:00 +0000").in_time_zone }
|
213
|
+
|
214
|
+
it "converts to the AS time zone" do
|
215
|
+
expect(mongoized.zone).to eq("JST")
|
216
|
+
end
|
217
|
+
|
218
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
219
|
+
end
|
220
|
+
|
221
|
+
context "when the string is an invalid time" do
|
222
|
+
|
223
|
+
let(:string) do
|
224
|
+
"bogus"
|
225
|
+
end
|
226
|
+
|
227
|
+
it "returns nil" do
|
228
|
+
expect(Time.demongoize(string)).to be_nil
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
context "when not using active support's time zone" do
|
234
|
+
include_context 'not using AS time zone'
|
235
|
+
|
236
|
+
context "when the string is a valid time with time zone" do
|
237
|
+
|
238
|
+
let(:string) do
|
239
|
+
"2010-11-19 00:24:49.123457 +1100"
|
240
|
+
end
|
241
|
+
|
242
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
243
|
+
|
244
|
+
let(:mongoized) do
|
245
|
+
Time.demongoize(string)
|
246
|
+
end
|
247
|
+
|
248
|
+
it_behaves_like 'mongoizes to Time'
|
249
|
+
it_behaves_like 'maintains precision when mongoized'
|
250
|
+
end
|
251
|
+
|
252
|
+
context "when the string is a valid time without time zone" do
|
253
|
+
|
254
|
+
let(:string) do
|
255
|
+
"2010-11-19 00:24:49.123457"
|
256
|
+
end
|
257
|
+
|
258
|
+
let(:utc_offset) do
|
259
|
+
Time.now.utc_offset
|
260
|
+
end
|
261
|
+
|
262
|
+
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000") - Time.parse(string).utc_offset }
|
263
|
+
|
264
|
+
let(:mongoized) do
|
265
|
+
Time.demongoize(string)
|
266
|
+
end
|
267
|
+
|
268
|
+
it 'test operates in multiple time zones' do
|
269
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
270
|
+
end
|
271
|
+
|
272
|
+
it_behaves_like 'mongoizes to Time'
|
273
|
+
it_behaves_like 'maintains precision when mongoized'
|
274
|
+
end
|
275
|
+
|
276
|
+
context "when the string is a valid time without time" do
|
277
|
+
|
278
|
+
let(:string) do
|
279
|
+
"2010-11-19"
|
280
|
+
end
|
281
|
+
|
282
|
+
let(:mongoized) do
|
283
|
+
Time.demongoize(string)
|
284
|
+
end
|
285
|
+
|
286
|
+
let(:utc_offset) do
|
287
|
+
Time.now.utc_offset
|
288
|
+
end
|
289
|
+
|
290
|
+
let(:expected_time) { Time.parse("2010-11-19 00:00:00 +0000") - Time.parse(string).utc_offset }
|
291
|
+
|
292
|
+
it 'test operates in multiple time zones' do
|
293
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
294
|
+
end
|
295
|
+
|
296
|
+
it_behaves_like 'mongoizes to Time'
|
297
|
+
end
|
298
|
+
|
299
|
+
context "when the string is an invalid time" do
|
300
|
+
|
301
|
+
let(:string) do
|
302
|
+
"bogus"
|
303
|
+
end
|
304
|
+
|
305
|
+
it "returns nil" do
|
306
|
+
expect(Time.demongoize(string)).to be_nil
|
307
|
+
end
|
308
|
+
end
|
309
|
+
end
|
310
|
+
end
|
311
|
+
|
312
|
+
context "when use_utc is true" do
|
313
|
+
config_override :use_utc, true
|
314
|
+
|
315
|
+
context "when using active support's time zone" do
|
316
|
+
include_context 'using AS time zone'
|
317
|
+
|
318
|
+
context "when the string is a valid time with time zone" do
|
319
|
+
|
320
|
+
let(:string) do
|
321
|
+
# JST is +0900
|
322
|
+
"2010-11-19 00:24:49.123457 +1100"
|
323
|
+
end
|
324
|
+
|
325
|
+
let(:mongoized) do
|
326
|
+
Time.demongoize(string)
|
327
|
+
end
|
328
|
+
|
329
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
330
|
+
|
331
|
+
it "converts to UTC" do
|
332
|
+
expect(mongoized.zone).to eq("UTC")
|
333
|
+
end
|
334
|
+
|
335
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
336
|
+
it_behaves_like 'maintains precision when mongoized'
|
337
|
+
end
|
338
|
+
|
339
|
+
context "when the string is a valid time without time zone" do
|
340
|
+
|
341
|
+
let(:string) do
|
342
|
+
"2010-11-19 00:24:49.123457"
|
343
|
+
end
|
344
|
+
|
345
|
+
let(:mongoized) do
|
346
|
+
Time.demongoize(string)
|
347
|
+
end
|
348
|
+
|
349
|
+
let(:expected_time) { Time.parse("2010-11-18 15:24:49.123457 +0000").in_time_zone }
|
350
|
+
|
351
|
+
it "converts to UTC" do
|
352
|
+
expect(mongoized.zone).to eq("UTC")
|
353
|
+
end
|
354
|
+
|
355
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
356
|
+
it_behaves_like 'maintains precision when mongoized'
|
357
|
+
end
|
358
|
+
|
359
|
+
context "when the string is a valid time without time" do
|
360
|
+
|
361
|
+
let(:string) do
|
362
|
+
"2010-11-19"
|
363
|
+
end
|
364
|
+
|
365
|
+
let(:mongoized) do
|
366
|
+
Time.demongoize(string)
|
367
|
+
end
|
368
|
+
|
369
|
+
let(:expected_time) { Time.parse("2010-11-18 15:00:00 +0000").in_time_zone }
|
370
|
+
|
371
|
+
it "converts to UTC" do
|
372
|
+
expect(mongoized.zone).to eq("UTC")
|
373
|
+
end
|
374
|
+
|
375
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
376
|
+
end
|
377
|
+
|
378
|
+
context "when the string is an invalid time" do
|
379
|
+
|
380
|
+
let(:string) do
|
381
|
+
"bogus"
|
382
|
+
end
|
383
|
+
|
384
|
+
it "returns nil" do
|
385
|
+
expect(Time.demongoize(string)).to be_nil
|
386
|
+
end
|
387
|
+
end
|
388
|
+
end
|
389
|
+
|
390
|
+
context "when not using active support's time zone" do
|
391
|
+
include_context 'not using AS time zone'
|
392
|
+
|
393
|
+
context "when the string is a valid time with time zone" do
|
394
|
+
|
395
|
+
let(:string) do
|
396
|
+
"2010-11-19 00:24:49.123457 +1100"
|
397
|
+
end
|
398
|
+
|
399
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
400
|
+
|
401
|
+
let(:mongoized) do
|
402
|
+
Time.demongoize(string)
|
403
|
+
end
|
404
|
+
|
405
|
+
it_behaves_like 'mongoizes to Time'
|
406
|
+
it_behaves_like 'maintains precision when mongoized'
|
407
|
+
end
|
408
|
+
|
409
|
+
context "when the string is a valid time without time zone" do
|
410
|
+
|
411
|
+
let(:string) do
|
412
|
+
"2010-11-19 00:24:49.123457"
|
413
|
+
end
|
414
|
+
|
415
|
+
let(:utc_offset) do
|
416
|
+
Time.now.utc_offset
|
417
|
+
end
|
418
|
+
|
419
|
+
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000") - Time.parse(string).utc_offset }
|
420
|
+
|
421
|
+
let(:mongoized) do
|
422
|
+
Time.demongoize(string)
|
423
|
+
end
|
424
|
+
|
425
|
+
it 'test operates in multiple time zones' do
|
426
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
427
|
+
end
|
428
|
+
|
429
|
+
it_behaves_like 'mongoizes to Time'
|
430
|
+
it_behaves_like 'maintains precision when mongoized'
|
431
|
+
end
|
432
|
+
|
433
|
+
context "when the string is a valid time without time" do
|
434
|
+
|
435
|
+
let(:string) do
|
436
|
+
"2010-11-19"
|
437
|
+
end
|
438
|
+
|
439
|
+
let(:mongoized) do
|
440
|
+
Time.demongoize(string)
|
441
|
+
end
|
442
|
+
|
443
|
+
let(:utc_offset) do
|
444
|
+
Time.now.utc_offset
|
445
|
+
end
|
446
|
+
|
447
|
+
let(:expected_time) { Time.parse("2010-11-19 00:00:00 +0000") - Time.parse(string).utc_offset }
|
448
|
+
|
449
|
+
it 'test operates in multiple time zones' do
|
450
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
451
|
+
end
|
452
|
+
|
453
|
+
it_behaves_like 'mongoizes to Time'
|
454
|
+
end
|
455
|
+
|
456
|
+
context "when the string is an invalid time" do
|
457
|
+
|
458
|
+
let(:string) do
|
459
|
+
"bogus"
|
460
|
+
end
|
461
|
+
|
462
|
+
it "returns nil" do
|
463
|
+
expect(Time.demongoize(string)).to be_nil
|
464
|
+
end
|
465
|
+
end
|
466
|
+
end
|
467
|
+
end
|
468
|
+
end
|
166
469
|
end
|
167
470
|
|
168
471
|
describe ".mongoize" do
|
@@ -180,65 +483,319 @@ describe Mongoid::Extensions::Time do
|
|
180
483
|
|
181
484
|
context "when string is empty" do
|
182
485
|
|
486
|
+
let(:mongoized) do
|
487
|
+
Time.mongoize("")
|
488
|
+
end
|
489
|
+
|
183
490
|
it "returns nil" do
|
184
|
-
expect(
|
491
|
+
expect(mongoized).to be_nil
|
185
492
|
end
|
186
493
|
end
|
187
494
|
|
188
|
-
context "when
|
495
|
+
context "when the value is a string" do
|
189
496
|
|
190
|
-
context "when
|
497
|
+
context "when use_utc is false" do
|
498
|
+
config_override :use_utc, false
|
191
499
|
|
192
|
-
|
193
|
-
|
194
|
-
end
|
500
|
+
context "when using active support's time zone" do
|
501
|
+
include_context 'using AS time zone'
|
195
502
|
|
196
|
-
|
197
|
-
expect(Time.mongoize(time.to_s)).to eq(Time.parse(time.to_s).utc)
|
198
|
-
end
|
503
|
+
context "when the string is a valid time with time zone" do
|
199
504
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
505
|
+
let(:string) do
|
506
|
+
# JST is +0900
|
507
|
+
"2010-11-19 00:24:49.123457 +1100"
|
508
|
+
end
|
509
|
+
|
510
|
+
let(:mongoized) do
|
511
|
+
Time.mongoize(string)
|
512
|
+
end
|
513
|
+
|
514
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
515
|
+
|
516
|
+
it "converts to UTC" do
|
517
|
+
expect(mongoized.zone).to eq("UTC")
|
518
|
+
end
|
519
|
+
|
520
|
+
it_behaves_like 'maintains precision when mongoized'
|
521
|
+
end
|
522
|
+
|
523
|
+
context "when the string is a valid time without time zone" do
|
524
|
+
|
525
|
+
let(:string) do
|
526
|
+
"2010-11-19 00:24:49.123457"
|
527
|
+
end
|
528
|
+
|
529
|
+
let(:mongoized) do
|
530
|
+
Time.mongoize(string)
|
531
|
+
end
|
532
|
+
|
533
|
+
let(:expected_time) { Time.parse("2010-11-18 15:24:49.123457 +0000").in_time_zone }
|
534
|
+
|
535
|
+
it "converts to UTC" do
|
536
|
+
expect(mongoized.zone).to eq("UTC")
|
537
|
+
end
|
538
|
+
|
539
|
+
it_behaves_like 'maintains precision when mongoized'
|
540
|
+
end
|
541
|
+
|
542
|
+
context "when the string is a valid time without time" do
|
543
|
+
|
544
|
+
let(:string) do
|
545
|
+
"2010-11-19"
|
546
|
+
end
|
547
|
+
|
548
|
+
let(:mongoized) do
|
549
|
+
Time.mongoize(string)
|
550
|
+
end
|
551
|
+
|
552
|
+
let(:expected_time) { Time.parse("2010-11-18 15:00:00 +0000").in_time_zone }
|
553
|
+
|
554
|
+
it "converts to UTC" do
|
555
|
+
expect(mongoized.zone).to eq("UTC")
|
556
|
+
end
|
557
|
+
end
|
558
|
+
|
559
|
+
context "when the string is an invalid time" do
|
560
|
+
|
561
|
+
let(:string) do
|
562
|
+
"bogus"
|
563
|
+
end
|
564
|
+
|
565
|
+
it "returns nil" do
|
566
|
+
expect(Time.mongoize(string)).to be_nil
|
567
|
+
end
|
568
|
+
end
|
204
569
|
end
|
205
|
-
end
|
206
570
|
|
207
|
-
|
571
|
+
context "when not using active support's time zone" do
|
572
|
+
include_context 'not using AS time zone'
|
573
|
+
|
574
|
+
context "when the string is a valid time with time zone" do
|
575
|
+
|
576
|
+
let(:string) do
|
577
|
+
"2010-11-19 00:24:49.123457 +1100"
|
578
|
+
end
|
579
|
+
|
580
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
581
|
+
|
582
|
+
let(:mongoized) do
|
583
|
+
Time.mongoize(string)
|
584
|
+
end
|
585
|
+
|
586
|
+
it_behaves_like 'mongoizes to Time'
|
587
|
+
it_behaves_like 'maintains precision when mongoized'
|
588
|
+
end
|
589
|
+
|
590
|
+
context "when the string is a valid time without time zone" do
|
591
|
+
|
592
|
+
let(:string) do
|
593
|
+
"2010-11-19 00:24:49.123457"
|
594
|
+
end
|
595
|
+
|
596
|
+
let(:utc_offset) do
|
597
|
+
Time.now.utc_offset
|
598
|
+
end
|
599
|
+
|
600
|
+
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000") - Time.parse(string).utc_offset }
|
208
601
|
|
209
|
-
|
210
|
-
|
602
|
+
let(:mongoized) do
|
603
|
+
Time.mongoize(string)
|
604
|
+
end
|
605
|
+
|
606
|
+
it 'test operates in multiple time zones' do
|
607
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
608
|
+
end
|
609
|
+
|
610
|
+
it_behaves_like 'mongoizes to Time'
|
611
|
+
it_behaves_like 'maintains precision when mongoized'
|
612
|
+
end
|
613
|
+
|
614
|
+
context "when the string is a valid time without time" do
|
615
|
+
|
616
|
+
let(:string) do
|
617
|
+
"2010-11-19"
|
618
|
+
end
|
619
|
+
|
620
|
+
let(:mongoized) do
|
621
|
+
Time.mongoize(string)
|
622
|
+
end
|
623
|
+
|
624
|
+
let(:utc_offset) do
|
625
|
+
Time.now.utc_offset
|
626
|
+
end
|
627
|
+
|
628
|
+
let(:expected_time) { Time.parse("2010-11-19 00:00:00 +0000") - Time.parse(string).utc_offset }
|
629
|
+
|
630
|
+
it 'test operates in multiple time zones' do
|
631
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
632
|
+
end
|
633
|
+
|
634
|
+
it_behaves_like 'mongoizes to Time'
|
635
|
+
end
|
636
|
+
|
637
|
+
context "when the string is an invalid time" do
|
638
|
+
|
639
|
+
let(:string) do
|
640
|
+
"bogus"
|
641
|
+
end
|
642
|
+
|
643
|
+
it "returns nil" do
|
644
|
+
expect(Time.mongoize(string)).to be_nil
|
645
|
+
end
|
646
|
+
end
|
211
647
|
end
|
212
648
|
end
|
213
649
|
|
214
|
-
context "when
|
650
|
+
context "when use_utc is true" do
|
651
|
+
config_override :use_utc, true
|
215
652
|
|
216
|
-
|
217
|
-
|
218
|
-
# if this is actually your time zone, the following tests are useless
|
219
|
-
Time.zone = "Stockholm"
|
220
|
-
end
|
653
|
+
context "when using active support's time zone" do
|
654
|
+
include_context 'using AS time zone'
|
221
655
|
|
222
|
-
|
223
|
-
Time.zone = nil
|
224
|
-
Mongoid.use_activesupport_time_zone = false
|
225
|
-
end
|
656
|
+
context "when the string is a valid time with time zone" do
|
226
657
|
|
227
|
-
|
658
|
+
let(:string) do
|
659
|
+
# JST is +0900
|
660
|
+
"2010-11-19 00:24:49.123457 +1100"
|
661
|
+
end
|
228
662
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
663
|
+
let(:mongoized) do
|
664
|
+
Time.mongoize(string)
|
665
|
+
end
|
666
|
+
|
667
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
668
|
+
|
669
|
+
it "converts to UTC" do
|
670
|
+
expect(mongoized.zone).to eq("UTC")
|
671
|
+
end
|
672
|
+
|
673
|
+
it_behaves_like 'maintains precision when mongoized'
|
674
|
+
end
|
675
|
+
|
676
|
+
context "when the string is a valid time without time zone" do
|
677
|
+
|
678
|
+
let(:string) do
|
679
|
+
"2010-11-19 00:24:49.123457"
|
680
|
+
end
|
681
|
+
|
682
|
+
let(:mongoized) do
|
683
|
+
Time.mongoize(string)
|
684
|
+
end
|
685
|
+
|
686
|
+
let(:expected_time) { Time.parse("2010-11-18 15:24:49.123457 +0000").in_time_zone }
|
687
|
+
|
688
|
+
it "converts to UTC" do
|
689
|
+
expect(mongoized.zone).to eq("UTC")
|
690
|
+
end
|
691
|
+
|
692
|
+
it_behaves_like 'maintains precision when mongoized'
|
693
|
+
end
|
694
|
+
|
695
|
+
context "when the string is a valid time without time" do
|
696
|
+
|
697
|
+
let(:string) do
|
698
|
+
"2010-11-19"
|
699
|
+
end
|
700
|
+
|
701
|
+
let(:mongoized) do
|
702
|
+
Time.mongoize(string)
|
703
|
+
end
|
704
|
+
|
705
|
+
let(:expected_time) { Time.parse("2010-11-18 15:00:00 +0000").in_time_zone }
|
706
|
+
|
707
|
+
it "converts to UTC" do
|
708
|
+
expect(mongoized.zone).to eq("UTC")
|
709
|
+
end
|
710
|
+
end
|
711
|
+
|
712
|
+
context "when the string is an invalid time" do
|
713
|
+
|
714
|
+
let(:string) do
|
715
|
+
"bogus"
|
716
|
+
end
|
717
|
+
|
718
|
+
it "returns nil" do
|
719
|
+
expect(Time.mongoize(string)).to be_nil
|
720
|
+
end
|
233
721
|
end
|
234
722
|
end
|
235
723
|
|
236
|
-
context "when
|
724
|
+
context "when not using active support's time zone" do
|
725
|
+
include_context 'not using AS time zone'
|
237
726
|
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
727
|
+
context "when the string is a valid time with time zone" do
|
728
|
+
|
729
|
+
let(:string) do
|
730
|
+
"2010-11-19 00:24:49.123457 +1100"
|
731
|
+
end
|
732
|
+
|
733
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
734
|
+
|
735
|
+
let(:mongoized) do
|
736
|
+
Time.mongoize(string)
|
737
|
+
end
|
738
|
+
|
739
|
+
it_behaves_like 'mongoizes to Time'
|
740
|
+
it_behaves_like 'maintains precision when mongoized'
|
741
|
+
end
|
742
|
+
|
743
|
+
context "when the string is a valid time without time zone" do
|
744
|
+
|
745
|
+
let(:string) do
|
746
|
+
"2010-11-19 00:24:49.123457"
|
747
|
+
end
|
748
|
+
|
749
|
+
let(:utc_offset) do
|
750
|
+
Time.now.utc_offset
|
751
|
+
end
|
752
|
+
|
753
|
+
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000") - Time.parse(string).utc_offset }
|
754
|
+
|
755
|
+
let(:mongoized) do
|
756
|
+
Time.mongoize(string)
|
757
|
+
end
|
758
|
+
|
759
|
+
it 'test operates in multiple time zones' do
|
760
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
761
|
+
end
|
762
|
+
|
763
|
+
it_behaves_like 'mongoizes to Time'
|
764
|
+
it_behaves_like 'maintains precision when mongoized'
|
765
|
+
end
|
766
|
+
|
767
|
+
context "when the string is a valid time without time" do
|
768
|
+
|
769
|
+
let(:string) do
|
770
|
+
"2010-11-19"
|
771
|
+
end
|
772
|
+
|
773
|
+
let(:mongoized) do
|
774
|
+
Time.mongoize(string)
|
775
|
+
end
|
776
|
+
|
777
|
+
let(:utc_offset) do
|
778
|
+
Time.now.utc_offset
|
779
|
+
end
|
780
|
+
|
781
|
+
let(:expected_time) { Time.parse("2010-11-19 00:00:00 +0000") - Time.parse(string).utc_offset }
|
782
|
+
|
783
|
+
it 'test operates in multiple time zones' do
|
784
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
785
|
+
end
|
786
|
+
|
787
|
+
it_behaves_like 'mongoizes to Time'
|
788
|
+
end
|
789
|
+
|
790
|
+
context "when the string is an invalid time" do
|
791
|
+
|
792
|
+
let(:string) do
|
793
|
+
"bogus"
|
794
|
+
end
|
795
|
+
|
796
|
+
it "returns nil" do
|
797
|
+
expect(Time.mongoize(string)).to be_nil
|
798
|
+
end
|
242
799
|
end
|
243
800
|
end
|
244
801
|
end
|
@@ -283,22 +840,14 @@ describe Mongoid::Extensions::Time do
|
|
283
840
|
end
|
284
841
|
|
285
842
|
context "when using the ActiveSupport time zone" do
|
843
|
+
config_override :use_activesupport_time_zone, true
|
844
|
+
# if this is actually your time zone, the following tests are useless
|
845
|
+
time_zone_override "Stockholm"
|
286
846
|
|
287
847
|
let(:datetime) do
|
288
848
|
DateTime.new(2010, 11, 19)
|
289
849
|
end
|
290
850
|
|
291
|
-
before do
|
292
|
-
Mongoid.use_activesupport_time_zone = true
|
293
|
-
# if this is actually your time zone, the following tests are useless
|
294
|
-
Time.zone = "Stockholm"
|
295
|
-
end
|
296
|
-
|
297
|
-
after do
|
298
|
-
Time.zone = nil
|
299
|
-
Mongoid.use_activesupport_time_zone = false
|
300
|
-
end
|
301
|
-
|
302
851
|
it "assumes the given time is local" do
|
303
852
|
expect(Time.mongoize(datetime)).to eq(
|
304
853
|
Time.utc(2010, 11, 19)
|
@@ -374,22 +923,14 @@ describe Mongoid::Extensions::Time do
|
|
374
923
|
end
|
375
924
|
|
376
925
|
context "when using the ActiveSupport time zone" do
|
926
|
+
config_override :use_activesupport_time_zone, true
|
927
|
+
# if this is actually your time zone, the following tests are useless
|
928
|
+
time_zone_override "Stockholm"
|
377
929
|
|
378
930
|
let(:date) do
|
379
931
|
Date.new(2010, 11, 19)
|
380
932
|
end
|
381
933
|
|
382
|
-
before do
|
383
|
-
Mongoid.use_activesupport_time_zone = true
|
384
|
-
# if this is actually your time zone, the following tests are useless
|
385
|
-
Time.zone = "Stockholm"
|
386
|
-
end
|
387
|
-
|
388
|
-
after do
|
389
|
-
Time.zone = nil
|
390
|
-
Mongoid.use_activesupport_time_zone = false
|
391
|
-
end
|
392
|
-
|
393
934
|
it "assumes the given time is local" do
|
394
935
|
expect(Time.mongoize(date)).to eq(Time.utc(2010, 11, 18, 23))
|
395
936
|
end
|
@@ -407,17 +948,9 @@ describe Mongoid::Extensions::Time do
|
|
407
948
|
end
|
408
949
|
|
409
950
|
context "when using the ActiveSupport time zone" do
|
410
|
-
|
411
|
-
|
412
|
-
|
413
|
-
# if this is actually your time zone, the following tests are useless
|
414
|
-
Time.zone = "Stockholm"
|
415
|
-
end
|
416
|
-
|
417
|
-
after do
|
418
|
-
Time.zone = nil
|
419
|
-
Mongoid.use_activesupport_time_zone = false
|
420
|
-
end
|
951
|
+
config_override :use_activesupport_time_zone, true
|
952
|
+
# if this is actually your time zone, the following tests are useless
|
953
|
+
time_zone_override "Stockholm"
|
421
954
|
|
422
955
|
it "assumes the given time is local" do
|
423
956
|
expect(Time.mongoize(array)).to eq(
|