mongoid 3.1.7 → 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 +470 -9
- data/README.md +10 -7
- data/lib/config/locales/en.yml +34 -20
- 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/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/atomic.rb +3 -14
- 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/attributes.rb +63 -99
- data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
- data/lib/mongoid/composable.rb +105 -0
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -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/contextual.rb +2 -0
- data/lib/mongoid/copyable.rb +2 -3
- 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/criteria.rb +39 -34
- data/lib/mongoid/document.rb +39 -24
- 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/errors.rb +4 -1
- 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/extensions.rb +15 -7
- data/lib/mongoid/factory.rb +8 -6
- 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/fields.rb +41 -8
- data/lib/mongoid/{finders.rb → findable.rb} +35 -7
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- 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/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/matchable.rb +152 -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/persistable.rb +216 -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/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/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/builders.rb +2 -2
- 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/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/eager.rb +46 -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/relations.rb +11 -25
- 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/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/sessions.rb +37 -345
- 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/lifecycle.rb +0 -28
- data/lib/mongoid/threaded.rb +26 -172
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
- 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/{validations.rb → validatable.rb} +23 -10
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +10 -76
- 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/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/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 +334 -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 +46 -38
- data/spec/mongoid/contextual/atomic_spec.rb +59 -55
- 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 +713 -2419
- 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/{matchers → matchable}/ne_spec.rb +3 -3
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +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} +9 -9
- 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 -350
- data/spec/spec_helper.rb +26 -15
- metadata +262 -247
- 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/strategies.rb +0 -97
- data/lib/mongoid/matchers.rb +0 -32
- 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/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/atomic.rb +0 -231
- 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/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/operations.rb +0 -214
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rack/mongoid.rb +0 -2
- 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/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
|
@@ -27,7 +27,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
it "returns false" do
|
|
30
|
-
context.send(method).
|
|
30
|
+
expect(context.send(method)).to be false
|
|
31
31
|
end
|
|
32
32
|
end
|
|
33
33
|
|
|
@@ -44,7 +44,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
it "returns true" do
|
|
47
|
-
context.send(method).
|
|
47
|
+
expect(context.send(method)).to be true
|
|
48
48
|
end
|
|
49
49
|
end
|
|
50
50
|
end
|
|
@@ -73,7 +73,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
73
73
|
context "context when no arguments are provided" do
|
|
74
74
|
|
|
75
75
|
it "returns the number of matches" do
|
|
76
|
-
context.count.
|
|
76
|
+
expect(context.count).to eq(1)
|
|
77
77
|
end
|
|
78
78
|
end
|
|
79
79
|
|
|
@@ -86,7 +86,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
86
86
|
end
|
|
87
87
|
|
|
88
88
|
it "returns 1" do
|
|
89
|
-
count.
|
|
89
|
+
expect(count).to eq(1)
|
|
90
90
|
end
|
|
91
91
|
end
|
|
92
92
|
|
|
@@ -97,7 +97,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
97
97
|
end
|
|
98
98
|
|
|
99
99
|
it "returns 0" do
|
|
100
|
-
count.
|
|
100
|
+
expect(count).to eq(0)
|
|
101
101
|
end
|
|
102
102
|
end
|
|
103
103
|
end
|
|
@@ -113,7 +113,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
113
113
|
end
|
|
114
114
|
|
|
115
115
|
it "returns 1" do
|
|
116
|
-
count.
|
|
116
|
+
expect(count).to eq(1)
|
|
117
117
|
end
|
|
118
118
|
end
|
|
119
119
|
|
|
@@ -126,7 +126,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
126
126
|
end
|
|
127
127
|
|
|
128
128
|
it "returns 0" do
|
|
129
|
-
count.
|
|
129
|
+
expect(count).to eq(0)
|
|
130
130
|
end
|
|
131
131
|
end
|
|
132
132
|
end
|
|
@@ -169,31 +169,31 @@ describe Mongoid::Contextual::Memory do
|
|
|
169
169
|
end
|
|
170
170
|
|
|
171
171
|
it "deletes the first matching document" do
|
|
172
|
-
hobrecht.
|
|
172
|
+
expect(hobrecht).to be_destroyed
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
it "deletes the last matching document" do
|
|
176
|
-
friedel.
|
|
176
|
+
expect(friedel).to be_destroyed
|
|
177
177
|
end
|
|
178
178
|
|
|
179
179
|
it "does not delete non matching docs" do
|
|
180
|
-
pfluger.
|
|
180
|
+
expect(pfluger).to_not be_destroyed
|
|
181
181
|
end
|
|
182
182
|
|
|
183
183
|
it "removes the docs from the relation" do
|
|
184
|
-
person.addresses.
|
|
184
|
+
expect(person.addresses).to eq([ pfluger ])
|
|
185
185
|
end
|
|
186
186
|
|
|
187
187
|
it "removes the docs from the context" do
|
|
188
|
-
context.entries.
|
|
188
|
+
expect(context.entries).to be_empty
|
|
189
189
|
end
|
|
190
190
|
|
|
191
191
|
it "persists the changes to the database" do
|
|
192
|
-
person.reload.addresses.
|
|
192
|
+
expect(person.reload.addresses).to eq([ pfluger ])
|
|
193
193
|
end
|
|
194
194
|
|
|
195
195
|
it "returns the number of deleted documents" do
|
|
196
|
-
deleted.
|
|
196
|
+
expect(deleted).to eq(2)
|
|
197
197
|
end
|
|
198
198
|
end
|
|
199
199
|
|
|
@@ -222,27 +222,27 @@ describe Mongoid::Contextual::Memory do
|
|
|
222
222
|
end
|
|
223
223
|
|
|
224
224
|
it "deletes the first matching document" do
|
|
225
|
-
work.
|
|
225
|
+
expect(work).to be_destroyed
|
|
226
226
|
end
|
|
227
227
|
|
|
228
228
|
it "does not delete non matching docs" do
|
|
229
|
-
home.
|
|
229
|
+
expect(home).to_not be_destroyed
|
|
230
230
|
end
|
|
231
231
|
|
|
232
232
|
it "removes the docs from the relation" do
|
|
233
|
-
person.addresses.first.locations.
|
|
233
|
+
expect(person.addresses.first.locations).to eq([ home ])
|
|
234
234
|
end
|
|
235
235
|
|
|
236
236
|
it "removes the docs from the context" do
|
|
237
|
-
context.entries.
|
|
237
|
+
expect(context.entries).to be_empty
|
|
238
238
|
end
|
|
239
239
|
|
|
240
240
|
it "persists the changes to the database" do
|
|
241
|
-
person.reload.addresses.first.locations.
|
|
241
|
+
expect(person.reload.addresses.first.locations).to eq([ home ])
|
|
242
242
|
end
|
|
243
243
|
|
|
244
244
|
it "returns the number of deleted documents" do
|
|
245
|
-
deleted.
|
|
245
|
+
expect(deleted).to eq(1)
|
|
246
246
|
end
|
|
247
247
|
end
|
|
248
248
|
end
|
|
@@ -283,31 +283,31 @@ describe Mongoid::Contextual::Memory do
|
|
|
283
283
|
end
|
|
284
284
|
|
|
285
285
|
it "deletes the first matching document" do
|
|
286
|
-
hobrecht.
|
|
286
|
+
expect(hobrecht).to be_destroyed
|
|
287
287
|
end
|
|
288
288
|
|
|
289
289
|
it "deletes the last matching document" do
|
|
290
|
-
friedel.
|
|
290
|
+
expect(friedel).to be_destroyed
|
|
291
291
|
end
|
|
292
292
|
|
|
293
293
|
it "does not delete non matching docs" do
|
|
294
|
-
pfluger.
|
|
294
|
+
expect(pfluger).to_not be_destroyed
|
|
295
295
|
end
|
|
296
296
|
|
|
297
297
|
it "removes the docs from the relation" do
|
|
298
|
-
person.addresses.
|
|
298
|
+
expect(person.addresses).to eq([ pfluger ])
|
|
299
299
|
end
|
|
300
300
|
|
|
301
301
|
it "removes the docs from the context" do
|
|
302
|
-
context.entries.
|
|
302
|
+
expect(context.entries).to be_empty
|
|
303
303
|
end
|
|
304
304
|
|
|
305
305
|
it "persists the changes to the database" do
|
|
306
|
-
person.reload.addresses.
|
|
306
|
+
expect(person.reload.addresses).to eq([ pfluger ])
|
|
307
307
|
end
|
|
308
308
|
|
|
309
309
|
it "returns the number of destroyed documents" do
|
|
310
|
-
destroyed.
|
|
310
|
+
expect(destroyed).to eq(2)
|
|
311
311
|
end
|
|
312
312
|
end
|
|
313
313
|
end
|
|
@@ -335,7 +335,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
335
335
|
end
|
|
336
336
|
|
|
337
337
|
it "returns the distinct field values" do
|
|
338
|
-
context.distinct(:street).
|
|
338
|
+
expect(context.distinct(:street)).to eq([ "hobrecht" ])
|
|
339
339
|
end
|
|
340
340
|
end
|
|
341
341
|
|
|
@@ -352,7 +352,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
352
352
|
end
|
|
353
353
|
|
|
354
354
|
it "returns the distinct field values" do
|
|
355
|
-
context.distinct(:street).
|
|
355
|
+
expect(context.distinct(:street)).to eq([ "hobrecht", "friedel" ])
|
|
356
356
|
end
|
|
357
357
|
end
|
|
358
358
|
end
|
|
@@ -384,7 +384,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
384
384
|
end
|
|
385
385
|
|
|
386
386
|
it "contains no documents" do
|
|
387
|
-
context.map(&:street).
|
|
387
|
+
expect(context.map(&:street)).to be_empty
|
|
388
388
|
end
|
|
389
389
|
|
|
390
390
|
context "when calling next on the enumerator" do
|
|
@@ -401,13 +401,13 @@ describe Mongoid::Contextual::Memory do
|
|
|
401
401
|
|
|
402
402
|
it "yields mongoid documents to the block" do
|
|
403
403
|
context.each do |doc|
|
|
404
|
-
doc.
|
|
404
|
+
expect(doc).to be_a(Mongoid::Document)
|
|
405
405
|
end
|
|
406
406
|
end
|
|
407
407
|
|
|
408
408
|
it "iterates over the matching documents" do
|
|
409
409
|
context.each do |doc|
|
|
410
|
-
doc.
|
|
410
|
+
expect(doc).to eq(hobrecht)
|
|
411
411
|
end
|
|
412
412
|
end
|
|
413
413
|
end
|
|
@@ -419,7 +419,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
419
419
|
end
|
|
420
420
|
|
|
421
421
|
it "returns an enumerator" do
|
|
422
|
-
enum.
|
|
422
|
+
expect(enum).to be_a(Enumerator)
|
|
423
423
|
end
|
|
424
424
|
|
|
425
425
|
context "when iterating over the enumerator" do
|
|
@@ -428,7 +428,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
428
428
|
|
|
429
429
|
it "yields mongoid documents to the block" do
|
|
430
430
|
enum.each do |doc|
|
|
431
|
-
doc.
|
|
431
|
+
expect(doc).to be_a(Mongoid::Document)
|
|
432
432
|
end
|
|
433
433
|
end
|
|
434
434
|
end
|
|
@@ -436,7 +436,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
436
436
|
context "when iterating with next" do
|
|
437
437
|
|
|
438
438
|
it "yields mongoid documents" do
|
|
439
|
-
enum.next.
|
|
439
|
+
expect(enum.next).to be_a(Mongoid::Document)
|
|
440
440
|
end
|
|
441
441
|
end
|
|
442
442
|
end
|
|
@@ -466,7 +466,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
466
466
|
end
|
|
467
467
|
|
|
468
468
|
it "returns true" do
|
|
469
|
-
context.
|
|
469
|
+
expect(context).to be_exists
|
|
470
470
|
end
|
|
471
471
|
end
|
|
472
472
|
|
|
@@ -483,7 +483,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
483
483
|
end
|
|
484
484
|
|
|
485
485
|
it "returns false" do
|
|
486
|
-
context.
|
|
486
|
+
expect(context).to_not be_exists
|
|
487
487
|
end
|
|
488
488
|
end
|
|
489
489
|
end
|
|
@@ -511,7 +511,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
511
511
|
end
|
|
512
512
|
|
|
513
513
|
it "returns the first matching document" do
|
|
514
|
-
context.send(method).
|
|
514
|
+
expect(context.send(method)).to eq(hobrecht)
|
|
515
515
|
end
|
|
516
516
|
end
|
|
517
517
|
end
|
|
@@ -539,15 +539,15 @@ describe Mongoid::Contextual::Memory do
|
|
|
539
539
|
end
|
|
540
540
|
|
|
541
541
|
it "sets the criteria" do
|
|
542
|
-
context.criteria.
|
|
542
|
+
expect(context.criteria).to eq(criteria)
|
|
543
543
|
end
|
|
544
544
|
|
|
545
545
|
it "sets the klass" do
|
|
546
|
-
context.klass.
|
|
546
|
+
expect(context.klass).to eq(Address)
|
|
547
547
|
end
|
|
548
548
|
|
|
549
549
|
it "sets the matching documents" do
|
|
550
|
-
context.documents.
|
|
550
|
+
expect(context.documents).to eq([ hobrecht ])
|
|
551
551
|
end
|
|
552
552
|
end
|
|
553
553
|
|
|
@@ -572,7 +572,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
572
572
|
end
|
|
573
573
|
|
|
574
574
|
it "limits the matching documents" do
|
|
575
|
-
context.
|
|
575
|
+
expect(context).to eq([ friedel ])
|
|
576
576
|
end
|
|
577
577
|
end
|
|
578
578
|
|
|
@@ -597,7 +597,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
597
597
|
end
|
|
598
598
|
|
|
599
599
|
it "limits the matching documents" do
|
|
600
|
-
context.
|
|
600
|
+
expect(context).to eq([ hobrecht ])
|
|
601
601
|
end
|
|
602
602
|
end
|
|
603
603
|
end
|
|
@@ -623,7 +623,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
623
623
|
end
|
|
624
624
|
|
|
625
625
|
it "returns the last matching document" do
|
|
626
|
-
context.last.
|
|
626
|
+
expect(context.last).to eq(friedel)
|
|
627
627
|
end
|
|
628
628
|
end
|
|
629
629
|
|
|
@@ -652,7 +652,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
652
652
|
end
|
|
653
653
|
|
|
654
654
|
it "returns the number of matches" do
|
|
655
|
-
context.send(method).
|
|
655
|
+
expect(context.send(method)).to eq(1)
|
|
656
656
|
end
|
|
657
657
|
end
|
|
658
658
|
|
|
@@ -669,7 +669,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
669
669
|
end
|
|
670
670
|
|
|
671
671
|
it "returns zero" do
|
|
672
|
-
context.send(method).
|
|
672
|
+
expect(context.send(method)).to eq(0)
|
|
673
673
|
end
|
|
674
674
|
end
|
|
675
675
|
end
|
|
@@ -704,7 +704,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
704
704
|
end
|
|
705
705
|
|
|
706
706
|
it "returns the context" do
|
|
707
|
-
limit.
|
|
707
|
+
expect(limit).to eq(context)
|
|
708
708
|
end
|
|
709
709
|
|
|
710
710
|
context "when asking for all documents" do
|
|
@@ -712,7 +712,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
712
712
|
context "when only a limit exists" do
|
|
713
713
|
|
|
714
714
|
it "only returns the limited documents" do
|
|
715
|
-
context.entries.
|
|
715
|
+
expect(context.entries).to eq([ hobrecht, friedel ])
|
|
716
716
|
end
|
|
717
717
|
end
|
|
718
718
|
|
|
@@ -723,7 +723,64 @@ describe Mongoid::Contextual::Memory do
|
|
|
723
723
|
end
|
|
724
724
|
|
|
725
725
|
it "applies the skip before the limit" do
|
|
726
|
-
context.entries.
|
|
726
|
+
expect(context.entries).to eq([ friedel, pfluger ])
|
|
727
|
+
end
|
|
728
|
+
end
|
|
729
|
+
end
|
|
730
|
+
end
|
|
731
|
+
|
|
732
|
+
describe "#pluck" do
|
|
733
|
+
|
|
734
|
+
let(:hobrecht) do
|
|
735
|
+
Address.new(street: "hobrecht")
|
|
736
|
+
end
|
|
737
|
+
|
|
738
|
+
let(:friedel) do
|
|
739
|
+
Address.new(street: "friedel")
|
|
740
|
+
end
|
|
741
|
+
|
|
742
|
+
let(:criteria) do
|
|
743
|
+
Address.all.tap do |crit|
|
|
744
|
+
crit.documents = [ hobrecht, friedel ]
|
|
745
|
+
end
|
|
746
|
+
end
|
|
747
|
+
|
|
748
|
+
let(:context) do
|
|
749
|
+
described_class.new(criteria)
|
|
750
|
+
end
|
|
751
|
+
|
|
752
|
+
context "when plucking" do
|
|
753
|
+
|
|
754
|
+
let!(:plucked) do
|
|
755
|
+
context.pluck(:street)
|
|
756
|
+
end
|
|
757
|
+
|
|
758
|
+
it "returns the values" do
|
|
759
|
+
expect(plucked).to eq([ "hobrecht", "friedel" ])
|
|
760
|
+
end
|
|
761
|
+
end
|
|
762
|
+
|
|
763
|
+
context "when plucking a field that doesnt exist" do
|
|
764
|
+
|
|
765
|
+
context "when pluck one field" do
|
|
766
|
+
|
|
767
|
+
let(:plucked) do
|
|
768
|
+
context.pluck(:foo)
|
|
769
|
+
end
|
|
770
|
+
|
|
771
|
+
it "returns a empty array" do
|
|
772
|
+
expect(plucked).to eq([])
|
|
773
|
+
end
|
|
774
|
+
end
|
|
775
|
+
|
|
776
|
+
context "when pluck multiple fields" do
|
|
777
|
+
|
|
778
|
+
let(:plucked) do
|
|
779
|
+
context.pluck(:foo, :bar)
|
|
780
|
+
end
|
|
781
|
+
|
|
782
|
+
it "returns a empty array" do
|
|
783
|
+
expect(plucked).to eq([[], []])
|
|
727
784
|
end
|
|
728
785
|
end
|
|
729
786
|
end
|
|
@@ -758,7 +815,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
758
815
|
end
|
|
759
816
|
|
|
760
817
|
it "returns the context" do
|
|
761
|
-
skip.
|
|
818
|
+
expect(skip).to eq(context)
|
|
762
819
|
end
|
|
763
820
|
|
|
764
821
|
context "when asking for all documents" do
|
|
@@ -766,7 +823,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
766
823
|
context "when only a skip exists" do
|
|
767
824
|
|
|
768
825
|
it "skips the correct number" do
|
|
769
|
-
context.entries.
|
|
826
|
+
expect(context.entries).to eq([ friedel, pfluger ])
|
|
770
827
|
end
|
|
771
828
|
end
|
|
772
829
|
|
|
@@ -777,7 +834,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
777
834
|
end
|
|
778
835
|
|
|
779
836
|
it "applies the skip before the limit" do
|
|
780
|
-
context.entries.
|
|
837
|
+
expect(context.entries).to eq([ friedel ])
|
|
781
838
|
end
|
|
782
839
|
end
|
|
783
840
|
end
|
|
@@ -816,11 +873,11 @@ describe Mongoid::Contextual::Memory do
|
|
|
816
873
|
end
|
|
817
874
|
|
|
818
875
|
it "sorts the documents" do
|
|
819
|
-
context.entries.
|
|
876
|
+
expect(context.entries).to eq([ friedel, hobrecht, pfluger ])
|
|
820
877
|
end
|
|
821
878
|
|
|
822
879
|
it "returns the context" do
|
|
823
|
-
sorted.
|
|
880
|
+
expect(sorted).to eq(context)
|
|
824
881
|
end
|
|
825
882
|
end
|
|
826
883
|
|
|
@@ -833,11 +890,11 @@ describe Mongoid::Contextual::Memory do
|
|
|
833
890
|
end
|
|
834
891
|
|
|
835
892
|
it "sorts the documents" do
|
|
836
|
-
context.entries.
|
|
893
|
+
expect(context.entries).to eq([ pfluger, hobrecht, friedel ])
|
|
837
894
|
end
|
|
838
895
|
|
|
839
896
|
it "returns the context" do
|
|
840
|
-
sorted.
|
|
897
|
+
expect(sorted).to eq(context)
|
|
841
898
|
end
|
|
842
899
|
end
|
|
843
900
|
|
|
@@ -853,11 +910,11 @@ describe Mongoid::Contextual::Memory do
|
|
|
853
910
|
end
|
|
854
911
|
|
|
855
912
|
it "sorts the documents" do
|
|
856
|
-
context.entries.
|
|
913
|
+
expect(context.entries).to eq([ friedel, hobrecht, pfluger ])
|
|
857
914
|
end
|
|
858
915
|
|
|
859
916
|
it "returns the context" do
|
|
860
|
-
sorted.
|
|
917
|
+
expect(sorted).to eq(context)
|
|
861
918
|
end
|
|
862
919
|
end
|
|
863
920
|
end
|
|
@@ -869,8 +926,13 @@ describe Mongoid::Contextual::Memory do
|
|
|
869
926
|
Address.new(street: "lenau", number: 5, name: "lenau")
|
|
870
927
|
end
|
|
871
928
|
|
|
929
|
+
let(:kampuchea_krom) do
|
|
930
|
+
Address.new(street: "kampuchea krom", number: 5, name: "kampuchea krom")
|
|
931
|
+
end
|
|
932
|
+
|
|
872
933
|
before do
|
|
873
934
|
criteria.documents.unshift(lenau)
|
|
935
|
+
criteria.documents.unshift(kampuchea_krom)
|
|
874
936
|
end
|
|
875
937
|
|
|
876
938
|
context "when the sort is ascending" do
|
|
@@ -880,11 +942,11 @@ describe Mongoid::Contextual::Memory do
|
|
|
880
942
|
end
|
|
881
943
|
|
|
882
944
|
it "sorts the documents" do
|
|
883
|
-
context.entries.
|
|
945
|
+
expect(context.entries).to eq([ friedel, kampuchea_krom, lenau, pfluger, hobrecht ])
|
|
884
946
|
end
|
|
885
947
|
|
|
886
948
|
it "returns the context" do
|
|
887
|
-
sorted.
|
|
949
|
+
expect(sorted).to eq(context)
|
|
888
950
|
end
|
|
889
951
|
end
|
|
890
952
|
|
|
@@ -895,11 +957,11 @@ describe Mongoid::Contextual::Memory do
|
|
|
895
957
|
end
|
|
896
958
|
|
|
897
959
|
it "sorts the documents" do
|
|
898
|
-
context.entries.
|
|
960
|
+
expect(context.entries).to eq([ hobrecht, pfluger, lenau, kampuchea_krom, friedel ])
|
|
899
961
|
end
|
|
900
962
|
|
|
901
963
|
it "returns the context" do
|
|
902
|
-
sorted.
|
|
964
|
+
expect(sorted).to eq(context)
|
|
903
965
|
end
|
|
904
966
|
end
|
|
905
967
|
end
|
|
@@ -911,11 +973,11 @@ describe Mongoid::Contextual::Memory do
|
|
|
911
973
|
end
|
|
912
974
|
|
|
913
975
|
it "does not sort the documents" do
|
|
914
|
-
context.entries.
|
|
976
|
+
expect(context.entries).to eq([ hobrecht, friedel, pfluger ])
|
|
915
977
|
end
|
|
916
978
|
|
|
917
979
|
it "returns the context" do
|
|
918
|
-
sorted.
|
|
980
|
+
expect(sorted).to eq(context)
|
|
919
981
|
end
|
|
920
982
|
end
|
|
921
983
|
|
|
@@ -926,7 +988,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
926
988
|
end
|
|
927
989
|
|
|
928
990
|
it "sorts the documents" do
|
|
929
|
-
context.entries.
|
|
991
|
+
expect(context.entries).to eq([ friedel, hobrecht, pfluger ])
|
|
930
992
|
end
|
|
931
993
|
end
|
|
932
994
|
end
|
|
@@ -968,29 +1030,29 @@ describe Mongoid::Contextual::Memory do
|
|
|
968
1030
|
end
|
|
969
1031
|
|
|
970
1032
|
it "updates the first matching document" do
|
|
971
|
-
hobrecht.number.
|
|
1033
|
+
expect(hobrecht.number).to eq(5)
|
|
972
1034
|
end
|
|
973
1035
|
|
|
974
1036
|
it "does not update the last matching document" do
|
|
975
|
-
friedel.number.
|
|
1037
|
+
expect(friedel.number).to be_nil
|
|
976
1038
|
end
|
|
977
1039
|
|
|
978
1040
|
it "does not update non matching docs" do
|
|
979
|
-
pfluger.number.
|
|
1041
|
+
expect(pfluger.number).to be_nil
|
|
980
1042
|
end
|
|
981
1043
|
|
|
982
1044
|
context "when reloading the embedded documents" do
|
|
983
1045
|
|
|
984
1046
|
it "updates the first matching document" do
|
|
985
|
-
hobrecht.reload.number.
|
|
1047
|
+
expect(hobrecht.reload.number).to eq(5)
|
|
986
1048
|
end
|
|
987
1049
|
|
|
988
1050
|
it "updates the last matching document" do
|
|
989
|
-
friedel.reload.number.
|
|
1051
|
+
expect(friedel.reload.number).to be_nil
|
|
990
1052
|
end
|
|
991
1053
|
|
|
992
1054
|
it "does not update non matching docs" do
|
|
993
|
-
pfluger.reload.number.
|
|
1055
|
+
expect(pfluger.reload.number).to be_nil
|
|
994
1056
|
end
|
|
995
1057
|
end
|
|
996
1058
|
end
|
|
@@ -998,7 +1060,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
998
1060
|
context "when no attributes are provided" do
|
|
999
1061
|
|
|
1000
1062
|
it "returns false" do
|
|
1001
|
-
context.update.
|
|
1063
|
+
expect(context.update).to be false
|
|
1002
1064
|
end
|
|
1003
1065
|
end
|
|
1004
1066
|
end
|
|
@@ -1030,21 +1092,21 @@ describe Mongoid::Contextual::Memory do
|
|
|
1030
1092
|
end
|
|
1031
1093
|
|
|
1032
1094
|
it "updates the first matching document" do
|
|
1033
|
-
work.number.
|
|
1095
|
+
expect(work.number).to eq(5)
|
|
1034
1096
|
end
|
|
1035
1097
|
|
|
1036
1098
|
it "does not update non matching docs" do
|
|
1037
|
-
home.number.
|
|
1099
|
+
expect(home.number).to be_nil
|
|
1038
1100
|
end
|
|
1039
1101
|
|
|
1040
1102
|
context "when reloading the embedded documents" do
|
|
1041
1103
|
|
|
1042
1104
|
it "updates the first matching document" do
|
|
1043
|
-
work.reload.number.
|
|
1105
|
+
expect(work.reload.number).to eq(5)
|
|
1044
1106
|
end
|
|
1045
1107
|
|
|
1046
1108
|
it "does not update non matching docs" do
|
|
1047
|
-
home.reload.number.
|
|
1109
|
+
expect(home.reload.number).to be_nil
|
|
1048
1110
|
end
|
|
1049
1111
|
end
|
|
1050
1112
|
end
|
|
@@ -1052,7 +1114,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
1052
1114
|
context "when no attributes are provided" do
|
|
1053
1115
|
|
|
1054
1116
|
it "returns false" do
|
|
1055
|
-
context.update.
|
|
1117
|
+
expect(context.update).to be false
|
|
1056
1118
|
end
|
|
1057
1119
|
end
|
|
1058
1120
|
end
|
|
@@ -1091,7 +1153,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
1091
1153
|
end
|
|
1092
1154
|
|
|
1093
1155
|
it "returns false" do
|
|
1094
|
-
context.update_all({}).
|
|
1156
|
+
expect(context.update_all({})).to be false
|
|
1095
1157
|
end
|
|
1096
1158
|
end
|
|
1097
1159
|
|
|
@@ -1114,15 +1176,15 @@ describe Mongoid::Contextual::Memory do
|
|
|
1114
1176
|
end
|
|
1115
1177
|
|
|
1116
1178
|
it "updates the first matching document" do
|
|
1117
|
-
hobrecht.suite.
|
|
1179
|
+
expect(hobrecht.suite).to eq("10B")
|
|
1118
1180
|
end
|
|
1119
1181
|
|
|
1120
1182
|
it "updates the last matching document" do
|
|
1121
|
-
friedel.suite.
|
|
1183
|
+
expect(friedel.suite).to eq("10B")
|
|
1122
1184
|
end
|
|
1123
1185
|
|
|
1124
1186
|
it "does not update non matching docs" do
|
|
1125
|
-
pfluger.suite.
|
|
1187
|
+
expect(pfluger.suite).to be_nil
|
|
1126
1188
|
end
|
|
1127
1189
|
end
|
|
1128
1190
|
|
|
@@ -1133,29 +1195,29 @@ describe Mongoid::Contextual::Memory do
|
|
|
1133
1195
|
end
|
|
1134
1196
|
|
|
1135
1197
|
it "updates the first matching document" do
|
|
1136
|
-
hobrecht.number.
|
|
1198
|
+
expect(hobrecht.number).to eq(5)
|
|
1137
1199
|
end
|
|
1138
1200
|
|
|
1139
1201
|
it "updates the last matching document" do
|
|
1140
|
-
friedel.number.
|
|
1202
|
+
expect(friedel.number).to eq(5)
|
|
1141
1203
|
end
|
|
1142
1204
|
|
|
1143
1205
|
it "does not update non matching docs" do
|
|
1144
|
-
pfluger.number.
|
|
1206
|
+
expect(pfluger.number).to be_nil
|
|
1145
1207
|
end
|
|
1146
1208
|
|
|
1147
1209
|
context "when reloading the embedded documents" do
|
|
1148
1210
|
|
|
1149
1211
|
it "updates the first matching document" do
|
|
1150
|
-
hobrecht.reload.number.
|
|
1212
|
+
expect(hobrecht.reload.number).to eq(5)
|
|
1151
1213
|
end
|
|
1152
1214
|
|
|
1153
1215
|
it "updates the last matching document" do
|
|
1154
|
-
friedel.reload.number.
|
|
1216
|
+
expect(friedel.reload.number).to eq(5)
|
|
1155
1217
|
end
|
|
1156
1218
|
|
|
1157
1219
|
it "does not update non matching docs" do
|
|
1158
|
-
pfluger.reload.number.
|
|
1220
|
+
expect(pfluger.reload.number).to be_nil
|
|
1159
1221
|
end
|
|
1160
1222
|
end
|
|
1161
1223
|
|
|
@@ -1166,7 +1228,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
1166
1228
|
end
|
|
1167
1229
|
|
|
1168
1230
|
it "does not error on the update" do
|
|
1169
|
-
hobrecht.number.
|
|
1231
|
+
expect(hobrecht.number).to eq(5)
|
|
1170
1232
|
end
|
|
1171
1233
|
end
|
|
1172
1234
|
end
|
|
@@ -1174,7 +1236,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
1174
1236
|
context "when no attributes are provided" do
|
|
1175
1237
|
|
|
1176
1238
|
it "returns false" do
|
|
1177
|
-
context.update_all.
|
|
1239
|
+
expect(context.update_all).to be false
|
|
1178
1240
|
end
|
|
1179
1241
|
end
|
|
1180
1242
|
end
|
|
@@ -1206,21 +1268,21 @@ describe Mongoid::Contextual::Memory do
|
|
|
1206
1268
|
end
|
|
1207
1269
|
|
|
1208
1270
|
it "updates the first matching document" do
|
|
1209
|
-
work.number.
|
|
1271
|
+
expect(work.number).to eq(5)
|
|
1210
1272
|
end
|
|
1211
1273
|
|
|
1212
1274
|
it "does not update non matching docs" do
|
|
1213
|
-
home.number.
|
|
1275
|
+
expect(home.number).to be_nil
|
|
1214
1276
|
end
|
|
1215
1277
|
|
|
1216
1278
|
context "when reloading the embedded documents" do
|
|
1217
1279
|
|
|
1218
1280
|
it "updates the first matching document" do
|
|
1219
|
-
work.reload.number.
|
|
1281
|
+
expect(work.reload.number).to eq(5)
|
|
1220
1282
|
end
|
|
1221
1283
|
|
|
1222
1284
|
it "does not update non matching docs" do
|
|
1223
|
-
home.reload.number.
|
|
1285
|
+
expect(home.reload.number).to be_nil
|
|
1224
1286
|
end
|
|
1225
1287
|
end
|
|
1226
1288
|
end
|
|
@@ -1228,7 +1290,7 @@ describe Mongoid::Contextual::Memory do
|
|
|
1228
1290
|
context "when no attributes are provided" do
|
|
1229
1291
|
|
|
1230
1292
|
it "returns false" do
|
|
1231
|
-
context.update_all.
|
|
1293
|
+
expect(context.update_all).to be false
|
|
1232
1294
|
end
|
|
1233
1295
|
end
|
|
1234
1296
|
end
|