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
@@ -0,0 +1,54 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
class IncUser
|
4
|
+
include Mongoid::Document
|
5
|
+
has_many :posts, class_name: 'IncPost'
|
6
|
+
has_many :comments, class_name: 'IncComment'
|
7
|
+
end
|
8
|
+
|
9
|
+
class IncPost
|
10
|
+
include Mongoid::Document
|
11
|
+
belongs_to :user, class_name: 'IncUser'
|
12
|
+
has_many :comments, class_name: 'IncComment'
|
13
|
+
end
|
14
|
+
|
15
|
+
class IncComment
|
16
|
+
include Mongoid::Document
|
17
|
+
belongs_to :posts, class_name: 'IncPost'
|
18
|
+
belongs_to :user, class_name: 'IncUser'
|
19
|
+
belongs_to :thread, class_name: 'IncThread'
|
20
|
+
end
|
21
|
+
|
22
|
+
class IncThread
|
23
|
+
include Mongoid::Document
|
24
|
+
has_many :comments, class_name: 'IncComment'
|
25
|
+
end
|
26
|
+
|
27
|
+
class IncBlog
|
28
|
+
include Mongoid::Document
|
29
|
+
|
30
|
+
has_and_belongs_to_many :posts, class_name: "IncBlogPost"
|
31
|
+
belongs_to :highlighted_post, class_name: "IncBlogPost"
|
32
|
+
belongs_to :pinned_post, class_name: "IncBlogPost"
|
33
|
+
end
|
34
|
+
|
35
|
+
class IncBlogPost
|
36
|
+
include Mongoid::Document
|
37
|
+
|
38
|
+
belongs_to :author, class_name: "IncAuthor"
|
39
|
+
end
|
40
|
+
|
41
|
+
class IncAuthor
|
42
|
+
include Mongoid::Document
|
43
|
+
end
|
44
|
+
|
45
|
+
class IncPost
|
46
|
+
include Mongoid::Document
|
47
|
+
belongs_to :person, class_name: "IncPerson"
|
48
|
+
end
|
49
|
+
|
50
|
+
class IncPerson
|
51
|
+
include Mongoid::Document
|
52
|
+
has_many :posts, class_name: "IncPost"
|
53
|
+
field :name
|
54
|
+
end
|
@@ -3,7 +3,6 @@
|
|
3
3
|
require "spec_helper"
|
4
4
|
|
5
5
|
describe Mongoid::Criteria::Marshalable do
|
6
|
-
|
7
6
|
describe "Marshal.dump" do
|
8
7
|
|
9
8
|
let(:criteria) do
|
@@ -26,5 +25,23 @@ describe Mongoid::Criteria::Marshalable do
|
|
26
25
|
it "loads the proper attributes" do
|
27
26
|
expect(Marshal.load(Marshal.dump(criteria))).to eq(criteria)
|
28
27
|
end
|
28
|
+
|
29
|
+
context "when it receives driver mongo1x" do
|
30
|
+
let(:dump) { Marshal.dump(criteria) }
|
31
|
+
|
32
|
+
before do
|
33
|
+
expect_any_instance_of(Mongoid::Criteria).to receive(:marshal_dump).and_wrap_original do |m, *args|
|
34
|
+
data = m.call(*args)
|
35
|
+
data[1] = :mongo1x
|
36
|
+
data
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
it "raises an error" do
|
41
|
+
expect do
|
42
|
+
Marshal.load(dump)
|
43
|
+
end.to raise_error(NotImplementedError, /Mongoid no longer supports marshalling with driver version 1.x./)
|
44
|
+
end
|
45
|
+
end
|
29
46
|
end
|
30
47
|
end
|
@@ -33,6 +33,13 @@ describe Array do
|
|
33
33
|
expect(described_class.evolve("testing")).to eq("testing")
|
34
34
|
end
|
35
35
|
end
|
36
|
+
|
37
|
+
context "when providing a set" do
|
38
|
+
|
39
|
+
it "returns an array" do
|
40
|
+
expect(described_class.evolve([ 1, 2, 3 ].to_set)).to eq([ 1, 2, 3 ])
|
41
|
+
end
|
42
|
+
end
|
36
43
|
end
|
37
44
|
|
38
45
|
describe "#__add__" do
|
@@ -503,23 +510,4 @@ describe Array do
|
|
503
510
|
end
|
504
511
|
end
|
505
512
|
end
|
506
|
-
|
507
|
-
describe "#update_values" do
|
508
|
-
|
509
|
-
let(:array) do
|
510
|
-
[ 1, 2, 3 ]
|
511
|
-
end
|
512
|
-
|
513
|
-
let(:updated) do
|
514
|
-
array.update_values(&:to_s)
|
515
|
-
end
|
516
|
-
|
517
|
-
it "replaces each of the values with the result of the block" do
|
518
|
-
expect(updated).to eq([ "1", "2", "3" ])
|
519
|
-
end
|
520
|
-
|
521
|
-
it "returns the same instance of the array" do
|
522
|
-
expect(updated).to equal(array)
|
523
|
-
end
|
524
|
-
end
|
525
513
|
end
|
@@ -6,55 +6,163 @@ describe BigDecimal do
|
|
6
6
|
|
7
7
|
describe ".evolve" do
|
8
8
|
|
9
|
-
context
|
9
|
+
context 'when map_big_decimal_to_decimal128 is false' do
|
10
|
+
config_override :map_big_decimal_to_decimal128, false
|
10
11
|
|
11
|
-
|
12
|
-
|
12
|
+
context "when provided a big decimal" do
|
13
|
+
|
14
|
+
let(:big_decimal) do
|
15
|
+
BigDecimal("123456.789")
|
16
|
+
end
|
17
|
+
|
18
|
+
it "returns the decimal as a string" do
|
19
|
+
expect(described_class.evolve(big_decimal)).to eq(big_decimal.to_s)
|
20
|
+
end
|
13
21
|
end
|
14
22
|
|
15
|
-
|
16
|
-
|
23
|
+
context "when provided a non big decimal" do
|
24
|
+
|
25
|
+
it "returns the object as a string" do
|
26
|
+
expect(described_class.evolve("testing")).to eq("testing")
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when provided an array of big decimals" do
|
31
|
+
|
32
|
+
let(:bd_one) do
|
33
|
+
BigDecimal("123456.789")
|
34
|
+
end
|
35
|
+
|
36
|
+
let(:bd_two) do
|
37
|
+
BigDecimal("123333.789")
|
38
|
+
end
|
39
|
+
|
40
|
+
let(:array) do
|
41
|
+
[ bd_one, bd_two ]
|
42
|
+
end
|
43
|
+
|
44
|
+
let(:evolved) do
|
45
|
+
described_class.evolve(array)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "returns the array as strings" do
|
49
|
+
expect(evolved).to eq([ bd_one.to_s, bd_two.to_s ])
|
50
|
+
end
|
51
|
+
|
52
|
+
it "does not evolve in place" do
|
53
|
+
expect(evolved).to_not equal(array)
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
context "when provided nil" do
|
58
|
+
|
59
|
+
it "returns nil" do
|
60
|
+
expect(described_class.evolve(nil)).to be_nil
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "when provided a numeric" do
|
65
|
+
it "returns a string" do
|
66
|
+
expect(described_class.evolve(1)).to eq('1')
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "when provided a bogus value" do
|
71
|
+
it "returns the value" do
|
72
|
+
expect(described_class.evolve(:bogus)).to eq(:bogus)
|
73
|
+
end
|
17
74
|
end
|
18
|
-
end
|
19
75
|
|
20
|
-
|
76
|
+
context "when provided a bogus string" do
|
77
|
+
it "returns the string" do
|
78
|
+
expect(described_class.evolve("bogus")).to eq("bogus")
|
79
|
+
end
|
80
|
+
end
|
21
81
|
|
22
|
-
|
23
|
-
|
82
|
+
context "when provided a valid string" do
|
83
|
+
it "returns the string" do
|
84
|
+
expect(described_class.evolve("1")).to eq("1")
|
85
|
+
end
|
24
86
|
end
|
25
87
|
end
|
26
88
|
|
27
|
-
context
|
89
|
+
context 'when map_big_decimal_to_decimal128 is true' do
|
90
|
+
config_override :map_big_decimal_to_decimal128, true
|
28
91
|
|
29
|
-
|
30
|
-
|
92
|
+
context "when provided a big decimal" do
|
93
|
+
|
94
|
+
let(:big_decimal) do
|
95
|
+
BigDecimal("123456.789")
|
96
|
+
end
|
97
|
+
|
98
|
+
it "returns the decimal as a BSON::Decimal128 object" do
|
99
|
+
expect(described_class.evolve(big_decimal)).to eq(BSON::Decimal128.new(big_decimal))
|
100
|
+
end
|
31
101
|
end
|
32
102
|
|
33
|
-
|
34
|
-
|
103
|
+
context "when provided a non big decimal" do
|
104
|
+
|
105
|
+
it "returns the object as a string" do
|
106
|
+
expect(described_class.evolve("testing")).to eq("testing")
|
107
|
+
end
|
35
108
|
end
|
36
109
|
|
37
|
-
|
38
|
-
|
110
|
+
context "when provided an array of big decimals" do
|
111
|
+
|
112
|
+
let(:bd_one) do
|
113
|
+
BigDecimal("123456.789")
|
114
|
+
end
|
115
|
+
|
116
|
+
let(:bd_two) do
|
117
|
+
BigDecimal("123333.789")
|
118
|
+
end
|
119
|
+
|
120
|
+
let(:array) do
|
121
|
+
[ bd_one, bd_two ]
|
122
|
+
end
|
123
|
+
|
124
|
+
let(:evolved) do
|
125
|
+
described_class.evolve(array)
|
126
|
+
end
|
127
|
+
|
128
|
+
it "returns the array as BSON::Decimal128s" do
|
129
|
+
expect(evolved).to eq([ BSON::Decimal128.new(bd_one), BSON::Decimal128.new(bd_two) ])
|
130
|
+
end
|
131
|
+
|
132
|
+
it "does not evolve in place" do
|
133
|
+
expect(evolved).to_not equal(array)
|
134
|
+
end
|
39
135
|
end
|
40
136
|
|
41
|
-
|
42
|
-
|
137
|
+
context "when provided nil" do
|
138
|
+
|
139
|
+
it "returns nil" do
|
140
|
+
expect(described_class.evolve(nil)).to be_nil
|
141
|
+
end
|
43
142
|
end
|
44
143
|
|
45
|
-
|
46
|
-
|
144
|
+
context "when provided a numeric" do
|
145
|
+
it "returns a string" do
|
146
|
+
expect(described_class.evolve(1)).to eq(BSON::Decimal128.new('1'))
|
147
|
+
end
|
47
148
|
end
|
48
149
|
|
49
|
-
|
50
|
-
|
150
|
+
context "when provided a bogus value" do
|
151
|
+
it "returns the value" do
|
152
|
+
expect(described_class.evolve(:bogus)).to eq(:bogus)
|
153
|
+
end
|
51
154
|
end
|
52
|
-
end
|
53
155
|
|
54
|
-
|
156
|
+
context "when provided a bogus string" do
|
157
|
+
it "returns the string" do
|
158
|
+
expect(described_class.evolve("bogus")).to eq("bogus")
|
159
|
+
end
|
160
|
+
end
|
55
161
|
|
56
|
-
|
57
|
-
|
162
|
+
context "when provided a valid string" do
|
163
|
+
it "returns the string" do
|
164
|
+
expect(described_class.evolve("1")).to eq("1")
|
165
|
+
end
|
58
166
|
end
|
59
167
|
end
|
60
168
|
end
|
@@ -322,6 +322,17 @@ describe Date do
|
|
322
322
|
end
|
323
323
|
end
|
324
324
|
|
325
|
+
context "when provided an invalid string" do
|
326
|
+
|
327
|
+
let(:evolved) do
|
328
|
+
described_class.evolve("bogus")
|
329
|
+
end
|
330
|
+
|
331
|
+
it "returns that string" do
|
332
|
+
expect(evolved).to eq("bogus")
|
333
|
+
end
|
334
|
+
end
|
335
|
+
|
325
336
|
context "when provided nil" do
|
326
337
|
|
327
338
|
it "returns nil" do
|
@@ -413,6 +413,17 @@ describe DateTime do
|
|
413
413
|
end
|
414
414
|
end
|
415
415
|
|
416
|
+
context "when provided an invalid string" do
|
417
|
+
|
418
|
+
let(:evolved) do
|
419
|
+
described_class.evolve("bogus")
|
420
|
+
end
|
421
|
+
|
422
|
+
it "returns that string" do
|
423
|
+
expect(evolved).to eq("bogus")
|
424
|
+
end
|
425
|
+
end
|
426
|
+
|
416
427
|
context "when provided nil" do
|
417
428
|
|
418
429
|
it "returns nil" do
|
@@ -311,19 +311,4 @@ describe Hash do
|
|
311
311
|
end
|
312
312
|
end
|
313
313
|
end
|
314
|
-
|
315
|
-
describe "#update_values" do
|
316
|
-
|
317
|
-
let(:hash) do
|
318
|
-
{ field: "1" }
|
319
|
-
end
|
320
|
-
|
321
|
-
before do
|
322
|
-
hash.update_values(&:to_i)
|
323
|
-
end
|
324
|
-
|
325
|
-
it "updates each value in the hash" do
|
326
|
-
expect(hash).to eq({ field: 1 })
|
327
|
-
end
|
328
|
-
end
|
329
314
|
end
|
@@ -11,42 +11,108 @@ describe Mongoid::Criteria::Queryable::Extensions::Numeric::ClassMethods do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
describe "#__numeric__" do
|
14
|
-
|
15
14
|
let(:actual) { host.__numeric__(str) }
|
16
15
|
|
17
16
|
context "when the string is a whole number" do
|
18
|
-
|
19
17
|
let(:str) { '123' }
|
20
18
|
|
21
|
-
it "returns the value as integer" do
|
19
|
+
it "returns the value as an integer" do
|
22
20
|
expect(actual).to eq(123)
|
21
|
+
expect(actual).to be_a Integer
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
26
25
|
context "when the string is a floating point number" do
|
27
|
-
|
28
26
|
let(:str) { '123.45' }
|
29
27
|
|
30
28
|
it "returns the value as a float" do
|
31
29
|
expect(actual).to eq(123.45)
|
30
|
+
expect(actual).to be_a Float
|
32
31
|
end
|
33
32
|
end
|
34
33
|
|
35
|
-
context "when the string is a dot
|
34
|
+
context "when the string is a floating point number with a leading dot" do
|
35
|
+
let(:str) { '.45' }
|
36
36
|
|
37
|
+
it "returns the value as a float" do
|
38
|
+
expect(actual).to eq(0.45)
|
39
|
+
expect(actual).to be_a Float
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
context "when the string is a dot only" do
|
37
44
|
let(:str) { '.' }
|
38
45
|
|
39
46
|
it "returns zero" do
|
40
47
|
expect(actual).to eq(0)
|
48
|
+
expect(actual).to be_a Integer
|
41
49
|
end
|
42
50
|
end
|
43
51
|
|
44
|
-
context "when the string is a number with
|
52
|
+
context "when the string is a number with a trailing dot" do
|
53
|
+
let(:str) { '123.' }
|
45
54
|
|
55
|
+
it "returns zero" do
|
56
|
+
expect(actual).to eq(123)
|
57
|
+
expect(actual).to be_a Integer
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
context "when the string is a number with fractional part consisting of zeros" do
|
46
62
|
let(:str) { '12.000' }
|
47
63
|
|
48
|
-
it "returns the value as integer" do
|
64
|
+
it "returns the value as an integer" do
|
49
65
|
expect(actual).to eq(12)
|
66
|
+
expect(actual).to be_a Integer
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
context "when the string is a number with leading dot then zeros" do
|
71
|
+
let(:str) { '.000' }
|
72
|
+
|
73
|
+
it "returns the value as an integer" do
|
74
|
+
expect(actual).to eq(0)
|
75
|
+
expect(actual).to be_a Integer
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
context "when the string is non-numeric" do
|
80
|
+
let(:str) { 'foo' }
|
81
|
+
|
82
|
+
it "raises ArgumentError" do
|
83
|
+
expect { actual }.to raise_error(ArgumentError)
|
84
|
+
end
|
85
|
+
end
|
86
|
+
|
87
|
+
context "when the string is non-numeric with leading dot" do
|
88
|
+
let(:str) { '.foo' }
|
89
|
+
|
90
|
+
it "raises ArgumentError" do
|
91
|
+
expect { actual }.to raise_error(ArgumentError)
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
context "when the string is non-numeric with trailing dot" do
|
96
|
+
let(:str) { 'foo.' }
|
97
|
+
|
98
|
+
it "raises ArgumentError" do
|
99
|
+
expect { actual }.to raise_error(ArgumentError)
|
100
|
+
end
|
101
|
+
end
|
102
|
+
|
103
|
+
context "when the string is non-numeric with trailing dot and zeroes" do
|
104
|
+
let(:str) { 'foo.000' }
|
105
|
+
|
106
|
+
it "raises ArgumentError" do
|
107
|
+
expect { actual }.to raise_error(ArgumentError)
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
111
|
+
context "when the string is empty" do
|
112
|
+
let(:str) { '' }
|
113
|
+
|
114
|
+
it "raises ArgumentError" do
|
115
|
+
expect { actual }.to raise_error(ArgumentError)
|
50
116
|
end
|
51
117
|
end
|
52
118
|
end
|
@@ -253,65 +253,6 @@ describe String do
|
|
253
253
|
end
|
254
254
|
end
|
255
255
|
|
256
|
-
describe "#to_direction" do
|
257
|
-
|
258
|
-
context "when ascending" do
|
259
|
-
|
260
|
-
it "returns 1" do
|
261
|
-
expect("ascending".to_direction).to eq(1)
|
262
|
-
end
|
263
|
-
end
|
264
|
-
|
265
|
-
context "when asc" do
|
266
|
-
|
267
|
-
it "returns 1" do
|
268
|
-
expect("asc".to_direction).to eq(1)
|
269
|
-
end
|
270
|
-
end
|
271
|
-
|
272
|
-
context "when ASCENDING" do
|
273
|
-
|
274
|
-
it "returns 1" do
|
275
|
-
expect("ASCENDING".to_direction).to eq(1)
|
276
|
-
end
|
277
|
-
end
|
278
|
-
|
279
|
-
context "when ASC" do
|
280
|
-
|
281
|
-
it "returns 1" do
|
282
|
-
expect("ASC".to_direction).to eq(1)
|
283
|
-
end
|
284
|
-
end
|
285
|
-
|
286
|
-
context "when descending" do
|
287
|
-
|
288
|
-
it "returns -1" do
|
289
|
-
expect("descending".to_direction).to eq(-1)
|
290
|
-
end
|
291
|
-
end
|
292
|
-
|
293
|
-
context "when desc" do
|
294
|
-
|
295
|
-
it "returns -1" do
|
296
|
-
expect("desc".to_direction).to eq(-1)
|
297
|
-
end
|
298
|
-
end
|
299
|
-
|
300
|
-
context "when DESCENDING" do
|
301
|
-
|
302
|
-
it "returns -1" do
|
303
|
-
expect("DESCENDING".to_direction).to eq(-1)
|
304
|
-
end
|
305
|
-
end
|
306
|
-
|
307
|
-
context "when DESC" do
|
308
|
-
|
309
|
-
it "returns -1" do
|
310
|
-
expect("DESC".to_direction).to eq(-1)
|
311
|
-
end
|
312
|
-
end
|
313
|
-
end
|
314
|
-
|
315
256
|
describe ".evolve" do
|
316
257
|
|
317
258
|
context "when provided a regex" do
|
@@ -107,63 +107,4 @@ describe Symbol do
|
|
107
107
|
end
|
108
108
|
end
|
109
109
|
end
|
110
|
-
|
111
|
-
describe "#to_direction" do
|
112
|
-
|
113
|
-
context "when ascending" do
|
114
|
-
|
115
|
-
it "returns 1" do
|
116
|
-
expect(:ascending.to_direction).to eq(1)
|
117
|
-
end
|
118
|
-
end
|
119
|
-
|
120
|
-
context "when asc" do
|
121
|
-
|
122
|
-
it "returns 1" do
|
123
|
-
expect(:asc.to_direction).to eq(1)
|
124
|
-
end
|
125
|
-
end
|
126
|
-
|
127
|
-
context "when ASCENDING" do
|
128
|
-
|
129
|
-
it "returns 1" do
|
130
|
-
expect(:ASCENDING.to_direction).to eq(1)
|
131
|
-
end
|
132
|
-
end
|
133
|
-
|
134
|
-
context "when ASC" do
|
135
|
-
|
136
|
-
it "returns 1" do
|
137
|
-
expect(:ASC.to_direction).to eq(1)
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
context "when descending" do
|
142
|
-
|
143
|
-
it "returns -1" do
|
144
|
-
expect(:descending.to_direction).to eq(-1)
|
145
|
-
end
|
146
|
-
end
|
147
|
-
|
148
|
-
context "when desc" do
|
149
|
-
|
150
|
-
it "returns -1" do
|
151
|
-
expect(:desc.to_direction).to eq(-1)
|
152
|
-
end
|
153
|
-
end
|
154
|
-
|
155
|
-
context "when DESCENDING" do
|
156
|
-
|
157
|
-
it "returns -1" do
|
158
|
-
expect(:DESCENDING.to_direction).to eq(-1)
|
159
|
-
end
|
160
|
-
end
|
161
|
-
|
162
|
-
context "when DESC" do
|
163
|
-
|
164
|
-
it "returns -1" do
|
165
|
-
expect(:DESC.to_direction).to eq(-1)
|
166
|
-
end
|
167
|
-
end
|
168
|
-
end
|
169
110
|
end
|
@@ -343,6 +343,17 @@ describe Time do
|
|
343
343
|
end
|
344
344
|
end
|
345
345
|
|
346
|
+
context "when provided an invalid string" do
|
347
|
+
|
348
|
+
let(:evolved) do
|
349
|
+
described_class.evolve("bogus")
|
350
|
+
end
|
351
|
+
|
352
|
+
it "returns that string" do
|
353
|
+
expect(evolved).to eq("bogus")
|
354
|
+
end
|
355
|
+
end
|
356
|
+
|
346
357
|
context "when provided nil" do
|
347
358
|
|
348
359
|
it "returns nil" do
|
@@ -316,6 +316,17 @@ describe ActiveSupport::TimeWithZone do
|
|
316
316
|
end
|
317
317
|
end
|
318
318
|
|
319
|
+
context "when provided an invalid string" do
|
320
|
+
|
321
|
+
let(:evolved) do
|
322
|
+
described_class.evolve("bogus")
|
323
|
+
end
|
324
|
+
|
325
|
+
it "returns that string" do
|
326
|
+
expect(evolved).to eq("bogus")
|
327
|
+
end
|
328
|
+
end
|
329
|
+
|
319
330
|
context "when provided nil" do
|
320
331
|
|
321
332
|
it "returns nil" do
|