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
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Mongoid::
|
3
|
+
describe Mongoid::Composable do
|
4
4
|
|
5
5
|
describe ".prohibited_methods" do
|
6
6
|
|
@@ -8,14 +8,14 @@ describe Mongoid::Components do
|
|
8
8
|
described_class.prohibited_methods
|
9
9
|
end
|
10
10
|
|
11
|
-
Mongoid::
|
11
|
+
Mongoid::Composable::MODULES.each do |mod|
|
12
12
|
|
13
13
|
context "when checking in #{mod}" do
|
14
14
|
|
15
15
|
mod.instance_methods.each do |method|
|
16
16
|
|
17
17
|
it "includes #{method}" do
|
18
|
-
methods.
|
18
|
+
expect(methods).to include(method.to_sym)
|
19
19
|
end
|
20
20
|
end
|
21
21
|
end
|
@@ -25,7 +25,7 @@ describe Mongoid::Config::Environment do
|
|
25
25
|
end
|
26
26
|
|
27
27
|
it "returns the rails environment" do
|
28
|
-
described_class.env_name.
|
28
|
+
expect(described_class.env_name).to eq("production")
|
29
29
|
end
|
30
30
|
end
|
31
31
|
|
@@ -47,7 +47,7 @@ describe Mongoid::Config::Environment do
|
|
47
47
|
end
|
48
48
|
|
49
49
|
it "returns the sinatra environment" do
|
50
|
-
described_class.env_name.
|
50
|
+
expect(described_class.env_name).to eq("staging")
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
@@ -63,7 +63,7 @@ describe Mongoid::Config::Environment do
|
|
63
63
|
end
|
64
64
|
|
65
65
|
it "returns the rack environment" do
|
66
|
-
described_class.env_name.
|
66
|
+
expect(described_class.env_name).to eq("acceptance")
|
67
67
|
end
|
68
68
|
end
|
69
69
|
|
@@ -9,7 +9,7 @@ describe Mongoid::Config::Options do
|
|
9
9
|
describe "#defaults" do
|
10
10
|
|
11
11
|
it "returns the default options" do
|
12
|
-
config.defaults.
|
12
|
+
expect(config.defaults).to_not be_empty
|
13
13
|
end
|
14
14
|
end
|
15
15
|
|
@@ -22,15 +22,15 @@ describe Mongoid::Config::Options do
|
|
22
22
|
end
|
23
23
|
|
24
24
|
it "defines a getter" do
|
25
|
-
config.preload_models.
|
25
|
+
expect(config.preload_models).to be false
|
26
26
|
end
|
27
27
|
|
28
28
|
it "defines a setter" do
|
29
|
-
(config.preload_models = true).
|
29
|
+
(config.preload_models = expect(true)).to be true
|
30
30
|
end
|
31
31
|
|
32
32
|
it "defines a presence check" do
|
33
|
-
config.
|
33
|
+
expect(config).to_not be_preload_models
|
34
34
|
end
|
35
35
|
end
|
36
36
|
end
|
@@ -43,14 +43,14 @@ describe Mongoid::Config::Options do
|
|
43
43
|
end
|
44
44
|
|
45
45
|
it "resets the settings to the defaults" do
|
46
|
-
config.preload_models.
|
46
|
+
expect(config.preload_models).to be false
|
47
47
|
end
|
48
48
|
end
|
49
49
|
|
50
50
|
describe "#settings" do
|
51
51
|
|
52
52
|
it "returns the settings" do
|
53
|
-
config.settings.
|
53
|
+
expect(config.settings).to_not be_empty
|
54
54
|
end
|
55
55
|
end
|
56
56
|
end
|
data/spec/mongoid/config_spec.rb
CHANGED
@@ -12,7 +12,7 @@ describe Mongoid::Config do
|
|
12
12
|
describe "#configured?" do
|
13
13
|
|
14
14
|
after do
|
15
|
-
described_class.connect_to(database_id,
|
15
|
+
described_class.connect_to(database_id, read: :primary)
|
16
16
|
end
|
17
17
|
|
18
18
|
context "when a default session config exists" do
|
@@ -33,7 +33,7 @@ describe Mongoid::Config do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "returns true" do
|
36
|
-
described_class.
|
36
|
+
expect(described_class).to be_configured
|
37
37
|
end
|
38
38
|
end
|
39
39
|
end
|
@@ -45,17 +45,17 @@ describe Mongoid::Config do
|
|
45
45
|
end
|
46
46
|
|
47
47
|
it "returns false" do
|
48
|
-
described_class.
|
48
|
+
expect(described_class).to_not be_configured
|
49
49
|
end
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
53
53
|
describe "#destructive_fields" do
|
54
54
|
|
55
|
-
Mongoid::
|
55
|
+
Mongoid::Composable.prohibited_methods.each do |method|
|
56
56
|
|
57
57
|
it "contains #{method}" do
|
58
|
-
described_class.destructive_fields.
|
58
|
+
expect(described_class.destructive_fields).to include(method)
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
@@ -99,44 +99,32 @@ describe Mongoid::Config do
|
|
99
99
|
described_class.reset
|
100
100
|
end
|
101
101
|
|
102
|
-
it "sets the allow dynamic fields option" do
|
103
|
-
described_class.allow_dynamic_fields.should be_true
|
104
|
-
end
|
105
|
-
|
106
|
-
it "sets the identity map option" do
|
107
|
-
described_class.identity_map_enabled.should be_false
|
108
|
-
end
|
109
|
-
|
110
102
|
it "sets the include root in json option" do
|
111
|
-
described_class.include_root_in_json.
|
103
|
+
expect(described_class.include_root_in_json).to be false
|
112
104
|
end
|
113
105
|
|
114
106
|
it "sets the include type with serialization option" do
|
115
|
-
described_class.include_type_for_serialization.
|
107
|
+
expect(described_class.include_type_for_serialization).to be false
|
116
108
|
end
|
117
109
|
|
118
110
|
it "sets the scope overwrite option" do
|
119
|
-
described_class.scope_overwrite_exception.
|
111
|
+
expect(described_class.scope_overwrite_exception).to be false
|
120
112
|
end
|
121
113
|
|
122
114
|
it "sets the preload models option" do
|
123
|
-
described_class.preload_models.
|
115
|
+
expect(described_class.preload_models).to be false
|
124
116
|
end
|
125
117
|
|
126
118
|
it "sets the raise not found error option" do
|
127
|
-
described_class.raise_not_found_error.
|
128
|
-
end
|
129
|
-
|
130
|
-
it "sets the skip version check option" do
|
131
|
-
described_class.skip_version_check.should be_true
|
119
|
+
expect(described_class.raise_not_found_error).to be true
|
132
120
|
end
|
133
121
|
|
134
122
|
it "sets the use activesupport time zone option" do
|
135
|
-
described_class.use_activesupport_time_zone.
|
123
|
+
expect(described_class.use_activesupport_time_zone).to be true
|
136
124
|
end
|
137
125
|
|
138
126
|
it "sets the use utc option" do
|
139
|
-
described_class.use_utc.
|
127
|
+
expect(described_class.use_utc).to be false
|
140
128
|
end
|
141
129
|
end
|
142
130
|
|
@@ -157,44 +145,32 @@ describe Mongoid::Config do
|
|
157
145
|
described_class.load!(file)
|
158
146
|
end
|
159
147
|
|
160
|
-
it "sets the allow dynamic fields option" do
|
161
|
-
described_class.allow_dynamic_fields.should be_true
|
162
|
-
end
|
163
|
-
|
164
|
-
it "sets the identity map option" do
|
165
|
-
described_class.identity_map_enabled.should be_false
|
166
|
-
end
|
167
|
-
|
168
148
|
it "sets the include root in json option" do
|
169
|
-
described_class.include_root_in_json.
|
149
|
+
expect(described_class.include_root_in_json).to be false
|
170
150
|
end
|
171
151
|
|
172
152
|
it "sets the include type with serialization option" do
|
173
|
-
described_class.include_type_for_serialization.
|
153
|
+
expect(described_class.include_type_for_serialization).to be false
|
174
154
|
end
|
175
155
|
|
176
156
|
it "sets the scope overwrite option" do
|
177
|
-
described_class.scope_overwrite_exception.
|
157
|
+
expect(described_class.scope_overwrite_exception).to be false
|
178
158
|
end
|
179
159
|
|
180
160
|
it "sets the preload models option" do
|
181
|
-
described_class.preload_models.
|
161
|
+
expect(described_class.preload_models).to be false
|
182
162
|
end
|
183
163
|
|
184
164
|
it "sets the raise not found error option" do
|
185
|
-
described_class.raise_not_found_error.
|
186
|
-
end
|
187
|
-
|
188
|
-
it "sets the skip version check option" do
|
189
|
-
described_class.skip_version_check.should be_true
|
165
|
+
expect(described_class.raise_not_found_error).to be true
|
190
166
|
end
|
191
167
|
|
192
168
|
it "sets the use activesupport time zone option" do
|
193
|
-
described_class.use_activesupport_time_zone.
|
169
|
+
expect(described_class.use_activesupport_time_zone).to be true
|
194
170
|
end
|
195
171
|
|
196
172
|
it "sets the use utc option" do
|
197
|
-
described_class.use_utc.
|
173
|
+
expect(described_class.use_utc).to be false
|
198
174
|
end
|
199
175
|
end
|
200
176
|
|
@@ -211,7 +187,7 @@ describe Mongoid::Config do
|
|
211
187
|
end
|
212
188
|
|
213
189
|
it "sets the default hosts" do
|
214
|
-
default[:hosts].
|
190
|
+
expect(default[:hosts]).to eq(["#{HOST}:#{PORT}"])
|
215
191
|
end
|
216
192
|
|
217
193
|
context "when the default has options" do
|
@@ -220,8 +196,8 @@ describe Mongoid::Config do
|
|
220
196
|
default["options"]
|
221
197
|
end
|
222
198
|
|
223
|
-
it "sets the
|
224
|
-
options["
|
199
|
+
it "sets the read option" do
|
200
|
+
expect(options["read"]).to eq("primary")
|
225
201
|
end
|
226
202
|
end
|
227
203
|
end
|
@@ -237,7 +213,7 @@ describe Mongoid::Config do
|
|
237
213
|
end
|
238
214
|
|
239
215
|
it "sets the secondary host" do
|
240
|
-
secondary["hosts"].
|
216
|
+
expect(secondary["hosts"]).to eq([ ENV["MONGOHQ_SINGLE_URL"] ])
|
241
217
|
end
|
242
218
|
end
|
243
219
|
end
|
@@ -253,7 +229,7 @@ describe Mongoid::Config do
|
|
253
229
|
end
|
254
230
|
|
255
231
|
it "does not try to assign options" do
|
256
|
-
described_class.
|
232
|
+
expect(described_class.preload_models).to be false
|
257
233
|
end
|
258
234
|
end
|
259
235
|
|
@@ -33,7 +33,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
33
33
|
end
|
34
34
|
|
35
35
|
it "returns the avg of the provided field" do
|
36
|
-
avg.
|
36
|
+
expect(avg).to eq(750)
|
37
37
|
end
|
38
38
|
end
|
39
39
|
|
@@ -62,7 +62,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it "returns the avg of the provided field" do
|
65
|
-
avg.
|
65
|
+
expect(avg).to eq(7.5)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -86,7 +86,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
86
86
|
end
|
87
87
|
|
88
88
|
it "returns nil" do
|
89
|
-
avg.
|
89
|
+
expect(avg).to be_nil
|
90
90
|
end
|
91
91
|
end
|
92
92
|
end
|
@@ -121,7 +121,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
121
121
|
end
|
122
122
|
|
123
123
|
it "returns the max of the provided field" do
|
124
|
-
max.
|
124
|
+
expect(max).to eq(1000)
|
125
125
|
end
|
126
126
|
|
127
127
|
context "when no documents match" do
|
@@ -139,7 +139,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
139
139
|
end
|
140
140
|
|
141
141
|
it "returns nil" do
|
142
|
-
max.
|
142
|
+
expect(max).to be_nil
|
143
143
|
end
|
144
144
|
end
|
145
145
|
end
|
@@ -153,7 +153,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
153
153
|
end
|
154
154
|
|
155
155
|
it "returns the document with the max value for the field" do
|
156
|
-
max.
|
156
|
+
expect(max).to eq(depeche)
|
157
157
|
end
|
158
158
|
end
|
159
159
|
end
|
@@ -188,7 +188,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
188
188
|
end
|
189
189
|
|
190
190
|
it "returns the min of the provided field" do
|
191
|
-
min.
|
191
|
+
expect(min).to eq(500)
|
192
192
|
end
|
193
193
|
|
194
194
|
context "when no documents match" do
|
@@ -206,7 +206,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
206
206
|
end
|
207
207
|
|
208
208
|
it "returns nil" do
|
209
|
-
min.
|
209
|
+
expect(min).to be_nil
|
210
210
|
end
|
211
211
|
end
|
212
212
|
end
|
@@ -220,7 +220,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
220
220
|
end
|
221
221
|
|
222
222
|
it "returns the document with the min value for the field" do
|
223
|
-
min.
|
223
|
+
expect(min).to eq(tool)
|
224
224
|
end
|
225
225
|
end
|
226
226
|
end
|
@@ -255,7 +255,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
255
255
|
end
|
256
256
|
|
257
257
|
it "returns the sum of the provided field" do
|
258
|
-
sum.
|
258
|
+
expect(sum).to eq(1500)
|
259
259
|
end
|
260
260
|
|
261
261
|
context "when no documents match" do
|
@@ -273,7 +273,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
273
273
|
end
|
274
274
|
|
275
275
|
it "returns zero" do
|
276
|
-
sum.
|
276
|
+
expect(sum).to eq(0)
|
277
277
|
end
|
278
278
|
end
|
279
279
|
end
|
@@ -285,7 +285,7 @@ describe Mongoid::Contextual::Aggregable::Memory do
|
|
285
285
|
end
|
286
286
|
|
287
287
|
it "returns the sum for the provided block" do
|
288
|
-
sum.
|
288
|
+
expect(sum).to eq(1500)
|
289
289
|
end
|
290
290
|
end
|
291
291
|
end
|
@@ -31,23 +31,23 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
31
31
|
end
|
32
32
|
|
33
33
|
it "returns an avg" do
|
34
|
-
aggregates["avg"].
|
34
|
+
expect(aggregates["avg"]).to eq(900)
|
35
35
|
end
|
36
36
|
|
37
|
-
it "returns a count" do
|
38
|
-
aggregates["count"].
|
37
|
+
it "returns a count of documents with that field" do
|
38
|
+
expect(aggregates["count"]).to eq(2)
|
39
39
|
end
|
40
40
|
|
41
41
|
it "returns a max" do
|
42
|
-
aggregates["max"].
|
42
|
+
expect(aggregates["max"]).to eq(1000)
|
43
43
|
end
|
44
44
|
|
45
45
|
it "returns a min" do
|
46
|
-
aggregates["min"].
|
46
|
+
expect(aggregates["min"]).to eq(800)
|
47
47
|
end
|
48
48
|
|
49
49
|
it "returns a sum" do
|
50
|
-
aggregates["sum"].
|
50
|
+
expect(aggregates["sum"]).to eq(1800)
|
51
51
|
end
|
52
52
|
end
|
53
53
|
|
@@ -58,23 +58,23 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
58
58
|
end
|
59
59
|
|
60
60
|
it "returns an avg" do
|
61
|
-
aggregates["avg"].
|
61
|
+
expect(aggregates["avg"]).to eq(750)
|
62
62
|
end
|
63
63
|
|
64
|
-
it "returns a count" do
|
65
|
-
aggregates["count"].
|
64
|
+
it "returns a count of documents with that field" do
|
65
|
+
expect(aggregates["count"]).to eq(2)
|
66
66
|
end
|
67
67
|
|
68
68
|
it "returns a max" do
|
69
|
-
aggregates["max"].
|
69
|
+
expect(aggregates["max"]).to eq(1000)
|
70
70
|
end
|
71
71
|
|
72
72
|
it "returns a min" do
|
73
|
-
aggregates["min"].
|
73
|
+
expect(aggregates["min"]).to eq(500)
|
74
74
|
end
|
75
75
|
|
76
76
|
it "returns a sum" do
|
77
|
-
aggregates["sum"].
|
77
|
+
expect(aggregates["sum"]).to eq(1500)
|
78
78
|
end
|
79
79
|
end
|
80
80
|
|
@@ -89,25 +89,57 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
89
89
|
end
|
90
90
|
|
91
91
|
it "returns an avg" do
|
92
|
-
aggregates["avg"].
|
92
|
+
expect(aggregates["avg"]).to eq(1000)
|
93
93
|
end
|
94
94
|
|
95
|
-
it "returns a count" do
|
96
|
-
aggregates["count"].
|
95
|
+
it "returns a count of documents with that field" do
|
96
|
+
expect(aggregates["count"]).to eq(1)
|
97
97
|
end
|
98
98
|
|
99
99
|
it "returns a max" do
|
100
|
-
aggregates["max"].
|
100
|
+
expect(aggregates["max"]).to eq(1000)
|
101
101
|
end
|
102
102
|
|
103
103
|
it "returns a min" do
|
104
|
-
aggregates["min"].
|
104
|
+
expect(aggregates["min"]).to eq(1000)
|
105
105
|
end
|
106
106
|
|
107
107
|
it "returns a sum" do
|
108
|
-
aggregates["sum"].
|
108
|
+
expect(aggregates["sum"]).to eq(1000)
|
109
109
|
end
|
110
110
|
end
|
111
|
+
|
112
|
+
context "when only 1 document is emitted because of sorting, skip and limit" do
|
113
|
+
|
114
|
+
let(:criteria) do
|
115
|
+
Band.desc(:name).skip(1).limit(1)
|
116
|
+
end
|
117
|
+
|
118
|
+
let(:aggregates) do
|
119
|
+
context.aggregates(:likes)
|
120
|
+
end
|
121
|
+
|
122
|
+
it "returns an avg" do
|
123
|
+
expect(aggregates["avg"]).to eq(1000)
|
124
|
+
end
|
125
|
+
|
126
|
+
it "returns a count of documents with that field" do
|
127
|
+
expect(aggregates["count"]).to eq(1)
|
128
|
+
end
|
129
|
+
|
130
|
+
it "returns a max" do
|
131
|
+
expect(aggregates["max"]).to eq(1000)
|
132
|
+
end
|
133
|
+
|
134
|
+
it "returns a min" do
|
135
|
+
expect(aggregates["min"]).to eq(1000)
|
136
|
+
end
|
137
|
+
|
138
|
+
it "returns a sum" do
|
139
|
+
expect(aggregates["sum"]).to eq(1000)
|
140
|
+
end
|
141
|
+
end
|
142
|
+
|
111
143
|
end
|
112
144
|
|
113
145
|
context "when the field does not exist" do
|
@@ -117,23 +149,23 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
117
149
|
end
|
118
150
|
|
119
151
|
it "returns an avg" do
|
120
|
-
aggregates["avg"].
|
152
|
+
expect(aggregates["avg"]).to be_nil
|
121
153
|
end
|
122
154
|
|
123
|
-
it "returns a count" do
|
124
|
-
aggregates["count"].
|
155
|
+
it "returns a count of documents with that field" do
|
156
|
+
expect(aggregates["count"]).to eq(0)
|
125
157
|
end
|
126
158
|
|
127
159
|
it "returns a max" do
|
128
|
-
aggregates["max"].
|
160
|
+
expect(aggregates["max"]).to be_nil
|
129
161
|
end
|
130
162
|
|
131
163
|
it "returns a min" do
|
132
|
-
aggregates["min"].
|
164
|
+
expect(aggregates["min"]).to be_nil
|
133
165
|
end
|
134
166
|
|
135
167
|
it "returns a sum" do
|
136
|
-
aggregates["sum"].
|
168
|
+
expect(aggregates["sum"]).to be_nil
|
137
169
|
end
|
138
170
|
end
|
139
171
|
|
@@ -160,7 +192,11 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
160
192
|
end
|
161
193
|
|
162
194
|
it "returns a min" do
|
163
|
-
aggregates["min"].
|
195
|
+
expect(aggregates["min"]).to eq(50)
|
196
|
+
end
|
197
|
+
|
198
|
+
it "returns a count of documents with that field" do
|
199
|
+
expect(aggregates["count"]).to eq(3)
|
164
200
|
end
|
165
201
|
end
|
166
202
|
|
@@ -182,7 +218,11 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
182
218
|
end
|
183
219
|
|
184
220
|
it "returns a min" do
|
185
|
-
aggregates["min"].
|
221
|
+
expect(aggregates["min"]).to eq(50)
|
222
|
+
end
|
223
|
+
|
224
|
+
it "returns a count of documents with that field" do
|
225
|
+
expect(aggregates["count"]).to eq(4)
|
186
226
|
end
|
187
227
|
end
|
188
228
|
end
|
@@ -198,7 +238,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
198
238
|
end
|
199
239
|
|
200
240
|
it "returns nil" do
|
201
|
-
aggregates.
|
241
|
+
expect(aggregates).to eq({ "count" => 0, "sum" => nil, "avg" => nil, "min" => nil, "max" => nil })
|
202
242
|
end
|
203
243
|
end
|
204
244
|
end
|
@@ -231,7 +271,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
231
271
|
end
|
232
272
|
|
233
273
|
it "returns the avg of the provided field" do
|
234
|
-
avg.
|
274
|
+
expect(avg).to eq(750)
|
235
275
|
end
|
236
276
|
end
|
237
277
|
|
@@ -254,7 +294,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
254
294
|
end
|
255
295
|
|
256
296
|
it "returns nil" do
|
257
|
-
avg.
|
297
|
+
expect(avg).to be_nil
|
258
298
|
end
|
259
299
|
end
|
260
300
|
end
|
@@ -287,7 +327,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
287
327
|
end
|
288
328
|
|
289
329
|
it "returns the max of the provided field" do
|
290
|
-
max.
|
330
|
+
expect(max).to eq(1000)
|
291
331
|
end
|
292
332
|
|
293
333
|
context "when no documents match" do
|
@@ -305,7 +345,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
305
345
|
end
|
306
346
|
|
307
347
|
it "returns nil" do
|
308
|
-
max.
|
348
|
+
expect(max).to be_nil
|
309
349
|
end
|
310
350
|
end
|
311
351
|
end
|
@@ -319,7 +359,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
319
359
|
end
|
320
360
|
|
321
361
|
it "returns the document with the max value for the field" do
|
322
|
-
max.
|
362
|
+
expect(max).to eq(depeche)
|
323
363
|
end
|
324
364
|
end
|
325
365
|
end
|
@@ -352,7 +392,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
352
392
|
end
|
353
393
|
|
354
394
|
it "returns the min of the provided field" do
|
355
|
-
min.
|
395
|
+
expect(min).to eq(500)
|
356
396
|
end
|
357
397
|
|
358
398
|
context "when no documents match" do
|
@@ -370,7 +410,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
370
410
|
end
|
371
411
|
|
372
412
|
it "returns nil" do
|
373
|
-
min.
|
413
|
+
expect(min).to be_nil
|
374
414
|
end
|
375
415
|
end
|
376
416
|
end
|
@@ -384,7 +424,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
384
424
|
end
|
385
425
|
|
386
426
|
it "returns the document with the min value for the field" do
|
387
|
-
min.
|
427
|
+
expect(min).to eq(tool)
|
388
428
|
end
|
389
429
|
end
|
390
430
|
end
|
@@ -417,7 +457,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
417
457
|
end
|
418
458
|
|
419
459
|
it "returns the sum of the provided field" do
|
420
|
-
sum.
|
460
|
+
expect(sum).to eq(1500)
|
421
461
|
end
|
422
462
|
|
423
463
|
context "when no documents match" do
|
@@ -435,7 +475,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
435
475
|
end
|
436
476
|
|
437
477
|
it "returns zero" do
|
438
|
-
sum.
|
478
|
+
expect(sum).to eq(0)
|
439
479
|
end
|
440
480
|
end
|
441
481
|
end
|
@@ -447,7 +487,7 @@ describe Mongoid::Contextual::Aggregable::Mongo do
|
|
447
487
|
end
|
448
488
|
|
449
489
|
it "returns the sum for the provided block" do
|
450
|
-
sum.
|
490
|
+
expect(sum).to eq(1500)
|
451
491
|
end
|
452
492
|
end
|
453
493
|
end
|