mongoid 3.1.6 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +479 -8
- data/README.md +10 -7
- data/lib/config/locales/en.yml +34 -20
- data/lib/mongoid.rb +10 -76
- data/lib/mongoid/atomic.rb +3 -14
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +65 -101
- data/lib/mongoid/attributes/dynamic.rb +154 -0
- data/lib/mongoid/attributes/nested.rb +82 -0
- data/lib/mongoid/attributes/processing.rb +13 -66
- data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
- data/lib/mongoid/composable.rb +105 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual.rb +2 -0
- data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
- data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +4 -2
- data/lib/mongoid/contextual/memory.rb +23 -11
- data/lib/mongoid/contextual/mongo.rb +75 -57
- data/lib/mongoid/contextual/none.rb +90 -0
- data/lib/mongoid/contextual/text_search.rb +178 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +39 -34
- data/lib/mongoid/criteria/#findable.rb# +141 -0
- data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
- data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
- data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
- data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
- data/lib/mongoid/criteria/permission.rb +70 -0
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +39 -24
- data/lib/mongoid/errors.rb +4 -1
- data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
- data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/errors/readonly_document.rb +24 -0
- data/lib/mongoid/extensions.rb +15 -7
- data/lib/mongoid/extensions/array.rb +3 -3
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/boolean.rb +15 -17
- data/lib/mongoid/extensions/date.rb +1 -1
- data/lib/mongoid/extensions/date_time.rb +3 -3
- data/lib/mongoid/extensions/float.rb +2 -1
- data/lib/mongoid/extensions/hash.rb +3 -3
- data/lib/mongoid/extensions/integer.rb +1 -1
- data/lib/mongoid/extensions/object.rb +7 -7
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +9 -3
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/extensions/set.rb +1 -1
- data/lib/mongoid/extensions/string.rb +6 -18
- data/lib/mongoid/extensions/symbol.rb +1 -1
- data/lib/mongoid/extensions/time.rb +3 -3
- data/lib/mongoid/extensions/time_with_zone.rb +1 -1
- data/lib/mongoid/factory.rb +8 -6
- data/lib/mongoid/fields.rb +41 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/localized.rb +1 -1
- data/lib/mongoid/fields/standard.rb +5 -17
- data/lib/mongoid/fields/validators/macro.rb +15 -5
- data/lib/mongoid/{finders.rb → findable.rb} +35 -7
- data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
- data/lib/mongoid/indexable/specification.rb +104 -0
- data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
- data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
- data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
- data/lib/mongoid/log_subscriber.rb +55 -0
- data/lib/mongoid/matchable.rb +152 -0
- data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
- data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/persistable.rb +216 -0
- data/lib/mongoid/persistable/creatable.rb +189 -0
- data/lib/mongoid/persistable/deletable.rb +149 -0
- data/lib/mongoid/persistable/destroyable.rb +60 -0
- data/lib/mongoid/persistable/incrementable.rb +36 -0
- data/lib/mongoid/persistable/logical.rb +38 -0
- data/lib/mongoid/persistable/poppable.rb +39 -0
- data/lib/mongoid/persistable/pullable.rb +55 -0
- data/lib/mongoid/persistable/pushable.rb +62 -0
- data/lib/mongoid/persistable/renamable.rb +35 -0
- data/lib/mongoid/persistable/savable.rb +52 -0
- data/lib/mongoid/persistable/settable.rb +33 -0
- data/lib/mongoid/persistable/unsettable.rb +36 -0
- data/lib/mongoid/persistable/updatable.rb +153 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/query_cache.rb +255 -0
- data/lib/mongoid/railtie.rb +34 -60
- data/lib/mongoid/railties/database.rake +9 -25
- data/lib/mongoid/relations.rb +11 -25
- data/lib/mongoid/relations/accessors.rb +15 -51
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +2 -25
- data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/cascading.rb +3 -5
- data/lib/mongoid/relations/constraint.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +39 -15
- data/lib/mongoid/relations/eager.rb +46 -0
- data/lib/mongoid/relations/eager/base.rb +149 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
- data/lib/mongoid/relations/eager/has_many.rb +38 -0
- data/lib/mongoid/relations/eager/has_one.rb +30 -0
- data/lib/mongoid/relations/embedded/batchable.rb +4 -5
- data/lib/mongoid/relations/embedded/in.rb +4 -4
- data/lib/mongoid/relations/embedded/many.rb +14 -32
- data/lib/mongoid/relations/embedded/one.rb +1 -1
- data/lib/mongoid/relations/macros.rb +3 -4
- data/lib/mongoid/relations/many.rb +51 -31
- data/lib/mongoid/relations/marshalable.rb +3 -3
- data/lib/mongoid/relations/metadata.rb +14 -79
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/one.rb +1 -1
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +21 -41
- data/lib/mongoid/relations/referenced/in.rb +4 -20
- data/lib/mongoid/relations/referenced/many.rb +22 -35
- data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
- data/lib/mongoid/relations/referenced/one.rb +6 -25
- data/lib/mongoid/relations/synchronization.rb +4 -4
- data/lib/mongoid/relations/targets/enumerable.rb +10 -10
- data/lib/mongoid/relations/touchable.rb +34 -1
- data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
- data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +185 -0
- data/lib/mongoid/sessions/storage_options.rb +140 -0
- data/lib/mongoid/sessions/thread_options.rb +19 -0
- data/lib/mongoid/sessions/validators/storage.rb +16 -3
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/{state.rb → stateful.rb} +13 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/tasks/database.rake +31 -0
- data/lib/mongoid/tasks/database.rb +107 -0
- data/lib/mongoid/threaded.rb +26 -172
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
- data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
- data/lib/mongoid/{validations → validatable}/format.rb +1 -1
- data/lib/mongoid/{validations → validatable}/length.rb +1 -1
- data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
- data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
- data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
- data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
- data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
- data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
- data/lib/rails/generators/mongoid_generator.rb +3 -40
- data/lib/rails/mongoid.rb +0 -122
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +2 -1
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +8 -3
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +3 -3
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contextable_item.rb +5 -0
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dog.rb +1 -1
- data/spec/app/models/draft.rb +9 -0
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- data/spec/app/models/edit.rb +5 -0
- data/spec/app/models/even.rb +7 -0
- data/spec/app/models/event.rb +1 -1
- data/spec/app/models/filesystem.rb +1 -0
- data/spec/app/models/fish.rb +0 -1
- data/spec/app/models/fruits.rb +6 -0
- data/spec/app/models/game.rb +0 -2
- data/spec/app/models/house.rb +1 -3
- data/spec/app/models/id_key.rb +6 -0
- data/spec/app/models/item.rb +1 -5
- data/spec/app/models/jar.rb +1 -1
- data/spec/app/models/label.rb +4 -4
- data/spec/app/models/line_item.rb +1 -1
- data/spec/app/models/login.rb +1 -1
- data/spec/app/models/message.rb +8 -0
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +3 -1
- data/spec/app/models/odd.rb +7 -0
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +16 -10
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +3 -3
- data/spec/app/models/post.rb +5 -3
- data/spec/app/models/preference.rb +1 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +10 -5
- data/spec/app/models/registry.rb +1 -1
- data/spec/app/models/server.rb +1 -1
- data/spec/app/models/service.rb +3 -3
- data/spec/app/models/sound.rb +5 -0
- data/spec/app/models/symptom.rb +1 -1
- data/spec/app/models/template.rb +1 -1
- data/spec/app/models/title.rb +0 -1
- data/spec/app/models/track.rb +5 -5
- data/spec/app/models/tree.rb +3 -3
- data/spec/app/models/video.rb +1 -5
- data/spec/app/models/wiki_page.rb +2 -5
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/#atomic_spec.rb# +365 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
- data/spec/mongoid/atomic/paths_spec.rb +19 -19
- data/spec/mongoid/atomic_spec.rb +19 -19
- data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
- data/spec/mongoid/attributes/readonly_spec.rb +58 -18
- data/spec/mongoid/attributes_spec.rb +349 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
- data/spec/mongoid/contextual/atomic_spec.rb +60 -56
- data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
- data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
- data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
- data/spec/mongoid/contextual/memory_spec.rb +156 -94
- data/spec/mongoid/contextual/mongo_spec.rb +238 -150
- data/spec/mongoid/contextual/none_spec.rb +127 -0
- data/spec/mongoid/contextual/text_search_spec.rb +209 -0
- data/spec/mongoid/copyable_spec.rb +56 -68
- data/spec/mongoid/criteria/findable_spec.rb +991 -0
- data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
- data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
- data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
- data/spec/mongoid/criteria_spec.rb +715 -2421
- data/spec/mongoid/document_spec.rb +171 -121
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
- data/spec/mongoid/errors/eager_load_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
- data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
- data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
- data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
- data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
- data/spec/mongoid/errors/no_parent_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
- data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
- data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
- data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
- data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
- data/spec/mongoid/errors/validations_spec.rb +7 -7
- data/spec/mongoid/extensions/array_spec.rb +61 -61
- data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
- data/spec/mongoid/extensions/binary_spec.rb +12 -12
- data/spec/mongoid/extensions/boolean_spec.rb +18 -18
- data/spec/mongoid/extensions/date_spec.rb +13 -13
- data/spec/mongoid/extensions/date_time_spec.rb +8 -8
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +29 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +38 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +263 -217
- data/spec/mongoid/findable_spec.rb +509 -0
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
- data/spec/mongoid/log_subscriber_spec.rb +75 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/matchable/ne_spec.rb +46 -0
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +553 -0
- data/spec/mongoid/persistable/deletable_spec.rb +218 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
- data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
- data/spec/mongoid/persistable/logical_spec.rb +143 -0
- data/spec/mongoid/persistable/poppable_spec.rb +115 -0
- data/spec/mongoid/persistable/pullable_spec.rb +228 -0
- data/spec/mongoid/persistable/pushable_spec.rb +258 -0
- data/spec/mongoid/persistable/renamable_spec.rb +135 -0
- data/spec/mongoid/persistable/savable_spec.rb +498 -0
- data/spec/mongoid/persistable/settable_spec.rb +162 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +14 -19
- data/spec/mongoid/query_cache_spec.rb +263 -0
- data/spec/mongoid/railties/document_spec.rb +2 -2
- data/spec/mongoid/relations/accessors_spec.rb +53 -145
- data/spec/mongoid/relations/auto_save_spec.rb +37 -17
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
- data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
- data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
- data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
- data/spec/mongoid/relations/cascading_spec.rb +16 -16
- data/spec/mongoid/relations/constraint_spec.rb +8 -7
- data/spec/mongoid/relations/conversions_spec.rb +16 -14
- data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
- data/spec/mongoid/relations/cyclic_spec.rb +18 -18
- data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
- data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
- data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
- data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
- data/spec/mongoid/relations/eager_spec.rb +228 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
- data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
- data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
- data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +180 -255
- data/spec/mongoid/relations/options_spec.rb +1 -1
- data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
- data/spec/mongoid/relations/proxy_spec.rb +2 -2
- data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
- data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
- data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
- data/spec/mongoid/relations/reflections_spec.rb +6 -6
- data/spec/mongoid/relations/synchronization_spec.rb +46 -50
- data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
- data/spec/mongoid/relations/touchable_spec.rb +333 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
- data/spec/mongoid/sessions/factory_spec.rb +49 -28
- data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
- data/spec/mongoid/sessions/options_spec.rb +108 -0
- data/spec/mongoid/sessions_spec.rb +319 -178
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
- data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
- data/spec/mongoid/tasks/database_spec.rb +160 -0
- data/spec/mongoid/threaded_spec.rb +17 -70
- data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
- data/spec/mongoid/timestamps/created_spec.rb +5 -5
- data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
- data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
- data/spec/mongoid/timestamps/updated_spec.rb +9 -13
- data/spec/mongoid/timestamps_spec.rb +9 -13
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +19 -335
- data/spec/spec_helper.rb +31 -13
- metadata +303 -283
- data/lib/mongoid/atomic/positionable.rb +0 -73
- data/lib/mongoid/components.rb +0 -92
- data/lib/mongoid/config/inflections.rb +0 -6
- data/lib/mongoid/contextual/eager.rb +0 -158
- data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
- data/lib/mongoid/identity_map.rb +0 -163
- data/lib/mongoid/json.rb +0 -16
- data/lib/mongoid/matchers.rb +0 -32
- data/lib/mongoid/matchers/strategies.rb +0 -97
- data/lib/mongoid/multi_parameter_attributes.rb +0 -105
- data/lib/mongoid/nested_attributes.rb +0 -78
- data/lib/mongoid/observer.rb +0 -192
- data/lib/mongoid/paranoia.rb +0 -136
- data/lib/mongoid/persistence.rb +0 -357
- data/lib/mongoid/persistence/atomic.rb +0 -231
- data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
- data/lib/mongoid/persistence/atomic/bit.rb +0 -35
- data/lib/mongoid/persistence/atomic/inc.rb +0 -45
- data/lib/mongoid/persistence/atomic/operation.rb +0 -154
- data/lib/mongoid/persistence/atomic/pop.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull.rb +0 -32
- data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
- data/lib/mongoid/persistence/atomic/push.rb +0 -25
- data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
- data/lib/mongoid/persistence/atomic/rename.rb +0 -30
- data/lib/mongoid/persistence/atomic/sets.rb +0 -28
- data/lib/mongoid/persistence/atomic/unset.rb +0 -27
- data/lib/mongoid/persistence/deletion.rb +0 -31
- data/lib/mongoid/persistence/insertion.rb +0 -38
- data/lib/mongoid/persistence/modification.rb +0 -35
- data/lib/mongoid/persistence/operations.rb +0 -214
- data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
- data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
- data/lib/mongoid/persistence/operations/insert.rb +0 -34
- data/lib/mongoid/persistence/operations/remove.rb +0 -33
- data/lib/mongoid/persistence/operations/update.rb +0 -59
- data/lib/mongoid/persistence/operations/upsert.rb +0 -28
- data/lib/mongoid/persistence/upsertion.rb +0 -31
- data/lib/mongoid/unit_of_work.rb +0 -61
- data/lib/mongoid/versioning.rb +0 -217
- data/lib/rack/mongoid.rb +0 -2
- data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
- data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
- data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
- data/spec/app/models/actor_observer.rb +0 -15
- data/spec/app/models/callback_recorder.rb +0 -25
- data/spec/app/models/paranoid_phone.rb +0 -25
- data/spec/app/models/paranoid_post.rb +0 -36
- data/spec/app/models/phone_observer.rb +0 -6
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/finders_spec.rb +0 -321
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/ne_spec.rb +0 -25
- data/spec/mongoid/matchers/nin_spec.rb +0 -25
- data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
- data/spec/mongoid/observer_spec.rb +0 -290
- data/spec/mongoid/paranoia_spec.rb +0 -759
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
- data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
- data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
- data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
- data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
- data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
- data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
- data/spec/mongoid/persistence/atomic_spec.rb +0 -216
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
- data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
- data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
- data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
- data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
- data/spec/mongoid/persistence/operations_spec.rb +0 -313
- data/spec/mongoid/persistence_spec.rb +0 -2279
- data/spec/mongoid/unit_of_work_spec.rb +0 -196
- data/spec/mongoid/versioning_spec.rb +0 -540
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
@@ -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,48 +96,48 @@ 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
106
|
it "does not error on non initialized fields" do
|
103
|
-
smiths.reload.likes.
|
107
|
+
expect(smiths.reload.likes).to eq(0)
|
104
108
|
end
|
105
109
|
end
|
106
110
|
|
107
111
|
context "when performing a bitwise or" do
|
108
112
|
|
109
113
|
before do
|
110
|
-
context.bit(:
|
114
|
+
context.bit(likes: { or: 13 })
|
111
115
|
end
|
112
116
|
|
113
117
|
it "performs the bitwise operation on initialized fields" do
|
114
|
-
depeche_mode.reload.likes.
|
118
|
+
expect(depeche_mode.reload.likes).to eq(61)
|
115
119
|
end
|
116
120
|
|
117
121
|
it "does not error on non initialized fields" do
|
118
|
-
smiths.reload.likes.
|
122
|
+
expect(smiths.reload.likes).to eq(13)
|
119
123
|
end
|
120
124
|
end
|
121
125
|
|
122
126
|
context "when chaining bitwise operations" do
|
123
127
|
|
124
128
|
before do
|
125
|
-
context.bit(:
|
129
|
+
context.bit(likes: { and: 13, or: 10 })
|
126
130
|
end
|
127
131
|
|
128
132
|
it "performs the bitwise operation on initialized fields" do
|
129
|
-
depeche_mode.reload.likes.
|
133
|
+
expect(depeche_mode.reload.likes).to eq(14)
|
130
134
|
end
|
131
135
|
|
132
136
|
it "does not error on non initialized fields" do
|
133
|
-
smiths.reload.likes.
|
137
|
+
expect(smiths.reload.likes).to eq(10)
|
134
138
|
end
|
135
139
|
end
|
136
|
-
end
|
140
|
+
end if mongodb_version > "2.5"
|
137
141
|
|
138
142
|
describe "#inc" do
|
139
143
|
|
@@ -158,35 +162,35 @@ describe Mongoid::Contextual::Atomic do
|
|
158
162
|
end
|
159
163
|
|
160
164
|
before do
|
161
|
-
context.inc(:
|
165
|
+
context.inc(likes: 10)
|
162
166
|
end
|
163
167
|
|
164
168
|
context "when the field exists" do
|
165
169
|
|
166
170
|
it "incs the value" do
|
167
|
-
depeche_mode.reload.likes.
|
171
|
+
expect(depeche_mode.reload.likes).to eq(70)
|
168
172
|
end
|
169
173
|
end
|
170
174
|
|
171
175
|
context "when the field does not exist" do
|
172
176
|
|
173
177
|
it "does not error on the inc" do
|
174
|
-
smiths.likes.
|
178
|
+
expect(smiths.likes).to be_nil
|
175
179
|
end
|
176
180
|
end
|
177
181
|
|
178
182
|
context "when using the alias" do
|
179
183
|
|
180
184
|
before do
|
181
|
-
context.inc(:
|
185
|
+
context.inc(years: 1)
|
182
186
|
end
|
183
187
|
|
184
188
|
it "incs the value and read from alias" do
|
185
|
-
beatles.reload.years.
|
189
|
+
expect(beatles.reload.years).to eq(3)
|
186
190
|
end
|
187
191
|
|
188
192
|
it "incs the value and read from field" do
|
189
|
-
beatles.reload.y.
|
193
|
+
expect(beatles.reload.y).to eq(3)
|
190
194
|
end
|
191
195
|
end
|
192
196
|
end
|
@@ -212,30 +216,30 @@ describe Mongoid::Contextual::Atomic do
|
|
212
216
|
context "when popping from the front" do
|
213
217
|
|
214
218
|
before do
|
215
|
-
context.pop(:
|
219
|
+
context.pop(members: -1)
|
216
220
|
end
|
217
221
|
|
218
222
|
it "pops the first element off the array" do
|
219
|
-
depeche_mode.reload.members.
|
223
|
+
expect(depeche_mode.reload.members).to eq([ "Martin" ])
|
220
224
|
end
|
221
225
|
|
222
226
|
it "does not error on uninitialized fields" do
|
223
|
-
smiths.reload.members.
|
227
|
+
expect(smiths.reload.members).to be_nil
|
224
228
|
end
|
225
229
|
end
|
226
230
|
|
227
231
|
context "when popping from the rear" do
|
228
232
|
|
229
233
|
before do
|
230
|
-
context.pop(:
|
234
|
+
context.pop(members: 1)
|
231
235
|
end
|
232
236
|
|
233
237
|
it "pops the last element off the array" do
|
234
|
-
depeche_mode.reload.members.
|
238
|
+
expect(depeche_mode.reload.members).to eq([ "Dave" ])
|
235
239
|
end
|
236
240
|
|
237
241
|
it "does not error on uninitialized fields" do
|
238
|
-
smiths.reload.members.
|
242
|
+
expect(smiths.reload.members).to be_nil
|
239
243
|
end
|
240
244
|
end
|
241
245
|
end
|
@@ -259,15 +263,15 @@ describe Mongoid::Contextual::Atomic do
|
|
259
263
|
end
|
260
264
|
|
261
265
|
before do
|
262
|
-
context.pull(:
|
266
|
+
context.pull(members: "Alan")
|
263
267
|
end
|
264
268
|
|
265
269
|
it "pulls when the value is found" do
|
266
|
-
depeche_mode.reload.members.
|
270
|
+
expect(depeche_mode.reload.members).to eq([ "Dave" ])
|
267
271
|
end
|
268
272
|
|
269
273
|
it "does not error on non existant fields" do
|
270
|
-
smiths.reload.members.
|
274
|
+
expect(smiths.reload.members).to be_nil
|
271
275
|
end
|
272
276
|
end
|
273
277
|
|
@@ -290,15 +294,15 @@ describe Mongoid::Contextual::Atomic do
|
|
290
294
|
end
|
291
295
|
|
292
296
|
before do
|
293
|
-
context.pull_all(:
|
297
|
+
context.pull_all(members: [ "Alan", "Dave" ])
|
294
298
|
end
|
295
299
|
|
296
300
|
it "pulls when the values are found" do
|
297
|
-
depeche_mode.reload.members.
|
301
|
+
expect(depeche_mode.reload.members).to eq([ "Fletch" ])
|
298
302
|
end
|
299
303
|
|
300
304
|
it "does not error on non existant fields" do
|
301
|
-
smiths.reload.members.
|
305
|
+
expect(smiths.reload.members).to be_nil
|
302
306
|
end
|
303
307
|
end
|
304
308
|
|
@@ -321,15 +325,15 @@ describe Mongoid::Contextual::Atomic do
|
|
321
325
|
end
|
322
326
|
|
323
327
|
before do
|
324
|
-
context.push(:
|
328
|
+
context.push(members: "Alan")
|
325
329
|
end
|
326
330
|
|
327
331
|
it "pushes the value to existing arrays" do
|
328
|
-
depeche_mode.reload.members.
|
332
|
+
expect(depeche_mode.reload.members).to eq([ "Dave", "Alan" ])
|
329
333
|
end
|
330
334
|
|
331
335
|
it "pushes to non existant fields" do
|
332
|
-
smiths.reload.members.
|
336
|
+
expect(smiths.reload.members).to eq([ "Alan" ])
|
333
337
|
end
|
334
338
|
end
|
335
339
|
|
@@ -352,15 +356,15 @@ describe Mongoid::Contextual::Atomic do
|
|
352
356
|
end
|
353
357
|
|
354
358
|
before do
|
355
|
-
context.push_all(:
|
359
|
+
context.push_all(members: [ "Alan", "Fletch" ])
|
356
360
|
end
|
357
361
|
|
358
362
|
it "pushes the values to existing arrays" do
|
359
|
-
depeche_mode.reload.members.
|
363
|
+
expect(depeche_mode.reload.members).to eq([ "Dave", "Alan", "Fletch" ])
|
360
364
|
end
|
361
365
|
|
362
366
|
it "pushes to non existant fields" do
|
363
|
-
smiths.reload.members.
|
367
|
+
expect(smiths.reload.members).to eq([ "Alan", "Fletch" ])
|
364
368
|
end
|
365
369
|
end
|
366
370
|
|
@@ -383,15 +387,15 @@ describe Mongoid::Contextual::Atomic do
|
|
383
387
|
end
|
384
388
|
|
385
389
|
before do
|
386
|
-
context.rename(:
|
390
|
+
context.rename(members: :artists)
|
387
391
|
end
|
388
392
|
|
389
393
|
it "renames existing fields" do
|
390
|
-
depeche_mode.reload.artists.
|
394
|
+
expect(depeche_mode.reload.artists).to eq([ "Dave" ])
|
391
395
|
end
|
392
396
|
|
393
397
|
it "does not rename non existant fields" do
|
394
|
-
smiths.reload.
|
398
|
+
expect(smiths.reload).to_not respond_to(:artists)
|
395
399
|
end
|
396
400
|
end
|
397
401
|
|
@@ -414,15 +418,15 @@ describe Mongoid::Contextual::Atomic do
|
|
414
418
|
end
|
415
419
|
|
416
420
|
before do
|
417
|
-
context.set(:
|
421
|
+
context.set(name: "Recoil")
|
418
422
|
end
|
419
423
|
|
420
424
|
it "sets existing fields" do
|
421
|
-
depeche_mode.reload.name.
|
425
|
+
expect(depeche_mode.reload.name).to eq("Recoil")
|
422
426
|
end
|
423
427
|
|
424
428
|
it "sets non existant fields" do
|
425
|
-
smiths.reload.name.
|
429
|
+
expect(smiths.reload.name).to eq("Recoil")
|
426
430
|
end
|
427
431
|
end
|
428
432
|
|
@@ -453,11 +457,11 @@ describe Mongoid::Contextual::Atomic do
|
|
453
457
|
end
|
454
458
|
|
455
459
|
it "unsets the first existing field" do
|
456
|
-
depeche_mode.reload.name.
|
460
|
+
expect(depeche_mode.reload.name).to be_nil
|
457
461
|
end
|
458
462
|
|
459
463
|
it "unsets the last existing field" do
|
460
|
-
new_order.reload.name.
|
464
|
+
expect(new_order.reload.name).to be_nil
|
461
465
|
end
|
462
466
|
end
|
463
467
|
|
@@ -468,11 +472,11 @@ describe Mongoid::Contextual::Atomic do
|
|
468
472
|
end
|
469
473
|
|
470
474
|
it "unsets the first existing field" do
|
471
|
-
depeche_mode.reload.years.
|
475
|
+
expect(depeche_mode.reload.years).to be_nil
|
472
476
|
end
|
473
477
|
|
474
478
|
it "unsets the last existing field" do
|
475
|
-
new_order.reload.years.
|
479
|
+
expect(new_order.reload.years).to be_nil
|
476
480
|
end
|
477
481
|
end
|
478
482
|
end
|
@@ -498,11 +502,11 @@ describe Mongoid::Contextual::Atomic do
|
|
498
502
|
end
|
499
503
|
|
500
504
|
it "unsets name field" do
|
501
|
-
new_order.reload.name.
|
505
|
+
expect(new_order.reload.name).to be_nil
|
502
506
|
end
|
503
507
|
|
504
508
|
it "unsets genres field" do
|
505
|
-
new_order.reload.genres.
|
509
|
+
expect(new_order.reload.genres).to be_nil
|
506
510
|
end
|
507
511
|
end
|
508
512
|
|
@@ -513,11 +517,11 @@ describe Mongoid::Contextual::Atomic do
|
|
513
517
|
end
|
514
518
|
|
515
519
|
it "unsets the unaliased field" do
|
516
|
-
new_order.reload.name.
|
520
|
+
expect(new_order.reload.name).to be_nil
|
517
521
|
end
|
518
522
|
|
519
523
|
it "unsets the aliased field" do
|
520
|
-
new_order.reload.years.
|
524
|
+
expect(new_order.reload.years).to be_nil
|
521
525
|
end
|
522
526
|
end
|
523
527
|
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
|