mongoid 3.1.6 → 4.0.2
Sign up to get free protection for your applications and to get access to all the features.
- 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
|