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
|