mongoid 3.1.6 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +479 -8
- data/README.md +10 -7
- data/lib/config/locales/en.yml +34 -20
- data/lib/mongoid.rb +10 -76
- data/lib/mongoid/atomic.rb +3 -14
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +65 -101
- data/lib/mongoid/attributes/dynamic.rb +154 -0
- data/lib/mongoid/attributes/nested.rb +82 -0
- data/lib/mongoid/attributes/processing.rb +13 -66
- data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
- data/lib/mongoid/composable.rb +105 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -0
- data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +4 -2
- data/lib/mongoid/contextual/memory.rb +23 -11
- data/lib/mongoid/contextual/mongo.rb +75 -57
- data/lib/mongoid/contextual/none.rb +90 -0
- data/lib/mongoid/contextual/text_search.rb +178 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +39 -34
- data/lib/mongoid/criteria/#findable.rb# +141 -0
- data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
- data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
- data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
- data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
- data/lib/mongoid/criteria/permission.rb +70 -0
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +39 -24
- data/lib/mongoid/errors.rb +4 -1
- data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/errors/readonly_document.rb +24 -0
- data/lib/mongoid/extensions.rb +15 -7
- data/lib/mongoid/extensions/array.rb +3 -3
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/boolean.rb +15 -17
- data/lib/mongoid/extensions/date.rb +1 -1
- data/lib/mongoid/extensions/date_time.rb +3 -3
- data/lib/mongoid/extensions/float.rb +2 -1
- data/lib/mongoid/extensions/hash.rb +3 -3
- data/lib/mongoid/extensions/integer.rb +1 -1
- data/lib/mongoid/extensions/object.rb +7 -7
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +9 -3
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/extensions/set.rb +1 -1
- data/lib/mongoid/extensions/string.rb +6 -18
- data/lib/mongoid/extensions/symbol.rb +1 -1
- data/lib/mongoid/extensions/time.rb +3 -3
- data/lib/mongoid/extensions/time_with_zone.rb +1 -1
- data/lib/mongoid/factory.rb +8 -6
- data/lib/mongoid/fields.rb +41 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/localized.rb +1 -1
- data/lib/mongoid/fields/standard.rb +5 -17
- data/lib/mongoid/fields/validators/macro.rb +15 -5
- data/lib/mongoid/{finders.rb → findable.rb} +35 -7
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
- data/lib/mongoid/log_subscriber.rb +55 -0
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/persistable.rb +216 -0
- data/lib/mongoid/persistable/creatable.rb +189 -0
- data/lib/mongoid/persistable/deletable.rb +149 -0
- data/lib/mongoid/persistable/destroyable.rb +60 -0
- data/lib/mongoid/persistable/incrementable.rb +36 -0
- data/lib/mongoid/persistable/logical.rb +38 -0
- data/lib/mongoid/persistable/poppable.rb +39 -0
- data/lib/mongoid/persistable/pullable.rb +55 -0
- data/lib/mongoid/persistable/pushable.rb +62 -0
- data/lib/mongoid/persistable/renamable.rb +35 -0
- data/lib/mongoid/persistable/savable.rb +52 -0
- data/lib/mongoid/persistable/settable.rb +33 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +153 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/query_cache.rb +255 -0
- data/lib/mongoid/railtie.rb +34 -60
- data/lib/mongoid/railties/database.rake +9 -25
- data/lib/mongoid/relations.rb +11 -25
- data/lib/mongoid/relations/accessors.rb +15 -51
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +2 -25
- data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/cascading.rb +3 -5
- data/lib/mongoid/relations/constraint.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +39 -15
- data/lib/mongoid/relations/eager.rb +46 -0
- data/lib/mongoid/relations/eager/base.rb +149 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
- data/lib/mongoid/relations/eager/has_many.rb +38 -0
- data/lib/mongoid/relations/eager/has_one.rb +30 -0
- data/lib/mongoid/relations/embedded/batchable.rb +4 -5
- data/lib/mongoid/relations/embedded/in.rb +4 -4
- data/lib/mongoid/relations/embedded/many.rb +14 -32
- data/lib/mongoid/relations/embedded/one.rb +1 -1
- data/lib/mongoid/relations/macros.rb +3 -4
- data/lib/mongoid/relations/many.rb +51 -31
- data/lib/mongoid/relations/marshalable.rb +3 -3
- data/lib/mongoid/relations/metadata.rb +14 -79
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/one.rb +1 -1
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +21 -41
- data/lib/mongoid/relations/referenced/in.rb +4 -20
- data/lib/mongoid/relations/referenced/many.rb +22 -35
- data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
- data/lib/mongoid/relations/referenced/one.rb +6 -25
- data/lib/mongoid/relations/synchronization.rb +4 -4
- data/lib/mongoid/relations/targets/enumerable.rb +10 -10
- data/lib/mongoid/relations/touchable.rb +34 -1
- data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
- data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +185 -0
- data/lib/mongoid/sessions/storage_options.rb +140 -0
- data/lib/mongoid/sessions/thread_options.rb +19 -0
- data/lib/mongoid/sessions/validators/storage.rb +16 -3
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/{state.rb → stateful.rb} +13 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/tasks/database.rake +31 -0
- data/lib/mongoid/tasks/database.rb +107 -0
- data/lib/mongoid/threaded.rb +26 -172
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
- data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
- data/lib/mongoid/{validations → validatable}/format.rb +1 -1
- data/lib/mongoid/{validations → validatable}/length.rb +1 -1
- data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
- data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
- data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
- data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
- data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
- data/lib/rails/generators/mongoid_generator.rb +3 -40
- data/lib/rails/mongoid.rb +0 -122
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +2 -1
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +8 -3
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +3 -3
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contextable_item.rb +5 -0
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dog.rb +1 -1
- data/spec/app/models/draft.rb +9 -0
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/edit.rb +5 -0
- data/spec/app/models/even.rb +7 -0
- data/spec/app/models/event.rb +1 -1
- data/spec/app/models/filesystem.rb +1 -0
- data/spec/app/models/fish.rb +0 -1
- data/spec/app/models/fruits.rb +6 -0
- data/spec/app/models/game.rb +0 -2
- data/spec/app/models/house.rb +1 -3
- data/spec/app/models/id_key.rb +6 -0
- data/spec/app/models/item.rb +1 -5
- data/spec/app/models/jar.rb +1 -1
- data/spec/app/models/label.rb +4 -4
- data/spec/app/models/line_item.rb +1 -1
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/message.rb +8 -0
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +3 -1
- data/spec/app/models/odd.rb +7 -0
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +16 -10
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +3 -3
- data/spec/app/models/post.rb +5 -3
- data/spec/app/models/preference.rb +1 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +10 -5
- data/spec/app/models/registry.rb +1 -1
- data/spec/app/models/server.rb +1 -1
- data/spec/app/models/service.rb +3 -3
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/symptom.rb +1 -1
- data/spec/app/models/template.rb +1 -1
- data/spec/app/models/title.rb +0 -1
- data/spec/app/models/track.rb +5 -5
- data/spec/app/models/tree.rb +3 -3
- data/spec/app/models/video.rb +1 -5
- data/spec/app/models/wiki_page.rb +2 -5
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/#atomic_spec.rb# +365 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
- data/spec/mongoid/atomic/paths_spec.rb +19 -19
- data/spec/mongoid/atomic_spec.rb +19 -19
- data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
- data/spec/mongoid/attributes/readonly_spec.rb +58 -18
- data/spec/mongoid/attributes_spec.rb +349 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
- data/spec/mongoid/contextual/atomic_spec.rb +60 -56
- data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
- data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
- data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
- data/spec/mongoid/contextual/memory_spec.rb +156 -94
- data/spec/mongoid/contextual/mongo_spec.rb +238 -150
- data/spec/mongoid/contextual/none_spec.rb +127 -0
- data/spec/mongoid/contextual/text_search_spec.rb +209 -0
- data/spec/mongoid/copyable_spec.rb +56 -68
- data/spec/mongoid/criteria/findable_spec.rb +991 -0
- data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
- data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
- data/spec/mongoid/criteria_spec.rb +715 -2421
- data/spec/mongoid/document_spec.rb +171 -121
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
- data/spec/mongoid/errors/eager_load_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
- data/spec/mongoid/errors/no_parent_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
- data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
- data/spec/mongoid/errors/validations_spec.rb +7 -7
- data/spec/mongoid/extensions/array_spec.rb +61 -61
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
- data/spec/mongoid/extensions/binary_spec.rb +12 -12
- data/spec/mongoid/extensions/boolean_spec.rb +18 -18
- data/spec/mongoid/extensions/date_spec.rb +13 -13
- data/spec/mongoid/extensions/date_time_spec.rb +8 -8
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +29 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +38 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +263 -217
- data/spec/mongoid/findable_spec.rb +509 -0
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
- data/spec/mongoid/log_subscriber_spec.rb +75 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/matchable/ne_spec.rb +46 -0
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +553 -0
- data/spec/mongoid/persistable/deletable_spec.rb +218 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
- data/spec/mongoid/persistable/logical_spec.rb +143 -0
- data/spec/mongoid/persistable/poppable_spec.rb +115 -0
- data/spec/mongoid/persistable/pullable_spec.rb +228 -0
- data/spec/mongoid/persistable/pushable_spec.rb +258 -0
- data/spec/mongoid/persistable/renamable_spec.rb +135 -0
- data/spec/mongoid/persistable/savable_spec.rb +498 -0
- data/spec/mongoid/persistable/settable_spec.rb +162 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +14 -19
- data/spec/mongoid/query_cache_spec.rb +263 -0
- data/spec/mongoid/railties/document_spec.rb +2 -2
- data/spec/mongoid/relations/accessors_spec.rb +53 -145
- data/spec/mongoid/relations/auto_save_spec.rb +37 -17
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
- data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
- data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
- data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
- data/spec/mongoid/relations/cascading_spec.rb +16 -16
- data/spec/mongoid/relations/constraint_spec.rb +8 -7
- data/spec/mongoid/relations/conversions_spec.rb +16 -14
- data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
- data/spec/mongoid/relations/cyclic_spec.rb +18 -18
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
- data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
- data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
- data/spec/mongoid/relations/eager_spec.rb +228 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
- data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
- data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
- data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +180 -255
- data/spec/mongoid/relations/options_spec.rb +1 -1
- data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
- data/spec/mongoid/relations/proxy_spec.rb +2 -2
- data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
- data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
- data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
- data/spec/mongoid/relations/reflections_spec.rb +6 -6
- data/spec/mongoid/relations/synchronization_spec.rb +46 -50
- data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
- data/spec/mongoid/relations/touchable_spec.rb +333 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
- data/spec/mongoid/sessions/factory_spec.rb +49 -28
- data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
- data/spec/mongoid/sessions/options_spec.rb +108 -0
- data/spec/mongoid/sessions_spec.rb +319 -178
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
- data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
- data/spec/mongoid/tasks/database_spec.rb +160 -0
- data/spec/mongoid/threaded_spec.rb +17 -70
- data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
- data/spec/mongoid/timestamps/created_spec.rb +5 -5
- data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
- data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
- data/spec/mongoid/timestamps/updated_spec.rb +9 -13
- data/spec/mongoid/timestamps_spec.rb +9 -13
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +19 -335
- data/spec/spec_helper.rb +31 -13
- metadata +303 -283
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/components.rb +0 -92
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers.rb +0 -32
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/multi_parameter_attributes.rb +0 -105
- data/lib/mongoid/nested_attributes.rb +0 -78
- data/lib/mongoid/observer.rb +0 -192
- data/lib/mongoid/paranoia.rb +0 -136
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/persistence/atomic.rb +0 -231
- data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
- data/lib/mongoid/persistence/atomic/bit.rb +0 -35
- data/lib/mongoid/persistence/atomic/inc.rb +0 -45
- data/lib/mongoid/persistence/atomic/operation.rb +0 -154
- data/lib/mongoid/persistence/atomic/pop.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
- data/lib/mongoid/persistence/atomic/push.rb +0 -25
- data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
- data/lib/mongoid/persistence/atomic/rename.rb +0 -30
- data/lib/mongoid/persistence/atomic/sets.rb +0 -28
- data/lib/mongoid/persistence/atomic/unset.rb +0 -27
- data/lib/mongoid/persistence/deletion.rb +0 -31
- data/lib/mongoid/persistence/insertion.rb +0 -38
- data/lib/mongoid/persistence/modification.rb +0 -35
- data/lib/mongoid/persistence/operations.rb +0 -214
- data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
- data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
- data/lib/mongoid/persistence/operations/insert.rb +0 -34
- data/lib/mongoid/persistence/operations/remove.rb +0 -33
- data/lib/mongoid/persistence/operations/update.rb +0 -59
- data/lib/mongoid/persistence/operations/upsert.rb +0 -28
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/finders_spec.rb +0 -321
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/ne_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -5,7 +5,7 @@ describe Mongoid::Extensions::TrueClass do
|
|
5
5
|
describe "#__sortable__" do
|
6
6
|
|
7
7
|
it "returns 1" do
|
8
|
-
true.__sortable__.
|
8
|
+
expect(true.__sortable__).to eq(1)
|
9
9
|
end
|
10
10
|
end
|
11
11
|
|
@@ -14,28 +14,28 @@ describe Mongoid::Extensions::TrueClass do
|
|
14
14
|
context "when provided a Boolean" do
|
15
15
|
|
16
16
|
it "returns true" do
|
17
|
-
true.is_a?(Boolean).
|
17
|
+
expect(true.is_a?(Boolean)).to be true
|
18
18
|
end
|
19
19
|
end
|
20
20
|
|
21
21
|
context "when provided a FalseClass" do
|
22
22
|
|
23
23
|
it "returns false" do
|
24
|
-
true.is_a?(FalseClass).
|
24
|
+
expect(true.is_a?(FalseClass)).to be false
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
28
|
context "when provided a TrueClass" do
|
29
29
|
|
30
30
|
it "returns true" do
|
31
|
-
true.is_a?(TrueClass).
|
31
|
+
expect(true.is_a?(TrueClass)).to be true
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
35
|
context "when provided an invalid class" do
|
36
36
|
|
37
37
|
it "returns false" do
|
38
|
-
false.is_a?(String).
|
38
|
+
expect(false.is_a?(String)).to be false
|
39
39
|
end
|
40
40
|
end
|
41
41
|
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe BSON::ObjectId do
|
4
|
+
|
5
|
+
describe "#as_json" do
|
6
|
+
|
7
|
+
let(:object_id) do
|
8
|
+
described_class.new
|
9
|
+
end
|
10
|
+
|
11
|
+
it "returns the $oid plus string" do
|
12
|
+
expect(object_id.as_json).to eq("$oid" => object_id.to_s)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
describe BSON::Document do
|
18
|
+
|
19
|
+
describe "#symbolize_keys" do
|
20
|
+
|
21
|
+
let(:doc) do
|
22
|
+
described_class.new("foo" => "bar")
|
23
|
+
end
|
24
|
+
|
25
|
+
it "returns key as symbol" do
|
26
|
+
expect(doc.symbolize_keys.keys).to eq [:foo]
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -17,7 +17,7 @@ describe Mongoid::Factory do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "instantiates based on the type" do
|
20
|
-
person.title.
|
20
|
+
expect(person.title).to eq("Sir")
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -28,7 +28,7 @@ describe Mongoid::Factory do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
it "instantiates the provided class" do
|
31
|
-
person.class.
|
31
|
+
expect(person.class).to eq(Person)
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
@@ -39,7 +39,7 @@ describe Mongoid::Factory do
|
|
39
39
|
end
|
40
40
|
|
41
41
|
it "instantiates the subclass" do
|
42
|
-
person.class.
|
42
|
+
expect(person.class).to eq(Doctor)
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
@@ -54,7 +54,7 @@ describe Mongoid::Factory do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
it "instantiates based on the type" do
|
57
|
-
person.title.
|
57
|
+
expect(person.title).to eq("Sir")
|
58
58
|
end
|
59
59
|
end
|
60
60
|
|
@@ -69,7 +69,7 @@ describe Mongoid::Factory do
|
|
69
69
|
end
|
70
70
|
|
71
71
|
it "instantiates based on the type" do
|
72
|
-
person.title.
|
72
|
+
expect(person.title).to eq("Sir")
|
73
73
|
end
|
74
74
|
end
|
75
75
|
end
|
@@ -85,7 +85,7 @@ describe Mongoid::Factory do
|
|
85
85
|
end
|
86
86
|
|
87
87
|
it "instantiates based on the provided class" do
|
88
|
-
person.title.
|
88
|
+
expect(person.title).to eq("Sir")
|
89
89
|
end
|
90
90
|
end
|
91
91
|
end
|
@@ -99,11 +99,11 @@ describe Mongoid::Factory do
|
|
99
99
|
end
|
100
100
|
|
101
101
|
it "generates based on the provided class" do
|
102
|
-
document.
|
102
|
+
expect(document).to be_a(Address)
|
103
103
|
end
|
104
104
|
|
105
105
|
it "sets the attributes to empty" do
|
106
|
-
document.attributes.
|
106
|
+
expect(document.attributes).to be_empty
|
107
107
|
end
|
108
108
|
end
|
109
109
|
|
@@ -120,11 +120,11 @@ describe Mongoid::Factory do
|
|
120
120
|
end
|
121
121
|
|
122
122
|
it "generates based on the type" do
|
123
|
-
document.
|
123
|
+
expect(document).to be_a(Person)
|
124
124
|
end
|
125
125
|
|
126
126
|
it "sets the attributes" do
|
127
|
-
document.title.
|
127
|
+
expect(document.title).to eq("Sir")
|
128
128
|
end
|
129
129
|
end
|
130
130
|
|
@@ -139,11 +139,11 @@ describe Mongoid::Factory do
|
|
139
139
|
end
|
140
140
|
|
141
141
|
it "generates based on the provided class" do
|
142
|
-
document.
|
142
|
+
expect(document).to be_a(Person)
|
143
143
|
end
|
144
144
|
|
145
145
|
it "sets the attributes" do
|
146
|
-
document.title.
|
146
|
+
expect(document.title).to eq("Sir")
|
147
147
|
end
|
148
148
|
end
|
149
149
|
|
@@ -158,7 +158,7 @@ describe Mongoid::Factory do
|
|
158
158
|
end
|
159
159
|
|
160
160
|
it "instantiates based on the type" do
|
161
|
-
person.title.
|
161
|
+
expect(person.title).to eq("Sir")
|
162
162
|
end
|
163
163
|
end
|
164
164
|
end
|
@@ -174,11 +174,11 @@ describe Mongoid::Factory do
|
|
174
174
|
end
|
175
175
|
|
176
176
|
it "generates based on the provided class" do
|
177
|
-
document.
|
177
|
+
expect(document).to be_a(Person)
|
178
178
|
end
|
179
179
|
|
180
180
|
it "sets the attributes" do
|
181
|
-
document.title.
|
181
|
+
expect(document.title).to eq("Sir")
|
182
182
|
end
|
183
183
|
end
|
184
184
|
end
|
@@ -52,7 +52,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
52
52
|
end
|
53
53
|
|
54
54
|
it "adds the current to the modifications" do
|
55
|
-
mods["preference_ids"].
|
55
|
+
expect(mods["preference_ids"]).to eq(
|
56
56
|
[ preference_one.id, preference_three.id ]
|
57
57
|
)
|
58
58
|
end
|
@@ -62,7 +62,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
62
62
|
describe "#eval_default" do
|
63
63
|
|
64
64
|
let(:default) do
|
65
|
-
[
|
65
|
+
[ BSON::ObjectId.new ]
|
66
66
|
end
|
67
67
|
|
68
68
|
let(:field) do
|
@@ -76,11 +76,11 @@ describe Mongoid::Fields::ForeignKey do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
it "dups the default value" do
|
79
|
-
field.eval_default(Person.new).
|
79
|
+
expect(field.eval_default(Person.new)).to_not equal(default)
|
80
80
|
end
|
81
81
|
|
82
82
|
it "returns the correct value" do
|
83
|
-
field.eval_default(Person.new).
|
83
|
+
expect(field.eval_default(Person.new)).to eq(default)
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
@@ -97,7 +97,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
it "returns true" do
|
100
|
-
field.
|
100
|
+
expect(field).to be_foreign_key
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
@@ -122,7 +122,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
122
122
|
end
|
123
123
|
|
124
124
|
it "returns the id for the document" do
|
125
|
-
evolved.
|
125
|
+
expect(evolved).to eq(game.id)
|
126
126
|
end
|
127
127
|
end
|
128
128
|
|
@@ -137,7 +137,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
137
137
|
context "when the value is an id string" do
|
138
138
|
|
139
139
|
let(:id) do
|
140
|
-
|
140
|
+
BSON::ObjectId.new
|
141
141
|
end
|
142
142
|
|
143
143
|
let(:evolved) do
|
@@ -145,7 +145,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
145
145
|
end
|
146
146
|
|
147
147
|
it "converts the value to an object id" do
|
148
|
-
evolved.
|
148
|
+
expect(evolved).to eq(id)
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
@@ -156,7 +156,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
156
156
|
end
|
157
157
|
|
158
158
|
it "does not convert the value" do
|
159
|
-
evolved.
|
159
|
+
expect(evolved).to eq("testing")
|
160
160
|
end
|
161
161
|
end
|
162
162
|
|
@@ -167,7 +167,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
167
167
|
end
|
168
168
|
|
169
169
|
it "does not convert the value" do
|
170
|
-
evolved.
|
170
|
+
expect(evolved).to be_empty
|
171
171
|
end
|
172
172
|
end
|
173
173
|
end
|
@@ -179,11 +179,11 @@ describe Mongoid::Fields::ForeignKey do
|
|
179
179
|
context "when the relation stores ids as object ids" do
|
180
180
|
|
181
181
|
let(:id_one) do
|
182
|
-
|
182
|
+
BSON::ObjectId.new
|
183
183
|
end
|
184
184
|
|
185
185
|
let(:id_two) do
|
186
|
-
|
186
|
+
BSON::ObjectId.new
|
187
187
|
end
|
188
188
|
|
189
189
|
let(:evolved) do
|
@@ -191,7 +191,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
191
191
|
end
|
192
192
|
|
193
193
|
it "converts the value to an object id" do
|
194
|
-
evolved.
|
194
|
+
expect(evolved).to eq([ id_one, id_two ])
|
195
195
|
end
|
196
196
|
end
|
197
197
|
|
@@ -206,11 +206,11 @@ describe Mongoid::Fields::ForeignKey do
|
|
206
206
|
end
|
207
207
|
|
208
208
|
let(:id_one) do
|
209
|
-
|
209
|
+
BSON::ObjectId.new.to_s
|
210
210
|
end
|
211
211
|
|
212
212
|
let(:id_two) do
|
213
|
-
|
213
|
+
BSON::ObjectId.new.to_s
|
214
214
|
end
|
215
215
|
|
216
216
|
let(:evolved) do
|
@@ -218,7 +218,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
218
218
|
end
|
219
219
|
|
220
220
|
it "does not convert the values to object ids" do
|
221
|
-
evolved.
|
221
|
+
expect(evolved).to eq([ id_one, id_two ])
|
222
222
|
end
|
223
223
|
end
|
224
224
|
end
|
@@ -230,7 +230,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
230
230
|
end
|
231
231
|
|
232
232
|
it "does not convert the value" do
|
233
|
-
evolved.
|
233
|
+
expect(evolved).to eq([ "testing" ])
|
234
234
|
end
|
235
235
|
end
|
236
236
|
|
@@ -241,7 +241,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
241
241
|
end
|
242
242
|
|
243
243
|
it "does not convert the value" do
|
244
|
-
evolved.
|
244
|
+
expect(evolved).to eq([ "" ])
|
245
245
|
end
|
246
246
|
end
|
247
247
|
|
@@ -252,7 +252,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
252
252
|
end
|
253
253
|
|
254
254
|
it "does not convert the value" do
|
255
|
-
evolved.
|
255
|
+
expect(evolved).to eq([ nil ])
|
256
256
|
end
|
257
257
|
end
|
258
258
|
end
|
@@ -275,7 +275,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
275
275
|
context "when the value is an id string" do
|
276
276
|
|
277
277
|
let(:id) do
|
278
|
-
|
278
|
+
BSON::ObjectId.new
|
279
279
|
end
|
280
280
|
|
281
281
|
let(:evolved) do
|
@@ -283,7 +283,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
283
283
|
end
|
284
284
|
|
285
285
|
it "converts the value to an object id" do
|
286
|
-
evolved.
|
286
|
+
expect(evolved).to eq(id)
|
287
287
|
end
|
288
288
|
end
|
289
289
|
|
@@ -294,7 +294,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
294
294
|
end
|
295
295
|
|
296
296
|
it "does not convert the value" do
|
297
|
-
evolved.
|
297
|
+
expect(evolved).to eq("testing")
|
298
298
|
end
|
299
299
|
end
|
300
300
|
|
@@ -305,7 +305,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
305
305
|
end
|
306
306
|
|
307
307
|
it "does not convert the value" do
|
308
|
-
evolved.
|
308
|
+
expect(evolved).to be_empty
|
309
309
|
end
|
310
310
|
end
|
311
311
|
end
|
@@ -323,7 +323,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
323
323
|
context "when the value is an id string" do
|
324
324
|
|
325
325
|
let(:id) do
|
326
|
-
|
326
|
+
BSON::ObjectId.new
|
327
327
|
end
|
328
328
|
|
329
329
|
let(:evolved) do
|
@@ -331,7 +331,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
331
331
|
end
|
332
332
|
|
333
333
|
it "does not convert the value to an object id" do
|
334
|
-
evolved.
|
334
|
+
expect(evolved).to eq(id.to_s)
|
335
335
|
end
|
336
336
|
end
|
337
337
|
|
@@ -342,7 +342,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
342
342
|
end
|
343
343
|
|
344
344
|
it "does not convert the value" do
|
345
|
-
evolved.
|
345
|
+
expect(evolved).to eq("testing")
|
346
346
|
end
|
347
347
|
end
|
348
348
|
|
@@ -353,7 +353,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
353
353
|
end
|
354
354
|
|
355
355
|
it "does not convert the value" do
|
356
|
-
evolved.
|
356
|
+
expect(evolved).to be_empty
|
357
357
|
end
|
358
358
|
end
|
359
359
|
end
|
@@ -366,11 +366,11 @@ describe Mongoid::Fields::ForeignKey do
|
|
366
366
|
context "when the relation stores ids as object ids" do
|
367
367
|
|
368
368
|
let(:id_one) do
|
369
|
-
|
369
|
+
BSON::ObjectId.new
|
370
370
|
end
|
371
371
|
|
372
372
|
let(:id_two) do
|
373
|
-
|
373
|
+
BSON::ObjectId.new
|
374
374
|
end
|
375
375
|
|
376
376
|
let(:evolved) do
|
@@ -378,7 +378,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
378
378
|
end
|
379
379
|
|
380
380
|
it "converts the value to an object id" do
|
381
|
-
evolved.
|
381
|
+
expect(evolved).to eq([ id_one, id_two ])
|
382
382
|
end
|
383
383
|
end
|
384
384
|
|
@@ -393,11 +393,11 @@ describe Mongoid::Fields::ForeignKey do
|
|
393
393
|
end
|
394
394
|
|
395
395
|
let(:id_one) do
|
396
|
-
|
396
|
+
BSON::ObjectId.new.to_s
|
397
397
|
end
|
398
398
|
|
399
399
|
let(:id_two) do
|
400
|
-
|
400
|
+
BSON::ObjectId.new.to_s
|
401
401
|
end
|
402
402
|
|
403
403
|
let(:evolved) do
|
@@ -405,7 +405,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
405
405
|
end
|
406
406
|
|
407
407
|
it "does not convert the values to object ids" do
|
408
|
-
evolved.
|
408
|
+
expect(evolved).to eq([ id_one, id_two ])
|
409
409
|
end
|
410
410
|
end
|
411
411
|
end
|
@@ -417,7 +417,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
417
417
|
end
|
418
418
|
|
419
419
|
it "does not convert the value" do
|
420
|
-
evolved.
|
420
|
+
expect(evolved).to eq([ "testing" ])
|
421
421
|
end
|
422
422
|
end
|
423
423
|
|
@@ -428,7 +428,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
428
428
|
end
|
429
429
|
|
430
430
|
it "does not convert the value" do
|
431
|
-
evolved.
|
431
|
+
expect(evolved).to eq([ "" ])
|
432
432
|
end
|
433
433
|
end
|
434
434
|
|
@@ -439,7 +439,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
439
439
|
end
|
440
440
|
|
441
441
|
it "does not convert the value" do
|
442
|
-
evolved.
|
442
|
+
expect(evolved).to eq([ nil ])
|
443
443
|
end
|
444
444
|
end
|
445
445
|
end
|
@@ -451,22 +451,22 @@ describe Mongoid::Fields::ForeignKey do
|
|
451
451
|
context "when the key is resizable" do
|
452
452
|
|
453
453
|
let(:field) do
|
454
|
-
described_class.new(:test, type: Array)
|
454
|
+
described_class.new(:test, type: Array, overwrite: true)
|
455
455
|
end
|
456
456
|
|
457
457
|
it "returns true" do
|
458
|
-
field.
|
458
|
+
expect(field).to be_lazy
|
459
459
|
end
|
460
460
|
end
|
461
461
|
|
462
462
|
context "when the key is not resizable" do
|
463
463
|
|
464
464
|
let(:field) do
|
465
|
-
described_class.new(:test, type:
|
465
|
+
described_class.new(:test, type: BSON::ObjectId, overwrite: true)
|
466
466
|
end
|
467
467
|
|
468
468
|
it "returns false" do
|
469
|
-
field.
|
469
|
+
expect(field).to_not be_lazy
|
470
470
|
end
|
471
471
|
end
|
472
472
|
end
|
@@ -491,14 +491,15 @@ describe Mongoid::Fields::ForeignKey do
|
|
491
491
|
type: Array,
|
492
492
|
default: [],
|
493
493
|
identity: true,
|
494
|
-
metadata: metadata
|
494
|
+
metadata: metadata,
|
495
|
+
overwrite: true
|
495
496
|
)
|
496
497
|
end
|
497
498
|
|
498
499
|
context "when provided nil" do
|
499
500
|
|
500
501
|
it "returns an empty array" do
|
501
|
-
field.mongoize(nil).
|
502
|
+
expect(field.mongoize(nil)).to be_empty
|
502
503
|
end
|
503
504
|
end
|
504
505
|
|
@@ -509,29 +510,29 @@ describe Mongoid::Fields::ForeignKey do
|
|
509
510
|
end
|
510
511
|
|
511
512
|
it "returns an empty array" do
|
512
|
-
field.mongoize(array).
|
513
|
+
expect(field.mongoize(array)).to eq(array)
|
513
514
|
end
|
514
515
|
|
515
516
|
it "returns the same instance" do
|
516
|
-
field.mongoize(array).
|
517
|
+
expect(field.mongoize(array)).to equal(array)
|
517
518
|
end
|
518
519
|
end
|
519
520
|
|
520
521
|
context "when using object ids" do
|
521
522
|
|
522
523
|
let(:object_id) do
|
523
|
-
|
524
|
+
BSON::ObjectId.new
|
524
525
|
end
|
525
526
|
|
526
527
|
it "performs conversion on the ids if strings" do
|
527
|
-
field.mongoize([object_id.to_s]).
|
528
|
+
expect(field.mongoize([object_id.to_s])).to eq([object_id])
|
528
529
|
end
|
529
530
|
end
|
530
531
|
|
531
532
|
context "when not using object ids" do
|
532
533
|
|
533
534
|
let(:object_id) do
|
534
|
-
|
535
|
+
BSON::ObjectId.new
|
535
536
|
end
|
536
537
|
|
537
538
|
before do
|
@@ -539,21 +540,23 @@ describe Mongoid::Fields::ForeignKey do
|
|
539
540
|
:_id,
|
540
541
|
type: String,
|
541
542
|
pre_processed: true,
|
542
|
-
default: ->{
|
543
|
+
default: ->{ BSON::ObjectId.new.to_s },
|
544
|
+
overwrite: true
|
543
545
|
)
|
544
546
|
end
|
545
547
|
|
546
548
|
after do
|
547
549
|
Person.field(
|
548
550
|
:_id,
|
549
|
-
type:
|
551
|
+
type: BSON::ObjectId,
|
550
552
|
pre_processed: true,
|
551
|
-
default: ->{
|
553
|
+
default: ->{ BSON::ObjectId.new },
|
554
|
+
overwrite: true
|
552
555
|
)
|
553
556
|
end
|
554
557
|
|
555
558
|
it "does not convert" do
|
556
|
-
field.mongoize([object_id.to_s]).
|
559
|
+
expect(field.mongoize([object_id.to_s])).to eq([object_id.to_s])
|
557
560
|
end
|
558
561
|
end
|
559
562
|
end
|
@@ -577,18 +580,19 @@ describe Mongoid::Fields::ForeignKey do
|
|
577
580
|
type: Object,
|
578
581
|
default: nil,
|
579
582
|
identity: true,
|
580
|
-
metadata: metadata
|
583
|
+
metadata: metadata,
|
584
|
+
overwrite: true
|
581
585
|
)
|
582
586
|
end
|
583
587
|
|
584
588
|
context "when using object ids" do
|
585
589
|
|
586
590
|
let(:object_id) do
|
587
|
-
|
591
|
+
BSON::ObjectId.new
|
588
592
|
end
|
589
593
|
|
590
594
|
it "performs conversion on the ids if strings" do
|
591
|
-
field.mongoize(object_id.to_s).
|
595
|
+
expect(field.mongoize(object_id.to_s)).to eq(object_id)
|
592
596
|
end
|
593
597
|
end
|
594
598
|
|
@@ -599,7 +603,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
599
603
|
context "when provided a string" do
|
600
604
|
|
601
605
|
let(:object_id) do
|
602
|
-
|
606
|
+
BSON::ObjectId.new
|
603
607
|
end
|
604
608
|
|
605
609
|
before do
|
@@ -607,21 +611,23 @@ describe Mongoid::Fields::ForeignKey do
|
|
607
611
|
:_id,
|
608
612
|
type: String,
|
609
613
|
pre_processed: true,
|
610
|
-
default: ->{
|
614
|
+
default: ->{ BSON::ObjectId.new.to_s },
|
615
|
+
overwrite: true
|
611
616
|
)
|
612
617
|
end
|
613
618
|
|
614
619
|
after do
|
615
620
|
Person.field(
|
616
621
|
:_id,
|
617
|
-
type:
|
622
|
+
type: BSON::ObjectId,
|
618
623
|
pre_processed: true,
|
619
|
-
default: ->{
|
624
|
+
default: ->{ BSON::ObjectId.new },
|
625
|
+
overwrite: true
|
620
626
|
)
|
621
627
|
end
|
622
628
|
|
623
629
|
it "does not convert" do
|
624
|
-
field.mongoize(object_id.to_s).
|
630
|
+
expect(field.mongoize(object_id.to_s)).to eq(object_id.to_s)
|
625
631
|
end
|
626
632
|
end
|
627
633
|
end
|
@@ -631,20 +637,21 @@ describe Mongoid::Fields::ForeignKey do
|
|
631
637
|
context "when provided a string" do
|
632
638
|
|
633
639
|
before do
|
634
|
-
Person.field(:_id, type: Integer)
|
640
|
+
Person.field(:_id, type: Integer, overwrite: true)
|
635
641
|
end
|
636
642
|
|
637
643
|
after do
|
638
644
|
Person.field(
|
639
645
|
:_id,
|
640
|
-
type:
|
646
|
+
type: BSON::ObjectId,
|
641
647
|
pre_processed: true,
|
642
|
-
default: ->{
|
648
|
+
default: ->{ BSON::ObjectId.new },
|
649
|
+
overwrite: true
|
643
650
|
)
|
644
651
|
end
|
645
652
|
|
646
653
|
it "converts the string to an integer" do
|
647
|
-
field.mongoize("1").
|
654
|
+
expect(field.mongoize("1")).to eq(1)
|
648
655
|
end
|
649
656
|
end
|
650
657
|
end
|
@@ -662,7 +669,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
662
669
|
end
|
663
670
|
|
664
671
|
it "returns true" do
|
665
|
-
field.
|
672
|
+
expect(field).to be_resizable
|
666
673
|
end
|
667
674
|
end
|
668
675
|
|
@@ -673,7 +680,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
673
680
|
end
|
674
681
|
|
675
682
|
it "returns false" do
|
676
|
-
field.
|
683
|
+
expect(field).to_not be_resizable
|
677
684
|
end
|
678
685
|
end
|
679
686
|
end
|
@@ -687,7 +694,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
687
694
|
end
|
688
695
|
|
689
696
|
it "casts the ids on the initial set" do
|
690
|
-
agent.account_ids.
|
697
|
+
expect(agent.account_ids).to eq([ "true", "false", "1", "2" ])
|
691
698
|
end
|
692
699
|
end
|
693
700
|
end
|