mongoid 3.1.6 → 4.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
 - data/CHANGELOG.md +479 -8
 - data/README.md +10 -7
 - data/lib/config/locales/en.yml +34 -20
 - data/lib/mongoid.rb +10 -76
 - data/lib/mongoid/atomic.rb +3 -14
 - data/lib/mongoid/atomic/paths/embedded.rb +0 -30
 - data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
 - data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
 - data/lib/mongoid/atomic/paths/root.rb +0 -13
 - data/lib/mongoid/attributes.rb +65 -101
 - data/lib/mongoid/attributes/dynamic.rb +154 -0
 - data/lib/mongoid/attributes/nested.rb +82 -0
 - data/lib/mongoid/attributes/processing.rb +13 -66
 - data/lib/mongoid/{dirty.rb → changeable.rb} +32 -2
 - data/lib/mongoid/composable.rb +105 -0
 - data/lib/mongoid/config.rb +3 -9
 - data/lib/mongoid/config/options.rb +1 -1
 - data/lib/mongoid/contextual.rb +2 -0
 - data/lib/mongoid/contextual/aggregable/memory.rb +2 -2
 - data/lib/mongoid/contextual/aggregable/mongo.rb +7 -9
 - data/lib/mongoid/contextual/atomic.rb +53 -53
 - data/lib/mongoid/contextual/geo_near.rb +1 -1
 - data/lib/mongoid/contextual/map_reduce.rb +4 -2
 - data/lib/mongoid/contextual/memory.rb +23 -11
 - data/lib/mongoid/contextual/mongo.rb +75 -57
 - data/lib/mongoid/contextual/none.rb +90 -0
 - data/lib/mongoid/contextual/text_search.rb +178 -0
 - data/lib/mongoid/copyable.rb +2 -3
 - data/lib/mongoid/criteria.rb +39 -34
 - data/lib/mongoid/criteria/#findable.rb# +141 -0
 - data/lib/mongoid/{criterion → criteria}/findable.rb +7 -47
 - data/lib/mongoid/{criterion/inspection.rb → criteria/inspectable.rb} +2 -2
 - data/lib/mongoid/{criterion → criteria}/marshalable.rb +3 -1
 - data/lib/mongoid/{criterion → criteria}/modifiable.rb +28 -8
 - data/lib/mongoid/criteria/permission.rb +70 -0
 - data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
 - data/lib/mongoid/document.rb +39 -24
 - data/lib/mongoid/errors.rb +4 -1
 - data/lib/mongoid/errors/document_not_destroyed.rb +25 -0
 - data/lib/mongoid/errors/document_not_found.rb +2 -1
 - data/lib/mongoid/errors/invalid_storage_options.rb +1 -1
 - data/lib/mongoid/errors/invalid_storage_parent.rb +26 -0
 - data/lib/mongoid/errors/invalid_value.rb +16 -0
 - data/lib/mongoid/errors/mongoid_error.rb +1 -1
 - data/lib/mongoid/errors/readonly_document.rb +24 -0
 - data/lib/mongoid/extensions.rb +15 -7
 - data/lib/mongoid/extensions/array.rb +3 -3
 - data/lib/mongoid/extensions/big_decimal.rb +1 -1
 - data/lib/mongoid/extensions/boolean.rb +15 -17
 - data/lib/mongoid/extensions/date.rb +1 -1
 - data/lib/mongoid/extensions/date_time.rb +3 -3
 - data/lib/mongoid/extensions/float.rb +2 -1
 - data/lib/mongoid/extensions/hash.rb +3 -3
 - data/lib/mongoid/extensions/integer.rb +1 -1
 - data/lib/mongoid/extensions/object.rb +7 -7
 - data/lib/mongoid/extensions/object_id.rb +5 -5
 - data/lib/mongoid/extensions/range.rb +9 -3
 - data/lib/mongoid/extensions/regexp.rb +1 -1
 - data/lib/mongoid/extensions/set.rb +1 -1
 - data/lib/mongoid/extensions/string.rb +6 -18
 - data/lib/mongoid/extensions/symbol.rb +1 -1
 - data/lib/mongoid/extensions/time.rb +3 -3
 - data/lib/mongoid/extensions/time_with_zone.rb +1 -1
 - data/lib/mongoid/factory.rb +8 -6
 - data/lib/mongoid/fields.rb +41 -8
 - data/lib/mongoid/fields/foreign_key.rb +3 -3
 - data/lib/mongoid/fields/localized.rb +1 -1
 - data/lib/mongoid/fields/standard.rb +5 -17
 - data/lib/mongoid/fields/validators/macro.rb +15 -5
 - data/lib/mongoid/{finders.rb → findable.rb} +35 -7
 - data/lib/mongoid/{indexes.rb → indexable.rb} +50 -55
 - data/lib/mongoid/indexable/specification.rb +104 -0
 - data/lib/mongoid/{indexes → indexable}/validators/options.rb +2 -1
 - data/lib/mongoid/{inspection.rb → inspectable.rb} +15 -11
 - data/lib/mongoid/{callbacks.rb → interceptable.rb} +30 -62
 - data/lib/mongoid/log_subscriber.rb +55 -0
 - data/lib/mongoid/matchable.rb +152 -0
 - data/lib/mongoid/{matchers → matchable}/all.rb +1 -1
 - data/lib/mongoid/{matchers → matchable}/and.rb +2 -2
 - data/lib/mongoid/{matchers → matchable}/default.rb +1 -1
 - data/lib/mongoid/{matchers → matchable}/exists.rb +1 -1
 - data/lib/mongoid/{matchers → matchable}/gt.rb +1 -1
 - data/lib/mongoid/{matchers → matchable}/gte.rb +1 -1
 - data/lib/mongoid/{matchers → matchable}/in.rb +2 -2
 - data/lib/mongoid/{matchers → matchable}/lt.rb +1 -1
 - data/lib/mongoid/{matchers → matchable}/lte.rb +1 -1
 - data/lib/mongoid/{matchers → matchable}/ne.rb +2 -2
 - data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
 - data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
 - data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
 - data/lib/mongoid/persistable.rb +216 -0
 - data/lib/mongoid/persistable/creatable.rb +189 -0
 - data/lib/mongoid/persistable/deletable.rb +149 -0
 - data/lib/mongoid/persistable/destroyable.rb +60 -0
 - data/lib/mongoid/persistable/incrementable.rb +36 -0
 - data/lib/mongoid/persistable/logical.rb +38 -0
 - data/lib/mongoid/persistable/poppable.rb +39 -0
 - data/lib/mongoid/persistable/pullable.rb +55 -0
 - data/lib/mongoid/persistable/pushable.rb +62 -0
 - data/lib/mongoid/persistable/renamable.rb +35 -0
 - data/lib/mongoid/persistable/savable.rb +52 -0
 - data/lib/mongoid/persistable/settable.rb +33 -0
 - data/lib/mongoid/persistable/unsettable.rb +36 -0
 - data/lib/mongoid/persistable/updatable.rb +153 -0
 - data/lib/mongoid/persistable/upsertable.rb +55 -0
 - data/lib/mongoid/positional.rb +71 -0
 - data/lib/mongoid/query_cache.rb +255 -0
 - data/lib/mongoid/railtie.rb +34 -60
 - data/lib/mongoid/railties/database.rake +9 -25
 - data/lib/mongoid/relations.rb +11 -25
 - data/lib/mongoid/relations/accessors.rb +15 -51
 - data/lib/mongoid/relations/auto_save.rb +15 -36
 - data/lib/mongoid/relations/binding.rb +2 -25
 - data/lib/mongoid/relations/bindings/embedded/in.rb +1 -1
 - data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
 - data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
 - data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +4 -2
 - data/lib/mongoid/relations/builder.rb +1 -1
 - data/lib/mongoid/relations/builders.rb +2 -2
 - data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
 - data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
 - data/lib/mongoid/relations/builders/nested_attributes/one.rb +5 -6
 - data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
 - data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
 - data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
 - data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
 - data/lib/mongoid/relations/cascading.rb +3 -5
 - data/lib/mongoid/relations/constraint.rb +1 -1
 - data/lib/mongoid/relations/conversions.rb +1 -1
 - data/lib/mongoid/relations/counter_cache.rb +39 -15
 - data/lib/mongoid/relations/eager.rb +46 -0
 - data/lib/mongoid/relations/eager/base.rb +149 -0
 - data/lib/mongoid/relations/eager/belongs_to.rb +31 -0
 - data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +47 -0
 - data/lib/mongoid/relations/eager/has_many.rb +38 -0
 - data/lib/mongoid/relations/eager/has_one.rb +30 -0
 - data/lib/mongoid/relations/embedded/batchable.rb +4 -5
 - data/lib/mongoid/relations/embedded/in.rb +4 -4
 - data/lib/mongoid/relations/embedded/many.rb +14 -32
 - data/lib/mongoid/relations/embedded/one.rb +1 -1
 - data/lib/mongoid/relations/macros.rb +3 -4
 - data/lib/mongoid/relations/many.rb +51 -31
 - data/lib/mongoid/relations/marshalable.rb +3 -3
 - data/lib/mongoid/relations/metadata.rb +14 -79
 - data/lib/mongoid/relations/nested_builder.rb +2 -2
 - data/lib/mongoid/relations/one.rb +1 -1
 - data/lib/mongoid/relations/options.rb +1 -0
 - data/lib/mongoid/relations/polymorphic.rb +0 -1
 - data/lib/mongoid/relations/proxy.rb +21 -41
 - data/lib/mongoid/relations/referenced/in.rb +4 -20
 - data/lib/mongoid/relations/referenced/many.rb +22 -35
 - data/lib/mongoid/relations/referenced/many_to_many.rb +19 -42
 - data/lib/mongoid/relations/referenced/one.rb +6 -25
 - data/lib/mongoid/relations/synchronization.rb +4 -4
 - data/lib/mongoid/relations/targets/enumerable.rb +10 -10
 - data/lib/mongoid/relations/touchable.rb +34 -1
 - data/lib/mongoid/{reloading.rb → reloadable.rb} +7 -5
 - data/lib/mongoid/{scoping.rb → scopable.rb} +36 -36
 - data/lib/mongoid/selectable.rb +59 -0
 - data/lib/mongoid/{serialization.rb → serializable.rb} +11 -2
 - data/lib/mongoid/sessions.rb +37 -345
 - data/lib/mongoid/sessions/factory.rb +2 -0
 - data/lib/mongoid/sessions/options.rb +185 -0
 - data/lib/mongoid/sessions/storage_options.rb +140 -0
 - data/lib/mongoid/sessions/thread_options.rb +19 -0
 - data/lib/mongoid/sessions/validators/storage.rb +16 -3
 - data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
 - data/lib/mongoid/{state.rb → stateful.rb} +13 -1
 - data/lib/mongoid/support/query_counter.rb +23 -0
 - data/lib/mongoid/tasks/database.rake +31 -0
 - data/lib/mongoid/tasks/database.rb +107 -0
 - data/lib/mongoid/threaded.rb +26 -172
 - data/lib/mongoid/threaded/lifecycle.rb +0 -28
 - data/lib/mongoid/timestamps/updated/short.rb +2 -2
 - data/lib/mongoid/{hierarchy.rb → traversable.rb} +15 -7
 - data/lib/mongoid/{validations.rb → validatable.rb} +23 -10
 - data/lib/mongoid/{validations → validatable}/associated.rb +4 -2
 - data/lib/mongoid/{validations → validatable}/format.rb +1 -1
 - data/lib/mongoid/{validations → validatable}/length.rb +1 -1
 - data/lib/mongoid/{validations → validatable}/localizable.rb +1 -1
 - data/lib/mongoid/{validations → validatable}/macros.rb +4 -3
 - data/lib/mongoid/{validations → validatable}/presence.rb +1 -1
 - data/lib/mongoid/{validations → validatable}/queryable.rb +1 -2
 - data/lib/mongoid/{validations → validatable}/uniqueness.rb +25 -21
 - data/lib/mongoid/version.rb +1 -1
 - data/lib/rails/generators/mongoid/config/templates/mongoid.yml +46 -25
 - data/lib/rails/generators/mongoid/model/model_generator.rb +0 -1
 - data/lib/rails/generators/mongoid/model/templates/model.rb.tt +0 -3
 - data/lib/rails/generators/mongoid_generator.rb +3 -40
 - data/lib/rails/mongoid.rb +0 -122
 - data/lib/support/ruby_version.rb +1 -1
 - data/spec/app/models/account.rb +2 -6
 - data/spec/app/models/acolyte.rb +2 -1
 - data/spec/app/models/actor.rb +0 -1
 - data/spec/app/models/address.rb +8 -3
 - data/spec/app/models/animal.rb +1 -1
 - data/spec/app/models/appointment.rb +3 -3
 - data/spec/app/models/article.rb +1 -4
 - data/spec/app/models/audio.rb +5 -0
 - data/spec/app/models/author.rb +0 -2
 - data/spec/app/models/band.rb +3 -2
 - data/spec/app/models/bar.rb +1 -0
 - data/spec/app/models/book.rb +1 -0
 - data/spec/app/models/building.rb +0 -2
 - data/spec/app/models/building_address.rb +0 -2
 - data/spec/app/models/bus.rb +1 -1
 - data/spec/app/models/canvas.rb +1 -1
 - data/spec/app/models/contextable_item.rb +5 -0
 - data/spec/app/models/contractor.rb +0 -2
 - data/spec/app/models/country_code.rb +1 -1
 - data/spec/app/models/definition.rb +2 -2
 - data/spec/app/models/dog.rb +1 -1
 - data/spec/app/models/draft.rb +9 -0
 - data/spec/app/models/dragon.rb +4 -0
 - data/spec/app/models/drug.rb +1 -3
 - data/spec/app/models/dungeon.rb +4 -0
 - data/spec/app/models/edit.rb +5 -0
 - data/spec/app/models/even.rb +7 -0
 - data/spec/app/models/event.rb +1 -1
 - data/spec/app/models/filesystem.rb +1 -0
 - data/spec/app/models/fish.rb +0 -1
 - data/spec/app/models/fruits.rb +6 -0
 - data/spec/app/models/game.rb +0 -2
 - data/spec/app/models/house.rb +1 -3
 - data/spec/app/models/id_key.rb +6 -0
 - data/spec/app/models/item.rb +1 -5
 - data/spec/app/models/jar.rb +1 -1
 - data/spec/app/models/label.rb +4 -4
 - data/spec/app/models/line_item.rb +1 -1
 - data/spec/app/models/login.rb +1 -1
 - data/spec/app/models/message.rb +8 -0
 - data/spec/app/models/movie.rb +1 -0
 - data/spec/app/models/name.rb +3 -3
 - data/spec/app/models/note.rb +3 -1
 - data/spec/app/models/odd.rb +7 -0
 - data/spec/app/models/oscar.rb +1 -1
 - data/spec/app/models/parent_doc.rb +1 -1
 - data/spec/app/models/person.rb +16 -10
 - data/spec/app/models/phone.rb +1 -3
 - data/spec/app/models/player.rb +3 -3
 - data/spec/app/models/post.rb +5 -3
 - data/spec/app/models/preference.rb +1 -1
 - data/spec/app/models/quiz.rb +0 -3
 - data/spec/app/models/record.rb +10 -5
 - data/spec/app/models/registry.rb +1 -1
 - data/spec/app/models/server.rb +1 -1
 - data/spec/app/models/service.rb +3 -3
 - data/spec/app/models/sound.rb +5 -0
 - data/spec/app/models/symptom.rb +1 -1
 - data/spec/app/models/template.rb +1 -1
 - data/spec/app/models/title.rb +0 -1
 - data/spec/app/models/track.rb +5 -5
 - data/spec/app/models/tree.rb +3 -3
 - data/spec/app/models/video.rb +1 -5
 - data/spec/app/models/wiki_page.rb +2 -5
 - data/spec/app/models/word.rb +3 -0
 - data/spec/app/models/word_origin.rb +1 -1
 - data/spec/config/mongoid.yml +7 -8
 - data/spec/helpers.rb +18 -0
 - data/spec/mongoid/#atomic_spec.rb# +365 -0
 - data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
 - data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
 - data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
 - data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
 - data/spec/mongoid/atomic/paths_spec.rb +19 -19
 - data/spec/mongoid/atomic_spec.rb +19 -19
 - data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +474 -592
 - data/spec/mongoid/attributes/readonly_spec.rb +58 -18
 - data/spec/mongoid/attributes_spec.rb +349 -434
 - data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +203 -153
 - data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
 - data/spec/mongoid/config/environment_spec.rb +3 -3
 - data/spec/mongoid/config/options_spec.rb +6 -6
 - data/spec/mongoid/config_spec.rb +24 -48
 - data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
 - data/spec/mongoid/contextual/aggregable/mongo_spec.rb +78 -38
 - data/spec/mongoid/contextual/atomic_spec.rb +60 -56
 - data/spec/mongoid/contextual/find_and_modify_spec.rb +14 -14
 - data/spec/mongoid/contextual/geo_near_spec.rb +22 -22
 - data/spec/mongoid/contextual/map_reduce_spec.rb +27 -27
 - data/spec/mongoid/contextual/memory_spec.rb +156 -94
 - data/spec/mongoid/contextual/mongo_spec.rb +238 -150
 - data/spec/mongoid/contextual/none_spec.rb +127 -0
 - data/spec/mongoid/contextual/text_search_spec.rb +209 -0
 - data/spec/mongoid/copyable_spec.rb +56 -68
 - data/spec/mongoid/criteria/findable_spec.rb +991 -0
 - data/spec/mongoid/{criterion/inspection_spec.rb → criteria/inspectable_spec.rb} +5 -5
 - data/spec/mongoid/{criterion → criteria}/marshalable_spec.rb +2 -2
 - data/spec/mongoid/criteria/modifiable_spec.rb +1252 -0
 - data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +37 -37
 - data/spec/mongoid/criteria_spec.rb +715 -2421
 - data/spec/mongoid/document_spec.rb +171 -121
 - data/spec/mongoid/equality_spec.rb +22 -22
 - data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
 - data/spec/mongoid/errors/callback_spec.rb +3 -3
 - data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
 - data/spec/mongoid/errors/document_not_destroyed_spec.rb +33 -0
 - data/spec/mongoid/errors/document_not_found_spec.rb +11 -11
 - data/spec/mongoid/errors/eager_load_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_collection_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_config_option_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_field_option_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_field_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_find_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_includes_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_index_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_options_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_path_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_scope_spec.rb +5 -5
 - data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_storage_options_spec.rb +3 -3
 - data/spec/mongoid/errors/invalid_time_spec.rb +3 -3
 - data/spec/mongoid/errors/inverse_not_found_spec.rb +3 -3
 - data/spec/mongoid/errors/mixed_relations_spec.rb +3 -3
 - data/spec/mongoid/errors/mixed_session_configuration_spec.rb +3 -3
 - data/spec/mongoid/errors/mongoid_error_spec.rb +8 -8
 - data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +3 -3
 - data/spec/mongoid/errors/no_environment_spec.rb +3 -3
 - data/spec/mongoid/errors/no_map_reduce_output_spec.rb +3 -3
 - data/spec/mongoid/errors/no_metadata_spec.rb +3 -3
 - data/spec/mongoid/errors/no_parent_spec.rb +3 -3
 - data/spec/mongoid/errors/no_session_config_spec.rb +3 -3
 - data/spec/mongoid/errors/no_session_database_spec.rb +3 -3
 - data/spec/mongoid/errors/no_session_hosts_spec.rb +3 -3
 - data/spec/mongoid/errors/no_sessions_config_spec.rb +3 -3
 - data/spec/mongoid/errors/readonly_attribute_spec.rb +3 -3
 - data/spec/mongoid/errors/readonly_document_spec.rb +29 -0
 - data/spec/mongoid/errors/scope_overwrite_spec.rb +3 -3
 - data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +3 -3
 - data/spec/mongoid/errors/unknown_attribute_spec.rb +5 -5
 - data/spec/mongoid/errors/unsaved_document_spec.rb +3 -3
 - data/spec/mongoid/errors/unsupported_javascript_spec.rb +3 -3
 - data/spec/mongoid/errors/validations_spec.rb +7 -7
 - data/spec/mongoid/extensions/array_spec.rb +61 -61
 - data/spec/mongoid/extensions/big_decimal_spec.rb +11 -11
 - data/spec/mongoid/extensions/binary_spec.rb +12 -12
 - data/spec/mongoid/extensions/boolean_spec.rb +18 -18
 - data/spec/mongoid/extensions/date_spec.rb +13 -13
 - data/spec/mongoid/extensions/date_time_spec.rb +8 -8
 - data/spec/mongoid/extensions/false_class_spec.rb +5 -5
 - data/spec/mongoid/extensions/float_spec.rb +29 -15
 - data/spec/mongoid/extensions/hash_spec.rb +29 -29
 - data/spec/mongoid/extensions/integer_spec.rb +15 -15
 - data/spec/mongoid/extensions/module_spec.rb +2 -2
 - data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
 - data/spec/mongoid/extensions/object_id_spec.rb +134 -134
 - data/spec/mongoid/extensions/object_spec.rb +26 -26
 - data/spec/mongoid/extensions/range_spec.rb +61 -12
 - data/spec/mongoid/extensions/regexp_spec.rb +4 -4
 - data/spec/mongoid/extensions/set_spec.rb +4 -4
 - data/spec/mongoid/extensions/string_spec.rb +35 -46
 - data/spec/mongoid/extensions/symbol_spec.rb +9 -9
 - data/spec/mongoid/extensions/time_spec.rb +49 -49
 - data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
 - data/spec/mongoid/extensions/true_class_spec.rb +5 -5
 - data/spec/mongoid/extensions_spec.rb +29 -0
 - data/spec/mongoid/factory_spec.rb +15 -15
 - data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
 - data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
 - data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
 - data/spec/mongoid/fields/localized_spec.rb +38 -23
 - data/spec/mongoid/fields/standard_spec.rb +12 -12
 - data/spec/mongoid/fields_spec.rb +263 -217
 - data/spec/mongoid/findable_spec.rb +509 -0
 - data/spec/mongoid/indexable/specification_spec.rb +102 -0
 - data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
 - data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
 - data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +117 -116
 - data/spec/mongoid/log_subscriber_spec.rb +75 -0
 - data/spec/mongoid/loggable_spec.rb +1 -1
 - data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
 - data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
 - data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
 - data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
 - data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
 - data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
 - data/spec/mongoid/matchable/in_spec.rb +49 -0
 - data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
 - data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
 - data/spec/mongoid/matchable/ne_spec.rb +46 -0
 - data/spec/mongoid/matchable/nin_spec.rb +48 -0
 - data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
 - data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
 - data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
 - data/spec/mongoid/persistable/creatable_spec.rb +553 -0
 - data/spec/mongoid/persistable/deletable_spec.rb +218 -0
 - data/spec/mongoid/persistable/destroyable_spec.rb +192 -0
 - data/spec/mongoid/persistable/incrementable_spec.rb +173 -0
 - data/spec/mongoid/persistable/logical_spec.rb +143 -0
 - data/spec/mongoid/persistable/poppable_spec.rb +115 -0
 - data/spec/mongoid/persistable/pullable_spec.rb +228 -0
 - data/spec/mongoid/persistable/pushable_spec.rb +258 -0
 - data/spec/mongoid/persistable/renamable_spec.rb +135 -0
 - data/spec/mongoid/persistable/savable_spec.rb +498 -0
 - data/spec/mongoid/persistable/settable_spec.rb +162 -0
 - data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
 - data/spec/mongoid/persistable/updatable_spec.rb +558 -0
 - data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
 - data/spec/mongoid/persistable_spec.rb +206 -0
 - data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +14 -19
 - data/spec/mongoid/query_cache_spec.rb +263 -0
 - data/spec/mongoid/railties/document_spec.rb +2 -2
 - data/spec/mongoid/relations/accessors_spec.rb +53 -145
 - data/spec/mongoid/relations/auto_save_spec.rb +37 -17
 - data/spec/mongoid/relations/bindings/embedded/in_spec.rb +12 -12
 - data/spec/mongoid/relations/bindings/embedded/many_spec.rb +3 -3
 - data/spec/mongoid/relations/bindings/embedded/one_spec.rb +5 -5
 - data/spec/mongoid/relations/bindings/referenced/in_spec.rb +26 -26
 - data/spec/mongoid/relations/bindings/referenced/many_spec.rb +10 -10
 - data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +19 -19
 - data/spec/mongoid/relations/bindings/referenced/one_spec.rb +12 -12
 - data/spec/mongoid/relations/builders/embedded/in_spec.rb +4 -4
 - data/spec/mongoid/relations/builders/embedded/many_spec.rb +18 -18
 - data/spec/mongoid/relations/builders/embedded/one_spec.rb +11 -11
 - data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +12 -13
 - data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +14 -14
 - data/spec/mongoid/relations/builders/referenced/in_spec.rb +24 -35
 - data/spec/mongoid/relations/builders/referenced/many_spec.rb +15 -15
 - data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +18 -18
 - data/spec/mongoid/relations/builders/referenced/one_spec.rb +12 -25
 - data/spec/mongoid/relations/builders_spec.rb +21 -21
 - data/spec/mongoid/relations/cascading/delete_spec.rb +9 -9
 - data/spec/mongoid/relations/cascading/destroy_spec.rb +6 -6
 - data/spec/mongoid/relations/cascading/nullify_spec.rb +4 -4
 - data/spec/mongoid/relations/cascading/restrict_spec.rb +7 -7
 - data/spec/mongoid/relations/cascading_spec.rb +16 -16
 - data/spec/mongoid/relations/constraint_spec.rb +8 -7
 - data/spec/mongoid/relations/conversions_spec.rb +16 -14
 - data/spec/mongoid/relations/counter_cache_spec.rb +85 -0
 - data/spec/mongoid/relations/cyclic_spec.rb +18 -18
 - data/spec/mongoid/relations/eager/belongs_to_spec.rb +154 -0
 - data/spec/mongoid/relations/eager/has_and_belongs_to_many_spec.rb +117 -0
 - data/spec/mongoid/relations/eager/has_many_spec.rb +207 -0
 - data/spec/mongoid/relations/eager/has_one_spec.rb +163 -0
 - data/spec/mongoid/relations/eager_spec.rb +228 -0
 - data/spec/mongoid/relations/embedded/dirty_spec.rb +8 -8
 - data/spec/mongoid/relations/embedded/in_spec.rb +56 -57
 - data/spec/mongoid/relations/embedded/many_spec.rb +467 -372
 - data/spec/mongoid/relations/embedded/one_spec.rb +108 -141
 - data/spec/mongoid/relations/macros_spec.rb +108 -102
 - data/spec/mongoid/relations/metadata_spec.rb +180 -255
 - data/spec/mongoid/relations/options_spec.rb +1 -1
 - data/spec/mongoid/relations/polymorphic_spec.rb +13 -17
 - data/spec/mongoid/relations/proxy_spec.rb +2 -2
 - data/spec/mongoid/relations/referenced/in_spec.rb +128 -303
 - data/spec/mongoid/relations/referenced/many_spec.rb +587 -527
 - data/spec/mongoid/relations/referenced/many_to_many_spec.rb +401 -424
 - data/spec/mongoid/relations/referenced/one_spec.rb +149 -264
 - data/spec/mongoid/relations/reflections_spec.rb +6 -6
 - data/spec/mongoid/relations/synchronization_spec.rb +46 -50
 - data/spec/mongoid/relations/targets/enumerable_spec.rb +118 -118
 - data/spec/mongoid/relations/touchable_spec.rb +333 -0
 - data/spec/mongoid/relations_spec.rb +16 -15
 - data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +38 -55
 - data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +89 -164
 - data/spec/mongoid/selectable_spec.rb +134 -0
 - data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +129 -82
 - data/spec/mongoid/sessions/factory_spec.rb +49 -28
 - data/spec/mongoid/sessions/mongo_uri_spec.rb +7 -7
 - data/spec/mongoid/sessions/options_spec.rb +108 -0
 - data/spec/mongoid/sessions_spec.rb +319 -178
 - data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
 - data/spec/mongoid/{state_spec.rb → stateful_spec.rb} +36 -11
 - data/spec/mongoid/tasks/database_rake_spec.rb +285 -0
 - data/spec/mongoid/tasks/database_spec.rb +160 -0
 - data/spec/mongoid/threaded_spec.rb +17 -70
 - data/spec/mongoid/timestamps/created/short_spec.rb +6 -6
 - data/spec/mongoid/timestamps/created_spec.rb +5 -5
 - data/spec/mongoid/timestamps/timeless_spec.rb +6 -6
 - data/spec/mongoid/timestamps/updated/short_spec.rb +11 -11
 - data/spec/mongoid/timestamps/updated_spec.rb +9 -13
 - data/spec/mongoid/timestamps_spec.rb +9 -13
 - data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
 - data/spec/mongoid/{validations → validatable}/associated_spec.rb +45 -22
 - data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
 - data/spec/mongoid/{validations → validatable}/length_spec.rb +14 -14
 - data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
 - data/spec/mongoid/{validations → validatable}/presence_spec.rb +37 -44
 - data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +184 -192
 - data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
 - data/spec/mongoid_spec.rb +8 -8
 - data/spec/rails/mongoid_spec.rb +19 -335
 - data/spec/spec_helper.rb +31 -13
 - metadata +303 -283
 - data/lib/mongoid/atomic/positionable.rb +0 -73
 - data/lib/mongoid/components.rb +0 -92
 - data/lib/mongoid/config/inflections.rb +0 -6
 - data/lib/mongoid/contextual/eager.rb +0 -158
 - data/lib/mongoid/errors/versioning_not_on_root.rb +0 -23
 - data/lib/mongoid/identity_map.rb +0 -163
 - data/lib/mongoid/json.rb +0 -16
 - data/lib/mongoid/matchers.rb +0 -32
 - data/lib/mongoid/matchers/strategies.rb +0 -97
 - data/lib/mongoid/multi_parameter_attributes.rb +0 -105
 - data/lib/mongoid/nested_attributes.rb +0 -78
 - data/lib/mongoid/observer.rb +0 -192
 - data/lib/mongoid/paranoia.rb +0 -136
 - data/lib/mongoid/persistence.rb +0 -357
 - data/lib/mongoid/persistence/atomic.rb +0 -231
 - data/lib/mongoid/persistence/atomic/add_to_set.rb +0 -47
 - data/lib/mongoid/persistence/atomic/bit.rb +0 -35
 - data/lib/mongoid/persistence/atomic/inc.rb +0 -45
 - data/lib/mongoid/persistence/atomic/operation.rb +0 -154
 - data/lib/mongoid/persistence/atomic/pop.rb +0 -32
 - data/lib/mongoid/persistence/atomic/pull.rb +0 -32
 - data/lib/mongoid/persistence/atomic/pull_all.rb +0 -32
 - data/lib/mongoid/persistence/atomic/push.rb +0 -25
 - data/lib/mongoid/persistence/atomic/push_all.rb +0 -25
 - data/lib/mongoid/persistence/atomic/rename.rb +0 -30
 - data/lib/mongoid/persistence/atomic/sets.rb +0 -28
 - data/lib/mongoid/persistence/atomic/unset.rb +0 -27
 - data/lib/mongoid/persistence/deletion.rb +0 -31
 - data/lib/mongoid/persistence/insertion.rb +0 -38
 - data/lib/mongoid/persistence/modification.rb +0 -35
 - data/lib/mongoid/persistence/operations.rb +0 -214
 - data/lib/mongoid/persistence/operations/embedded/insert.rb +0 -46
 - data/lib/mongoid/persistence/operations/embedded/remove.rb +0 -43
 - data/lib/mongoid/persistence/operations/insert.rb +0 -34
 - data/lib/mongoid/persistence/operations/remove.rb +0 -33
 - data/lib/mongoid/persistence/operations/update.rb +0 -59
 - data/lib/mongoid/persistence/operations/upsert.rb +0 -28
 - data/lib/mongoid/persistence/upsertion.rb +0 -31
 - data/lib/mongoid/unit_of_work.rb +0 -61
 - data/lib/mongoid/versioning.rb +0 -217
 - data/lib/rack/mongoid.rb +0 -2
 - data/lib/rack/mongoid/middleware/identity_map.rb +0 -39
 - data/lib/rails/generators/mongoid/observer/observer_generator.rb +0 -17
 - data/lib/rails/generators/mongoid/observer/templates/observer.rb.tt +0 -4
 - data/spec/app/models/actor_observer.rb +0 -15
 - data/spec/app/models/callback_recorder.rb +0 -25
 - data/spec/app/models/paranoid_phone.rb +0 -25
 - data/spec/app/models/paranoid_post.rb +0 -36
 - data/spec/app/models/phone_observer.rb +0 -6
 - data/spec/mongoid/attributes/processing_spec.rb +0 -149
 - data/spec/mongoid/criterion/destructive_spec.rb +0 -101
 - data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
 - data/spec/mongoid/criterion/modification_spec.rb +0 -402
 - data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
 - data/spec/mongoid/finders_spec.rb +0 -321
 - data/spec/mongoid/identity_map_spec.rb +0 -564
 - data/spec/mongoid/json_spec.rb +0 -33
 - data/spec/mongoid/matchers/in_spec.rb +0 -25
 - data/spec/mongoid/matchers/ne_spec.rb +0 -25
 - data/spec/mongoid/matchers/nin_spec.rb +0 -25
 - data/spec/mongoid/multi_parameter_attributes_spec.rb +0 -128
 - data/spec/mongoid/observer_spec.rb +0 -290
 - data/spec/mongoid/paranoia_spec.rb +0 -759
 - data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +0 -262
 - data/spec/mongoid/persistence/atomic/bit_spec.rb +0 -88
 - data/spec/mongoid/persistence/atomic/inc_spec.rb +0 -133
 - data/spec/mongoid/persistence/atomic/pop_spec.rb +0 -111
 - data/spec/mongoid/persistence/atomic/pull_all_spec.rb +0 -77
 - data/spec/mongoid/persistence/atomic/pull_spec.rb +0 -80
 - data/spec/mongoid/persistence/atomic/push_all_spec.rb +0 -77
 - data/spec/mongoid/persistence/atomic/push_spec.rb +0 -77
 - data/spec/mongoid/persistence/atomic/rename_spec.rb +0 -42
 - data/spec/mongoid/persistence/atomic/sets_spec.rb +0 -154
 - data/spec/mongoid/persistence/atomic/unset_spec.rb +0 -65
 - data/spec/mongoid/persistence/atomic_spec.rb +0 -216
 - data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +0 -191
 - data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +0 -8
 - data/spec/mongoid/persistence/operations/insert_spec.rb +0 -149
 - data/spec/mongoid/persistence/operations/remove_spec.rb +0 -113
 - data/spec/mongoid/persistence/operations/update_spec.rb +0 -141
 - data/spec/mongoid/persistence/operations/upsert_spec.rb +0 -59
 - data/spec/mongoid/persistence/operations_spec.rb +0 -313
 - data/spec/mongoid/persistence_spec.rb +0 -2279
 - data/spec/mongoid/unit_of_work_spec.rb +0 -196
 - data/spec/mongoid/versioning_spec.rb +0 -540
 - data/spec/rack/mongoid/middleware/identity_map_spec.rb +0 -72
 
| 
         @@ -1,6 +1,6 @@ 
     | 
|
| 
       1 
1 
     | 
    
         
             
            require "spec_helper"
         
     | 
| 
       2 
2 
     | 
    
         | 
| 
       3 
     | 
    
         
            -
            describe Mongoid:: 
     | 
| 
      
 3 
     | 
    
         
            +
            describe Mongoid::Changeable do
         
     | 
| 
       4 
4 
     | 
    
         | 
| 
       5 
5 
     | 
    
         
             
              describe "#attribute_change" do
         
     | 
| 
       6 
6 
     | 
    
         | 
| 
         @@ -17,13 +17,13 @@ describe Mongoid::Dirty do 
     | 
|
| 
       17 
17 
     | 
    
         
             
                    end
         
     | 
| 
       18 
18 
     | 
    
         | 
| 
       19 
19 
     | 
    
         
             
                    it "returns an array of the old value and new value" do
         
     | 
| 
       20 
     | 
    
         
            -
                      person.send(:attribute_change, "title"). 
     | 
| 
      
 20 
     | 
    
         
            +
                      expect(person.send(:attribute_change, "title")).to eq(
         
     | 
| 
       21 
21 
     | 
    
         
             
                        [ "Grand Poobah", "Captain Obvious" ]
         
     | 
| 
       22 
22 
     | 
    
         
             
                      )
         
     | 
| 
       23 
23 
     | 
    
         
             
                    end
         
     | 
| 
       24 
24 
     | 
    
         | 
| 
       25 
25 
     | 
    
         
             
                    it "allows access via (attribute)_change" do
         
     | 
| 
       26 
     | 
    
         
            -
                      person.title_change. 
     | 
| 
      
 26 
     | 
    
         
            +
                      expect(person.title_change).to eq(
         
     | 
| 
       27 
27 
     | 
    
         
             
                        [ "Grand Poobah", "Captain Obvious" ]
         
     | 
| 
       28 
28 
     | 
    
         
             
                      )
         
     | 
| 
       29 
29 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -39,13 +39,13 @@ describe Mongoid::Dirty do 
     | 
|
| 
       39 
39 
     | 
    
         
             
                      end
         
     | 
| 
       40 
40 
     | 
    
         | 
| 
       41 
41 
     | 
    
         
             
                      it "returns an array of the old value and new value" do
         
     | 
| 
       42 
     | 
    
         
            -
                        person.send(:attribute_change, "test"). 
     | 
| 
      
 42 
     | 
    
         
            +
                        expect(person.send(:attribute_change, "test")).to eq(
         
     | 
| 
       43 
43 
     | 
    
         
             
                          [ "Aliased 1", "Aliased 2" ]
         
     | 
| 
       44 
44 
     | 
    
         
             
                        )
         
     | 
| 
       45 
45 
     | 
    
         
             
                      end
         
     | 
| 
       46 
46 
     | 
    
         | 
| 
       47 
47 
     | 
    
         
             
                      it "allows access via (attribute)_change" do
         
     | 
| 
       48 
     | 
    
         
            -
                        person.test_change. 
     | 
| 
      
 48 
     | 
    
         
            +
                        expect(person.test_change).to eq(
         
     | 
| 
       49 
49 
     | 
    
         
             
                          [ "Aliased 1", "Aliased 2" ]
         
     | 
| 
       50 
50 
     | 
    
         
             
                        )
         
     | 
| 
       51 
51 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -63,13 +63,13 @@ describe Mongoid::Dirty do 
     | 
|
| 
       63 
63 
     | 
    
         
             
                    end
         
     | 
| 
       64 
64 
     | 
    
         | 
| 
       65 
65 
     | 
    
         
             
                    it "returns an array of the old value and new value" do
         
     | 
| 
       66 
     | 
    
         
            -
                      person.send(:attribute_change, "title"). 
     | 
| 
      
 66 
     | 
    
         
            +
                      expect(person.send(:attribute_change, "title")).to eq(
         
     | 
| 
       67 
67 
     | 
    
         
             
                        [ "Grand Poobah", "Captain Obvious" ]
         
     | 
| 
       68 
68 
     | 
    
         
             
                      )
         
     | 
| 
       69 
69 
     | 
    
         
             
                    end
         
     | 
| 
       70 
70 
     | 
    
         | 
| 
       71 
71 
     | 
    
         
             
                    it "allows access via (attribute)_change" do
         
     | 
| 
       72 
     | 
    
         
            -
                      person.title_change. 
     | 
| 
      
 72 
     | 
    
         
            +
                      expect(person.title_change).to eq(
         
     | 
| 
       73 
73 
     | 
    
         
             
                        [ "Grand Poobah", "Captain Obvious" ]
         
     | 
| 
       74 
74 
     | 
    
         
             
                      )
         
     | 
| 
       75 
75 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -85,11 +85,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       85 
85 
     | 
    
         
             
                    end
         
     | 
| 
       86 
86 
     | 
    
         | 
| 
       87 
87 
     | 
    
         
             
                    it "returns an array of nil and new value" do
         
     | 
| 
       88 
     | 
    
         
            -
                      person.send(:attribute_change, "pets"). 
     | 
| 
      
 88 
     | 
    
         
            +
                      expect(person.send(:attribute_change, "pets")).to eq([ nil, true ])
         
     | 
| 
       89 
89 
     | 
    
         
             
                    end
         
     | 
| 
       90 
90 
     | 
    
         | 
| 
       91 
91 
     | 
    
         
             
                    it "allows access via (attribute)_change" do
         
     | 
| 
       92 
     | 
    
         
            -
                      person.pets_change. 
     | 
| 
      
 92 
     | 
    
         
            +
                      expect(person.pets_change).to eq([ nil, true ])
         
     | 
| 
       93 
93 
     | 
    
         
             
                    end
         
     | 
| 
       94 
94 
     | 
    
         
             
                  end
         
     | 
| 
       95 
95 
     | 
    
         | 
| 
         @@ -106,11 +106,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       106 
106 
     | 
    
         
             
                      end
         
     | 
| 
       107 
107 
     | 
    
         | 
| 
       108 
108 
     | 
    
         
             
                      it "returns an array of nil and new value" do
         
     | 
| 
       109 
     | 
    
         
            -
                        person.send(:attribute_change, "pets"). 
     | 
| 
      
 109 
     | 
    
         
            +
                        expect(person.send(:attribute_change, "pets")).to eq([ nil, true ])
         
     | 
| 
       110 
110 
     | 
    
         
             
                      end
         
     | 
| 
       111 
111 
     | 
    
         | 
| 
       112 
112 
     | 
    
         
             
                      it "allows access via (attribute)_change" do
         
     | 
| 
       113 
     | 
    
         
            -
                        person.pets_change. 
     | 
| 
      
 113 
     | 
    
         
            +
                        expect(person.pets_change).to eq([ nil, true ])
         
     | 
| 
       114 
114 
     | 
    
         
             
                      end
         
     | 
| 
       115 
115 
     | 
    
         
             
                    end
         
     | 
| 
       116 
116 
     | 
    
         | 
| 
         @@ -121,11 +121,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       121 
121 
     | 
    
         
             
                      end
         
     | 
| 
       122 
122 
     | 
    
         | 
| 
       123 
123 
     | 
    
         
             
                      before do
         
     | 
| 
       124 
     | 
    
         
            -
                        person[: 
     | 
| 
      
 124 
     | 
    
         
            +
                        person[:t] = "test"
         
     | 
| 
       125 
125 
     | 
    
         
             
                      end
         
     | 
| 
       126 
126 
     | 
    
         | 
| 
       127 
127 
     | 
    
         
             
                      it "returns an array of nil and new value" do
         
     | 
| 
       128 
     | 
    
         
            -
                        person.send(:attribute_change, " 
     | 
| 
      
 128 
     | 
    
         
            +
                        expect(person.send(:attribute_change, "t")).to eq([ nil, "test" ])
         
     | 
| 
       129 
129 
     | 
    
         
             
                      end
         
     | 
| 
       130 
130 
     | 
    
         
             
                    end
         
     | 
| 
       131 
131 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -143,13 +143,13 @@ describe Mongoid::Dirty do 
     | 
|
| 
       143 
143 
     | 
    
         
             
                  end
         
     | 
| 
       144 
144 
     | 
    
         | 
| 
       145 
145 
     | 
    
         
             
                  it "returns an array of the original value and new value" do
         
     | 
| 
       146 
     | 
    
         
            -
                    person.send(:attribute_change, "title"). 
     | 
| 
      
 146 
     | 
    
         
            +
                    expect(person.send(:attribute_change, "title")).to eq(
         
     | 
| 
       147 
147 
     | 
    
         
             
                      [ "Grand Poobah", "Dark Helmet" ]
         
     | 
| 
       148 
148 
     | 
    
         
             
                    )
         
     | 
| 
       149 
149 
     | 
    
         
             
                  end
         
     | 
| 
       150 
150 
     | 
    
         | 
| 
       151 
151 
     | 
    
         
             
                  it "allows access via (attribute)_change" do
         
     | 
| 
       152 
     | 
    
         
            -
                    person.title_change. 
     | 
| 
      
 152 
     | 
    
         
            +
                    expect(person.title_change).to eq(
         
     | 
| 
       153 
153 
     | 
    
         
             
                      [ "Grand Poobah", "Dark Helmet" ]
         
     | 
| 
       154 
154 
     | 
    
         
             
                    )
         
     | 
| 
       155 
155 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -168,13 +168,13 @@ describe Mongoid::Dirty do 
     | 
|
| 
       168 
168 
     | 
    
         
             
                    end
         
     | 
| 
       169 
169 
     | 
    
         | 
| 
       170 
170 
     | 
    
         
             
                    it "returns an array of the original value and new value" do
         
     | 
| 
       171 
     | 
    
         
            -
                      person.send(:attribute_change, "aliases"). 
     | 
| 
      
 171 
     | 
    
         
            +
                      expect(person.send(:attribute_change, "aliases")).to eq(
         
     | 
| 
       172 
172 
     | 
    
         
             
                        [[ "Grand Poobah" ],  [ "Dark Helmet" ]]
         
     | 
| 
       173 
173 
     | 
    
         
             
                      )
         
     | 
| 
       174 
174 
     | 
    
         
             
                    end
         
     | 
| 
       175 
175 
     | 
    
         | 
| 
       176 
176 
     | 
    
         
             
                    it "allows access via (attribute)_change" do
         
     | 
| 
       177 
     | 
    
         
            -
                      person.aliases_change. 
     | 
| 
      
 177 
     | 
    
         
            +
                      expect(person.aliases_change).to eq(
         
     | 
| 
       178 
178 
     | 
    
         
             
                        [[ "Grand Poobah" ],  [ "Dark Helmet" ]]
         
     | 
| 
       179 
179 
     | 
    
         
             
                      )
         
     | 
| 
       180 
180 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -186,7 +186,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       186 
186 
     | 
    
         
             
                      end
         
     | 
| 
       187 
187 
     | 
    
         | 
| 
       188 
188 
     | 
    
         
             
                      it "returns an array of the original value and new value" do
         
     | 
| 
       189 
     | 
    
         
            -
                        person.send(:attribute_change, "aliases"). 
     | 
| 
      
 189 
     | 
    
         
            +
                        expect(person.send(:attribute_change, "aliases")).to eq(
         
     | 
| 
       190 
190 
     | 
    
         
             
                          [[ "Grand Poobah" ], [ "Dark Helmet", "Colonel Sanders" ]]
         
     | 
| 
       191 
191 
     | 
    
         
             
                        )
         
     | 
| 
       192 
192 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -204,13 +204,13 @@ describe Mongoid::Dirty do 
     | 
|
| 
       204 
204 
     | 
    
         
             
                    end
         
     | 
| 
       205 
205 
     | 
    
         | 
| 
       206 
206 
     | 
    
         
             
                    it "returns an array of the original value and new value" do
         
     | 
| 
       207 
     | 
    
         
            -
                      person.send(:attribute_change, "map"). 
     | 
| 
      
 207 
     | 
    
         
            +
                      expect(person.send(:attribute_change, "map")).to eq(
         
     | 
| 
       208 
208 
     | 
    
         
             
                        [{ location: "Home" }, { location: "Work" }]
         
     | 
| 
       209 
209 
     | 
    
         
             
                      )
         
     | 
| 
       210 
210 
     | 
    
         
             
                    end
         
     | 
| 
       211 
211 
     | 
    
         | 
| 
       212 
212 
     | 
    
         
             
                    it "allows access via (attribute)_change" do
         
     | 
| 
       213 
     | 
    
         
            -
                      person.map_change. 
     | 
| 
      
 213 
     | 
    
         
            +
                      expect(person.map_change).to eq(
         
     | 
| 
       214 
214 
     | 
    
         
             
                        [{ location: "Home" }, { location: "Work" }]
         
     | 
| 
       215 
215 
     | 
    
         
             
                      )
         
     | 
| 
       216 
216 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -222,7 +222,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       222 
222 
     | 
    
         
             
                      end
         
     | 
| 
       223 
223 
     | 
    
         | 
| 
       224 
224 
     | 
    
         
             
                      it "returns an array of the original value and new value" do
         
     | 
| 
       225 
     | 
    
         
            -
                        person.send(:attribute_change, "map"). 
     | 
| 
      
 225 
     | 
    
         
            +
                        expect(person.send(:attribute_change, "map")).to eq(
         
     | 
| 
       226 
226 
     | 
    
         
             
                          [{ location: "Home" }, { location: "Work", lat: 20.0 }]
         
     | 
| 
       227 
227 
     | 
    
         
             
                        )
         
     | 
| 
       228 
228 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -250,7 +250,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       250 
250 
     | 
    
         
             
                        end
         
     | 
| 
       251 
251 
     | 
    
         | 
| 
       252 
252 
     | 
    
         
             
                        it "flags the attribute as changed" do
         
     | 
| 
       253 
     | 
    
         
            -
                          person.send(:attribute_change, "map"). 
     | 
| 
      
 253 
     | 
    
         
            +
                          expect(person.send(:attribute_change, "map")).to eq(
         
     | 
| 
       254 
254 
     | 
    
         
             
                            [
         
     | 
| 
       255 
255 
     | 
    
         
             
                              {
         
     | 
| 
       256 
256 
     | 
    
         
             
                                "stack1" => [ 1, 2, 3, 4 ],
         
     | 
| 
         @@ -277,7 +277,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       277 
277 
     | 
    
         
             
                  end
         
     | 
| 
       278 
278 
     | 
    
         | 
| 
       279 
279 
     | 
    
         
             
                  it "returns nil" do
         
     | 
| 
       280 
     | 
    
         
            -
                    person.send(:attribute_change, "title"). 
     | 
| 
      
 280 
     | 
    
         
            +
                    expect(person.send(:attribute_change, "title")).to be_nil
         
     | 
| 
       281 
281 
     | 
    
         
             
                  end
         
     | 
| 
       282 
282 
     | 
    
         
             
                end
         
     | 
| 
       283 
283 
     | 
    
         | 
| 
         @@ -290,7 +290,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       290 
290 
     | 
    
         
             
                    end
         
     | 
| 
       291 
291 
     | 
    
         | 
| 
       292 
292 
     | 
    
         
             
                    it "returns the change" do
         
     | 
| 
       293 
     | 
    
         
            -
                      person.send(:attribute_change, "pets"). 
     | 
| 
      
 293 
     | 
    
         
            +
                      expect(person.send(:attribute_change, "pets")).to eq([ nil, false ])
         
     | 
| 
       294 
294 
     | 
    
         
             
                    end
         
     | 
| 
       295 
295 
     | 
    
         
             
                  end
         
     | 
| 
       296 
296 
     | 
    
         | 
| 
         @@ -301,7 +301,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       301 
301 
     | 
    
         
             
                    end
         
     | 
| 
       302 
302 
     | 
    
         | 
| 
       303 
303 
     | 
    
         
             
                    it "returns nil" do
         
     | 
| 
       304 
     | 
    
         
            -
                      person.send(:attribute_change, "pets"). 
     | 
| 
      
 304 
     | 
    
         
            +
                      expect(person.send(:attribute_change, "pets")).to be_nil
         
     | 
| 
       305 
305 
     | 
    
         
             
                    end
         
     | 
| 
       306 
306 
     | 
    
         
             
                  end
         
     | 
| 
       307 
307 
     | 
    
         
             
                end
         
     | 
| 
         @@ -317,7 +317,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       317 
317 
     | 
    
         
             
                  end
         
     | 
| 
       318 
318 
     | 
    
         | 
| 
       319 
319 
     | 
    
         
             
                  it "returns an empty array" do
         
     | 
| 
       320 
     | 
    
         
            -
                    person.send(:attribute_change, "title"). 
     | 
| 
      
 320 
     | 
    
         
            +
                    expect(person.send(:attribute_change, "title")).to be_nil
         
     | 
| 
       321 
321 
     | 
    
         
             
                  end
         
     | 
| 
       322 
322 
     | 
    
         
             
                end
         
     | 
| 
       323 
323 
     | 
    
         | 
| 
         @@ -332,7 +332,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       332 
332 
     | 
    
         
             
                  end
         
     | 
| 
       333 
333 
     | 
    
         | 
| 
       334 
334 
     | 
    
         
             
                  it "returns an empty array" do
         
     | 
| 
       335 
     | 
    
         
            -
                    person.send(:attribute_change, "title"). 
     | 
| 
      
 335 
     | 
    
         
            +
                    expect(person.send(:attribute_change, "title")).to eq(
         
     | 
| 
       336 
336 
     | 
    
         
             
                      [ "Grand Poobah", nil ]
         
     | 
| 
       337 
337 
     | 
    
         
             
                    )
         
     | 
| 
       338 
338 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -352,11 +352,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       352 
352 
     | 
    
         
             
                  end
         
     | 
| 
       353 
353 
     | 
    
         | 
| 
       354 
354 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
       355 
     | 
    
         
            -
                    person.send(:attribute_changed?, "title"). 
     | 
| 
      
 355 
     | 
    
         
            +
                    expect(person.send(:attribute_changed?, "title")).to be true
         
     | 
| 
       356 
356 
     | 
    
         
             
                  end
         
     | 
| 
       357 
357 
     | 
    
         | 
| 
       358 
358 
     | 
    
         
             
                  it "allows access via (attribute)_changed?" do
         
     | 
| 
       359 
     | 
    
         
            -
                    person.title_changed 
     | 
| 
      
 359 
     | 
    
         
            +
                    expect(person.title_changed?).to be true
         
     | 
| 
       360 
360 
     | 
    
         
             
                  end
         
     | 
| 
       361 
361 
     | 
    
         | 
| 
       362 
362 
     | 
    
         
             
                  context "when the field is aliased" do
         
     | 
| 
         @@ -370,11 +370,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       370 
370 
     | 
    
         
             
                    end
         
     | 
| 
       371 
371 
     | 
    
         | 
| 
       372 
372 
     | 
    
         
             
                    it "returns true" do
         
     | 
| 
       373 
     | 
    
         
            -
                      person.send(:attribute_changed?, "test"). 
     | 
| 
      
 373 
     | 
    
         
            +
                      expect(person.send(:attribute_changed?, "test")).to be true
         
     | 
| 
       374 
374 
     | 
    
         
             
                    end
         
     | 
| 
       375 
375 
     | 
    
         | 
| 
       376 
376 
     | 
    
         
             
                    it "allows access via (attribute)_changed?" do
         
     | 
| 
       377 
     | 
    
         
            -
                      person.test_changed 
     | 
| 
      
 377 
     | 
    
         
            +
                      expect(person.test_changed?).to be true
         
     | 
| 
       378 
378 
     | 
    
         
             
                    end
         
     | 
| 
       379 
379 
     | 
    
         
             
                  end
         
     | 
| 
       380 
380 
     | 
    
         
             
                end
         
     | 
| 
         @@ -390,11 +390,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       390 
390 
     | 
    
         
             
                  end
         
     | 
| 
       391 
391 
     | 
    
         | 
| 
       392 
392 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
       393 
     | 
    
         
            -
                    person.send(:attribute_changed?, "pets"). 
     | 
| 
      
 393 
     | 
    
         
            +
                    expect(person.send(:attribute_changed?, "pets")).to be true
         
     | 
| 
       394 
394 
     | 
    
         
             
                  end
         
     | 
| 
       395 
395 
     | 
    
         | 
| 
       396 
396 
     | 
    
         
             
                  it "allows access via (attribute)_changed?" do
         
     | 
| 
       397 
     | 
    
         
            -
                    person.pets_changed 
     | 
| 
      
 397 
     | 
    
         
            +
                    expect(person.pets_changed?).to be true
         
     | 
| 
       398 
398 
     | 
    
         
             
                  end
         
     | 
| 
       399 
399 
     | 
    
         
             
                end
         
     | 
| 
       400 
400 
     | 
    
         | 
| 
         @@ -405,7 +405,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       405 
405 
     | 
    
         
             
                  end
         
     | 
| 
       406 
406 
     | 
    
         | 
| 
       407 
407 
     | 
    
         
             
                  it "returns false" do
         
     | 
| 
       408 
     | 
    
         
            -
                    person.send(:attribute_changed?, "title"). 
     | 
| 
      
 408 
     | 
    
         
            +
                    expect(person.send(:attribute_changed?, "title")).to be false
         
     | 
| 
       409 
409 
     | 
    
         
             
                  end
         
     | 
| 
       410 
410 
     | 
    
         
             
                end
         
     | 
| 
       411 
411 
     | 
    
         | 
| 
         @@ -420,7 +420,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       420 
420 
     | 
    
         
             
                      end
         
     | 
| 
       421 
421 
     | 
    
         | 
| 
       422 
422 
     | 
    
         
             
                      it "returns true" do
         
     | 
| 
       423 
     | 
    
         
            -
                        person.send(:attribute_changed?, "pets"). 
     | 
| 
      
 423 
     | 
    
         
            +
                        expect(person.send(:attribute_changed?, "pets")).to be true
         
     | 
| 
       424 
424 
     | 
    
         
             
                      end
         
     | 
| 
       425 
425 
     | 
    
         
             
                    end
         
     | 
| 
       426 
426 
     | 
    
         | 
| 
         @@ -431,7 +431,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       431 
431 
     | 
    
         
             
                      end
         
     | 
| 
       432 
432 
     | 
    
         | 
| 
       433 
433 
     | 
    
         
             
                      it "returns false" do
         
     | 
| 
       434 
     | 
    
         
            -
                        person.send(:attribute_changed?, "pets"). 
     | 
| 
      
 434 
     | 
    
         
            +
                        expect(person.send(:attribute_changed?, "pets")).to be false
         
     | 
| 
       435 
435 
     | 
    
         
             
                      end
         
     | 
| 
       436 
436 
     | 
    
         
             
                    end
         
     | 
| 
       437 
437 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -450,7 +450,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       450 
450 
     | 
    
         
             
                      end
         
     | 
| 
       451 
451 
     | 
    
         | 
| 
       452 
452 
     | 
    
         
             
                      it "returns false" do
         
     | 
| 
       453 
     | 
    
         
            -
                        person. 
     | 
| 
      
 453 
     | 
    
         
            +
                        expect(person).to_not be_aliases_changed
         
     | 
| 
       454 
454 
     | 
    
         
             
                      end
         
     | 
| 
       455 
455 
     | 
    
         
             
                    end
         
     | 
| 
       456 
456 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -469,7 +469,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       469 
469 
     | 
    
         
             
                      end
         
     | 
| 
       470 
470 
     | 
    
         | 
| 
       471 
471 
     | 
    
         
             
                      it "returns false" do
         
     | 
| 
       472 
     | 
    
         
            -
                        person. 
     | 
| 
      
 472 
     | 
    
         
            +
                        expect(person).to_not be_map_changed
         
     | 
| 
       473 
473 
     | 
    
         
             
                      end
         
     | 
| 
       474 
474 
     | 
    
         
             
                    end
         
     | 
| 
       475 
475 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -485,7 +485,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       485 
485 
     | 
    
         
             
                  end
         
     | 
| 
       486 
486 
     | 
    
         | 
| 
       487 
487 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
       488 
     | 
    
         
            -
                    person. 
     | 
| 
      
 488 
     | 
    
         
            +
                    expect(person).to be_age_changed_from_default
         
     | 
| 
       489 
489 
     | 
    
         
             
                  end
         
     | 
| 
       490 
490 
     | 
    
         
             
                end
         
     | 
| 
       491 
491 
     | 
    
         | 
| 
         @@ -496,7 +496,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       496 
496 
     | 
    
         
             
                  end
         
     | 
| 
       497 
497 
     | 
    
         | 
| 
       498 
498 
     | 
    
         
             
                  it "returns false" do
         
     | 
| 
       499 
     | 
    
         
            -
                    person. 
     | 
| 
      
 499 
     | 
    
         
            +
                    expect(person).to_not be_age_changed_from_default
         
     | 
| 
       500 
500 
     | 
    
         
             
                  end
         
     | 
| 
       501 
501 
     | 
    
         
             
                end
         
     | 
| 
       502 
502 
     | 
    
         
             
              end
         
     | 
| 
         @@ -514,11 +514,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       514 
514 
     | 
    
         
             
                  end
         
     | 
| 
       515 
515 
     | 
    
         | 
| 
       516 
516 
     | 
    
         
             
                  it "returns the old value" do
         
     | 
| 
       517 
     | 
    
         
            -
                    person.send(:attribute_was, "title"). 
     | 
| 
      
 517 
     | 
    
         
            +
                    expect(person.send(:attribute_was, "title")).to eq("Grand Poobah")
         
     | 
| 
       518 
518 
     | 
    
         
             
                  end
         
     | 
| 
       519 
519 
     | 
    
         | 
| 
       520 
520 
     | 
    
         
             
                  it "allows access via (attribute)_was" do
         
     | 
| 
       521 
     | 
    
         
            -
                    person.title_was. 
     | 
| 
      
 521 
     | 
    
         
            +
                    expect(person.title_was).to eq("Grand Poobah")
         
     | 
| 
       522 
522 
     | 
    
         
             
                  end
         
     | 
| 
       523 
523 
     | 
    
         | 
| 
       524 
524 
     | 
    
         
             
                  context "when the field is aliased" do
         
     | 
| 
         @@ -532,34 +532,15 @@ describe Mongoid::Dirty do 
     | 
|
| 
       532 
532 
     | 
    
         
             
                    end
         
     | 
| 
       533 
533 
     | 
    
         | 
| 
       534 
534 
     | 
    
         
             
                    it "returns the old value" do
         
     | 
| 
       535 
     | 
    
         
            -
                      person.send(:attribute_was, "test"). 
     | 
| 
      
 535 
     | 
    
         
            +
                      expect(person.send(:attribute_was, "test")).to eq("Aliased 1")
         
     | 
| 
       536 
536 
     | 
    
         
             
                    end
         
     | 
| 
       537 
537 
     | 
    
         | 
| 
       538 
538 
     | 
    
         
             
                    it "allows access via (attribute)_was" do
         
     | 
| 
       539 
     | 
    
         
            -
                      person.test_was. 
     | 
| 
      
 539 
     | 
    
         
            +
                      expect(person.test_was).to eq("Aliased 1")
         
     | 
| 
       540 
540 
     | 
    
         
             
                    end
         
     | 
| 
       541 
541 
     | 
    
         
             
                  end
         
     | 
| 
       542 
542 
     | 
    
         
             
                end
         
     | 
| 
       543 
543 
     | 
    
         | 
| 
       544 
     | 
    
         
            -
                context "when the attribute has changed from the default value" do
         
     | 
| 
       545 
     | 
    
         
            -
             
     | 
| 
       546 
     | 
    
         
            -
                  let(:person) do
         
     | 
| 
       547 
     | 
    
         
            -
                    Person.new
         
     | 
| 
       548 
     | 
    
         
            -
                  end
         
     | 
| 
       549 
     | 
    
         
            -
             
     | 
| 
       550 
     | 
    
         
            -
                  before do
         
     | 
| 
       551 
     | 
    
         
            -
                    person.pets = true
         
     | 
| 
       552 
     | 
    
         
            -
                  end
         
     | 
| 
       553 
     | 
    
         
            -
             
     | 
| 
       554 
     | 
    
         
            -
                  it "returns the default value" do
         
     | 
| 
       555 
     | 
    
         
            -
                    person.send(:attribute_was, "pets").should be_false
         
     | 
| 
       556 
     | 
    
         
            -
                  end
         
     | 
| 
       557 
     | 
    
         
            -
             
     | 
| 
       558 
     | 
    
         
            -
                  it "allows access via (attribute)_was" do
         
     | 
| 
       559 
     | 
    
         
            -
                    person.pets_was.should be_false
         
     | 
| 
       560 
     | 
    
         
            -
                  end
         
     | 
| 
       561 
     | 
    
         
            -
                end
         
     | 
| 
       562 
     | 
    
         
            -
             
     | 
| 
       563 
544 
     | 
    
         
             
                context "when the attribute has not changed from the persisted value" do
         
     | 
| 
       564 
545 
     | 
    
         | 
| 
       565 
546 
     | 
    
         
             
                  let!(:person) do
         
     | 
| 
         @@ -567,18 +548,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       567 
548 
     | 
    
         
             
                  end
         
     | 
| 
       568 
549 
     | 
    
         | 
| 
       569 
550 
     | 
    
         
             
                  it "returns the original value" do
         
     | 
| 
       570 
     | 
    
         
            -
                    person.send(:attribute_was, "title"). 
     | 
| 
       571 
     | 
    
         
            -
                  end
         
     | 
| 
       572 
     | 
    
         
            -
                end
         
     | 
| 
       573 
     | 
    
         
            -
             
     | 
| 
       574 
     | 
    
         
            -
                context "when the attribute has not changed from the default value" do
         
     | 
| 
       575 
     | 
    
         
            -
             
     | 
| 
       576 
     | 
    
         
            -
                  let(:person) do
         
     | 
| 
       577 
     | 
    
         
            -
                    Person.new
         
     | 
| 
       578 
     | 
    
         
            -
                  end
         
     | 
| 
       579 
     | 
    
         
            -
             
     | 
| 
       580 
     | 
    
         
            -
                  it "returns the default value" do
         
     | 
| 
       581 
     | 
    
         
            -
                    person.send(:attribute_was, "pets").should be_false
         
     | 
| 
      
 551 
     | 
    
         
            +
                    expect(person.send(:attribute_was, "title")).to eq("Grand Poobah")
         
     | 
| 
       582 
552 
     | 
    
         
             
                  end
         
     | 
| 
       583 
553 
     | 
    
         
             
                end
         
     | 
| 
       584 
554 
     | 
    
         
             
              end
         
     | 
| 
         @@ -608,11 +578,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       608 
578 
     | 
    
         
             
                  end
         
     | 
| 
       609 
579 
     | 
    
         | 
| 
       610 
580 
     | 
    
         
             
                  it "does not return the value in the changes" do
         
     | 
| 
       611 
     | 
    
         
            -
                    changes. 
     | 
| 
      
 581 
     | 
    
         
            +
                    expect(changes).to be_empty
         
     | 
| 
       612 
582 
     | 
    
         
             
                  end
         
     | 
| 
       613 
583 
     | 
    
         | 
| 
       614 
584 
     | 
    
         
             
                  it "is not flagged as changed" do
         
     | 
| 
       615 
     | 
    
         
            -
                    person. 
     | 
| 
      
 585 
     | 
    
         
            +
                    expect(person).to_not be_changed
         
     | 
| 
       616 
586 
     | 
    
         
             
                  end
         
     | 
| 
       617 
587 
     | 
    
         
             
                end
         
     | 
| 
       618 
588 
     | 
    
         | 
| 
         @@ -628,7 +598,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       628 
598 
     | 
    
         
             
                  end
         
     | 
| 
       629 
599 
     | 
    
         | 
| 
       630 
600 
     | 
    
         
             
                  it "returns the value in the changes" do
         
     | 
| 
       631 
     | 
    
         
            -
                    changes. 
     | 
| 
      
 601 
     | 
    
         
            +
                    expect(changes).to eq({ "aliases" => [[ "007" ], [ "007", "008" ]] })
         
     | 
| 
       632 
602 
     | 
    
         
             
                  end
         
     | 
| 
       633 
603 
     | 
    
         
             
                end
         
     | 
| 
       634 
604 
     | 
    
         | 
| 
         @@ -645,11 +615,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       645 
615 
     | 
    
         
             
                    end
         
     | 
| 
       646 
616 
     | 
    
         | 
| 
       647 
617 
     | 
    
         
             
                    it "clones the value" do
         
     | 
| 
       648 
     | 
    
         
            -
                      changed["aliases"]. 
     | 
| 
      
 618 
     | 
    
         
            +
                      expect(changed["aliases"]).to_not equal(aliases)
         
     | 
| 
       649 
619 
     | 
    
         
             
                    end
         
     | 
| 
       650 
620 
     | 
    
         | 
| 
       651 
621 
     | 
    
         
             
                    it "puts the old value in the changes" do
         
     | 
| 
       652 
     | 
    
         
            -
                      changed["aliases"]. 
     | 
| 
      
 622 
     | 
    
         
            +
                      expect(changed["aliases"]).to eq(aliases)
         
     | 
| 
       653 
623 
     | 
    
         
             
                    end
         
     | 
| 
       654 
624 
     | 
    
         
             
                  end
         
     | 
| 
       655 
625 
     | 
    
         | 
| 
         @@ -657,7 +627,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       657 
627 
     | 
    
         | 
| 
       658 
628 
     | 
    
         
             
                    before do
         
     | 
| 
       659 
629 
     | 
    
         
             
                      person.changed_attributes["aliases"] = aliases
         
     | 
| 
       660 
     | 
    
         
            -
                      aliases. 
     | 
| 
      
 630 
     | 
    
         
            +
                      expect(aliases).to receive(:clone).never
         
     | 
| 
       661 
631 
     | 
    
         
             
                      person.aliases_will_change!
         
     | 
| 
       662 
632 
     | 
    
         
             
                    end
         
     | 
| 
       663 
633 
     | 
    
         | 
| 
         @@ -666,11 +636,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       666 
636 
     | 
    
         
             
                    end
         
     | 
| 
       667 
637 
     | 
    
         | 
| 
       668 
638 
     | 
    
         
             
                    it "does not clone the value" do
         
     | 
| 
       669 
     | 
    
         
            -
                      changed["aliases"]. 
     | 
| 
      
 639 
     | 
    
         
            +
                      expect(changed["aliases"]).to equal(aliases)
         
     | 
| 
       670 
640 
     | 
    
         
             
                    end
         
     | 
| 
       671 
641 
     | 
    
         | 
| 
       672 
642 
     | 
    
         
             
                    it "retains the first value in the changes" do
         
     | 
| 
       673 
     | 
    
         
            -
                      changed["aliases"]. 
     | 
| 
      
 643 
     | 
    
         
            +
                      expect(changed["aliases"]).to eq(aliases)
         
     | 
| 
       674 
644 
     | 
    
         
             
                    end
         
     | 
| 
       675 
645 
     | 
    
         
             
                  end
         
     | 
| 
       676 
646 
     | 
    
         
             
                end
         
     | 
| 
         @@ -689,7 +659,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       689 
659 
     | 
    
         
             
                  end
         
     | 
| 
       690 
660 
     | 
    
         | 
| 
       691 
661 
     | 
    
         
             
                  it "returns an array of changed field names" do
         
     | 
| 
       692 
     | 
    
         
            -
                    person.changed. 
     | 
| 
      
 662 
     | 
    
         
            +
                    expect(person.changed).to include("title")
         
     | 
| 
       693 
663 
     | 
    
         
             
                  end
         
     | 
| 
       694 
664 
     | 
    
         
             
                end
         
     | 
| 
       695 
665 
     | 
    
         | 
| 
         @@ -700,7 +670,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       700 
670 
     | 
    
         
             
                  end
         
     | 
| 
       701 
671 
     | 
    
         | 
| 
       702 
672 
     | 
    
         
             
                  it "does not include non changed fields" do
         
     | 
| 
       703 
     | 
    
         
            -
                    person.changed. 
     | 
| 
      
 673 
     | 
    
         
            +
                    expect(person.changed).to_not include("title")
         
     | 
| 
       704 
674 
     | 
    
         
             
                  end
         
     | 
| 
       705 
675 
     | 
    
         
             
                end
         
     | 
| 
       706 
676 
     | 
    
         | 
| 
         @@ -721,7 +691,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       721 
691 
     | 
    
         
             
                    end
         
     | 
| 
       722 
692 
     | 
    
         | 
| 
       723 
693 
     | 
    
         
             
                    it "returns true" do
         
     | 
| 
       724 
     | 
    
         
            -
                      person.name. 
     | 
| 
      
 694 
     | 
    
         
            +
                      expect(person.name).to be_changed
         
     | 
| 
       725 
695 
     | 
    
         
             
                    end
         
     | 
| 
       726 
696 
     | 
    
         
             
                  end
         
     | 
| 
       727 
697 
     | 
    
         
             
                end
         
     | 
| 
         @@ -740,7 +710,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       740 
710 
     | 
    
         
             
                  end
         
     | 
| 
       741 
711 
     | 
    
         | 
| 
       742 
712 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
       743 
     | 
    
         
            -
                    person. 
     | 
| 
      
 713 
     | 
    
         
            +
                    expect(person).to be_changed
         
     | 
| 
       744 
714 
     | 
    
         
             
                  end
         
     | 
| 
       745 
715 
     | 
    
         
             
                end
         
     | 
| 
       746 
716 
     | 
    
         | 
| 
         @@ -757,7 +727,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       757 
727 
     | 
    
         
             
                    end
         
     | 
| 
       758 
728 
     | 
    
         | 
| 
       759 
729 
     | 
    
         
             
                    it "returns false" do
         
     | 
| 
       760 
     | 
    
         
            -
                      person. 
     | 
| 
      
 730 
     | 
    
         
            +
                      expect(person).to_not be_changed
         
     | 
| 
       761 
731 
     | 
    
         
             
                    end
         
     | 
| 
       762 
732 
     | 
    
         
             
                  end
         
     | 
| 
       763 
733 
     | 
    
         | 
| 
         @@ -772,7 +742,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       772 
742 
     | 
    
         
             
                    end
         
     | 
| 
       773 
743 
     | 
    
         | 
| 
       774 
744 
     | 
    
         
             
                    it "returns true" do
         
     | 
| 
       775 
     | 
    
         
            -
                      person. 
     | 
| 
      
 745 
     | 
    
         
            +
                      expect(person).to be_changed
         
     | 
| 
       776 
746 
     | 
    
         
             
                    end
         
     | 
| 
       777 
747 
     | 
    
         
             
                  end
         
     | 
| 
       778 
748 
     | 
    
         | 
| 
         @@ -783,13 +753,12 @@ describe Mongoid::Dirty do 
     | 
|
| 
       783 
753 
     | 
    
         
             
                    end
         
     | 
| 
       784 
754 
     | 
    
         | 
| 
       785 
755 
     | 
    
         
             
                    before do
         
     | 
| 
       786 
     | 
    
         
            -
                      Mongoid.configure.allow_dynamic_fields = true
         
     | 
| 
       787 
756 
     | 
    
         
             
                      person.other_name[:full][:first] = 'Name'
         
     | 
| 
       788 
757 
     | 
    
         
             
                    end
         
     | 
| 
       789 
758 
     | 
    
         | 
| 
       790 
759 
     | 
    
         
             
                    it "returns true" do
         
     | 
| 
       791 
     | 
    
         
            -
                      person.changes. 
     | 
| 
       792 
     | 
    
         
            -
                      person. 
     | 
| 
      
 760 
     | 
    
         
            +
                      expect(person.changes).to_not be_empty
         
     | 
| 
      
 761 
     | 
    
         
            +
                      expect(person).to be_changed
         
     | 
| 
       793 
762 
     | 
    
         
             
                    end
         
     | 
| 
       794 
763 
     | 
    
         
             
                  end
         
     | 
| 
       795 
764 
     | 
    
         
             
                end
         
     | 
| 
         @@ -797,11 +766,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       797 
766 
     | 
    
         
             
                context "when the document has not changed" do
         
     | 
| 
       798 
767 
     | 
    
         | 
| 
       799 
768 
     | 
    
         
             
                  let(:acolyte) do
         
     | 
| 
       800 
     | 
    
         
            -
                    Acolyte.instantiate("_id" =>  
     | 
| 
      
 769 
     | 
    
         
            +
                    Acolyte.instantiate("_id" => BSON::ObjectId.new)
         
     | 
| 
       801 
770 
     | 
    
         
             
                  end
         
     | 
| 
       802 
771 
     | 
    
         | 
| 
       803 
772 
     | 
    
         
             
                  it "returns false" do
         
     | 
| 
       804 
     | 
    
         
            -
                    acolyte. 
     | 
| 
      
 773 
     | 
    
         
            +
                    expect(acolyte).to_not be_changed
         
     | 
| 
       805 
774 
     | 
    
         
             
                  end
         
     | 
| 
       806 
775 
     | 
    
         
             
                end
         
     | 
| 
       807 
776 
     | 
    
         | 
| 
         @@ -820,7 +789,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       820 
789 
     | 
    
         
             
                  end
         
     | 
| 
       821 
790 
     | 
    
         | 
| 
       822 
791 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
       823 
     | 
    
         
            -
                    person. 
     | 
| 
      
 792 
     | 
    
         
            +
                    expect(person).to be_changed
         
     | 
| 
       824 
793 
     | 
    
         
             
                  end
         
     | 
| 
       825 
794 
     | 
    
         
             
                end
         
     | 
| 
       826 
795 
     | 
    
         | 
| 
         @@ -843,7 +812,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       843 
812 
     | 
    
         
             
                  end
         
     | 
| 
       844 
813 
     | 
    
         | 
| 
       845 
814 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
       846 
     | 
    
         
            -
                    person. 
     | 
| 
      
 815 
     | 
    
         
            +
                    expect(person).to be_changed
         
     | 
| 
       847 
816 
     | 
    
         
             
                  end
         
     | 
| 
       848 
817 
     | 
    
         
             
                end
         
     | 
| 
       849 
818 
     | 
    
         | 
| 
         @@ -858,7 +827,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       858 
827 
     | 
    
         
             
                  end
         
     | 
| 
       859 
828 
     | 
    
         | 
| 
       860 
829 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
       861 
     | 
    
         
            -
                    person. 
     | 
| 
      
 830 
     | 
    
         
            +
                    expect(person).to be_changed
         
     | 
| 
       862 
831 
     | 
    
         
             
                  end
         
     | 
| 
       863 
832 
     | 
    
         
             
                end
         
     | 
| 
       864 
833 
     | 
    
         | 
| 
         @@ -877,7 +846,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       877 
846 
     | 
    
         
             
                  end
         
     | 
| 
       878 
847 
     | 
    
         | 
| 
       879 
848 
     | 
    
         
             
                  it "returns true" do
         
     | 
| 
       880 
     | 
    
         
            -
                    person. 
     | 
| 
      
 849 
     | 
    
         
            +
                    expect(person).to be_changed
         
     | 
| 
       881 
850 
     | 
    
         
             
                  end
         
     | 
| 
       882 
851 
     | 
    
         
             
                end
         
     | 
| 
       883 
852 
     | 
    
         
             
              end
         
     | 
| 
         @@ -895,13 +864,13 @@ describe Mongoid::Dirty do 
     | 
|
| 
       895 
864 
     | 
    
         
             
                  end
         
     | 
| 
       896 
865 
     | 
    
         | 
| 
       897 
866 
     | 
    
         
             
                  it "returns a hash of changes" do
         
     | 
| 
       898 
     | 
    
         
            -
                    person.changes["title"]. 
     | 
| 
      
 867 
     | 
    
         
            +
                    expect(person.changes["title"]).to eq(
         
     | 
| 
       899 
868 
     | 
    
         
             
                      [ nil, "Captain Obvious" ]
         
     | 
| 
       900 
869 
     | 
    
         
             
                    )
         
     | 
| 
       901 
870 
     | 
    
         
             
                  end
         
     | 
| 
       902 
871 
     | 
    
         | 
| 
       903 
872 
     | 
    
         
             
                  it "returns a hash with indifferent access" do
         
     | 
| 
       904 
     | 
    
         
            -
                    person.changes["title"]. 
     | 
| 
      
 873 
     | 
    
         
            +
                    expect(person.changes["title"]).to eq(
         
     | 
| 
       905 
874 
     | 
    
         
             
                      [ nil, "Captain Obvious" ]
         
     | 
| 
       906 
875 
     | 
    
         
             
                    )
         
     | 
| 
       907 
876 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -910,11 +879,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       910 
879 
     | 
    
         
             
                context "when the document has not changed" do
         
     | 
| 
       911 
880 
     | 
    
         | 
| 
       912 
881 
     | 
    
         
             
                  let(:acolyte) do
         
     | 
| 
       913 
     | 
    
         
            -
                    Acolyte.instantiate("_id" =>  
     | 
| 
      
 882 
     | 
    
         
            +
                    Acolyte.instantiate("_id" => BSON::ObjectId.new)
         
     | 
| 
       914 
883 
     | 
    
         
             
                  end
         
     | 
| 
       915 
884 
     | 
    
         | 
| 
       916 
885 
     | 
    
         
             
                  it "returns an empty hash" do
         
     | 
| 
       917 
     | 
    
         
            -
                    acolyte.changes. 
     | 
| 
      
 886 
     | 
    
         
            +
                    expect(acolyte.changes).to be_empty
         
     | 
| 
       918 
887 
     | 
    
         
             
                  end
         
     | 
| 
       919 
888 
     | 
    
         
             
                end
         
     | 
| 
       920 
889 
     | 
    
         
             
              end
         
     | 
| 
         @@ -943,7 +912,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       943 
912 
     | 
    
         
             
                      end
         
     | 
| 
       944 
913 
     | 
    
         | 
| 
       945 
914 
     | 
    
         
             
                      it "contains array changes in the setters" do
         
     | 
| 
       946 
     | 
    
         
            -
                        setters. 
     | 
| 
      
 915 
     | 
    
         
            +
                        expect(setters).to eq({ "aliases" => [] })
         
     | 
| 
       947 
916 
     | 
    
         
             
                      end
         
     | 
| 
       948 
917 
     | 
    
         
             
                    end
         
     | 
| 
       949 
918 
     | 
    
         | 
| 
         @@ -958,7 +927,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       958 
927 
     | 
    
         
             
                      end
         
     | 
| 
       959 
928 
     | 
    
         | 
| 
       960 
929 
     | 
    
         
             
                      it "contains array changes in the setters" do
         
     | 
| 
       961 
     | 
    
         
            -
                        setters. 
     | 
| 
      
 930 
     | 
    
         
            +
                        expect(setters).to eq({ "aliases" => [ "007", "008" ] })
         
     | 
| 
       962 
931 
     | 
    
         
             
                      end
         
     | 
| 
       963 
932 
     | 
    
         
             
                    end
         
     | 
| 
       964 
933 
     | 
    
         | 
| 
         @@ -974,7 +943,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       974 
943 
     | 
    
         
             
                      end
         
     | 
| 
       975 
944 
     | 
    
         | 
| 
       976 
945 
     | 
    
         
             
                      it "does not contain array changes in the setters" do
         
     | 
| 
       977 
     | 
    
         
            -
                        setters. 
     | 
| 
      
 946 
     | 
    
         
            +
                        expect(setters).to eq({ "aliases" => [ "008" ]})
         
     | 
| 
       978 
947 
     | 
    
         
             
                      end
         
     | 
| 
       979 
948 
     | 
    
         
             
                    end
         
     | 
| 
       980 
949 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -990,7 +959,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       990 
959 
     | 
    
         
             
                    end
         
     | 
| 
       991 
960 
     | 
    
         | 
| 
       992 
961 
     | 
    
         
             
                    it "returns a hash of field names and new values" do
         
     | 
| 
       993 
     | 
    
         
            -
                      person.setters["title"]. 
     | 
| 
      
 962 
     | 
    
         
            +
                      expect(person.setters["title"]).to eq("Captain Obvious")
         
     | 
| 
       994 
963 
     | 
    
         
             
                    end
         
     | 
| 
       995 
964 
     | 
    
         
             
                  end
         
     | 
| 
       996 
965 
     | 
    
         | 
| 
         @@ -1012,7 +981,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1012 
981 
     | 
    
         
             
                    end
         
     | 
| 
       1013 
982 
     | 
    
         | 
| 
       1014 
983 
     | 
    
         
             
                    it "returns a hash of field names and new values" do
         
     | 
| 
       1015 
     | 
    
         
            -
                      address.setters. 
     | 
| 
      
 984 
     | 
    
         
            +
                      expect(address.setters).to eq(
         
     | 
| 
       1016 
985 
     | 
    
         
             
                        { "addresses.0.street" => "Bond St" }
         
     | 
| 
       1017 
986 
     | 
    
         
             
                      )
         
     | 
| 
       1018 
987 
     | 
    
         
             
                    end
         
     | 
| 
         @@ -1030,7 +999,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1030 
999 
     | 
    
         
             
                      end
         
     | 
| 
       1031 
1000 
     | 
    
         | 
| 
       1032 
1001 
     | 
    
         
             
                      it "returns the proper hash with locations" do
         
     | 
| 
       1033 
     | 
    
         
            -
                        location.setters. 
     | 
| 
      
 1002 
     | 
    
         
            +
                        expect(location.setters).to eq(
         
     | 
| 
       1034 
1003 
     | 
    
         
             
                          { "addresses.0.locations.0.name" => "Work" }
         
     | 
| 
       1035 
1004 
     | 
    
         
             
                        )
         
     | 
| 
       1036 
1005 
     | 
    
         
             
                      end
         
     | 
| 
         @@ -1041,11 +1010,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1041 
1010 
     | 
    
         
             
                context "when the document has not changed" do
         
     | 
| 
       1042 
1011 
     | 
    
         | 
| 
       1043 
1012 
     | 
    
         
             
                  let(:acolyte) do
         
     | 
| 
       1044 
     | 
    
         
            -
                    Acolyte.instantiate("_id" =>  
     | 
| 
      
 1013 
     | 
    
         
            +
                    Acolyte.instantiate("_id" => BSON::ObjectId.new)
         
     | 
| 
       1045 
1014 
     | 
    
         
             
                  end
         
     | 
| 
       1046 
1015 
     | 
    
         | 
| 
       1047 
1016 
     | 
    
         
             
                  it "returns an empty hash" do
         
     | 
| 
       1048 
     | 
    
         
            -
                    acolyte.setters. 
     | 
| 
      
 1017 
     | 
    
         
            +
                    expect(acolyte.setters).to be_empty
         
     | 
| 
       1049 
1018 
     | 
    
         
             
                  end
         
     | 
| 
       1050 
1019 
     | 
    
         
             
                end
         
     | 
| 
       1051 
1020 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1067,7 +1036,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1067 
1036 
     | 
    
         
             
                  end
         
     | 
| 
       1068 
1037 
     | 
    
         | 
| 
       1069 
1038 
     | 
    
         
             
                  it "returns the changes before the save" do
         
     | 
| 
       1070 
     | 
    
         
            -
                    person.previous_changes["title"]. 
     | 
| 
      
 1039 
     | 
    
         
            +
                    expect(person.previous_changes["title"]).to eq(
         
     | 
| 
       1071 
1040 
     | 
    
         
             
                      [ nil, "Captain Obvious" ]
         
     | 
| 
       1072 
1041 
     | 
    
         
             
                    )
         
     | 
| 
       1073 
1042 
     | 
    
         
             
                  end
         
     | 
| 
         @@ -1076,7 +1045,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1076 
1045 
     | 
    
         
             
                context "when the document has not been saved" do
         
     | 
| 
       1077 
1046 
     | 
    
         | 
| 
       1078 
1047 
     | 
    
         
             
                  it "returns an empty hash" do
         
     | 
| 
       1079 
     | 
    
         
            -
                    person.previous_changes. 
     | 
| 
      
 1048 
     | 
    
         
            +
                    expect(person.previous_changes).to be_empty
         
     | 
| 
       1080 
1049 
     | 
    
         
             
                  end
         
     | 
| 
       1081 
1050 
     | 
    
         
             
                end
         
     | 
| 
       1082 
1051 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1095,19 +1064,19 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1095 
1064 
     | 
    
         
             
                end
         
     | 
| 
       1096 
1065 
     | 
    
         | 
| 
       1097 
1066 
     | 
    
         
             
                it "clears the atomic pulls" do
         
     | 
| 
       1098 
     | 
    
         
            -
                  person.atomic_pulls. 
     | 
| 
      
 1067 
     | 
    
         
            +
                  expect(person.atomic_pulls).to be_empty
         
     | 
| 
       1099 
1068 
     | 
    
         
             
                end
         
     | 
| 
       1100 
1069 
     | 
    
         | 
| 
       1101 
1070 
     | 
    
         
             
                it "clears the atomic unsets" do
         
     | 
| 
       1102 
     | 
    
         
            -
                  person.atomic_unsets. 
     | 
| 
      
 1071 
     | 
    
         
            +
                  expect(person.atomic_unsets).to be_empty
         
     | 
| 
       1103 
1072 
     | 
    
         
             
                end
         
     | 
| 
       1104 
1073 
     | 
    
         | 
| 
       1105 
1074 
     | 
    
         
             
                it "clears the delayed atomic sets" do
         
     | 
| 
       1106 
     | 
    
         
            -
                  person.delayed_atomic_sets. 
     | 
| 
      
 1075 
     | 
    
         
            +
                  expect(person.delayed_atomic_sets).to be_empty
         
     | 
| 
       1107 
1076 
     | 
    
         
             
                end
         
     | 
| 
       1108 
1077 
     | 
    
         | 
| 
       1109 
1078 
     | 
    
         
             
                it "clears the changed attributes" do
         
     | 
| 
       1110 
     | 
    
         
            -
                  person.changed_attributes. 
     | 
| 
      
 1079 
     | 
    
         
            +
                  expect(person.changed_attributes).to be_empty
         
     | 
| 
       1111 
1080 
     | 
    
         
             
                end
         
     | 
| 
       1112 
1081 
     | 
    
         
             
              end
         
     | 
| 
       1113 
1082 
     | 
    
         | 
| 
         @@ -1125,15 +1094,15 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1125 
1094 
     | 
    
         
             
                  end
         
     | 
| 
       1126 
1095 
     | 
    
         | 
| 
       1127 
1096 
     | 
    
         
             
                  it "resets the value to the original" do
         
     | 
| 
       1128 
     | 
    
         
            -
                    person.title. 
     | 
| 
      
 1097 
     | 
    
         
            +
                    expect(person.title).to be_nil
         
     | 
| 
       1129 
1098 
     | 
    
         
             
                  end
         
     | 
| 
       1130 
1099 
     | 
    
         | 
| 
       1131 
1100 
     | 
    
         
             
                  it "allows access via reset_(attribute)!" do
         
     | 
| 
       1132 
     | 
    
         
            -
                    person.title. 
     | 
| 
      
 1101 
     | 
    
         
            +
                    expect(person.title).to be_nil
         
     | 
| 
       1133 
1102 
     | 
    
         
             
                  end
         
     | 
| 
       1134 
1103 
     | 
    
         | 
| 
       1135 
1104 
     | 
    
         
             
                  it "removes the field from the changes" do
         
     | 
| 
       1136 
     | 
    
         
            -
                    person.changed. 
     | 
| 
      
 1105 
     | 
    
         
            +
                    expect(person.changed).to_not include("title")
         
     | 
| 
       1137 
1106 
     | 
    
         
             
                  end
         
     | 
| 
       1138 
1107 
     | 
    
         | 
| 
       1139 
1108 
     | 
    
         
             
                  context "when the field is aliased" do
         
     | 
| 
         @@ -1148,11 +1117,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1148 
1117 
     | 
    
         
             
                    end
         
     | 
| 
       1149 
1118 
     | 
    
         | 
| 
       1150 
1119 
     | 
    
         
             
                    it "resets the value to the original" do
         
     | 
| 
       1151 
     | 
    
         
            -
                      person.test. 
     | 
| 
      
 1120 
     | 
    
         
            +
                      expect(person.test).to be_nil
         
     | 
| 
       1152 
1121 
     | 
    
         
             
                    end
         
     | 
| 
       1153 
1122 
     | 
    
         | 
| 
       1154 
1123 
     | 
    
         
             
                    it "removes the field from the changes" do
         
     | 
| 
       1155 
     | 
    
         
            -
                      person.changed. 
     | 
| 
      
 1124 
     | 
    
         
            +
                      expect(person.changed).to_not include("test")
         
     | 
| 
       1156 
1125 
     | 
    
         
             
                    end
         
     | 
| 
       1157 
1126 
     | 
    
         
             
                  end
         
     | 
| 
       1158 
1127 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1168,7 +1137,84 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1168 
1137 
     | 
    
         
             
                  end
         
     | 
| 
       1169 
1138 
     | 
    
         | 
| 
       1170 
1139 
     | 
    
         
             
                  it "does nothing" do
         
     | 
| 
       1171 
     | 
    
         
            -
                    person.title. 
     | 
| 
      
 1140 
     | 
    
         
            +
                    expect(person.title).to be_nil
         
     | 
| 
      
 1141 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1142 
     | 
    
         
            +
                end
         
     | 
| 
      
 1143 
     | 
    
         
            +
              end
         
     | 
| 
      
 1144 
     | 
    
         
            +
             
     | 
| 
      
 1145 
     | 
    
         
            +
              describe "#reset_attribute_to_default!" do
         
     | 
| 
      
 1146 
     | 
    
         
            +
             
     | 
| 
      
 1147 
     | 
    
         
            +
                context "when a default is defined" do
         
     | 
| 
      
 1148 
     | 
    
         
            +
             
     | 
| 
      
 1149 
     | 
    
         
            +
                  context "when the document is new" do
         
     | 
| 
      
 1150 
     | 
    
         
            +
             
     | 
| 
      
 1151 
     | 
    
         
            +
                    let(:person) do
         
     | 
| 
      
 1152 
     | 
    
         
            +
                      Person.new(pets: true)
         
     | 
| 
      
 1153 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1154 
     | 
    
         
            +
             
     | 
| 
      
 1155 
     | 
    
         
            +
                    before do
         
     | 
| 
      
 1156 
     | 
    
         
            +
                      person.reset_pets_to_default!
         
     | 
| 
      
 1157 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1158 
     | 
    
         
            +
             
     | 
| 
      
 1159 
     | 
    
         
            +
                    it "resets to the default value" do
         
     | 
| 
      
 1160 
     | 
    
         
            +
                      expect(person.pets).to eq(false)
         
     | 
| 
      
 1161 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1162 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1163 
     | 
    
         
            +
             
     | 
| 
      
 1164 
     | 
    
         
            +
                  context "when the document is persisted" do
         
     | 
| 
      
 1165 
     | 
    
         
            +
             
     | 
| 
      
 1166 
     | 
    
         
            +
                    let(:person) do
         
     | 
| 
      
 1167 
     | 
    
         
            +
                      Person.create(pets: true)
         
     | 
| 
      
 1168 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1169 
     | 
    
         
            +
             
     | 
| 
      
 1170 
     | 
    
         
            +
                    before do
         
     | 
| 
      
 1171 
     | 
    
         
            +
                      person.reset_pets_to_default!
         
     | 
| 
      
 1172 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1173 
     | 
    
         
            +
             
     | 
| 
      
 1174 
     | 
    
         
            +
                    it "resets to the default value" do
         
     | 
| 
      
 1175 
     | 
    
         
            +
                      expect(person.pets).to eq(false)
         
     | 
| 
      
 1176 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1177 
     | 
    
         
            +
             
     | 
| 
      
 1178 
     | 
    
         
            +
                    it "flags the document dirty" do
         
     | 
| 
      
 1179 
     | 
    
         
            +
                      expect(person).to be_pets_changed
         
     | 
| 
      
 1180 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1181 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1182 
     | 
    
         
            +
                end
         
     | 
| 
      
 1183 
     | 
    
         
            +
             
     | 
| 
      
 1184 
     | 
    
         
            +
                context "when a default is not defined" do
         
     | 
| 
      
 1185 
     | 
    
         
            +
             
     | 
| 
      
 1186 
     | 
    
         
            +
                  context "when the document is new" do
         
     | 
| 
      
 1187 
     | 
    
         
            +
             
     | 
| 
      
 1188 
     | 
    
         
            +
                    let(:person) do
         
     | 
| 
      
 1189 
     | 
    
         
            +
                      Person.new(title: "test")
         
     | 
| 
      
 1190 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1191 
     | 
    
         
            +
             
     | 
| 
      
 1192 
     | 
    
         
            +
                    before do
         
     | 
| 
      
 1193 
     | 
    
         
            +
                      person.reset_title_to_default!
         
     | 
| 
      
 1194 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1195 
     | 
    
         
            +
             
     | 
| 
      
 1196 
     | 
    
         
            +
                    it "resets to nil" do
         
     | 
| 
      
 1197 
     | 
    
         
            +
                      expect(person.title).to be_nil
         
     | 
| 
      
 1198 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1199 
     | 
    
         
            +
                  end
         
     | 
| 
      
 1200 
     | 
    
         
            +
             
     | 
| 
      
 1201 
     | 
    
         
            +
                  context "when the document is persisted" do
         
     | 
| 
      
 1202 
     | 
    
         
            +
             
     | 
| 
      
 1203 
     | 
    
         
            +
                    let(:person) do
         
     | 
| 
      
 1204 
     | 
    
         
            +
                      Person.create(title: "test")
         
     | 
| 
      
 1205 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1206 
     | 
    
         
            +
             
     | 
| 
      
 1207 
     | 
    
         
            +
                    before do
         
     | 
| 
      
 1208 
     | 
    
         
            +
                      person.reset_title_to_default!
         
     | 
| 
      
 1209 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1210 
     | 
    
         
            +
             
     | 
| 
      
 1211 
     | 
    
         
            +
                    it "resets to nil" do
         
     | 
| 
      
 1212 
     | 
    
         
            +
                      expect(person.title).to be_nil
         
     | 
| 
      
 1213 
     | 
    
         
            +
                    end
         
     | 
| 
      
 1214 
     | 
    
         
            +
             
     | 
| 
      
 1215 
     | 
    
         
            +
                    it "flags the document dirty" do
         
     | 
| 
      
 1216 
     | 
    
         
            +
                      expect(person).to be_title_changed
         
     | 
| 
      
 1217 
     | 
    
         
            +
                    end
         
     | 
| 
       1172 
1218 
     | 
    
         
             
                  end
         
     | 
| 
       1173 
1219 
     | 
    
         
             
                end
         
     | 
| 
       1174 
1220 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1180,15 +1226,15 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1180 
1226 
     | 
    
         
             
                end
         
     | 
| 
       1181 
1227 
     | 
    
         | 
| 
       1182 
1228 
     | 
    
         
             
                it "defines a _change method" do
         
     | 
| 
       1183 
     | 
    
         
            -
                  document.updated_at_change. 
     | 
| 
      
 1229 
     | 
    
         
            +
                  expect(document.updated_at_change).to be_nil
         
     | 
| 
       1184 
1230 
     | 
    
         
             
                end
         
     | 
| 
       1185 
1231 
     | 
    
         | 
| 
       1186 
1232 
     | 
    
         
             
                it "defines a _changed? method" do
         
     | 
| 
       1187 
     | 
    
         
            -
                  document.updated_at_changed 
     | 
| 
      
 1233 
     | 
    
         
            +
                  expect(document.updated_at_changed?).to be false
         
     | 
| 
       1188 
1234 
     | 
    
         
             
                end
         
     | 
| 
       1189 
1235 
     | 
    
         | 
| 
       1190 
1236 
     | 
    
         
             
                it "defines a _changes method" do
         
     | 
| 
       1191 
     | 
    
         
            -
                  document.updated_at_was. 
     | 
| 
      
 1237 
     | 
    
         
            +
                  expect(document.updated_at_was).to be_nil
         
     | 
| 
       1192 
1238 
     | 
    
         
             
                end
         
     | 
| 
       1193 
1239 
     | 
    
         
             
              end
         
     | 
| 
       1194 
1240 
     | 
    
         | 
| 
         @@ -1207,7 +1253,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1207 
1253 
     | 
    
         
             
                    end
         
     | 
| 
       1208 
1254 
     | 
    
         | 
| 
       1209 
1255 
     | 
    
         
             
                    it "flags the parent as changed" do
         
     | 
| 
       1210 
     | 
    
         
            -
                      person. 
     | 
| 
      
 1256 
     | 
    
         
            +
                      expect(person).to be_changed
         
     | 
| 
       1211 
1257 
     | 
    
         
             
                    end
         
     | 
| 
       1212 
1258 
     | 
    
         
             
                  end
         
     | 
| 
       1213 
1259 
     | 
    
         | 
| 
         @@ -1222,7 +1268,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1222 
1268 
     | 
    
         
             
                    end
         
     | 
| 
       1223 
1269 
     | 
    
         | 
| 
       1224 
1270 
     | 
    
         
             
                    it "flags the parent as changed" do
         
     | 
| 
       1225 
     | 
    
         
            -
                      person. 
     | 
| 
      
 1271 
     | 
    
         
            +
                      expect(person).to be_changed
         
     | 
| 
       1226 
1272 
     | 
    
         
             
                    end
         
     | 
| 
       1227 
1273 
     | 
    
         
             
                  end
         
     | 
| 
       1228 
1274 
     | 
    
         | 
| 
         @@ -1233,7 +1279,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1233 
1279 
     | 
    
         
             
                    end
         
     | 
| 
       1234 
1280 
     | 
    
         | 
| 
       1235 
1281 
     | 
    
         
             
                    it "does not flag the parent as changed" do
         
     | 
| 
       1236 
     | 
    
         
            -
                      person. 
     | 
| 
      
 1282 
     | 
    
         
            +
                      expect(person).to_not be_changed
         
     | 
| 
       1237 
1283 
     | 
    
         
             
                    end
         
     | 
| 
       1238 
1284 
     | 
    
         
             
                  end
         
     | 
| 
       1239 
1285 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1247,7 +1293,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1247 
1293 
     | 
    
         
             
                    end
         
     | 
| 
       1248 
1294 
     | 
    
         | 
| 
       1249 
1295 
     | 
    
         
             
                    it "flags the parent as changed" do
         
     | 
| 
       1250 
     | 
    
         
            -
                      person. 
     | 
| 
      
 1296 
     | 
    
         
            +
                      expect(person).to be_changed
         
     | 
| 
       1251 
1297 
     | 
    
         
             
                    end
         
     | 
| 
       1252 
1298 
     | 
    
         
             
                  end
         
     | 
| 
       1253 
1299 
     | 
    
         | 
| 
         @@ -1262,7 +1308,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1262 
1308 
     | 
    
         
             
                    end
         
     | 
| 
       1263 
1309 
     | 
    
         | 
| 
       1264 
1310 
     | 
    
         
             
                    it "flags the parent as changed" do
         
     | 
| 
       1265 
     | 
    
         
            -
                      person. 
     | 
| 
      
 1311 
     | 
    
         
            +
                      expect(person).to be_changed
         
     | 
| 
       1266 
1312 
     | 
    
         
             
                    end
         
     | 
| 
       1267 
1313 
     | 
    
         
             
                  end
         
     | 
| 
       1268 
1314 
     | 
    
         | 
| 
         @@ -1273,7 +1319,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1273 
1319 
     | 
    
         
             
                    end
         
     | 
| 
       1274 
1320 
     | 
    
         | 
| 
       1275 
1321 
     | 
    
         
             
                    it "does not flag the parent as changed" do
         
     | 
| 
       1276 
     | 
    
         
            -
                      person. 
     | 
| 
      
 1322 
     | 
    
         
            +
                      expect(person).to_not be_changed
         
     | 
| 
       1277 
1323 
     | 
    
         
             
                    end
         
     | 
| 
       1278 
1324 
     | 
    
         
             
                  end
         
     | 
| 
       1279 
1325 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1290,7 +1336,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1290 
1336 
     | 
    
         
             
                end
         
     | 
| 
       1291 
1337 
     | 
    
         | 
| 
       1292 
1338 
     | 
    
         
             
                it "records the changes" do
         
     | 
| 
       1293 
     | 
    
         
            -
                  person.changes. 
     | 
| 
      
 1339 
     | 
    
         
            +
                  expect(person.changes).to eq(
         
     | 
| 
       1294 
1340 
     | 
    
         
             
                    { "map" => [{ "test" => {}}, { "test" => { "value" => 10 }}]}
         
     | 
| 
       1295 
1341 
     | 
    
         
             
                  )
         
     | 
| 
       1296 
1342 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1311,7 +1357,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1311 
1357 
     | 
    
         
             
                end
         
     | 
| 
       1312 
1358 
     | 
    
         | 
| 
       1313 
1359 
     | 
    
         
             
                it "records the foreign key dirty changes" do
         
     | 
| 
       1314 
     | 
    
         
            -
                  person.previous_changes["preference_ids"]. 
     | 
| 
      
 1360 
     | 
    
         
            +
                  expect(person.previous_changes["preference_ids"]).to eq(
         
     | 
| 
       1315 
1361 
     | 
    
         
             
                    [nil, [ preference.id ]]
         
     | 
| 
       1316 
1362 
     | 
    
         
             
                  )
         
     | 
| 
       1317 
1363 
     | 
    
         
             
                end
         
     | 
| 
         @@ -1334,11 +1380,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1334 
1380 
     | 
    
         
             
                  end
         
     | 
| 
       1335 
1381 
     | 
    
         | 
| 
       1336 
1382 
     | 
    
         
             
                  it "flags the change" do
         
     | 
| 
       1337 
     | 
    
         
            -
                    from_db.changes["preference_ids"]. 
     | 
| 
      
 1383 
     | 
    
         
            +
                    expect(from_db.changes["preference_ids"]).to eq([ nil, []])
         
     | 
| 
       1338 
1384 
     | 
    
         
             
                  end
         
     | 
| 
       1339 
1385 
     | 
    
         | 
| 
       1340 
1386 
     | 
    
         
             
                  it "does not include the changes in the setters" do
         
     | 
| 
       1341 
     | 
    
         
            -
                    from_db.setters. 
     | 
| 
      
 1387 
     | 
    
         
            +
                    expect(from_db.setters).to be_empty
         
     | 
| 
       1342 
1388 
     | 
    
         
             
                  end
         
     | 
| 
       1343 
1389 
     | 
    
         
             
                end
         
     | 
| 
       1344 
1390 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1358,7 +1404,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1358 
1404 
     | 
    
         
             
                end
         
     | 
| 
       1359 
1405 
     | 
    
         | 
| 
       1360 
1406 
     | 
    
         
             
                it "clears the changed attributes" do
         
     | 
| 
       1361 
     | 
    
         
            -
                  from_db.changed_attributes. 
     | 
| 
      
 1407 
     | 
    
         
            +
                  expect(from_db.changed_attributes).to be_empty
         
     | 
| 
       1362 
1408 
     | 
    
         
             
                end
         
     | 
| 
       1363 
1409 
     | 
    
         
             
              end
         
     | 
| 
       1364 
1410 
     | 
    
         | 
| 
         @@ -1378,11 +1424,11 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1378 
1424 
     | 
    
         
             
                end
         
     | 
| 
       1379 
1425 
     | 
    
         | 
| 
       1380 
1426 
     | 
    
         
             
                it "marks the document as changed" do
         
     | 
| 
       1381 
     | 
    
         
            -
                  person. 
     | 
| 
      
 1427 
     | 
    
         
            +
                  expect(person).to be_changed
         
     | 
| 
       1382 
1428 
     | 
    
         
             
                end
         
     | 
| 
       1383 
1429 
     | 
    
         | 
| 
       1384 
1430 
     | 
    
         
             
                it "marks field changes" do
         
     | 
| 
       1385 
     | 
    
         
            -
                  person.changes. 
     | 
| 
      
 1431 
     | 
    
         
            +
                  expect(person.changes).to eq({
         
     | 
| 
       1386 
1432 
     | 
    
         
             
                    "title" => [ "MC", "DJ" ],
         
     | 
| 
       1387 
1433 
     | 
    
         
             
                    "ssn" => [ nil, "222-22-2222" ],
         
     | 
| 
       1388 
1434 
     | 
    
         
             
                    "some_dynamic_field" => [ "blah", "bloop" ]
         
     | 
| 
         @@ -1390,25 +1436,25 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1390 
1436 
     | 
    
         
             
                end
         
     | 
| 
       1391 
1437 
     | 
    
         | 
| 
       1392 
1438 
     | 
    
         
             
                it "marks changed fields" do
         
     | 
| 
       1393 
     | 
    
         
            -
                  person.changed. 
     | 
| 
      
 1439 
     | 
    
         
            +
                  expect(person.changed).to eq([ "title", "ssn", "some_dynamic_field" ])
         
     | 
| 
       1394 
1440 
     | 
    
         
             
                end
         
     | 
| 
       1395 
1441 
     | 
    
         | 
| 
       1396 
1442 
     | 
    
         
             
                it "marks the field as changed" do
         
     | 
| 
       1397 
     | 
    
         
            -
                  person.title_changed 
     | 
| 
      
 1443 
     | 
    
         
            +
                  expect(person.title_changed?).to be true
         
     | 
| 
       1398 
1444 
     | 
    
         
             
                end
         
     | 
| 
       1399 
1445 
     | 
    
         | 
| 
       1400 
1446 
     | 
    
         
             
                it "stores previous field values" do
         
     | 
| 
       1401 
     | 
    
         
            -
                  person.title_was. 
     | 
| 
      
 1447 
     | 
    
         
            +
                  expect(person.title_was).to eq("MC")
         
     | 
| 
       1402 
1448 
     | 
    
         
             
                end
         
     | 
| 
       1403 
1449 
     | 
    
         | 
| 
       1404 
1450 
     | 
    
         
             
                it "marks field changes" do
         
     | 
| 
       1405 
     | 
    
         
            -
                  person.title_change. 
     | 
| 
      
 1451 
     | 
    
         
            +
                  expect(person.title_change).to eq([ "MC", "DJ" ])
         
     | 
| 
       1406 
1452 
     | 
    
         
             
                end
         
     | 
| 
       1407 
1453 
     | 
    
         | 
| 
       1408 
1454 
     | 
    
         
             
                it "allows reset of field changes" do
         
     | 
| 
       1409 
1455 
     | 
    
         
             
                  person.reset_title!
         
     | 
| 
       1410 
     | 
    
         
            -
                  person.title. 
     | 
| 
       1411 
     | 
    
         
            -
                  person.changed. 
     | 
| 
      
 1456 
     | 
    
         
            +
                  expect(person.title).to eq("MC")
         
     | 
| 
      
 1457 
     | 
    
         
            +
                  expect(person.changed).to eq([ "ssn", "some_dynamic_field" ])
         
     | 
| 
       1412 
1458 
     | 
    
         
             
                end
         
     | 
| 
       1413 
1459 
     | 
    
         | 
| 
       1414 
1460 
     | 
    
         
             
                context "after a save" do
         
     | 
| 
         @@ -1418,12 +1464,12 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1418 
1464 
     | 
    
         
             
                  end
         
     | 
| 
       1419 
1465 
     | 
    
         | 
| 
       1420 
1466 
     | 
    
         
             
                  it "clears changes" do
         
     | 
| 
       1421 
     | 
    
         
            -
                    person. 
     | 
| 
      
 1467 
     | 
    
         
            +
                    expect(person).to_not be_changed
         
     | 
| 
       1422 
1468 
     | 
    
         
             
                  end
         
     | 
| 
       1423 
1469 
     | 
    
         | 
| 
       1424 
1470 
     | 
    
         
             
                  it "stores previous changes" do
         
     | 
| 
       1425 
     | 
    
         
            -
                    person.previous_changes["title"]. 
     | 
| 
       1426 
     | 
    
         
            -
                    person.previous_changes["ssn"]. 
     | 
| 
      
 1471 
     | 
    
         
            +
                    expect(person.previous_changes["title"]).to eq([ "MC", "DJ" ])
         
     | 
| 
      
 1472 
     | 
    
         
            +
                    expect(person.previous_changes["ssn"]).to eq([ nil, "222-22-2222" ])
         
     | 
| 
       1427 
1473 
     | 
    
         
             
                  end
         
     | 
| 
       1428 
1474 
     | 
    
         
             
                end
         
     | 
| 
       1429 
1475 
     | 
    
         | 
| 
         @@ -1435,7 +1481,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1435 
1481 
     | 
    
         
             
                  end
         
     | 
| 
       1436 
1482 
     | 
    
         | 
| 
       1437 
1483 
     | 
    
         
             
                  it "removes the attribute from the document" do
         
     | 
| 
       1438 
     | 
    
         
            -
                    person.score. 
     | 
| 
      
 1484 
     | 
    
         
            +
                    expect(person.score).to be_nil
         
     | 
| 
       1439 
1485 
     | 
    
         
             
                  end
         
     | 
| 
       1440 
1486 
     | 
    
         
             
                end
         
     | 
| 
       1441 
1487 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1455,14 +1501,16 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1455 
1501 
     | 
    
         
             
                  end
         
     | 
| 
       1456 
1502 
     | 
    
         | 
| 
       1457 
1503 
     | 
    
         
             
                  after do
         
     | 
| 
       1458 
     | 
    
         
            -
                    Acolyte._save_callbacks. 
     | 
| 
      
 1504 
     | 
    
         
            +
                    Acolyte._save_callbacks.select do |callback|
         
     | 
| 
       1459 
1505 
     | 
    
         
             
                      callback.kind == :after
         
     | 
| 
      
 1506 
     | 
    
         
            +
                    end.each do |callback|
         
     | 
| 
      
 1507 
     | 
    
         
            +
                      Acolyte._save_callbacks.delete(callback)
         
     | 
| 
       1460 
1508 
     | 
    
         
             
                    end
         
     | 
| 
       1461 
1509 
     | 
    
         
             
                  end
         
     | 
| 
       1462 
1510 
     | 
    
         | 
| 
       1463 
1511 
     | 
    
         
             
                  it "retains the changes until after all callbacks" do
         
     | 
| 
       1464 
1512 
     | 
    
         
             
                    acolyte.update_attribute(:status, "testing")
         
     | 
| 
       1465 
     | 
    
         
            -
                    acolyte.changed_in_callback. 
     | 
| 
      
 1513 
     | 
    
         
            +
                    expect(acolyte.changed_in_callback).to eq({ "status" => [ nil, "testing" ] })
         
     | 
| 
       1466 
1514 
     | 
    
         
             
                  end
         
     | 
| 
       1467 
1515 
     | 
    
         
             
                end
         
     | 
| 
       1468 
1516 
     | 
    
         | 
| 
         @@ -1479,14 +1527,16 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1479 
1527 
     | 
    
         
             
                  end
         
     | 
| 
       1480 
1528 
     | 
    
         | 
| 
       1481 
1529 
     | 
    
         
             
                  after do
         
     | 
| 
       1482 
     | 
    
         
            -
                    Acolyte._save_callbacks. 
     | 
| 
      
 1530 
     | 
    
         
            +
                    Acolyte._save_callbacks.select do |callback|
         
     | 
| 
       1483 
1531 
     | 
    
         
             
                      callback.kind == :after
         
     | 
| 
      
 1532 
     | 
    
         
            +
                    end.each do |callback|
         
     | 
| 
      
 1533 
     | 
    
         
            +
                      Acolyte._save_callbacks.delete(callback)
         
     | 
| 
       1484 
1534 
     | 
    
         
             
                    end
         
     | 
| 
       1485 
1535 
     | 
    
         
             
                  end
         
     | 
| 
       1486 
1536 
     | 
    
         | 
| 
       1487 
1537 
     | 
    
         
             
                  it "retains the changes until after all callbacks" do
         
     | 
| 
       1488 
1538 
     | 
    
         
             
                    acolyte.save
         
     | 
| 
       1489 
     | 
    
         
            -
                    acolyte.changed_in_callback["name"]. 
     | 
| 
      
 1539 
     | 
    
         
            +
                    expect(acolyte.changed_in_callback["name"]).to eq([ nil, "callback-test" ])
         
     | 
| 
       1490 
1540 
     | 
    
         
             
                  end
         
     | 
| 
       1491 
1541 
     | 
    
         
             
                end
         
     | 
| 
       1492 
1542 
     | 
    
         
             
              end
         
     | 
| 
         @@ -1502,7 +1552,7 @@ describe Mongoid::Dirty do 
     | 
|
| 
       1502 
1552 
     | 
    
         
             
                end
         
     | 
| 
       1503 
1553 
     | 
    
         | 
| 
       1504 
1554 
     | 
    
         
             
                it "does not set the association to nil when hitting the database" do
         
     | 
| 
       1505 
     | 
    
         
            -
                  person.setters. 
     | 
| 
      
 1555 
     | 
    
         
            +
                  expect(person.setters).to_not eq({ "addresses" => nil })
         
     | 
| 
       1506 
1556 
     | 
    
         
             
                end
         
     | 
| 
       1507 
1557 
     | 
    
         
             
              end
         
     | 
| 
       1508 
1558 
     | 
    
         
             
            end
         
     |