mongoid 7.4.3 → 8.0.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
- checksums.yaml.gz.sig +0 -0
- data/README.md +3 -3
- data/Rakefile +25 -0
- data/lib/config/locales/en.yml +52 -28
- 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 +33 -10
- 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 +65 -41
- 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 +28 -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 +70 -13
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +6 -3
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +20 -24
- data/lib/mongoid/association/referenced/has_many/proxy.rb +26 -16
- 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.rb +7 -0
- data/lib/mongoid/attributes/dynamic.rb +3 -3
- data/lib/mongoid/attributes/nested.rb +5 -5
- data/lib/mongoid/attributes/processing.rb +37 -6
- 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/cacheable.rb +2 -2
- data/lib/mongoid/changeable.rb +43 -10
- 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/options.rb +3 -0
- data/lib/mongoid/config/validators/client.rb +6 -6
- data/lib/mongoid/config.rb +62 -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 +180 -21
- data/lib/mongoid/contextual/mongo.rb +260 -217
- data/lib/mongoid/contextual/none.rb +67 -5
- 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 +3 -14
- 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 -15
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -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 +3 -3
- data/lib/mongoid/criteria/queryable/mergeable.rb +21 -0
- 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 +31 -37
- data/lib/mongoid/criteria/queryable/selector.rb +93 -8
- data/lib/mongoid/criteria/queryable/smash.rb +40 -7
- data/lib/mongoid/criteria/queryable/storable.rb +1 -1
- 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 +16 -35
- data/lib/mongoid/deprecable.rb +37 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +135 -34
- data/lib/mongoid/equality.rb +8 -8
- data/lib/mongoid/errors/document_not_found.rb +33 -12
- 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 +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 +37 -8
- data/lib/mongoid/extensions/integer.rb +7 -4
- 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 +55 -7
- data/lib/mongoid/fields/foreign_key.rb +11 -4
- data/lib/mongoid/fields/localized.rb +9 -4
- data/lib/mongoid/fields/standard.rb +7 -7
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +233 -40
- data/lib/mongoid/findable.rb +34 -13
- data/lib/mongoid/indexable/specification.rb +2 -2
- data/lib/mongoid/indexable/validators/options.rb +6 -2
- data/lib/mongoid/interceptable.rb +185 -16
- data/lib/mongoid/matchable.rb +1 -1
- data/lib/mongoid/matcher.rb +33 -13
- 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 +63 -10
- data/lib/mongoid/query_cache.rb +8 -260
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/reloadable.rb +10 -8
- data/lib/mongoid/scopable.rb +26 -22
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/serializable.rb +10 -6
- data/lib/mongoid/shardable.rb +35 -11
- 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 +42 -12
- 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 +5 -4
- 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 +28 -0
- data/lib/mongoid.rb +2 -0
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +4 -3
- 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 +246 -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 -17
- 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 +235 -40
- data/spec/mongoid/association/embedded/embeds_many_models.rb +36 -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 +202 -201
- 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 +8 -8
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +160 -119
- 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 +551 -27
- data/spec/mongoid/cacheable_spec.rb +3 -3
- data/spec/mongoid/changeable_spec.rb +130 -13
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- data/spec/mongoid/clients/options_spec.rb +1 -0
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +57 -2
- data/spec/mongoid/config_spec.rb +78 -18
- 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 +1336 -69
- data/spec/mongoid/contextual/mongo_spec.rb +1253 -247
- data/spec/mongoid/contextual/none_spec.rb +38 -0
- 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/string_spec.rb +0 -59
- 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/selectable_logical_spec.rb +50 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +289 -124
- data/spec/mongoid/criteria/queryable/selector_spec.rb +89 -4
- data/spec/mongoid/criteria/queryable/storable_spec.rb +72 -0
- data/spec/mongoid/criteria/translator_spec.rb +132 -0
- data/spec/mongoid/criteria_projection_spec.rb +0 -1
- data/spec/mongoid/criteria_spec.rb +475 -1199
- 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 +76 -0
- 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 +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 +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/localized_spec.rb +37 -12
- data/spec/mongoid/fields_spec.rb +364 -50
- data/spec/mongoid/findable_spec.rb +80 -15
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +39 -20
- data/spec/mongoid/interceptable_spec.rb +807 -27
- 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 +59 -2
- data/spec/mongoid/scopable_spec.rb +54 -16
- data/spec/mongoid/shardable_models.rb +14 -0
- data/spec/mongoid/shardable_spec.rb +157 -51
- 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 +59 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +1 -1
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/docker_runner.rb +7 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +10 -2
- data/spec/shared/lib/mrss/server_version_registry.rb +16 -23
- data/spec/shared/lib/mrss/utils.rb +28 -6
- data/spec/shared/share/Dockerfile.erb +36 -40
- data/spec/shared/shlib/server.sh +32 -8
- data/spec/shared/shlib/set_env.sh +4 -4
- data/spec/support/constraints.rb +24 -0
- data/spec/support/macros.rb +46 -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/code.rb +2 -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 +2 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -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
- data.tar.gz.sig +4 -1
- metadata +682 -635
- 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
@@ -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,28 @@ 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
|
60
53
|
|
61
54
|
before do
|
62
|
-
Mongoid.use_activesupport_time_zone = true
|
63
55
|
Time.zone = "Stockholm"
|
64
56
|
end
|
65
57
|
|
66
58
|
after do
|
67
59
|
Time.zone = nil
|
68
|
-
Mongoid.use_activesupport_time_zone = false
|
69
60
|
end
|
70
61
|
|
71
|
-
|
72
|
-
|
62
|
+
context "when demongoizing a Time" do
|
63
|
+
|
64
|
+
it "returns an ActiveSupport::TimeWithZone" do
|
65
|
+
expect(Time.demongoize(time).class).to eq(ActiveSupport::TimeWithZone)
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when demongoizing a Date" do
|
70
|
+
|
71
|
+
it "returns an ActiveSupport::TimeWithZone" do
|
72
|
+
expect(Time.demongoize(Date.today).class).to eq(ActiveSupport::TimeWithZone)
|
73
|
+
end
|
73
74
|
end
|
74
75
|
|
75
76
|
context "when the local time is not observing daylight saving" do
|
@@ -114,33 +115,25 @@ describe Mongoid::Extensions::Time do
|
|
114
115
|
end
|
115
116
|
|
116
117
|
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
|
118
|
+
config_override :use_utc, true
|
125
119
|
|
126
120
|
it "returns utc" do
|
127
121
|
expect(Time.demongoize(time.dup.utc).utc_offset).to eq(0)
|
128
122
|
end
|
129
123
|
|
130
124
|
context "when using the ActiveSupport time zone" do
|
125
|
+
config_override :use_activesupport_time_zone, true
|
131
126
|
|
132
127
|
let(:time) do
|
133
128
|
Time.utc(2010, 11, 19, 0, 30)
|
134
129
|
end
|
135
130
|
|
136
131
|
before do
|
137
|
-
Mongoid.use_activesupport_time_zone = true
|
138
132
|
Time.zone = "Stockholm"
|
139
133
|
end
|
140
134
|
|
141
135
|
after do
|
142
136
|
Time.zone = nil
|
143
|
-
Mongoid.use_activesupport_time_zone = false
|
144
137
|
end
|
145
138
|
|
146
139
|
it "returns utc" do
|
@@ -163,6 +156,330 @@ describe Mongoid::Extensions::Time do
|
|
163
156
|
expect(Time.demongoize(nil)).to be_nil
|
164
157
|
end
|
165
158
|
end
|
159
|
+
|
160
|
+
context "when the value is uncastable" do
|
161
|
+
|
162
|
+
it "returns nil" do
|
163
|
+
expect(Time.demongoize("bogus")).to be_nil
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
context "when the value is a string" do
|
168
|
+
|
169
|
+
context "when use_utc is false" do
|
170
|
+
config_override :use_utc, false
|
171
|
+
|
172
|
+
context "when using active support's time zone" do
|
173
|
+
include_context 'using AS time zone'
|
174
|
+
|
175
|
+
context "when the string is a valid time with time zone" do
|
176
|
+
|
177
|
+
let(:string) do
|
178
|
+
# JST is +0900
|
179
|
+
"2010-11-19 00:24:49.123457 +1100"
|
180
|
+
end
|
181
|
+
|
182
|
+
let(:mongoized) do
|
183
|
+
Time.demongoize(string)
|
184
|
+
end
|
185
|
+
|
186
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
187
|
+
|
188
|
+
it "converts to the AS time zone" do
|
189
|
+
expect(mongoized.zone).to eq("JST")
|
190
|
+
end
|
191
|
+
|
192
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
193
|
+
it_behaves_like 'maintains precision when mongoized'
|
194
|
+
end
|
195
|
+
|
196
|
+
context "when the string is a valid time without time zone" do
|
197
|
+
|
198
|
+
let(:string) do
|
199
|
+
"2010-11-19 00:24:49.123457"
|
200
|
+
end
|
201
|
+
|
202
|
+
let(:mongoized) do
|
203
|
+
Time.demongoize(string)
|
204
|
+
end
|
205
|
+
|
206
|
+
let(:expected_time) { Time.parse("2010-11-18 15:24:49.123457 +0000").in_time_zone }
|
207
|
+
|
208
|
+
it "converts to the AS time zone" do
|
209
|
+
expect(mongoized.zone).to eq("JST")
|
210
|
+
end
|
211
|
+
|
212
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
213
|
+
it_behaves_like 'maintains precision when mongoized'
|
214
|
+
end
|
215
|
+
|
216
|
+
context "when the string is a valid time without time" do
|
217
|
+
|
218
|
+
let(:string) do
|
219
|
+
"2010-11-19"
|
220
|
+
end
|
221
|
+
|
222
|
+
let(:mongoized) do
|
223
|
+
Time.demongoize(string)
|
224
|
+
end
|
225
|
+
|
226
|
+
let(:expected_time) { Time.parse("2010-11-18 15:00:00 +0000").in_time_zone }
|
227
|
+
|
228
|
+
it "converts to the AS time zone" do
|
229
|
+
expect(mongoized.zone).to eq("JST")
|
230
|
+
end
|
231
|
+
|
232
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
233
|
+
end
|
234
|
+
|
235
|
+
context "when the string is an invalid time" do
|
236
|
+
|
237
|
+
let(:string) do
|
238
|
+
"bogus"
|
239
|
+
end
|
240
|
+
|
241
|
+
it "returns nil" do
|
242
|
+
expect(Time.demongoize(string)).to be_nil
|
243
|
+
end
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
context "when not using active support's time zone" do
|
248
|
+
include_context 'not using AS time zone'
|
249
|
+
|
250
|
+
context "when the string is a valid time with time zone" do
|
251
|
+
|
252
|
+
let(:string) do
|
253
|
+
"2010-11-19 00:24:49.123457 +1100"
|
254
|
+
end
|
255
|
+
|
256
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
257
|
+
|
258
|
+
let(:mongoized) do
|
259
|
+
Time.demongoize(string)
|
260
|
+
end
|
261
|
+
|
262
|
+
it_behaves_like 'mongoizes to Time'
|
263
|
+
it_behaves_like 'maintains precision when mongoized'
|
264
|
+
end
|
265
|
+
|
266
|
+
context "when the string is a valid time without time zone" do
|
267
|
+
|
268
|
+
let(:string) do
|
269
|
+
"2010-11-19 00:24:49.123457"
|
270
|
+
end
|
271
|
+
|
272
|
+
let(:utc_offset) do
|
273
|
+
Time.now.utc_offset
|
274
|
+
end
|
275
|
+
|
276
|
+
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000") - Time.parse(string).utc_offset }
|
277
|
+
|
278
|
+
let(:mongoized) do
|
279
|
+
Time.demongoize(string)
|
280
|
+
end
|
281
|
+
|
282
|
+
it 'test operates in multiple time zones' do
|
283
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
284
|
+
end
|
285
|
+
|
286
|
+
it_behaves_like 'mongoizes to Time'
|
287
|
+
it_behaves_like 'maintains precision when mongoized'
|
288
|
+
end
|
289
|
+
|
290
|
+
context "when the string is a valid time without time" do
|
291
|
+
|
292
|
+
let(:string) do
|
293
|
+
"2010-11-19"
|
294
|
+
end
|
295
|
+
|
296
|
+
let(:mongoized) do
|
297
|
+
Time.demongoize(string)
|
298
|
+
end
|
299
|
+
|
300
|
+
let(:utc_offset) do
|
301
|
+
Time.now.utc_offset
|
302
|
+
end
|
303
|
+
|
304
|
+
let(:expected_time) { Time.parse("2010-11-19 00:00:00 +0000") - Time.parse(string).utc_offset }
|
305
|
+
|
306
|
+
it 'test operates in multiple time zones' do
|
307
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
308
|
+
end
|
309
|
+
|
310
|
+
it_behaves_like 'mongoizes to Time'
|
311
|
+
end
|
312
|
+
|
313
|
+
context "when the string is an invalid time" do
|
314
|
+
|
315
|
+
let(:string) do
|
316
|
+
"bogus"
|
317
|
+
end
|
318
|
+
|
319
|
+
it "returns nil" do
|
320
|
+
expect(Time.demongoize(string)).to be_nil
|
321
|
+
end
|
322
|
+
end
|
323
|
+
end
|
324
|
+
end
|
325
|
+
|
326
|
+
context "when use_utc is true" do
|
327
|
+
config_override :use_utc, true
|
328
|
+
|
329
|
+
context "when using active support's time zone" do
|
330
|
+
include_context 'using AS time zone'
|
331
|
+
|
332
|
+
context "when the string is a valid time with time zone" do
|
333
|
+
|
334
|
+
let(:string) do
|
335
|
+
# JST is +0900
|
336
|
+
"2010-11-19 00:24:49.123457 +1100"
|
337
|
+
end
|
338
|
+
|
339
|
+
let(:mongoized) do
|
340
|
+
Time.demongoize(string)
|
341
|
+
end
|
342
|
+
|
343
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
344
|
+
|
345
|
+
it "converts to UTC" do
|
346
|
+
expect(mongoized.zone).to eq("UTC")
|
347
|
+
end
|
348
|
+
|
349
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
350
|
+
it_behaves_like 'maintains precision when mongoized'
|
351
|
+
end
|
352
|
+
|
353
|
+
context "when the string is a valid time without time zone" do
|
354
|
+
|
355
|
+
let(:string) do
|
356
|
+
"2010-11-19 00:24:49.123457"
|
357
|
+
end
|
358
|
+
|
359
|
+
let(:mongoized) do
|
360
|
+
Time.demongoize(string)
|
361
|
+
end
|
362
|
+
|
363
|
+
let(:expected_time) { Time.parse("2010-11-18 15:24:49.123457 +0000").in_time_zone }
|
364
|
+
|
365
|
+
it "converts to UTC" do
|
366
|
+
expect(mongoized.zone).to eq("UTC")
|
367
|
+
end
|
368
|
+
|
369
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
370
|
+
it_behaves_like 'maintains precision when mongoized'
|
371
|
+
end
|
372
|
+
|
373
|
+
context "when the string is a valid time without time" do
|
374
|
+
|
375
|
+
let(:string) do
|
376
|
+
"2010-11-19"
|
377
|
+
end
|
378
|
+
|
379
|
+
let(:mongoized) do
|
380
|
+
Time.demongoize(string)
|
381
|
+
end
|
382
|
+
|
383
|
+
let(:expected_time) { Time.parse("2010-11-18 15:00:00 +0000").in_time_zone }
|
384
|
+
|
385
|
+
it "converts to UTC" do
|
386
|
+
expect(mongoized.zone).to eq("UTC")
|
387
|
+
end
|
388
|
+
|
389
|
+
it_behaves_like 'mongoizes to AS::TimeWithZone'
|
390
|
+
end
|
391
|
+
|
392
|
+
context "when the string is an invalid time" do
|
393
|
+
|
394
|
+
let(:string) do
|
395
|
+
"bogus"
|
396
|
+
end
|
397
|
+
|
398
|
+
it "returns nil" do
|
399
|
+
expect(Time.demongoize(string)).to be_nil
|
400
|
+
end
|
401
|
+
end
|
402
|
+
end
|
403
|
+
|
404
|
+
context "when not using active support's time zone" do
|
405
|
+
include_context 'not using AS time zone'
|
406
|
+
|
407
|
+
context "when the string is a valid time with time zone" do
|
408
|
+
|
409
|
+
let(:string) do
|
410
|
+
"2010-11-19 00:24:49.123457 +1100"
|
411
|
+
end
|
412
|
+
|
413
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
414
|
+
|
415
|
+
let(:mongoized) do
|
416
|
+
Time.demongoize(string)
|
417
|
+
end
|
418
|
+
|
419
|
+
it_behaves_like 'mongoizes to Time'
|
420
|
+
it_behaves_like 'maintains precision when mongoized'
|
421
|
+
end
|
422
|
+
|
423
|
+
context "when the string is a valid time without time zone" do
|
424
|
+
|
425
|
+
let(:string) do
|
426
|
+
"2010-11-19 00:24:49.123457"
|
427
|
+
end
|
428
|
+
|
429
|
+
let(:utc_offset) do
|
430
|
+
Time.now.utc_offset
|
431
|
+
end
|
432
|
+
|
433
|
+
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000") - Time.parse(string).utc_offset }
|
434
|
+
|
435
|
+
let(:mongoized) do
|
436
|
+
Time.demongoize(string)
|
437
|
+
end
|
438
|
+
|
439
|
+
it 'test operates in multiple time zones' do
|
440
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
441
|
+
end
|
442
|
+
|
443
|
+
it_behaves_like 'mongoizes to Time'
|
444
|
+
it_behaves_like 'maintains precision when mongoized'
|
445
|
+
end
|
446
|
+
|
447
|
+
context "when the string is a valid time without time" do
|
448
|
+
|
449
|
+
let(:string) do
|
450
|
+
"2010-11-19"
|
451
|
+
end
|
452
|
+
|
453
|
+
let(:mongoized) do
|
454
|
+
Time.demongoize(string)
|
455
|
+
end
|
456
|
+
|
457
|
+
let(:utc_offset) do
|
458
|
+
Time.now.utc_offset
|
459
|
+
end
|
460
|
+
|
461
|
+
let(:expected_time) { Time.parse("2010-11-19 00:00:00 +0000") - Time.parse(string).utc_offset }
|
462
|
+
|
463
|
+
it 'test operates in multiple time zones' do
|
464
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
465
|
+
end
|
466
|
+
|
467
|
+
it_behaves_like 'mongoizes to Time'
|
468
|
+
end
|
469
|
+
|
470
|
+
context "when the string is an invalid time" do
|
471
|
+
|
472
|
+
let(:string) do
|
473
|
+
"bogus"
|
474
|
+
end
|
475
|
+
|
476
|
+
it "returns nil" do
|
477
|
+
expect(Time.demongoize(string)).to be_nil
|
478
|
+
end
|
479
|
+
end
|
480
|
+
end
|
481
|
+
end
|
482
|
+
end
|
166
483
|
end
|
167
484
|
|
168
485
|
describe ".mongoize" do
|
@@ -180,65 +497,319 @@ describe Mongoid::Extensions::Time do
|
|
180
497
|
|
181
498
|
context "when string is empty" do
|
182
499
|
|
500
|
+
let(:mongoized) do
|
501
|
+
Time.mongoize("")
|
502
|
+
end
|
503
|
+
|
183
504
|
it "returns nil" do
|
184
|
-
expect(
|
505
|
+
expect(mongoized).to be_nil
|
185
506
|
end
|
186
507
|
end
|
187
508
|
|
188
|
-
context "when
|
509
|
+
context "when the value is a string" do
|
189
510
|
|
190
|
-
context "when
|
511
|
+
context "when use_utc is false" do
|
512
|
+
config_override :use_utc, false
|
191
513
|
|
192
|
-
|
193
|
-
|
194
|
-
end
|
514
|
+
context "when using active support's time zone" do
|
515
|
+
include_context 'using AS time zone'
|
195
516
|
|
196
|
-
|
197
|
-
expect(Time.mongoize(time.to_s)).to eq(Time.parse(time.to_s).utc)
|
198
|
-
end
|
517
|
+
context "when the string is a valid time with time zone" do
|
199
518
|
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
519
|
+
let(:string) do
|
520
|
+
# JST is +0900
|
521
|
+
"2010-11-19 00:24:49.123457 +1100"
|
522
|
+
end
|
523
|
+
|
524
|
+
let(:mongoized) do
|
525
|
+
Time.mongoize(string)
|
526
|
+
end
|
527
|
+
|
528
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
529
|
+
|
530
|
+
it "converts to UTC" do
|
531
|
+
expect(mongoized.zone).to eq("UTC")
|
532
|
+
end
|
533
|
+
|
534
|
+
it_behaves_like 'maintains precision when mongoized'
|
535
|
+
end
|
536
|
+
|
537
|
+
context "when the string is a valid time without time zone" do
|
538
|
+
|
539
|
+
let(:string) do
|
540
|
+
"2010-11-19 00:24:49.123457"
|
541
|
+
end
|
542
|
+
|
543
|
+
let(:mongoized) do
|
544
|
+
Time.mongoize(string)
|
545
|
+
end
|
546
|
+
|
547
|
+
let(:expected_time) { Time.parse("2010-11-18 15:24:49.123457 +0000").in_time_zone }
|
548
|
+
|
549
|
+
it "converts to UTC" do
|
550
|
+
expect(mongoized.zone).to eq("UTC")
|
551
|
+
end
|
552
|
+
|
553
|
+
it_behaves_like 'maintains precision when mongoized'
|
554
|
+
end
|
555
|
+
|
556
|
+
context "when the string is a valid time without time" do
|
557
|
+
|
558
|
+
let(:string) do
|
559
|
+
"2010-11-19"
|
560
|
+
end
|
561
|
+
|
562
|
+
let(:mongoized) do
|
563
|
+
Time.mongoize(string)
|
564
|
+
end
|
565
|
+
|
566
|
+
let(:expected_time) { Time.parse("2010-11-18 15:00:00 +0000").in_time_zone }
|
567
|
+
|
568
|
+
it "converts to UTC" do
|
569
|
+
expect(mongoized.zone).to eq("UTC")
|
570
|
+
end
|
571
|
+
end
|
572
|
+
|
573
|
+
context "when the string is an invalid time" do
|
574
|
+
|
575
|
+
let(:string) do
|
576
|
+
"bogus"
|
577
|
+
end
|
578
|
+
|
579
|
+
it "returns nil" do
|
580
|
+
expect(Time.mongoize(string)).to be_nil
|
581
|
+
end
|
582
|
+
end
|
204
583
|
end
|
205
|
-
end
|
206
584
|
|
207
|
-
|
585
|
+
context "when not using active support's time zone" do
|
586
|
+
include_context 'not using AS time zone'
|
587
|
+
|
588
|
+
context "when the string is a valid time with time zone" do
|
589
|
+
|
590
|
+
let(:string) do
|
591
|
+
"2010-11-19 00:24:49.123457 +1100"
|
592
|
+
end
|
593
|
+
|
594
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
595
|
+
|
596
|
+
let(:mongoized) do
|
597
|
+
Time.mongoize(string)
|
598
|
+
end
|
599
|
+
|
600
|
+
it_behaves_like 'mongoizes to Time'
|
601
|
+
it_behaves_like 'maintains precision when mongoized'
|
602
|
+
end
|
603
|
+
|
604
|
+
context "when the string is a valid time without time zone" do
|
605
|
+
|
606
|
+
let(:string) do
|
607
|
+
"2010-11-19 00:24:49.123457"
|
608
|
+
end
|
609
|
+
|
610
|
+
let(:utc_offset) do
|
611
|
+
Time.now.utc_offset
|
612
|
+
end
|
613
|
+
|
614
|
+
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000") - Time.parse(string).utc_offset }
|
615
|
+
|
616
|
+
let(:mongoized) do
|
617
|
+
Time.mongoize(string)
|
618
|
+
end
|
619
|
+
|
620
|
+
it 'test operates in multiple time zones' do
|
621
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
622
|
+
end
|
623
|
+
|
624
|
+
it_behaves_like 'mongoizes to Time'
|
625
|
+
it_behaves_like 'maintains precision when mongoized'
|
626
|
+
end
|
627
|
+
|
628
|
+
context "when the string is a valid time without time" do
|
629
|
+
|
630
|
+
let(:string) do
|
631
|
+
"2010-11-19"
|
632
|
+
end
|
633
|
+
|
634
|
+
let(:mongoized) do
|
635
|
+
Time.mongoize(string)
|
636
|
+
end
|
637
|
+
|
638
|
+
let(:utc_offset) do
|
639
|
+
Time.now.utc_offset
|
640
|
+
end
|
641
|
+
|
642
|
+
let(:expected_time) { Time.parse("2010-11-19 00:00:00 +0000") - Time.parse(string).utc_offset }
|
643
|
+
|
644
|
+
it 'test operates in multiple time zones' do
|
645
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
646
|
+
end
|
647
|
+
|
648
|
+
it_behaves_like 'mongoizes to Time'
|
649
|
+
end
|
650
|
+
|
651
|
+
context "when the string is an invalid time" do
|
208
652
|
|
209
|
-
|
210
|
-
|
653
|
+
let(:string) do
|
654
|
+
"bogus"
|
655
|
+
end
|
656
|
+
|
657
|
+
it "returns nil" do
|
658
|
+
expect(Time.mongoize(string)).to be_nil
|
659
|
+
end
|
660
|
+
end
|
211
661
|
end
|
212
662
|
end
|
213
663
|
|
214
|
-
context "when
|
664
|
+
context "when use_utc is true" do
|
665
|
+
config_override :use_utc, true
|
215
666
|
|
216
|
-
|
217
|
-
|
218
|
-
# if this is actually your time zone, the following tests are useless
|
219
|
-
Time.zone = "Stockholm"
|
220
|
-
end
|
667
|
+
context "when using active support's time zone" do
|
668
|
+
include_context 'using AS time zone'
|
221
669
|
|
222
|
-
|
223
|
-
Time.zone = nil
|
224
|
-
Mongoid.use_activesupport_time_zone = false
|
225
|
-
end
|
670
|
+
context "when the string is a valid time with time zone" do
|
226
671
|
|
227
|
-
|
672
|
+
let(:string) do
|
673
|
+
# JST is +0900
|
674
|
+
"2010-11-19 00:24:49.123457 +1100"
|
675
|
+
end
|
228
676
|
|
229
|
-
|
230
|
-
|
231
|
-
|
232
|
-
|
677
|
+
let(:mongoized) do
|
678
|
+
Time.mongoize(string)
|
679
|
+
end
|
680
|
+
|
681
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
682
|
+
|
683
|
+
it "converts to UTC" do
|
684
|
+
expect(mongoized.zone).to eq("UTC")
|
685
|
+
end
|
686
|
+
|
687
|
+
it_behaves_like 'maintains precision when mongoized'
|
688
|
+
end
|
689
|
+
|
690
|
+
context "when the string is a valid time without time zone" do
|
691
|
+
|
692
|
+
let(:string) do
|
693
|
+
"2010-11-19 00:24:49.123457"
|
694
|
+
end
|
695
|
+
|
696
|
+
let(:mongoized) do
|
697
|
+
Time.mongoize(string)
|
698
|
+
end
|
699
|
+
|
700
|
+
let(:expected_time) { Time.parse("2010-11-18 15:24:49.123457 +0000").in_time_zone }
|
701
|
+
|
702
|
+
it "converts to UTC" do
|
703
|
+
expect(mongoized.zone).to eq("UTC")
|
704
|
+
end
|
705
|
+
|
706
|
+
it_behaves_like 'maintains precision when mongoized'
|
707
|
+
end
|
708
|
+
|
709
|
+
context "when the string is a valid time without time" do
|
710
|
+
|
711
|
+
let(:string) do
|
712
|
+
"2010-11-19"
|
713
|
+
end
|
714
|
+
|
715
|
+
let(:mongoized) do
|
716
|
+
Time.mongoize(string)
|
717
|
+
end
|
718
|
+
|
719
|
+
let(:expected_time) { Time.parse("2010-11-18 15:00:00 +0000").in_time_zone }
|
720
|
+
|
721
|
+
it "converts to UTC" do
|
722
|
+
expect(mongoized.zone).to eq("UTC")
|
723
|
+
end
|
724
|
+
end
|
725
|
+
|
726
|
+
context "when the string is an invalid time" do
|
727
|
+
|
728
|
+
let(:string) do
|
729
|
+
"bogus"
|
730
|
+
end
|
731
|
+
|
732
|
+
it "returns nil" do
|
733
|
+
expect(Time.mongoize(string)).to be_nil
|
734
|
+
end
|
233
735
|
end
|
234
736
|
end
|
235
737
|
|
236
|
-
context "when
|
738
|
+
context "when not using active support's time zone" do
|
739
|
+
include_context 'not using AS time zone'
|
237
740
|
|
238
|
-
|
239
|
-
|
240
|
-
|
241
|
-
|
741
|
+
context "when the string is a valid time with time zone" do
|
742
|
+
|
743
|
+
let(:string) do
|
744
|
+
"2010-11-19 00:24:49.123457 +1100"
|
745
|
+
end
|
746
|
+
|
747
|
+
let(:expected_time) { Time.parse("2010-11-18 13:24:49.123457 +0000").in_time_zone }
|
748
|
+
|
749
|
+
let(:mongoized) do
|
750
|
+
Time.mongoize(string)
|
751
|
+
end
|
752
|
+
|
753
|
+
it_behaves_like 'mongoizes to Time'
|
754
|
+
it_behaves_like 'maintains precision when mongoized'
|
755
|
+
end
|
756
|
+
|
757
|
+
context "when the string is a valid time without time zone" do
|
758
|
+
|
759
|
+
let(:string) do
|
760
|
+
"2010-11-19 00:24:49.123457"
|
761
|
+
end
|
762
|
+
|
763
|
+
let(:utc_offset) do
|
764
|
+
Time.now.utc_offset
|
765
|
+
end
|
766
|
+
|
767
|
+
let(:expected_time) { Time.parse("2010-11-19 00:24:49.123457 +0000") - Time.parse(string).utc_offset }
|
768
|
+
|
769
|
+
let(:mongoized) do
|
770
|
+
Time.mongoize(string)
|
771
|
+
end
|
772
|
+
|
773
|
+
it 'test operates in multiple time zones' do
|
774
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
775
|
+
end
|
776
|
+
|
777
|
+
it_behaves_like 'mongoizes to Time'
|
778
|
+
it_behaves_like 'maintains precision when mongoized'
|
779
|
+
end
|
780
|
+
|
781
|
+
context "when the string is a valid time without time" do
|
782
|
+
|
783
|
+
let(:string) do
|
784
|
+
"2010-11-19"
|
785
|
+
end
|
786
|
+
|
787
|
+
let(:mongoized) do
|
788
|
+
Time.mongoize(string)
|
789
|
+
end
|
790
|
+
|
791
|
+
let(:utc_offset) do
|
792
|
+
Time.now.utc_offset
|
793
|
+
end
|
794
|
+
|
795
|
+
let(:expected_time) { Time.parse("2010-11-19 00:00:00 +0000") - Time.parse(string).utc_offset }
|
796
|
+
|
797
|
+
it 'test operates in multiple time zones' do
|
798
|
+
expect(utc_offset).not_to eq(Time.zone.now.utc_offset)
|
799
|
+
end
|
800
|
+
|
801
|
+
it_behaves_like 'mongoizes to Time'
|
802
|
+
end
|
803
|
+
|
804
|
+
context "when the string is an invalid time" do
|
805
|
+
|
806
|
+
let(:string) do
|
807
|
+
"bogus"
|
808
|
+
end
|
809
|
+
|
810
|
+
it "returns nil" do
|
811
|
+
expect(Time.mongoize(string)).to be_nil
|
812
|
+
end
|
242
813
|
end
|
243
814
|
end
|
244
815
|
end
|
@@ -283,20 +854,19 @@ describe Mongoid::Extensions::Time do
|
|
283
854
|
end
|
284
855
|
|
285
856
|
context "when using the ActiveSupport time zone" do
|
857
|
+
config_override :use_activesupport_time_zone, true
|
286
858
|
|
287
859
|
let(:datetime) do
|
288
860
|
DateTime.new(2010, 11, 19)
|
289
861
|
end
|
290
862
|
|
291
863
|
before do
|
292
|
-
Mongoid.use_activesupport_time_zone = true
|
293
864
|
# if this is actually your time zone, the following tests are useless
|
294
865
|
Time.zone = "Stockholm"
|
295
866
|
end
|
296
867
|
|
297
868
|
after do
|
298
869
|
Time.zone = nil
|
299
|
-
Mongoid.use_activesupport_time_zone = false
|
300
870
|
end
|
301
871
|
|
302
872
|
it "assumes the given time is local" do
|
@@ -374,20 +944,19 @@ describe Mongoid::Extensions::Time do
|
|
374
944
|
end
|
375
945
|
|
376
946
|
context "when using the ActiveSupport time zone" do
|
947
|
+
config_override :use_activesupport_time_zone, true
|
377
948
|
|
378
949
|
let(:date) do
|
379
950
|
Date.new(2010, 11, 19)
|
380
951
|
end
|
381
952
|
|
382
953
|
before do
|
383
|
-
Mongoid.use_activesupport_time_zone = true
|
384
954
|
# if this is actually your time zone, the following tests are useless
|
385
955
|
Time.zone = "Stockholm"
|
386
956
|
end
|
387
957
|
|
388
958
|
after do
|
389
959
|
Time.zone = nil
|
390
|
-
Mongoid.use_activesupport_time_zone = false
|
391
960
|
end
|
392
961
|
|
393
962
|
it "assumes the given time is local" do
|
@@ -407,16 +976,15 @@ describe Mongoid::Extensions::Time do
|
|
407
976
|
end
|
408
977
|
|
409
978
|
context "when using the ActiveSupport time zone" do
|
979
|
+
config_override :use_activesupport_time_zone, true
|
410
980
|
|
411
981
|
before do
|
412
|
-
Mongoid.use_activesupport_time_zone = true
|
413
982
|
# if this is actually your time zone, the following tests are useless
|
414
983
|
Time.zone = "Stockholm"
|
415
984
|
end
|
416
985
|
|
417
986
|
after do
|
418
987
|
Time.zone = nil
|
419
|
-
Mongoid.use_activesupport_time_zone = false
|
420
988
|
end
|
421
989
|
|
422
990
|
it "assumes the given time is local" do
|