mongoid 3.1.7 → 4.0.0.alpha1
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 +317 -11
- data/README.md +4 -5
- data/lib/config/locales/en.yml +9 -12
- data/lib/mongoid.rb +6 -75
- data/lib/mongoid/atomic.rb +0 -11
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +30 -108
- 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} +5 -2
- data/lib/mongoid/composable.rb +104 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/command.rb +26 -0
- data/lib/mongoid/contextual/map_reduce.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +6 -5
- data/lib/mongoid/contextual/mongo.rb +59 -28
- data/lib/mongoid/contextual/text_search.rb +180 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +13 -33
- data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
- 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 +1 -1
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +28 -12
- data/lib/mongoid/errors.rb +1 -1
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/extensions.rb +2 -7
- data/lib/mongoid/extensions/array.rb +2 -2
- data/lib/mongoid/extensions/boolean.rb +14 -17
- data/lib/mongoid/extensions/float.rb +1 -0
- data/lib/mongoid/extensions/hash.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +8 -2
- data/lib/mongoid/extensions/string.rb +5 -17
- data/lib/mongoid/extensions/time.rb +2 -2
- data/lib/mongoid/factory.rb +3 -3
- data/lib/mongoid/fields.rb +9 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/standard.rb +4 -16
- data/lib/mongoid/fields/validators/macro.rb +11 -3
- data/lib/mongoid/{finders.rb → findable.rb} +6 -2
- 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} +3 -52
- data/lib/mongoid/log_subscriber.rb +22 -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 +1 -1
- 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 +212 -0
- data/lib/mongoid/persistable/creatable.rb +188 -0
- data/lib/mongoid/persistable/deletable.rb +148 -0
- data/lib/mongoid/persistable/destroyable.rb +55 -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 +151 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/railtie.rb +32 -45
- data/lib/mongoid/railties/database.rake +12 -6
- data/lib/mongoid/relations.rb +3 -3
- data/lib/mongoid/relations/accessors.rb +13 -46
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +0 -23
- 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 +3 -1
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
- 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 +47 -0
- data/lib/mongoid/relations/eager/base.rb +57 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
- data/lib/mongoid/relations/eager/has_many.rb +37 -0
- data/lib/mongoid/relations/eager/has_one.rb +29 -0
- data/lib/mongoid/relations/embedded/batchable.rb +3 -4
- data/lib/mongoid/relations/embedded/many.rb +7 -27
- data/lib/mongoid/relations/macros.rb +2 -4
- data/lib/mongoid/relations/many.rb +30 -31
- data/lib/mongoid/relations/metadata.rb +6 -75
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +10 -32
- data/lib/mongoid/relations/referenced/in.rb +2 -18
- data/lib/mongoid/relations/referenced/many.rb +9 -22
- data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
- data/lib/mongoid/relations/referenced/one.rb +2 -21
- data/lib/mongoid/relations/synchronization.rb +3 -3
- data/lib/mongoid/relations/touchable.rb +33 -0
- data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
- data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +176 -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 +15 -1
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/threaded.rb +0 -110
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
- data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
- 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 +3 -3
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
- 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 +59 -57
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +1 -0
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +6 -1
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +2 -2
- 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/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/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- 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 +0 -2
- 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/login.rb +1 -1
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +1 -1
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +13 -8
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +1 -1
- data/spec/app/models/post.rb +2 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +5 -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/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 +1 -1
- data/spec/app/models/video.rb +0 -4
- data/spec/app/models/wiki_page.rb +1 -4
- 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/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} +335 -448
- data/spec/mongoid/attributes/readonly_spec.rb +16 -16
- data/spec/mongoid/attributes_spec.rb +188 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
- 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 +46 -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 +94 -94
- data/spec/mongoid/contextual/mongo_spec.rb +225 -139
- data/spec/mongoid/contextual/text_search_spec.rb +207 -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 +1063 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
- data/spec/mongoid/criteria_spec.rb +530 -2207
- data/spec/mongoid/document_spec.rb +166 -120
- 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_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 +3 -3
- 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 +7 -7
- 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/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 +9 -9
- 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 +15 -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 +23 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +168 -209
- data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
- 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} +105 -105
- data/spec/mongoid/log_subscriber_spec.rb +74 -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/{matchers → matchable}/ne_spec.rb +3 -3
- 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 +512 -0
- data/spec/mongoid/persistable/deletable_spec.rb +205 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +148 -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 +432 -0
- data/spec/mongoid/persistable/settable_spec.rb +139 -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} +19 -14
- 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 +36 -16
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
- 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 +22 -33
- 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 +11 -24
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
- data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
- 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 +143 -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 +55 -56
- data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
- data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +147 -241
- 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 +379 -522
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
- data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
- 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 +116 -116
- data/spec/mongoid/relations/touchable_spec.rb +296 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -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 +92 -0
- data/spec/mongoid/sessions_spec.rb +288 -177
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/state_spec.rb +10 -10
- 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/updated/short_spec.rb +10 -10
- data/spec/mongoid/timestamps/updated_spec.rb +8 -12
- data/spec/mongoid/timestamps_spec.rb +7 -11
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +72 -87
- data/spec/spec_helper.rb +19 -17
- metadata +261 -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/criterion/findable.rb +0 -179
- 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/draft.rb +0 -9
- 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/#atomic_spec.rb# +0 -365
- 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/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/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
@@ -30,11 +30,11 @@ describe Mongoid::Sessions::Factory do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it "returns a session" do
|
33
|
-
session.
|
33
|
+
expect(session).to be_a(Moped::Session)
|
34
34
|
end
|
35
35
|
|
36
36
|
it "sets the cluster's seeds" do
|
37
|
-
cluster.seeds.
|
37
|
+
expect(cluster.seeds.first.address.resolved).to eq("127.0.0.1:27017")
|
38
38
|
end
|
39
39
|
end
|
40
40
|
|
@@ -64,15 +64,15 @@ describe Mongoid::Sessions::Factory do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
it "returns a session" do
|
67
|
-
session.
|
67
|
+
expect(session).to be_a(Moped::Session)
|
68
68
|
end
|
69
69
|
|
70
70
|
it "sets the cluster's seed ports to 27017" do
|
71
|
-
cluster.seeds.
|
71
|
+
expect(cluster.seeds.first.address.original).to eq("localhost:27017")
|
72
72
|
end
|
73
73
|
|
74
74
|
it "sets ips with no ports to 27017" do
|
75
|
-
default.cluster.seeds.
|
75
|
+
expect(default.cluster.seeds.first.address.original).to eq("127.0.0.1:27017")
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
@@ -100,30 +100,30 @@ describe Mongoid::Sessions::Factory do
|
|
100
100
|
end
|
101
101
|
|
102
102
|
it "returns a session" do
|
103
|
-
session.
|
103
|
+
expect(session).to be_a(Moped::Session)
|
104
104
|
end
|
105
105
|
|
106
106
|
it "sets the cluster's seeds" do
|
107
|
-
cluster.seeds.
|
107
|
+
expect(cluster.seeds.first.address.original).to eq("localhost:27017")
|
108
108
|
end
|
109
109
|
|
110
110
|
it "sets the database" do
|
111
|
-
session.options[:database].
|
111
|
+
expect(session.options[:database]).to eq("mongoid_test")
|
112
112
|
end
|
113
113
|
|
114
114
|
it "sets the database in the configuration" do
|
115
115
|
session
|
116
|
-
Mongoid.sessions[:secondary].
|
116
|
+
expect(Mongoid.sessions[:secondary]).to include(:database)
|
117
117
|
end
|
118
118
|
|
119
119
|
it "sets the hosts in the configuration" do
|
120
120
|
session
|
121
|
-
Mongoid.sessions[:secondary].
|
121
|
+
expect(Mongoid.sessions[:secondary]).to include(:hosts)
|
122
122
|
end
|
123
123
|
|
124
124
|
it "removes the uri from the configuration" do
|
125
125
|
session
|
126
|
-
Mongoid.sessions[:secondary].
|
126
|
+
expect(Mongoid.sessions[:secondary]).to_not include(:uri)
|
127
127
|
end
|
128
128
|
end
|
129
129
|
|
@@ -148,31 +148,35 @@ describe Mongoid::Sessions::Factory do
|
|
148
148
|
session.cluster
|
149
149
|
end
|
150
150
|
|
151
|
+
let(:seeds) do
|
152
|
+
cluster.seeds.map{ |node| node.address.original }
|
153
|
+
end
|
154
|
+
|
151
155
|
it "returns a session" do
|
152
|
-
session.
|
156
|
+
expect(session).to be_a(Moped::Session)
|
153
157
|
end
|
154
158
|
|
155
159
|
it "sets the cluster's seeds" do
|
156
|
-
|
160
|
+
expect(seeds).to eq([ "localhost:27017", "localhost:27017" ])
|
157
161
|
end
|
158
162
|
|
159
163
|
it "sets the database" do
|
160
|
-
session.options[:database].
|
164
|
+
expect(session.options[:database]).to eq("mongoid_test")
|
161
165
|
end
|
162
166
|
|
163
167
|
it "sets the database in the configuration" do
|
164
168
|
session
|
165
|
-
Mongoid.sessions[:secondary].
|
169
|
+
expect(Mongoid.sessions[:secondary]).to include(:database)
|
166
170
|
end
|
167
171
|
|
168
172
|
it "sets the hosts in the configuration" do
|
169
173
|
session
|
170
|
-
Mongoid.sessions[:secondary].
|
174
|
+
expect(Mongoid.sessions[:secondary]).to include(:hosts)
|
171
175
|
end
|
172
176
|
|
173
177
|
it "removes the uri from the configuration" do
|
174
178
|
session
|
175
|
-
Mongoid.sessions[:secondary].
|
179
|
+
expect(Mongoid.sessions[:secondary]).to_not include(:uri)
|
176
180
|
end
|
177
181
|
end
|
178
182
|
end
|
@@ -206,12 +210,16 @@ describe Mongoid::Sessions::Factory do
|
|
206
210
|
session.cluster
|
207
211
|
end
|
208
212
|
|
213
|
+
let(:seeds) do
|
214
|
+
cluster.seeds.map{ |node| node.address.original }
|
215
|
+
end
|
216
|
+
|
209
217
|
it "returns the default session" do
|
210
|
-
session.
|
218
|
+
expect(session).to be_a(Moped::Session)
|
211
219
|
end
|
212
220
|
|
213
221
|
it "sets the cluster's seeds" do
|
214
|
-
|
222
|
+
expect(seeds).to eq([ "localhost:27017" ])
|
215
223
|
end
|
216
224
|
end
|
217
225
|
|
@@ -247,12 +255,16 @@ describe Mongoid::Sessions::Factory do
|
|
247
255
|
session.cluster
|
248
256
|
end
|
249
257
|
|
258
|
+
let(:seeds) do
|
259
|
+
cluster.seeds.map{ |node| node.address.original }
|
260
|
+
end
|
261
|
+
|
250
262
|
it "returns the default session" do
|
251
|
-
session.
|
263
|
+
expect(session).to be_a(Moped::Session)
|
252
264
|
end
|
253
265
|
|
254
266
|
it "sets the cluster's seeds" do
|
255
|
-
|
267
|
+
expect(seeds).to eq([ "localhost:27017" ])
|
256
268
|
end
|
257
269
|
end
|
258
270
|
|
@@ -267,7 +279,8 @@ describe Mongoid::Sessions::Factory do
|
|
267
279
|
"down_interval" => 10,
|
268
280
|
"max_retries" => 5,
|
269
281
|
"refresh_interval" => 30,
|
270
|
-
"retry_interval" => 0.1
|
282
|
+
"retry_interval" => 0.1,
|
283
|
+
"write" => { "w" => 1 }
|
271
284
|
}
|
272
285
|
}
|
273
286
|
}
|
@@ -285,28 +298,36 @@ describe Mongoid::Sessions::Factory do
|
|
285
298
|
session.cluster
|
286
299
|
end
|
287
300
|
|
301
|
+
let(:seeds) do
|
302
|
+
cluster.seeds.map{ |node| node.address.original }
|
303
|
+
end
|
304
|
+
|
288
305
|
it "returns the default session" do
|
289
|
-
session.
|
306
|
+
expect(session).to be_a(Moped::Session)
|
290
307
|
end
|
291
308
|
|
292
309
|
it "sets the cluster's seeds" do
|
293
|
-
|
310
|
+
expect(seeds).to eq([ "localhost:27017" ])
|
294
311
|
end
|
295
312
|
|
296
313
|
it "sets the cluster down interval" do
|
297
|
-
cluster.down_interval.
|
314
|
+
expect(cluster.down_interval).to eq(10)
|
298
315
|
end
|
299
316
|
|
300
317
|
it "sets the cluster max retries" do
|
301
|
-
cluster.max_retries.
|
318
|
+
expect(cluster.max_retries).to eq(5)
|
302
319
|
end
|
303
320
|
|
304
321
|
it "sets the cluster refresh interval" do
|
305
|
-
cluster.refresh_interval.
|
322
|
+
expect(cluster.refresh_interval).to eq(30)
|
306
323
|
end
|
307
324
|
|
308
325
|
it "sets the cluster retry interval" do
|
309
|
-
cluster.retry_interval.
|
326
|
+
expect(cluster.retry_interval).to eq(0.1)
|
327
|
+
end
|
328
|
+
|
329
|
+
it "sets the write concern" do
|
330
|
+
expect(session.write_concern).to be_a(Moped::WriteConcern::Propagate)
|
310
331
|
end
|
311
332
|
end
|
312
333
|
end
|
@@ -17,7 +17,7 @@ describe Mongoid::Sessions::MongoUri do
|
|
17
17
|
end
|
18
18
|
|
19
19
|
it "returns the database name" do
|
20
|
-
uri.database.
|
20
|
+
expect(uri.database).to eq("mongoid_test")
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
@@ -30,7 +30,7 @@ describe Mongoid::Sessions::MongoUri do
|
|
30
30
|
end
|
31
31
|
|
32
32
|
it "returns an array with 1 node" do
|
33
|
-
uri.hosts.
|
33
|
+
expect(uri.hosts).to eq([ "localhost:27017" ])
|
34
34
|
end
|
35
35
|
end
|
36
36
|
|
@@ -41,7 +41,7 @@ describe Mongoid::Sessions::MongoUri do
|
|
41
41
|
end
|
42
42
|
|
43
43
|
it "returns an array with 2 nodes" do
|
44
|
-
uri.hosts.
|
44
|
+
expect(uri.hosts).to eq([ "localhost:27017", "localhost:27017" ])
|
45
45
|
end
|
46
46
|
end
|
47
47
|
end
|
@@ -53,7 +53,7 @@ describe Mongoid::Sessions::MongoUri do
|
|
53
53
|
end
|
54
54
|
|
55
55
|
it "returns the password" do
|
56
|
-
uri.password.
|
56
|
+
expect(uri.password).to eq("pass")
|
57
57
|
end
|
58
58
|
end
|
59
59
|
|
@@ -66,7 +66,7 @@ describe Mongoid::Sessions::MongoUri do
|
|
66
66
|
end
|
67
67
|
|
68
68
|
it "does not include the username and password" do
|
69
|
-
uri.to_hash.
|
69
|
+
expect(uri.to_hash).to eq({
|
70
70
|
hosts: [ "localhost:27017", "localhost:27017" ],
|
71
71
|
database: "mongoid_test"
|
72
72
|
})
|
@@ -80,7 +80,7 @@ describe Mongoid::Sessions::MongoUri do
|
|
80
80
|
end
|
81
81
|
|
82
82
|
it "includes the username and password" do
|
83
|
-
uri.to_hash.
|
83
|
+
expect(uri.to_hash).to eq({
|
84
84
|
hosts: [ "localhost:27017" ],
|
85
85
|
database: "mongoid_test",
|
86
86
|
username: "user",
|
@@ -97,7 +97,7 @@ describe Mongoid::Sessions::MongoUri do
|
|
97
97
|
end
|
98
98
|
|
99
99
|
it "returns the userame" do
|
100
|
-
uri.username.
|
100
|
+
expect(uri.username).to eq("user")
|
101
101
|
end
|
102
102
|
end
|
103
103
|
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Sessions::Options do
|
4
|
+
|
5
|
+
describe "#with" do
|
6
|
+
|
7
|
+
context "when passing some options" do
|
8
|
+
|
9
|
+
let(:options) { { database: 'test' } }
|
10
|
+
|
11
|
+
let!(:klass) do
|
12
|
+
Band.with(options)
|
13
|
+
end
|
14
|
+
|
15
|
+
it "sets the options into the class" do
|
16
|
+
expect(klass.persistence_options).to eq(options)
|
17
|
+
end
|
18
|
+
|
19
|
+
it "sets the options into the instance" do
|
20
|
+
expect(klass.new.persistence_options).to eq(options)
|
21
|
+
end
|
22
|
+
|
23
|
+
it "doesnt set the options on class level" do
|
24
|
+
expect(Band.new.persistence_options).to be_nil
|
25
|
+
end
|
26
|
+
|
27
|
+
context "when calling .collection method" do
|
28
|
+
|
29
|
+
before do
|
30
|
+
klass.collection
|
31
|
+
end
|
32
|
+
|
33
|
+
it "keeps the options" do
|
34
|
+
expect(klass.persistence_options).to eq(options)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
describe ".with" do
|
41
|
+
|
42
|
+
let(:options) { { database: 'test' } }
|
43
|
+
|
44
|
+
let(:instance) do
|
45
|
+
Band.new.with(options)
|
46
|
+
end
|
47
|
+
|
48
|
+
it "sets the options into" do
|
49
|
+
expect(instance.persistence_options).to eq(options)
|
50
|
+
end
|
51
|
+
|
52
|
+
it "passes down the options to collection" do
|
53
|
+
Moped::Session.any_instance.should_receive(:with).with(options).and_return({})
|
54
|
+
instance.collection
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
describe "#persistence_options" do
|
59
|
+
|
60
|
+
it "touches the thread local" do
|
61
|
+
expect(Thread.current).to receive(:[]).with("[mongoid][Band]:persistence-options").and_return({foo: :bar})
|
62
|
+
expect(Band.persistence_options).to eq({foo: :bar})
|
63
|
+
end
|
64
|
+
|
65
|
+
it "cannot force a value on thread local" do
|
66
|
+
expect {
|
67
|
+
Band.set_persistence_options(Band, {})
|
68
|
+
}.to raise_error(NoMethodError)
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
describe ".persistence_options" do
|
73
|
+
|
74
|
+
context "when options exist on the current thread" do
|
75
|
+
|
76
|
+
let(:klass) do
|
77
|
+
Band.with(write: { w: 2 })
|
78
|
+
end
|
79
|
+
|
80
|
+
it "returns the options" do
|
81
|
+
expect(klass.persistence_options).to eq(write: { w: 2 })
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
context "when there are no options on the current thread" do
|
86
|
+
|
87
|
+
it "returns nil" do
|
88
|
+
expect(Band.persistence_options).to be_nil
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
92
|
+
end
|
@@ -2,104 +2,83 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe Mongoid::Sessions do
|
4
4
|
|
5
|
-
describe "
|
6
|
-
|
7
|
-
context "when options exist on the current thread" do
|
8
|
-
|
9
|
-
before do
|
10
|
-
Band.with(safe: true)
|
11
|
-
end
|
5
|
+
describe "#collection" do
|
12
6
|
|
13
|
-
|
14
|
-
Band.clear_persistence_options
|
15
|
-
end
|
7
|
+
shared_examples_for "an overridden collection at the class level" do
|
16
8
|
|
17
|
-
|
18
|
-
|
9
|
+
let(:band) do
|
10
|
+
klass.new
|
19
11
|
end
|
20
12
|
|
21
|
-
it "returns
|
22
|
-
|
13
|
+
it "returns the collection for the model" do
|
14
|
+
expect(band.collection).to be_a(Moped::Collection)
|
23
15
|
end
|
24
|
-
end
|
25
16
|
|
26
|
-
|
27
|
-
|
28
|
-
it "returns true" do
|
29
|
-
Band.clear_persistence_options.should be_true
|
17
|
+
it "sets the correct collection name" do
|
18
|
+
expect(band.collection.name).to eq("artists")
|
30
19
|
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
describe "#collection" do
|
35
|
-
|
36
|
-
context "when overriding the default with store_in" do
|
37
|
-
|
38
|
-
shared_examples_for "an overridden collection at the class level" do
|
39
20
|
|
40
|
-
|
41
|
-
Band.new
|
42
|
-
end
|
21
|
+
context "when accessing from the class level" do
|
43
22
|
|
44
23
|
it "returns the collection for the model" do
|
45
|
-
|
24
|
+
expect(klass.collection).to be_a(Moped::Collection)
|
46
25
|
end
|
47
26
|
|
48
27
|
it "sets the correct collection name" do
|
49
|
-
|
28
|
+
expect(klass.collection.name).to eq("artists")
|
50
29
|
end
|
30
|
+
end
|
31
|
+
end
|
51
32
|
|
52
|
-
|
53
|
-
|
54
|
-
it "returns the collection for the model" do
|
55
|
-
Band.collection.should be_a(Moped::Collection)
|
56
|
-
end
|
33
|
+
context "when overriding the persistence options" do
|
57
34
|
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
end
|
35
|
+
let(:klass) do
|
36
|
+
Band.with(collection: "artists")
|
37
|
+
end
|
62
38
|
|
63
|
-
|
39
|
+
it_behaves_like "an overridden collection at the class level"
|
40
|
+
end
|
64
41
|
|
65
|
-
|
42
|
+
context "when overriding store_in and persistence options" do
|
66
43
|
|
67
|
-
|
68
|
-
|
69
|
-
|
44
|
+
let(:klass) do
|
45
|
+
Band.with(collection: "artists")
|
46
|
+
end
|
70
47
|
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
end
|
48
|
+
before do
|
49
|
+
Band.store_in collection: "foo"
|
50
|
+
end
|
75
51
|
|
76
|
-
|
77
|
-
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
52
|
+
after do
|
53
|
+
Band.reset_storage_options!
|
81
54
|
end
|
82
55
|
|
56
|
+
it_behaves_like "an overridden collection at the class level"
|
57
|
+
end
|
58
|
+
|
59
|
+
context "when overriding the default with store_in" do
|
60
|
+
|
83
61
|
after do
|
84
|
-
Band.
|
62
|
+
Band.reset_storage_options!
|
85
63
|
end
|
86
64
|
|
87
65
|
context "when called multiple times with different options" do
|
66
|
+
|
88
67
|
before do
|
89
68
|
Band.store_in collection: "artists"
|
90
69
|
Band.store_in session: "another"
|
91
70
|
end
|
92
71
|
|
93
72
|
it "should merge the options together" do
|
94
|
-
Band.storage_options.
|
95
|
-
|
96
|
-
session: "another"
|
97
|
-
}
|
73
|
+
expect(Band.storage_options[:collection]).to eq("artists")
|
74
|
+
expect(Band.storage_options[:session]).to eq("another")
|
98
75
|
end
|
99
76
|
end
|
100
77
|
|
101
78
|
context "when overriding with a proc" do
|
102
79
|
|
80
|
+
let(:klass) { Band }
|
81
|
+
|
103
82
|
before do
|
104
83
|
Band.store_in(collection: ->{ "artists" })
|
105
84
|
end
|
@@ -109,17 +88,29 @@ describe Mongoid::Sessions do
|
|
109
88
|
|
110
89
|
context "when overriding with a string" do
|
111
90
|
|
91
|
+
let(:klass) { Band }
|
92
|
+
|
112
93
|
before do
|
113
94
|
Band.store_in(collection: "artists")
|
114
95
|
end
|
115
96
|
|
97
|
+
after do
|
98
|
+
Band.reset_storage_options!
|
99
|
+
end
|
100
|
+
|
116
101
|
it_behaves_like "an overridden collection at the class level"
|
117
102
|
end
|
118
103
|
|
119
104
|
context "when overriding with a symbol" do
|
120
105
|
|
106
|
+
let(:klass) { Band }
|
107
|
+
|
121
108
|
before do
|
122
|
-
|
109
|
+
klass.store_in(collection: :artists)
|
110
|
+
end
|
111
|
+
|
112
|
+
after do
|
113
|
+
klass.reset_storage_options!
|
123
114
|
end
|
124
115
|
|
125
116
|
it_behaves_like "an overridden collection at the class level"
|
@@ -133,21 +124,21 @@ describe Mongoid::Sessions do
|
|
133
124
|
end
|
134
125
|
|
135
126
|
it "returns the collection for the model" do
|
136
|
-
band.collection.
|
127
|
+
expect(band.collection).to be_a(Moped::Collection)
|
137
128
|
end
|
138
129
|
|
139
130
|
it "sets the correct collection name" do
|
140
|
-
band.collection.name.to_s.
|
131
|
+
expect(band.collection.name.to_s).to eq("bands")
|
141
132
|
end
|
142
133
|
|
143
134
|
context "when accessing from the class level" do
|
144
135
|
|
145
136
|
it "returns the collection for the model" do
|
146
|
-
Band.collection.
|
137
|
+
expect(Band.collection).to be_a(Moped::Collection)
|
147
138
|
end
|
148
139
|
|
149
140
|
it "sets the correct collection name" do
|
150
|
-
Band.collection.name.to_s.
|
141
|
+
expect(Band.collection.name.to_s).to eq("bands")
|
151
142
|
end
|
152
143
|
end
|
153
144
|
end
|
@@ -155,31 +146,59 @@ describe Mongoid::Sessions do
|
|
155
146
|
|
156
147
|
describe "#collection_name" do
|
157
148
|
|
158
|
-
|
149
|
+
shared_examples_for "an overridden collection name at the class level" do
|
159
150
|
|
160
|
-
|
151
|
+
let(:band) do
|
152
|
+
klass.new
|
153
|
+
end
|
161
154
|
|
162
|
-
|
163
|
-
|
155
|
+
context "when accessing from the instance" do
|
156
|
+
|
157
|
+
it "returns the overridden value" do
|
158
|
+
expect(band.collection_name).to eq(:artists)
|
164
159
|
end
|
160
|
+
end
|
165
161
|
|
166
|
-
|
162
|
+
context "when accessing from the class level" do
|
167
163
|
|
168
|
-
|
169
|
-
|
170
|
-
end
|
164
|
+
it "returns the overridden value" do
|
165
|
+
expect(klass.collection_name).to eq(:artists)
|
171
166
|
end
|
167
|
+
end
|
168
|
+
end
|
172
169
|
|
173
|
-
|
170
|
+
context "when overriding the persistence options" do
|
174
171
|
|
175
|
-
|
176
|
-
|
177
|
-
|
178
|
-
|
172
|
+
let(:klass) do
|
173
|
+
Band.with(collection: "artists")
|
174
|
+
end
|
175
|
+
|
176
|
+
it_behaves_like "an overridden collection name at the class level"
|
177
|
+
end
|
178
|
+
|
179
|
+
context "when overriding store_in and persistence options" do
|
180
|
+
|
181
|
+
let(:klass) do
|
182
|
+
Band.with(collection: "artists")
|
183
|
+
end
|
184
|
+
|
185
|
+
before do
|
186
|
+
Band.store_in collection: "foo"
|
179
187
|
end
|
180
188
|
|
181
189
|
after do
|
182
|
-
Band.
|
190
|
+
Band.reset_storage_options!
|
191
|
+
end
|
192
|
+
|
193
|
+
it_behaves_like "an overridden collection name at the class level"
|
194
|
+
end
|
195
|
+
|
196
|
+
context "when overriding the default with store_in" do
|
197
|
+
|
198
|
+
let(:klass) { Band }
|
199
|
+
|
200
|
+
after do
|
201
|
+
Band.reset_storage_options!
|
183
202
|
end
|
184
203
|
|
185
204
|
context "when overriding with a proc" do
|
@@ -217,13 +236,13 @@ describe Mongoid::Sessions do
|
|
217
236
|
end
|
218
237
|
|
219
238
|
it "returns the pluralized model name" do
|
220
|
-
band.collection_name.
|
239
|
+
expect(band.collection_name).to eq(:bands)
|
221
240
|
end
|
222
241
|
|
223
242
|
context "when accessing from the class level" do
|
224
243
|
|
225
244
|
it "returns the pluralized model name" do
|
226
|
-
Band.collection_name.
|
245
|
+
expect(Band.collection_name).to eq(:bands)
|
227
246
|
end
|
228
247
|
end
|
229
248
|
end
|
@@ -235,16 +254,122 @@ describe Mongoid::Sessions do
|
|
235
254
|
end
|
236
255
|
|
237
256
|
it "returns the root class pluralized model name" do
|
238
|
-
firefox.collection_name.
|
257
|
+
expect(firefox.collection_name).to eq(:canvases)
|
239
258
|
end
|
240
259
|
|
241
260
|
context "when accessing from the class level" do
|
242
261
|
|
243
262
|
it "returns the root class pluralized model name" do
|
244
|
-
Firefox.collection_name.
|
263
|
+
expect(Firefox.collection_name).to eq(:canvases)
|
264
|
+
end
|
265
|
+
end
|
266
|
+
end
|
267
|
+
end
|
268
|
+
|
269
|
+
describe "#database_name" do
|
270
|
+
|
271
|
+
shared_examples_for "an overridden database name" do
|
272
|
+
|
273
|
+
let(:band) do
|
274
|
+
klass.new
|
275
|
+
end
|
276
|
+
|
277
|
+
context "when accessing from the instance" do
|
278
|
+
|
279
|
+
it "returns the overridden value" do
|
280
|
+
expect(band.mongo_session.options[:database].to_s).to eq(database_id_alt)
|
281
|
+
end
|
282
|
+
end
|
283
|
+
|
284
|
+
context "when accessing from the class level" do
|
285
|
+
|
286
|
+
it "returns the overridden value" do
|
287
|
+
expect(klass.database_name.to_s).to eq(database_id_alt)
|
288
|
+
end
|
289
|
+
|
290
|
+
it "session returns the overridden value" do
|
291
|
+
expect(klass.mongo_session.options[:database].to_s).to eq(database_id_alt)
|
245
292
|
end
|
246
293
|
end
|
247
294
|
end
|
295
|
+
|
296
|
+
context "when overriding the persistence options" do
|
297
|
+
|
298
|
+
let(:klass) do
|
299
|
+
Band.with(database: database_id_alt)
|
300
|
+
end
|
301
|
+
|
302
|
+
it_behaves_like "an overridden database name"
|
303
|
+
end
|
304
|
+
|
305
|
+
context "when overriding with store_in" do
|
306
|
+
|
307
|
+
let(:klass) { Band }
|
308
|
+
|
309
|
+
before do
|
310
|
+
Band.store_in database: database_id_alt
|
311
|
+
end
|
312
|
+
|
313
|
+
after do
|
314
|
+
Band.reset_storage_options!
|
315
|
+
end
|
316
|
+
|
317
|
+
it_behaves_like "an overridden database name"
|
318
|
+
end
|
319
|
+
|
320
|
+
context "when overriding store_in and persistence options" do
|
321
|
+
|
322
|
+
let(:klass) do
|
323
|
+
Band.with(database: database_id_alt)
|
324
|
+
end
|
325
|
+
|
326
|
+
before do
|
327
|
+
Band.store_in database: "foo"
|
328
|
+
end
|
329
|
+
|
330
|
+
after do
|
331
|
+
Band.reset_storage_options!
|
332
|
+
end
|
333
|
+
|
334
|
+
it_behaves_like "an overridden database name"
|
335
|
+
end
|
336
|
+
|
337
|
+
context "when overriding using the session" do
|
338
|
+
|
339
|
+
let(:session_name) { :alternative }
|
340
|
+
|
341
|
+
before do
|
342
|
+
Mongoid.sessions[session_name] = { database: database_id_alt, hosts: [ "#{HOST}:#{PORT}" ] }
|
343
|
+
end
|
344
|
+
|
345
|
+
after do
|
346
|
+
Mongoid.sessions.delete(session_name)
|
347
|
+
end
|
348
|
+
|
349
|
+
context "when overriding the persistence options" do
|
350
|
+
|
351
|
+
let(:klass) do
|
352
|
+
Band.with(session: session_name)
|
353
|
+
end
|
354
|
+
|
355
|
+
it_behaves_like "an overridden database name"
|
356
|
+
end
|
357
|
+
|
358
|
+
context "when overriding with store_in" do
|
359
|
+
|
360
|
+
let(:klass) { Band }
|
361
|
+
|
362
|
+
before do
|
363
|
+
Band.store_in(session: session_name)
|
364
|
+
end
|
365
|
+
|
366
|
+
after do
|
367
|
+
Band.reset_storage_options!
|
368
|
+
end
|
369
|
+
|
370
|
+
it_behaves_like "an overridden database name"
|
371
|
+
end
|
372
|
+
end
|
248
373
|
end
|
249
374
|
|
250
375
|
describe "#mongo_session" do
|
@@ -259,10 +384,6 @@ describe Mongoid::Sessions do
|
|
259
384
|
Mongoid.sessions[:default][:database] = database_id
|
260
385
|
end
|
261
386
|
|
262
|
-
after do
|
263
|
-
Band.storage_options = nil
|
264
|
-
end
|
265
|
-
|
266
387
|
context "when getting the default" do
|
267
388
|
|
268
389
|
let(:file) do
|
@@ -270,16 +391,11 @@ describe Mongoid::Sessions do
|
|
270
391
|
end
|
271
392
|
|
272
393
|
before do
|
273
|
-
Band.storage_options = nil
|
274
394
|
described_class.clear
|
275
395
|
Mongoid.load!(file, :test)
|
276
396
|
Mongoid.sessions[:default][:database] = database_id
|
277
397
|
end
|
278
398
|
|
279
|
-
after do
|
280
|
-
Band.storage_options = nil
|
281
|
-
end
|
282
|
-
|
283
399
|
let!(:band) do
|
284
400
|
Band.new
|
285
401
|
end
|
@@ -289,7 +405,7 @@ describe Mongoid::Sessions do
|
|
289
405
|
end
|
290
406
|
|
291
407
|
it "returns the default session" do
|
292
|
-
mongo_session.options[:database].
|
408
|
+
expect(mongo_session.options[:database].to_s).to eq(database_id)
|
293
409
|
end
|
294
410
|
end
|
295
411
|
|
@@ -306,7 +422,7 @@ describe Mongoid::Sessions do
|
|
306
422
|
end
|
307
423
|
|
308
424
|
it "returns the default session" do
|
309
|
-
single_session.options[:database].
|
425
|
+
expect(single_session.options[:database].to_s).to eq(ENV["MONGOHQ_SINGLE_NAME"])
|
310
426
|
end
|
311
427
|
end
|
312
428
|
|
@@ -350,8 +466,12 @@ describe Mongoid::Sessions do
|
|
350
466
|
|
351
467
|
shared_examples_for "an overridden session to a mongohq replica set" do
|
352
468
|
|
353
|
-
|
354
|
-
replica_session.
|
469
|
+
let(:seeds) do
|
470
|
+
replica_session.cluster.seeds.map{ |node| node.address.original }
|
471
|
+
end
|
472
|
+
|
473
|
+
it "returns the overridden session" do
|
474
|
+
expect(seeds).to eq([ ENV["MONGOHQ_REPL_1_URL"], ENV["MONGOHQ_REPL_2_URL"] ])
|
355
475
|
end
|
356
476
|
end
|
357
477
|
|
@@ -397,8 +517,12 @@ describe Mongoid::Sessions do
|
|
397
517
|
band.mongo_session
|
398
518
|
end
|
399
519
|
|
400
|
-
|
401
|
-
repl_session.
|
520
|
+
let(:seeds) do
|
521
|
+
repl_session.cluster.seeds.map{ |node| node.address.original }
|
522
|
+
end
|
523
|
+
|
524
|
+
it "returns the overridden session" do
|
525
|
+
expect(seeds).to eq([ ENV["MONGOHQ_REPL_1_URL"], ENV["MONGOHQ_REPL_2_URL"] ])
|
402
526
|
end
|
403
527
|
end
|
404
528
|
|
@@ -433,7 +557,7 @@ describe Mongoid::Sessions do
|
|
433
557
|
end
|
434
558
|
|
435
559
|
after do
|
436
|
-
Band.
|
560
|
+
Band.reset_storage_options!
|
437
561
|
end
|
438
562
|
|
439
563
|
context "when getting the default" do
|
@@ -443,7 +567,7 @@ describe Mongoid::Sessions do
|
|
443
567
|
end
|
444
568
|
|
445
569
|
before do
|
446
|
-
Band.
|
570
|
+
Band.reset_storage_options!
|
447
571
|
described_class.clear
|
448
572
|
Mongoid.load!(file, :test)
|
449
573
|
Mongoid.sessions[:default][:database] = database_id
|
@@ -454,7 +578,7 @@ describe Mongoid::Sessions do
|
|
454
578
|
end
|
455
579
|
|
456
580
|
it "returns the default session" do
|
457
|
-
mongo_session.options[:database].
|
581
|
+
expect(mongo_session.options[:database].to_s).to eq(database_id)
|
458
582
|
end
|
459
583
|
end
|
460
584
|
|
@@ -469,7 +593,7 @@ describe Mongoid::Sessions do
|
|
469
593
|
end
|
470
594
|
|
471
595
|
it "returns the default session" do
|
472
|
-
session.options[:database].
|
596
|
+
expect(session.options[:database].to_s).to eq(ENV["MONGOHQ_SINGLE_NAME"])
|
473
597
|
end
|
474
598
|
end
|
475
599
|
|
@@ -483,8 +607,12 @@ describe Mongoid::Sessions do
|
|
483
607
|
Band.mongo_session
|
484
608
|
end
|
485
609
|
|
486
|
-
|
487
|
-
repl_session.
|
610
|
+
let(:seeds) do
|
611
|
+
repl_session.cluster.seeds.map{ |node| node.address.original }
|
612
|
+
end
|
613
|
+
|
614
|
+
it "returns the overridden session" do
|
615
|
+
expect(seeds).to eq([ ENV["MONGOHQ_REPL_1_URL"], ENV["MONGOHQ_REPL_2_URL"] ])
|
488
616
|
end
|
489
617
|
end
|
490
618
|
|
@@ -502,38 +630,26 @@ describe Mongoid::Sessions do
|
|
502
630
|
end
|
503
631
|
end
|
504
632
|
|
505
|
-
describe ".
|
506
|
-
|
507
|
-
context "when options exist on the current thread" do
|
508
|
-
|
509
|
-
before do
|
510
|
-
Band.with(safe: { w: 2 })
|
511
|
-
end
|
633
|
+
describe ".store_in" do
|
512
634
|
|
513
|
-
|
514
|
-
Band.clear_persistence_options
|
515
|
-
end
|
635
|
+
context "when provided a non hash" do
|
516
636
|
|
517
|
-
it "
|
518
|
-
|
637
|
+
it "raises an error" do
|
638
|
+
expect {
|
639
|
+
Band.store_in :artists
|
640
|
+
}.to raise_error(Mongoid::Errors::InvalidStorageOptions)
|
519
641
|
end
|
520
642
|
end
|
521
643
|
|
522
|
-
context "when
|
644
|
+
context "when provided a class that extend another document" do
|
523
645
|
|
524
|
-
|
525
|
-
Band
|
646
|
+
let(:klass) do
|
647
|
+
Class.new(Band)
|
526
648
|
end
|
527
|
-
end
|
528
|
-
end
|
529
|
-
|
530
|
-
describe ".store_in" do
|
531
|
-
|
532
|
-
context "when provided a non hash" do
|
533
649
|
|
534
650
|
it "raises an error" do
|
535
651
|
expect {
|
536
|
-
|
652
|
+
klass.store_in(database: :artists)
|
537
653
|
}.to raise_error(Mongoid::Errors::InvalidStorageOptions)
|
538
654
|
end
|
539
655
|
end
|
@@ -556,13 +672,13 @@ describe Mongoid::Sessions do
|
|
556
672
|
context "when sending operations to a different database" do
|
557
673
|
|
558
674
|
after do
|
559
|
-
Band.with(database:
|
675
|
+
Band.with(database: database_id_alt).delete_all
|
560
676
|
end
|
561
677
|
|
562
678
|
describe ".create" do
|
563
679
|
|
564
680
|
let!(:band) do
|
565
|
-
Band.with(database:
|
681
|
+
Band.with(database: database_id_alt).create
|
566
682
|
end
|
567
683
|
|
568
684
|
it "does not persist to the default database" do
|
@@ -572,15 +688,15 @@ describe Mongoid::Sessions do
|
|
572
688
|
end
|
573
689
|
|
574
690
|
let(:from_db) do
|
575
|
-
Band.with(database:
|
691
|
+
Band.with(database: database_id_alt).find(band.id)
|
576
692
|
end
|
577
693
|
|
578
694
|
it "persists to the specified database" do
|
579
|
-
from_db.
|
695
|
+
expect(from_db).to eq(band)
|
580
696
|
end
|
581
697
|
|
582
698
|
it "persists the correct number of documents" do
|
583
|
-
Band.with(database:
|
699
|
+
expect(Band.with(database: database_id_alt).count).to eq(1)
|
584
700
|
end
|
585
701
|
end
|
586
702
|
|
@@ -605,40 +721,40 @@ describe Mongoid::Sessions do
|
|
605
721
|
end
|
606
722
|
|
607
723
|
before do
|
608
|
-
Band.with(database:
|
724
|
+
Band.with(database: database_id_alt).delete_all
|
609
725
|
end
|
610
726
|
|
611
727
|
let!(:depeche_mode) do
|
612
|
-
Band.with(database:
|
728
|
+
Band.with(database: database_id_alt).
|
613
729
|
create(name: "Depeche Mode", likes: 200)
|
614
730
|
end
|
615
731
|
|
616
732
|
let!(:tool) do
|
617
|
-
Band.with(database:
|
733
|
+
Band.with(database: database_id_alt).
|
618
734
|
create(name: "Tool", likes: 100)
|
619
735
|
end
|
620
736
|
|
621
737
|
context "when outputting in memory" do
|
622
738
|
|
623
739
|
let(:results) do
|
624
|
-
Band.with(database:
|
740
|
+
Band.with(database: database_id_alt).
|
625
741
|
map_reduce(map, reduce).out(inline: 1)
|
626
742
|
end
|
627
743
|
|
628
744
|
it "executes the map/reduce on the correct database" do
|
629
|
-
results.first["value"].
|
745
|
+
expect(results.first["value"]).to eq({ "likes" => 200 })
|
630
746
|
end
|
631
747
|
end
|
632
748
|
|
633
749
|
context "when outputting to a collection" do
|
634
750
|
|
635
751
|
let(:results) do
|
636
|
-
Band.with(database:
|
752
|
+
Band.with(database: database_id_alt).
|
637
753
|
map_reduce(map, reduce).out(replace: "bands_output")
|
638
754
|
end
|
639
755
|
|
640
756
|
it "executes the map/reduce on the correct database" do
|
641
|
-
results.first["value"].
|
757
|
+
expect(results.first["value"]).to eq({ "likes" => 200 })
|
642
758
|
end
|
643
759
|
end
|
644
760
|
end
|
@@ -663,11 +779,11 @@ describe Mongoid::Sessions do
|
|
663
779
|
end
|
664
780
|
|
665
781
|
it "persists to the specified database" do
|
666
|
-
from_db.
|
782
|
+
expect(from_db).to eq(band)
|
667
783
|
end
|
668
784
|
|
669
785
|
it "persists the correct number of documents" do
|
670
|
-
Band.with(collection: "artists").count.
|
786
|
+
expect(Band.with(collection: "artists").count).to eq(1)
|
671
787
|
end
|
672
788
|
end
|
673
789
|
|
@@ -711,7 +827,7 @@ describe Mongoid::Sessions do
|
|
711
827
|
end
|
712
828
|
|
713
829
|
it "executes the map/reduce on the correct collection" do
|
714
|
-
results.first["value"].
|
830
|
+
expect(results.first["value"]).to eq({ "likes" => 200 })
|
715
831
|
end
|
716
832
|
end
|
717
833
|
end
|
@@ -746,7 +862,7 @@ describe Mongoid::Sessions do
|
|
746
862
|
end
|
747
863
|
|
748
864
|
it "persists to the specified database" do
|
749
|
-
from_db.
|
865
|
+
expect(from_db).to eq(band)
|
750
866
|
end
|
751
867
|
end
|
752
868
|
|
@@ -767,7 +883,7 @@ describe Mongoid::Sessions do
|
|
767
883
|
end
|
768
884
|
|
769
885
|
it "persists to the specified database" do
|
770
|
-
from_db.
|
886
|
+
expect(from_db).to eq(band)
|
771
887
|
end
|
772
888
|
end
|
773
889
|
|
@@ -788,7 +904,7 @@ describe Mongoid::Sessions do
|
|
788
904
|
end
|
789
905
|
|
790
906
|
it "persists to the specified database" do
|
791
|
-
from_db.
|
907
|
+
expect(from_db).to eq(band)
|
792
908
|
end
|
793
909
|
end
|
794
910
|
end
|
@@ -851,7 +967,7 @@ describe Mongoid::Sessions do
|
|
851
967
|
end
|
852
968
|
|
853
969
|
it "executes the map/reduce on the correct session" do
|
854
|
-
results.first["value"].
|
970
|
+
expect(results.first["value"]).to eq({ "likes" => 200 })
|
855
971
|
end
|
856
972
|
end
|
857
973
|
end
|
@@ -861,33 +977,34 @@ describe Mongoid::Sessions do
|
|
861
977
|
describe ".create" do
|
862
978
|
|
863
979
|
before do
|
864
|
-
Person.
|
980
|
+
Person.create_indexes
|
981
|
+
Person.create(ssn: "432-97-1111")
|
865
982
|
end
|
866
983
|
|
867
984
|
context "when no error occurs" do
|
868
985
|
|
869
986
|
it "inserts the document" do
|
870
|
-
Person.count.
|
987
|
+
expect(Person.count).to eq(1)
|
871
988
|
end
|
872
989
|
end
|
873
990
|
|
874
991
|
context "when a mongodb error occurs" do
|
875
992
|
|
876
|
-
before do
|
877
|
-
Person.create_indexes
|
878
|
-
end
|
879
|
-
|
880
993
|
it "bubbles up to the caller" do
|
881
994
|
expect {
|
882
|
-
Person.
|
995
|
+
Person.create(ssn: "432-97-1111")
|
883
996
|
}.to raise_error(Moped::Errors::OperationFailure)
|
884
997
|
end
|
885
998
|
end
|
886
999
|
|
887
|
-
context "when using
|
1000
|
+
context "when using write -1" do
|
1001
|
+
|
1002
|
+
let(:new_person) do
|
1003
|
+
Person.with(write: {w: -1}).create(ssn: "432-97-1111")
|
1004
|
+
end
|
888
1005
|
|
889
1006
|
it "ignores mongodb error" do
|
890
|
-
|
1007
|
+
expect(new_person).to_not be nil
|
891
1008
|
end
|
892
1009
|
end
|
893
1010
|
end
|
@@ -895,13 +1012,13 @@ describe Mongoid::Sessions do
|
|
895
1012
|
describe ".create!" do
|
896
1013
|
|
897
1014
|
before do
|
898
|
-
Person.
|
1015
|
+
Person.create!(ssn: "432-97-1112")
|
899
1016
|
end
|
900
1017
|
|
901
1018
|
context "when no error occurs" do
|
902
1019
|
|
903
1020
|
it "inserts the document" do
|
904
|
-
Person.count.
|
1021
|
+
expect(Person.count).to eq(1)
|
905
1022
|
end
|
906
1023
|
end
|
907
1024
|
|
@@ -913,7 +1030,7 @@ describe Mongoid::Sessions do
|
|
913
1030
|
|
914
1031
|
it "bubbles up to the caller" do
|
915
1032
|
expect {
|
916
|
-
Person.
|
1033
|
+
Person.create!(ssn: "432-97-1112")
|
917
1034
|
}.to raise_error(Moped::Errors::OperationFailure)
|
918
1035
|
end
|
919
1036
|
end
|
@@ -922,7 +1039,7 @@ describe Mongoid::Sessions do
|
|
922
1039
|
|
923
1040
|
it "raises the validation error" do
|
924
1041
|
expect {
|
925
|
-
Account.
|
1042
|
+
Account.create!(name: "this name is way too long")
|
926
1043
|
}.to raise_error(Mongoid::Errors::Validations)
|
927
1044
|
end
|
928
1045
|
end
|
@@ -931,7 +1048,7 @@ describe Mongoid::Sessions do
|
|
931
1048
|
describe ".save" do
|
932
1049
|
|
933
1050
|
before do
|
934
|
-
Person.
|
1051
|
+
Person.create(ssn: "432-97-1113")
|
935
1052
|
end
|
936
1053
|
|
937
1054
|
context "when a mongodb error occurs" do
|
@@ -946,7 +1063,7 @@ describe Mongoid::Sessions do
|
|
946
1063
|
|
947
1064
|
it "bubbles up to the caller" do
|
948
1065
|
expect {
|
949
|
-
person.
|
1066
|
+
person.save
|
950
1067
|
}.to raise_error(Moped::Errors::OperationFailure)
|
951
1068
|
end
|
952
1069
|
end
|
@@ -955,7 +1072,7 @@ describe Mongoid::Sessions do
|
|
955
1072
|
describe ".save!" do
|
956
1073
|
|
957
1074
|
before do
|
958
|
-
Person.
|
1075
|
+
Person.create!(ssn: "432-97-1114")
|
959
1076
|
end
|
960
1077
|
|
961
1078
|
context "when a mongodb error occurs" do
|
@@ -970,7 +1087,7 @@ describe Mongoid::Sessions do
|
|
970
1087
|
|
971
1088
|
it "bubbles up to the caller" do
|
972
1089
|
expect {
|
973
|
-
person.
|
1090
|
+
person.save!
|
974
1091
|
}.to raise_error(Moped::Errors::OperationFailure)
|
975
1092
|
end
|
976
1093
|
end
|
@@ -983,7 +1100,7 @@ describe Mongoid::Sessions do
|
|
983
1100
|
|
984
1101
|
it "raises the validation error" do
|
985
1102
|
expect {
|
986
|
-
account.
|
1103
|
+
account.save!
|
987
1104
|
}.to raise_error(Mongoid::Errors::Validations)
|
988
1105
|
end
|
989
1106
|
end
|
@@ -1013,7 +1130,7 @@ describe Mongoid::Sessions do
|
|
1013
1130
|
end
|
1014
1131
|
|
1015
1132
|
it "persists the document to the correct database" do
|
1016
|
-
Band.find(band.id).
|
1133
|
+
expect(Band.find(band.id)).to eq(band)
|
1017
1134
|
end
|
1018
1135
|
end
|
1019
1136
|
end
|
@@ -1045,7 +1162,7 @@ describe Mongoid::Sessions do
|
|
1045
1162
|
|
1046
1163
|
it "persists to the overridden database" do
|
1047
1164
|
Band.mongo_session.with(database: :mongoid_optional) do |sess|
|
1048
|
-
sess[:bands].find(name: "Tool").
|
1165
|
+
expect(sess[:bands].find(name: "Tool")).to_not be_nil
|
1049
1166
|
end
|
1050
1167
|
end
|
1051
1168
|
end
|
@@ -1055,19 +1172,13 @@ describe Mongoid::Sessions do
|
|
1055
1172
|
|
1056
1173
|
context "when the override is configured with a uri" do
|
1057
1174
|
|
1058
|
-
let(:
|
1059
|
-
"
|
1060
|
-
end
|
1061
|
-
|
1062
|
-
let(:config) do
|
1063
|
-
{ default: { uri: "mongodb://localhost:#{PORT}/#{database_id}" },
|
1064
|
-
session1: { uri: "mongodb://localhost:#{PORT}/#{database_name}" }}
|
1175
|
+
let(:file) do
|
1176
|
+
File.join(File.dirname(__FILE__), "..", "config", "mongoid.yml")
|
1065
1177
|
end
|
1066
1178
|
|
1067
1179
|
before do
|
1068
|
-
Mongoid::
|
1069
|
-
Mongoid.
|
1070
|
-
Mongoid.override_session(:session1)
|
1180
|
+
Mongoid::Config.load!(file, :test)
|
1181
|
+
Mongoid.override_session(:mongohq_repl_uri)
|
1071
1182
|
end
|
1072
1183
|
|
1073
1184
|
after do
|
@@ -1075,7 +1186,7 @@ describe Mongoid::Sessions do
|
|
1075
1186
|
end
|
1076
1187
|
|
1077
1188
|
it "has some database name on session" do
|
1078
|
-
Band.mongo_session.options[:database].
|
1189
|
+
expect(Band.mongo_session.options[:database]).to eq(:mongoid_replica)
|
1079
1190
|
end
|
1080
1191
|
end
|
1081
1192
|
|
@@ -1104,7 +1215,7 @@ describe Mongoid::Sessions do
|
|
1104
1215
|
end
|
1105
1216
|
|
1106
1217
|
it "persists to the overridden session" do
|
1107
|
-
persisted.
|
1218
|
+
expect(persisted).to eq(band)
|
1108
1219
|
end
|
1109
1220
|
end
|
1110
1221
|
end
|