mongoid 3.1.6 → 4.0.0
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 +432 -8
- data/README.md +5 -6
- data/lib/config/locales/en.yml +32 -18
- 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 +1 -12
- 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 -101
- 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/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 +18 -6
- data/lib/mongoid/contextual/mongo.rb +64 -56
- 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 +32 -17
- 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 +2 -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} +8 -2
- 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 +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/matchable.rb +152 -0
- data/lib/mongoid/persistable/creatable.rb +188 -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 +152 -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 +247 -0
- data/lib/mongoid/railtie.rb +32 -45
- data/lib/mongoid/railties/database.rake +9 -25
- data/lib/mongoid/relations/accessors.rb +13 -49
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +1 -24
- 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 +3 -1
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/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 +30 -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/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 +19 -32
- data/lib/mongoid/relations/referenced/many_to_many.rb +15 -38
- data/lib/mongoid/relations/referenced/one.rb +6 -25
- data/lib/mongoid/relations/synchronization.rb +3 -3
- data/lib/mongoid/relations/touchable.rb +34 -1
- data/lib/mongoid/relations.rb +11 -25
- data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
- 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 +180 -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 +0 -157
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
- 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 +23 -19
- 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 +13 -24
- 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/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/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} +335 -448
- data/spec/mongoid/attributes/readonly_spec.rb +58 -18
- data/spec/mongoid/attributes_spec.rb +315 -436
- 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 +68 -58
- 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 +151 -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 +1255 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
- data/spec/mongoid/criteria_spec.rb +578 -2295
- data/spec/mongoid/document_spec.rb +166 -120
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_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 +15 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +38 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +263 -217
- data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +127 -27
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +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 +512 -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 +461 -0
- data/spec/mongoid/persistable/settable_spec.rb +139 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +9 -9
- data/spec/mongoid/query_cache_spec.rb +231 -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 +393 -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 +434 -527
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +352 -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} +20 -60
- 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 +107 -0
- data/spec/mongoid/sessions_spec.rb +289 -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 +29 -13
- metadata +296 -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/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/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
|
@@ -27,19 +27,19 @@ describe Mongoid::Contextual::Atomic do
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
before do
|
|
30
|
-
context.add_to_set(:
|
|
30
|
+
context.add_to_set(members: "Dave")
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it "does not add duplicates" do
|
|
34
|
-
depeche_mode.reload.members.
|
|
34
|
+
expect(depeche_mode.reload.members).to eq([ "Dave" ])
|
|
35
35
|
end
|
|
36
36
|
|
|
37
37
|
it "adds unique values" do
|
|
38
|
-
new_order.reload.members.
|
|
38
|
+
expect(new_order.reload.members).to eq([ "Peter", "Dave" ])
|
|
39
39
|
end
|
|
40
40
|
|
|
41
41
|
it "adds to non initialized fields" do
|
|
42
|
-
smiths.reload.members.
|
|
42
|
+
expect(smiths.reload.members).to eq([ "Dave" ])
|
|
43
43
|
end
|
|
44
44
|
end
|
|
45
45
|
|
|
@@ -54,19 +54,23 @@ describe Mongoid::Contextual::Atomic do
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
before do
|
|
57
|
-
context.add_to_set(:
|
|
57
|
+
context.add_to_set(members: "Dave", genres: "Electro")
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
it "does not add duplicates" do
|
|
61
|
-
depeche_mode.reload.members.
|
|
61
|
+
expect(depeche_mode.reload.members).to eq([ "Dave" ])
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
it "adds multiple operations" do
|
|
65
|
+
expect(depeche_mode.reload.genres).to eq([ "Electro" ])
|
|
62
66
|
end
|
|
63
67
|
|
|
64
68
|
it "adds unique values" do
|
|
65
|
-
new_order.reload.members.
|
|
69
|
+
expect(new_order.reload.members).to eq([ "Peter", "Dave" ])
|
|
66
70
|
end
|
|
67
71
|
|
|
68
72
|
it "adds to non initialized fields" do
|
|
69
|
-
smiths.reload.members.
|
|
73
|
+
expect(smiths.reload.members).to eq([ "Dave" ])
|
|
70
74
|
end
|
|
71
75
|
end
|
|
72
76
|
end
|
|
@@ -92,45 +96,51 @@ describe Mongoid::Contextual::Atomic do
|
|
|
92
96
|
context "when performing a bitwise and" do
|
|
93
97
|
|
|
94
98
|
before do
|
|
95
|
-
context.bit(:
|
|
99
|
+
context.bit(likes: { and: 13 })
|
|
96
100
|
end
|
|
97
101
|
|
|
98
102
|
it "performs the bitwise operation on initialized fields" do
|
|
99
|
-
depeche_mode.reload.likes.
|
|
103
|
+
expect(depeche_mode.reload.likes).to eq(12)
|
|
100
104
|
end
|
|
101
105
|
|
|
102
|
-
|
|
103
|
-
|
|
106
|
+
if mongodb_version > "2.5"
|
|
107
|
+
it "does not error on non initialized fields" do
|
|
108
|
+
expect(smiths.reload.likes).to eq(0)
|
|
109
|
+
end
|
|
104
110
|
end
|
|
105
111
|
end
|
|
106
112
|
|
|
107
113
|
context "when performing a bitwise or" do
|
|
108
114
|
|
|
109
115
|
before do
|
|
110
|
-
context.bit(:
|
|
116
|
+
context.bit(likes: { or: 13 })
|
|
111
117
|
end
|
|
112
118
|
|
|
113
119
|
it "performs the bitwise operation on initialized fields" do
|
|
114
|
-
depeche_mode.reload.likes.
|
|
120
|
+
expect(depeche_mode.reload.likes).to eq(61)
|
|
115
121
|
end
|
|
116
122
|
|
|
117
|
-
|
|
118
|
-
|
|
123
|
+
if mongodb_version > "2.5"
|
|
124
|
+
it "does not error on non initialized fields" do
|
|
125
|
+
expect(smiths.reload.likes).to eq(13)
|
|
126
|
+
end
|
|
119
127
|
end
|
|
120
128
|
end
|
|
121
129
|
|
|
122
130
|
context "when chaining bitwise operations" do
|
|
123
131
|
|
|
124
132
|
before do
|
|
125
|
-
context.bit(:
|
|
133
|
+
context.bit(likes: { and: 13, or: 10 })
|
|
126
134
|
end
|
|
127
135
|
|
|
128
136
|
it "performs the bitwise operation on initialized fields" do
|
|
129
|
-
depeche_mode.reload.likes.
|
|
137
|
+
expect(depeche_mode.reload.likes).to eq(14)
|
|
130
138
|
end
|
|
131
139
|
|
|
132
|
-
|
|
133
|
-
|
|
140
|
+
if mongodb_version > "2.5"
|
|
141
|
+
it "does not error on non initialized fields" do
|
|
142
|
+
expect(smiths.reload.likes).to eq(10)
|
|
143
|
+
end
|
|
134
144
|
end
|
|
135
145
|
end
|
|
136
146
|
end
|
|
@@ -158,35 +168,35 @@ describe Mongoid::Contextual::Atomic do
|
|
|
158
168
|
end
|
|
159
169
|
|
|
160
170
|
before do
|
|
161
|
-
context.inc(:
|
|
171
|
+
context.inc(likes: 10)
|
|
162
172
|
end
|
|
163
173
|
|
|
164
174
|
context "when the field exists" do
|
|
165
175
|
|
|
166
176
|
it "incs the value" do
|
|
167
|
-
depeche_mode.reload.likes.
|
|
177
|
+
expect(depeche_mode.reload.likes).to eq(70)
|
|
168
178
|
end
|
|
169
179
|
end
|
|
170
180
|
|
|
171
181
|
context "when the field does not exist" do
|
|
172
182
|
|
|
173
183
|
it "does not error on the inc" do
|
|
174
|
-
smiths.likes.
|
|
184
|
+
expect(smiths.likes).to be_nil
|
|
175
185
|
end
|
|
176
186
|
end
|
|
177
187
|
|
|
178
188
|
context "when using the alias" do
|
|
179
189
|
|
|
180
190
|
before do
|
|
181
|
-
context.inc(:
|
|
191
|
+
context.inc(years: 1)
|
|
182
192
|
end
|
|
183
193
|
|
|
184
194
|
it "incs the value and read from alias" do
|
|
185
|
-
beatles.reload.years.
|
|
195
|
+
expect(beatles.reload.years).to eq(3)
|
|
186
196
|
end
|
|
187
197
|
|
|
188
198
|
it "incs the value and read from field" do
|
|
189
|
-
beatles.reload.y.
|
|
199
|
+
expect(beatles.reload.y).to eq(3)
|
|
190
200
|
end
|
|
191
201
|
end
|
|
192
202
|
end
|
|
@@ -212,30 +222,30 @@ describe Mongoid::Contextual::Atomic do
|
|
|
212
222
|
context "when popping from the front" do
|
|
213
223
|
|
|
214
224
|
before do
|
|
215
|
-
context.pop(:
|
|
225
|
+
context.pop(members: -1)
|
|
216
226
|
end
|
|
217
227
|
|
|
218
228
|
it "pops the first element off the array" do
|
|
219
|
-
depeche_mode.reload.members.
|
|
229
|
+
expect(depeche_mode.reload.members).to eq([ "Martin" ])
|
|
220
230
|
end
|
|
221
231
|
|
|
222
232
|
it "does not error on uninitialized fields" do
|
|
223
|
-
smiths.reload.members.
|
|
233
|
+
expect(smiths.reload.members).to be_nil
|
|
224
234
|
end
|
|
225
235
|
end
|
|
226
236
|
|
|
227
237
|
context "when popping from the rear" do
|
|
228
238
|
|
|
229
239
|
before do
|
|
230
|
-
context.pop(:
|
|
240
|
+
context.pop(members: 1)
|
|
231
241
|
end
|
|
232
242
|
|
|
233
243
|
it "pops the last element off the array" do
|
|
234
|
-
depeche_mode.reload.members.
|
|
244
|
+
expect(depeche_mode.reload.members).to eq([ "Dave" ])
|
|
235
245
|
end
|
|
236
246
|
|
|
237
247
|
it "does not error on uninitialized fields" do
|
|
238
|
-
smiths.reload.members.
|
|
248
|
+
expect(smiths.reload.members).to be_nil
|
|
239
249
|
end
|
|
240
250
|
end
|
|
241
251
|
end
|
|
@@ -259,15 +269,15 @@ describe Mongoid::Contextual::Atomic do
|
|
|
259
269
|
end
|
|
260
270
|
|
|
261
271
|
before do
|
|
262
|
-
context.pull(:
|
|
272
|
+
context.pull(members: "Alan")
|
|
263
273
|
end
|
|
264
274
|
|
|
265
275
|
it "pulls when the value is found" do
|
|
266
|
-
depeche_mode.reload.members.
|
|
276
|
+
expect(depeche_mode.reload.members).to eq([ "Dave" ])
|
|
267
277
|
end
|
|
268
278
|
|
|
269
279
|
it "does not error on non existant fields" do
|
|
270
|
-
smiths.reload.members.
|
|
280
|
+
expect(smiths.reload.members).to be_nil
|
|
271
281
|
end
|
|
272
282
|
end
|
|
273
283
|
|
|
@@ -290,15 +300,15 @@ describe Mongoid::Contextual::Atomic do
|
|
|
290
300
|
end
|
|
291
301
|
|
|
292
302
|
before do
|
|
293
|
-
context.pull_all(:
|
|
303
|
+
context.pull_all(members: [ "Alan", "Dave" ])
|
|
294
304
|
end
|
|
295
305
|
|
|
296
306
|
it "pulls when the values are found" do
|
|
297
|
-
depeche_mode.reload.members.
|
|
307
|
+
expect(depeche_mode.reload.members).to eq([ "Fletch" ])
|
|
298
308
|
end
|
|
299
309
|
|
|
300
310
|
it "does not error on non existant fields" do
|
|
301
|
-
smiths.reload.members.
|
|
311
|
+
expect(smiths.reload.members).to be_nil
|
|
302
312
|
end
|
|
303
313
|
end
|
|
304
314
|
|
|
@@ -321,15 +331,15 @@ describe Mongoid::Contextual::Atomic do
|
|
|
321
331
|
end
|
|
322
332
|
|
|
323
333
|
before do
|
|
324
|
-
context.push(:
|
|
334
|
+
context.push(members: "Alan")
|
|
325
335
|
end
|
|
326
336
|
|
|
327
337
|
it "pushes the value to existing arrays" do
|
|
328
|
-
depeche_mode.reload.members.
|
|
338
|
+
expect(depeche_mode.reload.members).to eq([ "Dave", "Alan" ])
|
|
329
339
|
end
|
|
330
340
|
|
|
331
341
|
it "pushes to non existant fields" do
|
|
332
|
-
smiths.reload.members.
|
|
342
|
+
expect(smiths.reload.members).to eq([ "Alan" ])
|
|
333
343
|
end
|
|
334
344
|
end
|
|
335
345
|
|
|
@@ -352,15 +362,15 @@ describe Mongoid::Contextual::Atomic do
|
|
|
352
362
|
end
|
|
353
363
|
|
|
354
364
|
before do
|
|
355
|
-
context.push_all(:
|
|
365
|
+
context.push_all(members: [ "Alan", "Fletch" ])
|
|
356
366
|
end
|
|
357
367
|
|
|
358
368
|
it "pushes the values to existing arrays" do
|
|
359
|
-
depeche_mode.reload.members.
|
|
369
|
+
expect(depeche_mode.reload.members).to eq([ "Dave", "Alan", "Fletch" ])
|
|
360
370
|
end
|
|
361
371
|
|
|
362
372
|
it "pushes to non existant fields" do
|
|
363
|
-
smiths.reload.members.
|
|
373
|
+
expect(smiths.reload.members).to eq([ "Alan", "Fletch" ])
|
|
364
374
|
end
|
|
365
375
|
end
|
|
366
376
|
|
|
@@ -383,15 +393,15 @@ describe Mongoid::Contextual::Atomic do
|
|
|
383
393
|
end
|
|
384
394
|
|
|
385
395
|
before do
|
|
386
|
-
context.rename(:
|
|
396
|
+
context.rename(members: :artists)
|
|
387
397
|
end
|
|
388
398
|
|
|
389
399
|
it "renames existing fields" do
|
|
390
|
-
depeche_mode.reload.artists.
|
|
400
|
+
expect(depeche_mode.reload.artists).to eq([ "Dave" ])
|
|
391
401
|
end
|
|
392
402
|
|
|
393
403
|
it "does not rename non existant fields" do
|
|
394
|
-
smiths.reload.
|
|
404
|
+
expect(smiths.reload).to_not respond_to(:artists)
|
|
395
405
|
end
|
|
396
406
|
end
|
|
397
407
|
|
|
@@ -414,15 +424,15 @@ describe Mongoid::Contextual::Atomic do
|
|
|
414
424
|
end
|
|
415
425
|
|
|
416
426
|
before do
|
|
417
|
-
context.set(:
|
|
427
|
+
context.set(name: "Recoil")
|
|
418
428
|
end
|
|
419
429
|
|
|
420
430
|
it "sets existing fields" do
|
|
421
|
-
depeche_mode.reload.name.
|
|
431
|
+
expect(depeche_mode.reload.name).to eq("Recoil")
|
|
422
432
|
end
|
|
423
433
|
|
|
424
434
|
it "sets non existant fields" do
|
|
425
|
-
smiths.reload.name.
|
|
435
|
+
expect(smiths.reload.name).to eq("Recoil")
|
|
426
436
|
end
|
|
427
437
|
end
|
|
428
438
|
|
|
@@ -453,11 +463,11 @@ describe Mongoid::Contextual::Atomic do
|
|
|
453
463
|
end
|
|
454
464
|
|
|
455
465
|
it "unsets the first existing field" do
|
|
456
|
-
depeche_mode.reload.name.
|
|
466
|
+
expect(depeche_mode.reload.name).to be_nil
|
|
457
467
|
end
|
|
458
468
|
|
|
459
469
|
it "unsets the last existing field" do
|
|
460
|
-
new_order.reload.name.
|
|
470
|
+
expect(new_order.reload.name).to be_nil
|
|
461
471
|
end
|
|
462
472
|
end
|
|
463
473
|
|
|
@@ -468,11 +478,11 @@ describe Mongoid::Contextual::Atomic do
|
|
|
468
478
|
end
|
|
469
479
|
|
|
470
480
|
it "unsets the first existing field" do
|
|
471
|
-
depeche_mode.reload.years.
|
|
481
|
+
expect(depeche_mode.reload.years).to be_nil
|
|
472
482
|
end
|
|
473
483
|
|
|
474
484
|
it "unsets the last existing field" do
|
|
475
|
-
new_order.reload.years.
|
|
485
|
+
expect(new_order.reload.years).to be_nil
|
|
476
486
|
end
|
|
477
487
|
end
|
|
478
488
|
end
|
|
@@ -498,11 +508,11 @@ describe Mongoid::Contextual::Atomic do
|
|
|
498
508
|
end
|
|
499
509
|
|
|
500
510
|
it "unsets name field" do
|
|
501
|
-
new_order.reload.name.
|
|
511
|
+
expect(new_order.reload.name).to be_nil
|
|
502
512
|
end
|
|
503
513
|
|
|
504
514
|
it "unsets genres field" do
|
|
505
|
-
new_order.reload.genres.
|
|
515
|
+
expect(new_order.reload.genres).to be_nil
|
|
506
516
|
end
|
|
507
517
|
end
|
|
508
518
|
|
|
@@ -513,11 +523,11 @@ describe Mongoid::Contextual::Atomic do
|
|
|
513
523
|
end
|
|
514
524
|
|
|
515
525
|
it "unsets the unaliased field" do
|
|
516
|
-
new_order.reload.name.
|
|
526
|
+
expect(new_order.reload.name).to be_nil
|
|
517
527
|
end
|
|
518
528
|
|
|
519
529
|
it "unsets the aliased field" do
|
|
520
|
-
new_order.reload.years.
|
|
530
|
+
expect(new_order.reload.years).to be_nil
|
|
521
531
|
end
|
|
522
532
|
end
|
|
523
533
|
end
|
|
@@ -33,11 +33,11 @@ describe Mongoid::Contextual::FindAndModify do
|
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
it "returns the first matching document" do
|
|
36
|
-
result["name"].
|
|
36
|
+
expect(result["name"]).to eq("Depeche Mode")
|
|
37
37
|
end
|
|
38
38
|
|
|
39
39
|
it "updates the document in the database" do
|
|
40
|
-
depeche.reload.likes.
|
|
40
|
+
expect(depeche.reload.likes).to eq(1)
|
|
41
41
|
end
|
|
42
42
|
end
|
|
43
43
|
|
|
@@ -60,11 +60,11 @@ describe Mongoid::Contextual::FindAndModify do
|
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
it "returns the first matching document" do
|
|
63
|
-
result["name"].
|
|
63
|
+
expect(result["name"]).to eq("Depeche Mode")
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
it "updates the document in the database" do
|
|
67
|
-
depeche.reload.created.
|
|
67
|
+
expect(depeche.reload.created).to eq(date_time)
|
|
68
68
|
end
|
|
69
69
|
end
|
|
70
70
|
|
|
@@ -83,11 +83,11 @@ describe Mongoid::Contextual::FindAndModify do
|
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
it "returns the first matching document" do
|
|
86
|
-
result["name"].
|
|
86
|
+
expect(result["name"]).to eq("Tool")
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
it "updates the document in the database" do
|
|
90
|
-
tool.reload.likes.
|
|
90
|
+
expect(tool.reload.likes).to eq(1)
|
|
91
91
|
end
|
|
92
92
|
end
|
|
93
93
|
|
|
@@ -106,15 +106,15 @@ describe Mongoid::Contextual::FindAndModify do
|
|
|
106
106
|
end
|
|
107
107
|
|
|
108
108
|
it "returns the first matching document" do
|
|
109
|
-
result["_id"].
|
|
109
|
+
expect(result["_id"]).to eq(depeche.id)
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
it "limits the returned fields" do
|
|
113
|
-
result["name"].
|
|
113
|
+
expect(result["name"]).to be_nil
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
it "updates the document in the database" do
|
|
117
|
-
depeche.reload.likes.
|
|
117
|
+
expect(depeche.reload.likes).to eq(1)
|
|
118
118
|
end
|
|
119
119
|
end
|
|
120
120
|
|
|
@@ -133,11 +133,11 @@ describe Mongoid::Contextual::FindAndModify do
|
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
it "returns the first matching document" do
|
|
136
|
-
result["name"].
|
|
136
|
+
expect(result["name"]).to eq("Depeche Mode")
|
|
137
137
|
end
|
|
138
138
|
|
|
139
139
|
it "returns the updated document" do
|
|
140
|
-
result["likes"].
|
|
140
|
+
expect(result["likes"]).to eq(1)
|
|
141
141
|
end
|
|
142
142
|
end
|
|
143
143
|
|
|
@@ -156,7 +156,7 @@ describe Mongoid::Contextual::FindAndModify do
|
|
|
156
156
|
end
|
|
157
157
|
|
|
158
158
|
it "returns the first matching document" do
|
|
159
|
-
result["name"].
|
|
159
|
+
expect(result["name"]).to eq("Depeche Mode")
|
|
160
160
|
end
|
|
161
161
|
|
|
162
162
|
it "deletes the document from the database" do
|
|
@@ -193,7 +193,7 @@ describe Mongoid::Contextual::FindAndModify do
|
|
|
193
193
|
result
|
|
194
194
|
}.to_not change{Band.where(name: "The Mars Volta").count}
|
|
195
195
|
|
|
196
|
-
the_mars_volta.reload.likes.
|
|
196
|
+
expect(the_mars_volta.reload.likes).to eq(1)
|
|
197
197
|
end
|
|
198
198
|
end
|
|
199
199
|
end
|
|
@@ -213,7 +213,7 @@ describe Mongoid::Contextual::FindAndModify do
|
|
|
213
213
|
end
|
|
214
214
|
|
|
215
215
|
it "returns nil" do
|
|
216
|
-
result.
|
|
216
|
+
expect(result).to be_nil
|
|
217
217
|
end
|
|
218
218
|
end
|
|
219
219
|
end
|
|
@@ -31,7 +31,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
31
31
|
end
|
|
32
32
|
|
|
33
33
|
it "returns the average distance" do
|
|
34
|
-
geo_near.average_distance.
|
|
34
|
+
expect(geo_near.average_distance).to_not be_nil
|
|
35
35
|
end
|
|
36
36
|
end
|
|
37
37
|
|
|
@@ -46,7 +46,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
it "returns 0.0" do
|
|
49
|
-
geo_near.average_distance.
|
|
49
|
+
expect(geo_near.average_distance).to be_nil
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
52
|
end
|
|
@@ -84,7 +84,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
84
84
|
end
|
|
85
85
|
|
|
86
86
|
it "returns all the documents" do
|
|
87
|
-
results.
|
|
87
|
+
expect(results).to eq([ bar_one, bar_two ])
|
|
88
88
|
end
|
|
89
89
|
end
|
|
90
90
|
|
|
@@ -103,7 +103,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
it "returns the limited documents" do
|
|
106
|
-
results.
|
|
106
|
+
expect(results).to eq([ bar_one ])
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
|
@@ -122,7 +122,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
122
122
|
end
|
|
123
123
|
|
|
124
124
|
it "returns the limited documents" do
|
|
125
|
-
results.
|
|
125
|
+
expect(results).to eq([ bar_one ])
|
|
126
126
|
end
|
|
127
127
|
end
|
|
128
128
|
|
|
@@ -141,7 +141,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
141
141
|
end
|
|
142
142
|
|
|
143
143
|
it "returns the documents" do
|
|
144
|
-
results.
|
|
144
|
+
expect(results).to eq([ bar_one, bar_two ])
|
|
145
145
|
end
|
|
146
146
|
end
|
|
147
147
|
|
|
@@ -160,11 +160,11 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
160
160
|
end
|
|
161
161
|
|
|
162
162
|
it "returns the documents" do
|
|
163
|
-
results.
|
|
163
|
+
expect(results).to eq([ bar_one, bar_two ])
|
|
164
164
|
end
|
|
165
165
|
|
|
166
166
|
it "multiplies the distance factor" do
|
|
167
|
-
results.first.geo_near_distance.to_i.
|
|
167
|
+
expect(results.first.geo_near_distance.to_i).to eq(2490)
|
|
168
168
|
end
|
|
169
169
|
end
|
|
170
170
|
|
|
@@ -183,7 +183,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
183
183
|
end
|
|
184
184
|
|
|
185
185
|
it "returns the documents" do
|
|
186
|
-
results.
|
|
186
|
+
expect(results).to eq([ bar_one, bar_two ])
|
|
187
187
|
end
|
|
188
188
|
end
|
|
189
189
|
end
|
|
@@ -217,7 +217,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
217
217
|
end
|
|
218
218
|
|
|
219
219
|
it "returns false" do
|
|
220
|
-
geo_near.
|
|
220
|
+
expect(geo_near).to_not be_empty
|
|
221
221
|
end
|
|
222
222
|
end
|
|
223
223
|
|
|
@@ -228,7 +228,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
228
228
|
end
|
|
229
229
|
|
|
230
230
|
it "returns true" do
|
|
231
|
-
geo_near.
|
|
231
|
+
expect(geo_near).to be_empty
|
|
232
232
|
end
|
|
233
233
|
end
|
|
234
234
|
end
|
|
@@ -264,7 +264,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
264
264
|
end
|
|
265
265
|
|
|
266
266
|
it "returns a hash" do
|
|
267
|
-
execution_results.
|
|
267
|
+
expect(execution_results).to be_a_kind_of(Hash)
|
|
268
268
|
end
|
|
269
269
|
end
|
|
270
270
|
|
|
@@ -297,7 +297,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
297
297
|
end
|
|
298
298
|
|
|
299
299
|
it "returns the max distance" do
|
|
300
|
-
geo_near.max_distance.
|
|
300
|
+
expect(geo_near.max_distance).to_not be_nil
|
|
301
301
|
end
|
|
302
302
|
end
|
|
303
303
|
|
|
@@ -312,7 +312,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
312
312
|
end
|
|
313
313
|
|
|
314
314
|
it "returns 0.0" do
|
|
315
|
-
geo_near.max_distance.
|
|
315
|
+
expect(geo_near.max_distance).to eq(0.0)
|
|
316
316
|
end
|
|
317
317
|
end
|
|
318
318
|
end
|
|
@@ -344,31 +344,31 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
344
344
|
end
|
|
345
345
|
|
|
346
346
|
it "contains the selector" do
|
|
347
|
-
geo_near.inspect.
|
|
347
|
+
expect(geo_near.inspect).to include("selector")
|
|
348
348
|
end
|
|
349
349
|
|
|
350
350
|
it "contains the class" do
|
|
351
|
-
geo_near.inspect.
|
|
351
|
+
expect(geo_near.inspect).to include("class")
|
|
352
352
|
end
|
|
353
353
|
|
|
354
354
|
it "contains the near" do
|
|
355
|
-
geo_near.inspect.
|
|
355
|
+
expect(geo_near.inspect).to include("near")
|
|
356
356
|
end
|
|
357
357
|
|
|
358
358
|
it "contains the multiplier" do
|
|
359
|
-
geo_near.inspect.
|
|
359
|
+
expect(geo_near.inspect).to include("multiplier")
|
|
360
360
|
end
|
|
361
361
|
|
|
362
362
|
it "contains the max" do
|
|
363
|
-
geo_near.inspect.
|
|
363
|
+
expect(geo_near.inspect).to include("max")
|
|
364
364
|
end
|
|
365
365
|
|
|
366
366
|
it "contains the unique" do
|
|
367
|
-
geo_near.inspect.
|
|
367
|
+
expect(geo_near.inspect).to include("unique")
|
|
368
368
|
end
|
|
369
369
|
|
|
370
370
|
it "contains the spherical" do
|
|
371
|
-
geo_near.inspect.
|
|
371
|
+
expect(geo_near.inspect).to include("spherical")
|
|
372
372
|
end
|
|
373
373
|
end
|
|
374
374
|
|
|
@@ -399,7 +399,7 @@ describe Mongoid::Contextual::GeoNear do
|
|
|
399
399
|
end
|
|
400
400
|
|
|
401
401
|
it "returns the execution time" do
|
|
402
|
-
geo_near.time.
|
|
402
|
+
expect(geo_near.time).to_not be_nil
|
|
403
403
|
end
|
|
404
404
|
end
|
|
405
405
|
end
|