mongoid 3.1.7 → 4.0.0.alpha1
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 +317 -11
- data/README.md +4 -5
- data/lib/config/locales/en.yml +9 -12
- data/lib/mongoid.rb +6 -75
- data/lib/mongoid/atomic.rb +0 -11
- data/lib/mongoid/atomic/paths/embedded.rb +0 -30
- data/lib/mongoid/atomic/paths/root.rb +0 -13
- data/lib/mongoid/attributes.rb +30 -108
- 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} +5 -2
- data/lib/mongoid/composable.rb +104 -0
- data/lib/mongoid/config.rb +3 -9
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +5 -9
- data/lib/mongoid/contextual/atomic.rb +53 -53
- data/lib/mongoid/contextual/command.rb +26 -0
- data/lib/mongoid/contextual/map_reduce.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +6 -5
- data/lib/mongoid/contextual/mongo.rb +59 -28
- data/lib/mongoid/contextual/text_search.rb +180 -0
- data/lib/mongoid/copyable.rb +2 -3
- data/lib/mongoid/criteria.rb +13 -33
- data/lib/mongoid/criteria/{#findable.rb# → findable.rb} +0 -2
- 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 +1 -1
- data/lib/mongoid/{criterion/scoping.rb → criteria/scopable.rb} +2 -2
- data/lib/mongoid/document.rb +28 -12
- data/lib/mongoid/errors.rb +1 -1
- data/lib/mongoid/errors/document_not_found.rb +2 -1
- data/lib/mongoid/errors/invalid_value.rb +16 -0
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/extensions.rb +2 -7
- data/lib/mongoid/extensions/array.rb +2 -2
- data/lib/mongoid/extensions/boolean.rb +14 -17
- data/lib/mongoid/extensions/float.rb +1 -0
- data/lib/mongoid/extensions/hash.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/object_id.rb +5 -5
- data/lib/mongoid/extensions/range.rb +8 -2
- data/lib/mongoid/extensions/string.rb +5 -17
- data/lib/mongoid/extensions/time.rb +2 -2
- data/lib/mongoid/factory.rb +3 -3
- data/lib/mongoid/fields.rb +9 -8
- data/lib/mongoid/fields/foreign_key.rb +3 -3
- data/lib/mongoid/fields/standard.rb +4 -16
- data/lib/mongoid/fields/validators/macro.rb +11 -3
- data/lib/mongoid/{finders.rb → findable.rb} +6 -2
- 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} +3 -52
- data/lib/mongoid/log_subscriber.rb +22 -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 +1 -1
- data/lib/mongoid/{matchers → matchable}/nin.rb +3 -2
- data/lib/mongoid/{matchers → matchable}/or.rb +2 -2
- data/lib/mongoid/{matchers → matchable}/size.rb +1 -1
- data/lib/mongoid/persistable.rb +212 -0
- data/lib/mongoid/persistable/creatable.rb +188 -0
- data/lib/mongoid/persistable/deletable.rb +148 -0
- data/lib/mongoid/persistable/destroyable.rb +55 -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 +151 -0
- data/lib/mongoid/persistable/upsertable.rb +55 -0
- data/lib/mongoid/positional.rb +71 -0
- data/lib/mongoid/railtie.rb +32 -45
- data/lib/mongoid/railties/database.rake +12 -6
- data/lib/mongoid/relations.rb +3 -3
- data/lib/mongoid/relations/accessors.rb +13 -46
- data/lib/mongoid/relations/auto_save.rb +15 -36
- data/lib/mongoid/relations/binding.rb +0 -23
- data/lib/mongoid/relations/bindings/embedded/many.rb +1 -3
- data/lib/mongoid/relations/bindings/referenced/in.rb +3 -8
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +3 -1
- data/lib/mongoid/relations/builder.rb +1 -1
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +10 -13
- data/lib/mongoid/relations/builders/nested_attributes/one.rb +4 -5
- data/lib/mongoid/relations/builders/referenced/in.rb +1 -1
- data/lib/mongoid/relations/builders/referenced/many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +1 -2
- data/lib/mongoid/relations/builders/referenced/one.rb +1 -1
- data/lib/mongoid/relations/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 +47 -0
- data/lib/mongoid/relations/eager/base.rb +57 -0
- data/lib/mongoid/relations/eager/belongs_to.rb +30 -0
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +40 -0
- data/lib/mongoid/relations/eager/has_many.rb +37 -0
- data/lib/mongoid/relations/eager/has_one.rb +29 -0
- data/lib/mongoid/relations/embedded/batchable.rb +3 -4
- data/lib/mongoid/relations/embedded/many.rb +7 -27
- data/lib/mongoid/relations/macros.rb +2 -4
- data/lib/mongoid/relations/many.rb +30 -31
- data/lib/mongoid/relations/metadata.rb +6 -75
- data/lib/mongoid/relations/nested_builder.rb +2 -2
- data/lib/mongoid/relations/options.rb +1 -0
- data/lib/mongoid/relations/polymorphic.rb +0 -1
- data/lib/mongoid/relations/proxy.rb +10 -32
- data/lib/mongoid/relations/referenced/in.rb +2 -18
- data/lib/mongoid/relations/referenced/many.rb +9 -22
- data/lib/mongoid/relations/referenced/many_to_many.rb +10 -33
- data/lib/mongoid/relations/referenced/one.rb +2 -21
- data/lib/mongoid/relations/synchronization.rb +3 -3
- data/lib/mongoid/relations/touchable.rb +33 -0
- data/lib/mongoid/{reloading.rb → reloadable.rb} +6 -4
- data/lib/mongoid/{scoping.rb → scopable.rb} +26 -3
- data/lib/mongoid/selectable.rb +59 -0
- data/lib/mongoid/{serialization.rb → serializable.rb} +10 -1
- data/lib/mongoid/sessions.rb +37 -345
- data/lib/mongoid/sessions/factory.rb +2 -0
- data/lib/mongoid/sessions/options.rb +176 -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 +15 -1
- data/lib/mongoid/{sharding.rb → shardable.rb} +5 -1
- data/lib/mongoid/support/query_counter.rb +23 -0
- data/lib/mongoid/threaded.rb +0 -110
- data/lib/mongoid/threaded/lifecycle.rb +0 -28
- data/lib/mongoid/timestamps/updated/short.rb +2 -2
- data/lib/mongoid/{hierarchy.rb → traversable.rb} +9 -5
- data/lib/mongoid/{validations.rb → validatable.rb} +23 -9
- data/lib/mongoid/{validations → validatable}/associated.rb +3 -1
- 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 +3 -3
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +9 -13
- 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 +59 -57
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +2 -6
- data/spec/app/models/acolyte.rb +1 -0
- data/spec/app/models/actor.rb +0 -1
- data/spec/app/models/address.rb +6 -1
- data/spec/app/models/animal.rb +1 -1
- data/spec/app/models/appointment.rb +2 -2
- data/spec/app/models/article.rb +1 -4
- data/spec/app/models/audio.rb +5 -0
- data/spec/app/models/author.rb +0 -2
- data/spec/app/models/band.rb +3 -2
- data/spec/app/models/bar.rb +1 -0
- data/spec/app/models/book.rb +1 -0
- data/spec/app/models/building.rb +0 -2
- data/spec/app/models/building_address.rb +0 -2
- data/spec/app/models/bus.rb +1 -1
- data/spec/app/models/canvas.rb +1 -1
- data/spec/app/models/contractor.rb +0 -2
- data/spec/app/models/country_code.rb +1 -1
- data/spec/app/models/definition.rb +2 -2
- data/spec/app/models/dragon.rb +4 -0
- data/spec/app/models/drug.rb +1 -3
- data/spec/app/models/dungeon.rb +4 -0
- 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 +0 -2
- 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/login.rb +1 -1
- data/spec/app/models/movie.rb +1 -0
- data/spec/app/models/name.rb +3 -3
- data/spec/app/models/note.rb +1 -1
- data/spec/app/models/oscar.rb +1 -1
- data/spec/app/models/parent_doc.rb +1 -1
- data/spec/app/models/person.rb +13 -8
- data/spec/app/models/phone.rb +1 -3
- data/spec/app/models/player.rb +1 -1
- data/spec/app/models/post.rb +2 -1
- data/spec/app/models/quiz.rb +0 -3
- data/spec/app/models/record.rb +5 -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/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 +1 -1
- data/spec/app/models/video.rb +0 -4
- data/spec/app/models/wiki_page.rb +1 -4
- data/spec/app/models/word.rb +3 -0
- data/spec/app/models/word_origin.rb +1 -1
- data/spec/config/mongoid.yml +7 -8
- data/spec/helpers.rb +18 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +22 -22
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +8 -49
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +7 -49
- data/spec/mongoid/atomic/paths/root_spec.rb +3 -61
- data/spec/mongoid/atomic/paths_spec.rb +19 -19
- data/spec/mongoid/atomic_spec.rb +19 -19
- data/spec/mongoid/{nested_attributes_spec.rb → attributes/nested_spec.rb} +335 -448
- data/spec/mongoid/attributes/readonly_spec.rb +16 -16
- data/spec/mongoid/attributes_spec.rb +188 -434
- data/spec/mongoid/{dirty_spec.rb → changeable_spec.rb} +117 -148
- data/spec/mongoid/{components_spec.rb → composable_spec.rb} +3 -3
- data/spec/mongoid/config/environment_spec.rb +3 -3
- data/spec/mongoid/config/options_spec.rb +6 -6
- data/spec/mongoid/config_spec.rb +24 -48
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +12 -12
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +46 -38
- data/spec/mongoid/contextual/atomic_spec.rb +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 +94 -94
- data/spec/mongoid/contextual/mongo_spec.rb +225 -139
- data/spec/mongoid/contextual/text_search_spec.rb +207 -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 +1063 -0
- data/spec/mongoid/{criterion/scoping_spec.rb → criteria/scopable_spec.rb} +31 -31
- data/spec/mongoid/criteria_spec.rb +530 -2207
- data/spec/mongoid/document_spec.rb +166 -120
- data/spec/mongoid/equality_spec.rb +22 -22
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +3 -3
- data/spec/mongoid/errors/callback_spec.rb +3 -3
- data/spec/mongoid/errors/delete_restriction_spec.rb +3 -3
- data/spec/mongoid/errors/document_not_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 +3 -3
- 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 +7 -7
- 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/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 +9 -9
- data/spec/mongoid/extensions/false_class_spec.rb +5 -5
- data/spec/mongoid/extensions/float_spec.rb +29 -15
- data/spec/mongoid/extensions/hash_spec.rb +29 -29
- data/spec/mongoid/extensions/integer_spec.rb +15 -15
- data/spec/mongoid/extensions/module_spec.rb +2 -2
- data/spec/mongoid/extensions/nil_class_spec.rb +1 -1
- data/spec/mongoid/extensions/object_id_spec.rb +134 -134
- data/spec/mongoid/extensions/object_spec.rb +26 -26
- data/spec/mongoid/extensions/range_spec.rb +61 -12
- data/spec/mongoid/extensions/regexp_spec.rb +4 -4
- data/spec/mongoid/extensions/set_spec.rb +4 -4
- data/spec/mongoid/extensions/string_spec.rb +35 -46
- data/spec/mongoid/extensions/symbol_spec.rb +9 -9
- data/spec/mongoid/extensions/time_spec.rb +49 -49
- data/spec/mongoid/extensions/time_with_zone_spec.rb +34 -34
- data/spec/mongoid/extensions/true_class_spec.rb +5 -5
- data/spec/mongoid/extensions_spec.rb +15 -0
- data/spec/mongoid/factory_spec.rb +15 -15
- data/spec/mongoid/fields/foreign_key_spec.rb +73 -66
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +15 -15
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +22 -22
- data/spec/mongoid/fields/localized_spec.rb +23 -23
- data/spec/mongoid/fields/standard_spec.rb +12 -12
- data/spec/mongoid/fields_spec.rb +168 -209
- data/spec/mongoid/{finders_spec.rb → findable_spec.rb} +62 -27
- data/spec/mongoid/indexable/specification_spec.rb +102 -0
- data/spec/mongoid/{indexes_spec.rb → indexable_spec.rb} +171 -51
- data/spec/mongoid/{inspection_spec.rb → inspectable_spec.rb} +6 -14
- data/spec/mongoid/{callbacks_spec.rb → interceptable_spec.rb} +105 -105
- data/spec/mongoid/log_subscriber_spec.rb +74 -0
- data/spec/mongoid/loggable_spec.rb +1 -1
- data/spec/mongoid/{matchers → matchable}/all_spec.rb +4 -4
- data/spec/mongoid/{matchers → matchable}/and_spec.rb +11 -11
- data/spec/mongoid/{matchers → matchable}/default_spec.rb +15 -15
- data/spec/mongoid/{matchers → matchable}/exists_spec.rb +5 -5
- data/spec/mongoid/{matchers → matchable}/gt_spec.rb +9 -8
- data/spec/mongoid/{matchers → matchable}/gte_spec.rb +7 -7
- data/spec/mongoid/matchable/in_spec.rb +49 -0
- data/spec/mongoid/{matchers → matchable}/lt_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/lte_spec.rb +7 -7
- data/spec/mongoid/{matchers → matchable}/ne_spec.rb +3 -3
- data/spec/mongoid/matchable/nin_spec.rb +48 -0
- data/spec/mongoid/{matchers → matchable}/or_spec.rb +6 -6
- data/spec/mongoid/{matchers → matchable}/size_spec.rb +3 -3
- data/spec/mongoid/{matchers_spec.rb → matchable_spec.rb} +41 -41
- data/spec/mongoid/persistable/creatable_spec.rb +512 -0
- data/spec/mongoid/persistable/deletable_spec.rb +205 -0
- data/spec/mongoid/persistable/destroyable_spec.rb +148 -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 +432 -0
- data/spec/mongoid/persistable/settable_spec.rb +139 -0
- data/spec/mongoid/persistable/unsettable_spec.rb +155 -0
- data/spec/mongoid/persistable/updatable_spec.rb +558 -0
- data/spec/mongoid/persistable/upsertable_spec.rb +106 -0
- data/spec/mongoid/persistable_spec.rb +206 -0
- data/spec/mongoid/{atomic/positionable_spec.rb → positional_spec.rb} +19 -14
- 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 +36 -16
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +2 -2
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +3 -3
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +12 -12
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +6 -6
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +9 -9
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +6 -6
- 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 +22 -33
- 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 +11 -24
- data/spec/mongoid/relations/builders_spec.rb +21 -21
- data/spec/mongoid/relations/cascading/delete_spec.rb +7 -7
- data/spec/mongoid/relations/cascading/destroy_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/nullify_spec.rb +2 -2
- data/spec/mongoid/relations/cascading/restrict_spec.rb +3 -3
- 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 +143 -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 +55 -56
- data/spec/mongoid/relations/embedded/many_spec.rb +357 -367
- data/spec/mongoid/relations/embedded/one_spec.rb +98 -139
- data/spec/mongoid/relations/macros_spec.rb +108 -102
- data/spec/mongoid/relations/metadata_spec.rb +147 -241
- 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 +379 -522
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +345 -417
- data/spec/mongoid/relations/referenced/one_spec.rb +148 -263
- 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 +116 -116
- data/spec/mongoid/relations/touchable_spec.rb +296 -0
- data/spec/mongoid/relations_spec.rb +16 -15
- data/spec/mongoid/{reloading_spec.rb → reloadable_spec.rb} +20 -60
- data/spec/mongoid/{scoping_spec.rb → scopable_spec.rb} +74 -126
- data/spec/mongoid/selectable_spec.rb +134 -0
- data/spec/mongoid/{serialization_spec.rb → serializable_spec.rb} +111 -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 +92 -0
- data/spec/mongoid/sessions_spec.rb +288 -177
- data/spec/mongoid/{sharding_spec.rb → shardable_spec.rb} +8 -8
- data/spec/mongoid/state_spec.rb +10 -10
- 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/updated/short_spec.rb +10 -10
- data/spec/mongoid/timestamps/updated_spec.rb +8 -12
- data/spec/mongoid/timestamps_spec.rb +7 -11
- data/spec/mongoid/{hierarchy_spec.rb → traversable_spec.rb} +19 -19
- data/spec/mongoid/{validations → validatable}/associated_spec.rb +18 -18
- data/spec/mongoid/{validations → validatable}/format_spec.rb +6 -6
- data/spec/mongoid/{validations → validatable}/length_spec.rb +7 -7
- data/spec/mongoid/{validations → validatable}/numericality_spec.rb +1 -1
- data/spec/mongoid/{validations → validatable}/presence_spec.rb +31 -38
- data/spec/mongoid/{validations → validatable}/uniqueness_spec.rb +126 -183
- data/spec/mongoid/{validations_spec.rb → validatable_spec.rb} +28 -28
- data/spec/mongoid_spec.rb +8 -8
- data/spec/rails/mongoid_spec.rb +72 -87
- data/spec/spec_helper.rb +19 -17
- metadata +261 -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/criterion/findable.rb +0 -179
- 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/draft.rb +0 -9
- 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/#atomic_spec.rb# +0 -365
- data/spec/mongoid/attributes/processing_spec.rb +0 -149
- data/spec/mongoid/criterion/destructive_spec.rb +0 -101
- data/spec/mongoid/criterion/modifiable_spec.rb +0 -409
- data/spec/mongoid/criterion/modification_spec.rb +0 -402
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +0 -29
- data/spec/mongoid/identity_map_spec.rb +0 -564
- data/spec/mongoid/json_spec.rb +0 -33
- data/spec/mongoid/matchers/in_spec.rb +0 -25
- data/spec/mongoid/matchers/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
@@ -0,0 +1,296 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Relations::Touchable do
|
4
|
+
|
5
|
+
describe "#touch" do
|
6
|
+
|
7
|
+
context "when the document is embedded" do
|
8
|
+
|
9
|
+
let(:band) do
|
10
|
+
Band.create(name: "Placebo")
|
11
|
+
end
|
12
|
+
|
13
|
+
let(:label) do
|
14
|
+
band.create_label(name: "Mute", updated_at: 10.days.ago)
|
15
|
+
end
|
16
|
+
|
17
|
+
before do
|
18
|
+
label.touch
|
19
|
+
end
|
20
|
+
|
21
|
+
it "updates the updated_at timestamp" do
|
22
|
+
expect(label.updated_at).to be_within(1).of(Time.now)
|
23
|
+
end
|
24
|
+
|
25
|
+
it "persists the changes" do
|
26
|
+
expect(label.reload.updated_at).to be_within(1).of(Time.now)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context "when no relations have touch options" do
|
31
|
+
|
32
|
+
context "when no updated at is defined" do
|
33
|
+
|
34
|
+
let(:person) do
|
35
|
+
Person.create
|
36
|
+
end
|
37
|
+
|
38
|
+
context "when no attribute is provided" do
|
39
|
+
|
40
|
+
let!(:touched) do
|
41
|
+
person.touch
|
42
|
+
end
|
43
|
+
|
44
|
+
it "returns true" do
|
45
|
+
expect(touched).to be true
|
46
|
+
end
|
47
|
+
|
48
|
+
it "does not set the updated at field" do
|
49
|
+
expect(person[:updated_at]).to be_nil
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
context "when an attribute is provided" do
|
54
|
+
|
55
|
+
let!(:touched) do
|
56
|
+
person.touch(:lunch_time)
|
57
|
+
end
|
58
|
+
|
59
|
+
it "sets the attribute to the current time" do
|
60
|
+
expect(person.lunch_time).to be_within(5).of(Time.now)
|
61
|
+
end
|
62
|
+
|
63
|
+
it "persists the change" do
|
64
|
+
expect(person.reload.lunch_time).to be_within(5).of(Time.now)
|
65
|
+
end
|
66
|
+
|
67
|
+
it "returns true" do
|
68
|
+
expect(touched).to be true
|
69
|
+
end
|
70
|
+
end
|
71
|
+
|
72
|
+
context "when an attribute alias is provided" do
|
73
|
+
|
74
|
+
let!(:touched) do
|
75
|
+
person.touch(:aliased_timestamp)
|
76
|
+
end
|
77
|
+
|
78
|
+
it "sets the attribute to the current time" do
|
79
|
+
expect(person.aliased_timestamp).to be_within(5).of(Time.now)
|
80
|
+
end
|
81
|
+
|
82
|
+
it "persists the change" do
|
83
|
+
expect(person.reload.aliased_timestamp).to be_within(5).of(Time.now)
|
84
|
+
end
|
85
|
+
|
86
|
+
it "returns true" do
|
87
|
+
expect(touched).to be true
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "when an updated at is defined" do
|
93
|
+
|
94
|
+
let!(:agent) do
|
95
|
+
Agent.create(updated_at: 2.days.ago)
|
96
|
+
end
|
97
|
+
|
98
|
+
context "when no attribute is provided" do
|
99
|
+
|
100
|
+
let!(:touched) do
|
101
|
+
agent.touch
|
102
|
+
end
|
103
|
+
|
104
|
+
it "sets the updated at to the current time" do
|
105
|
+
expect(agent.updated_at).to be_within(5).of(Time.now)
|
106
|
+
end
|
107
|
+
|
108
|
+
it "persists the change" do
|
109
|
+
expect(agent.reload.updated_at).to be_within(5).of(Time.now)
|
110
|
+
end
|
111
|
+
|
112
|
+
it "returns true" do
|
113
|
+
expect(touched).to be true
|
114
|
+
end
|
115
|
+
|
116
|
+
it "keeps changes for next callback" do
|
117
|
+
expect(agent.changes).to_not be_empty
|
118
|
+
end
|
119
|
+
end
|
120
|
+
|
121
|
+
context "when an attribute is provided" do
|
122
|
+
|
123
|
+
let!(:touched) do
|
124
|
+
agent.touch(:dob)
|
125
|
+
end
|
126
|
+
|
127
|
+
it "sets the updated at to the current time" do
|
128
|
+
expect(agent.updated_at).to be_within(5).of(Time.now)
|
129
|
+
end
|
130
|
+
|
131
|
+
it "sets the attribute to the current time" do
|
132
|
+
expect(agent.dob).to be_within(5).of(Time.now)
|
133
|
+
end
|
134
|
+
|
135
|
+
it "sets both attributes to the exact same time" do
|
136
|
+
expect(agent.updated_at).to eq(agent.dob)
|
137
|
+
end
|
138
|
+
|
139
|
+
it "persists the updated at change" do
|
140
|
+
expect(agent.reload.updated_at).to be_within(5).of(Time.now)
|
141
|
+
end
|
142
|
+
|
143
|
+
it "persists the attribute change" do
|
144
|
+
expect(agent.reload.dob).to be_within(5).of(Time.now)
|
145
|
+
end
|
146
|
+
|
147
|
+
it "returns true" do
|
148
|
+
expect(touched).to be true
|
149
|
+
end
|
150
|
+
|
151
|
+
it "keeps changes for next callback" do
|
152
|
+
expect(agent.changes).to_not be_empty
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
156
|
+
|
157
|
+
context "when record is new" do
|
158
|
+
|
159
|
+
let(:agent) do
|
160
|
+
Agent.new(updated_at: 2.days.ago)
|
161
|
+
end
|
162
|
+
|
163
|
+
context "when no attribute is provided" do
|
164
|
+
|
165
|
+
let!(:touched) do
|
166
|
+
agent.touch
|
167
|
+
end
|
168
|
+
|
169
|
+
it "returns false" do
|
170
|
+
expect(touched).to be false
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
174
|
+
context "when an attribute is provided" do
|
175
|
+
|
176
|
+
let!(:touched) do
|
177
|
+
agent.touch(:dob)
|
178
|
+
end
|
179
|
+
|
180
|
+
it "returns false" do
|
181
|
+
expect(touched).to be false
|
182
|
+
end
|
183
|
+
end
|
184
|
+
end
|
185
|
+
|
186
|
+
context "when creating the child" do
|
187
|
+
|
188
|
+
let(:time) do
|
189
|
+
Time.utc(2012, 4, 3, 12)
|
190
|
+
end
|
191
|
+
|
192
|
+
let(:jar) do
|
193
|
+
Jar.new(_id: 1, updated_at: time).tap do |jar|
|
194
|
+
jar.save!
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
let!(:cookie) do
|
199
|
+
jar.cookies.create!(updated_at: time)
|
200
|
+
end
|
201
|
+
|
202
|
+
it "does not touch the parent" do
|
203
|
+
expect(jar.updated_at).to eq(time)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
context "when relations have touch options" do
|
209
|
+
|
210
|
+
context "when the relation is nil" do
|
211
|
+
|
212
|
+
let!(:agent) do
|
213
|
+
Agent.create
|
214
|
+
end
|
215
|
+
|
216
|
+
context "when the relation autobuilds" do
|
217
|
+
|
218
|
+
let!(:touched) do
|
219
|
+
agent.touch
|
220
|
+
end
|
221
|
+
|
222
|
+
it "does nothing to the relation" do
|
223
|
+
expect(agent.instance_variable_get(:@agency)).to be_nil
|
224
|
+
end
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
context "when the relation is not nil" do
|
229
|
+
|
230
|
+
let!(:agent) do
|
231
|
+
Agent.create
|
232
|
+
end
|
233
|
+
|
234
|
+
let!(:agency) do
|
235
|
+
agent.create_agency.tap do |a|
|
236
|
+
a.unset(:updated_at)
|
237
|
+
end
|
238
|
+
end
|
239
|
+
|
240
|
+
let!(:touched) do
|
241
|
+
agent.touch
|
242
|
+
end
|
243
|
+
|
244
|
+
it "sets the parent updated at to the current time" do
|
245
|
+
expect(agency.updated_at).to be_within(5).of(Time.now)
|
246
|
+
end
|
247
|
+
|
248
|
+
it "persists the change" do
|
249
|
+
expect(agency.reload.updated_at).to be_within(5).of(Time.now)
|
250
|
+
end
|
251
|
+
end
|
252
|
+
|
253
|
+
context "when creating the child" do
|
254
|
+
|
255
|
+
let!(:agency) do
|
256
|
+
Agency.create
|
257
|
+
end
|
258
|
+
|
259
|
+
let!(:updated) do
|
260
|
+
agency.updated_at
|
261
|
+
end
|
262
|
+
|
263
|
+
let!(:agent) do
|
264
|
+
agency.agents.create
|
265
|
+
end
|
266
|
+
|
267
|
+
it "updates the parent's updated at" do
|
268
|
+
expect(agency.updated_at).to_not eq(updated)
|
269
|
+
end
|
270
|
+
end
|
271
|
+
|
272
|
+
context "when destroying the child" do
|
273
|
+
|
274
|
+
let!(:agency) do
|
275
|
+
Agency.create
|
276
|
+
end
|
277
|
+
|
278
|
+
let!(:agent) do
|
279
|
+
agency.agents.create
|
280
|
+
end
|
281
|
+
|
282
|
+
let!(:updated) do
|
283
|
+
agency.updated_at
|
284
|
+
end
|
285
|
+
|
286
|
+
before do
|
287
|
+
agent.destroy
|
288
|
+
end
|
289
|
+
|
290
|
+
it "updates the parent's updated at" do
|
291
|
+
expect(agency.updated_at).to_not eq(updated)
|
292
|
+
end
|
293
|
+
end
|
294
|
+
end
|
295
|
+
end
|
296
|
+
end
|
@@ -5,9 +5,10 @@ describe Mongoid::Relations do
|
|
5
5
|
before(:all) do
|
6
6
|
Person.field(
|
7
7
|
:_id,
|
8
|
-
type:
|
8
|
+
type: BSON::ObjectId,
|
9
9
|
pre_processed: true,
|
10
|
-
default: ->{
|
10
|
+
default: ->{ BSON::ObjectId.new },
|
11
|
+
overwrite: true
|
11
12
|
)
|
12
13
|
end
|
13
14
|
|
@@ -28,7 +29,7 @@ describe Mongoid::Relations do
|
|
28
29
|
end
|
29
30
|
|
30
31
|
it "returns true" do
|
31
|
-
document.
|
32
|
+
expect(document).to be_embedded
|
32
33
|
end
|
33
34
|
end
|
34
35
|
|
@@ -37,14 +38,14 @@ describe Mongoid::Relations do
|
|
37
38
|
context "when the document is embedded in" do
|
38
39
|
|
39
40
|
it "returns true" do
|
40
|
-
document.
|
41
|
+
expect(document).to be_embedded
|
41
42
|
end
|
42
43
|
end
|
43
44
|
|
44
45
|
context "when the document class is not embedded in" do
|
45
46
|
|
46
47
|
it "returns false" do
|
47
|
-
person.
|
48
|
+
expect(person).to_not be_embedded
|
48
49
|
end
|
49
50
|
end
|
50
51
|
end
|
@@ -54,7 +55,7 @@ describe Mongoid::Relations do
|
|
54
55
|
context "when the document has no parent" do
|
55
56
|
|
56
57
|
it "returns false" do
|
57
|
-
Item.
|
58
|
+
expect(Item).to_not be_embedded
|
58
59
|
end
|
59
60
|
end
|
60
61
|
end
|
@@ -64,7 +65,7 @@ describe Mongoid::Relations do
|
|
64
65
|
context "when the document has a parent" do
|
65
66
|
|
66
67
|
it "returns true" do
|
67
|
-
SubItem.
|
68
|
+
expect(SubItem).to be_embedded
|
68
69
|
end
|
69
70
|
end
|
70
71
|
end
|
@@ -83,7 +84,7 @@ describe Mongoid::Relations do
|
|
83
84
|
end
|
84
85
|
|
85
86
|
it "returns true" do
|
86
|
-
address.
|
87
|
+
expect(address).to be_an_embedded_many
|
87
88
|
end
|
88
89
|
end
|
89
90
|
|
@@ -94,7 +95,7 @@ describe Mongoid::Relations do
|
|
94
95
|
end
|
95
96
|
|
96
97
|
it "returns false" do
|
97
|
-
name.
|
98
|
+
expect(name).to_not be_an_embedded_many
|
98
99
|
end
|
99
100
|
end
|
100
101
|
end
|
@@ -112,7 +113,7 @@ describe Mongoid::Relations do
|
|
112
113
|
end
|
113
114
|
|
114
115
|
it "returns true" do
|
115
|
-
name.
|
116
|
+
expect(name).to be_an_embedded_one
|
116
117
|
end
|
117
118
|
end
|
118
119
|
|
@@ -123,7 +124,7 @@ describe Mongoid::Relations do
|
|
123
124
|
end
|
124
125
|
|
125
126
|
it "returns false" do
|
126
|
-
address.
|
127
|
+
expect(address).to_not be_an_embedded_one
|
127
128
|
end
|
128
129
|
end
|
129
130
|
end
|
@@ -141,7 +142,7 @@ describe Mongoid::Relations do
|
|
141
142
|
end
|
142
143
|
|
143
144
|
it "returns true" do
|
144
|
-
post.
|
145
|
+
expect(post).to be_a_referenced_many
|
145
146
|
end
|
146
147
|
end
|
147
148
|
|
@@ -152,7 +153,7 @@ describe Mongoid::Relations do
|
|
152
153
|
end
|
153
154
|
|
154
155
|
it "returns false" do
|
155
|
-
game.
|
156
|
+
expect(game).to_not be_a_referenced_many
|
156
157
|
end
|
157
158
|
end
|
158
159
|
end
|
@@ -170,7 +171,7 @@ describe Mongoid::Relations do
|
|
170
171
|
end
|
171
172
|
|
172
173
|
it "returns true" do
|
173
|
-
game.
|
174
|
+
expect(game).to be_a_referenced_one
|
174
175
|
end
|
175
176
|
end
|
176
177
|
|
@@ -181,7 +182,7 @@ describe Mongoid::Relations do
|
|
181
182
|
end
|
182
183
|
|
183
184
|
it "returns false" do
|
184
|
-
post.
|
185
|
+
expect(post).to_not be_a_referenced_one
|
185
186
|
end
|
186
187
|
end
|
187
188
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Mongoid::
|
3
|
+
describe Mongoid::Reloadable do
|
4
4
|
|
5
5
|
describe "#reload" do
|
6
6
|
|
@@ -19,11 +19,11 @@ describe Mongoid::Reloading do
|
|
19
19
|
|
20
20
|
it "reloads the object attributes from the db" do
|
21
21
|
person.reload
|
22
|
-
person.age.
|
22
|
+
expect(person.age).to eq(35)
|
23
23
|
end
|
24
24
|
|
25
25
|
it "reload should return self" do
|
26
|
-
person.reload.
|
26
|
+
expect(person.reload).to eq(from_db)
|
27
27
|
end
|
28
28
|
end
|
29
29
|
|
@@ -42,11 +42,11 @@ describe Mongoid::Reloading do
|
|
42
42
|
|
43
43
|
it "reloads the object attributes from the db" do
|
44
44
|
account.reload
|
45
|
-
account.number.
|
45
|
+
expect(account.number).to eq("1001")
|
46
46
|
end
|
47
47
|
|
48
48
|
it "reload should return self" do
|
49
|
-
account.reload.
|
49
|
+
expect(account.reload).to eq(from_db)
|
50
50
|
end
|
51
51
|
end
|
52
52
|
|
@@ -62,7 +62,7 @@ describe Mongoid::Reloading do
|
|
62
62
|
end
|
63
63
|
|
64
64
|
it "runs the callback" do
|
65
|
-
book.chapters.
|
65
|
+
expect(book.chapters).to eq(5)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
@@ -78,11 +78,11 @@ describe Mongoid::Reloading do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
it "resets the dirty modifications" do
|
81
|
-
person.changes.
|
81
|
+
expect(person.changes).to be_empty
|
82
82
|
end
|
83
83
|
|
84
84
|
it "resets attributes_before_type_cast" do
|
85
|
-
person.attributes_before_type_cast.
|
85
|
+
expect(person.attributes_before_type_cast).to be_empty
|
86
86
|
end
|
87
87
|
end
|
88
88
|
|
@@ -123,15 +123,15 @@ describe Mongoid::Reloading do
|
|
123
123
|
end
|
124
124
|
|
125
125
|
it "reloads the embedded document attributes" do
|
126
|
-
reloaded.number.
|
126
|
+
expect(reloaded.number).to eq(3)
|
127
127
|
end
|
128
128
|
|
129
129
|
it "reloads the reference on the parent" do
|
130
|
-
person.addresses.first.
|
130
|
+
expect(person.addresses.first).to eq(reloaded)
|
131
131
|
end
|
132
132
|
|
133
133
|
it "retains the relation to the parent" do
|
134
|
-
reloaded.addressable.
|
134
|
+
expect(reloaded.addressable).to eq(person)
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
@@ -151,15 +151,15 @@ describe Mongoid::Reloading do
|
|
151
151
|
end
|
152
152
|
|
153
153
|
it "reloads the embedded document attributes" do
|
154
|
-
reloaded.last_name.
|
154
|
+
expect(reloaded.last_name).to eq("Vicious")
|
155
155
|
end
|
156
156
|
|
157
157
|
it "reloads the reference on the parent" do
|
158
|
-
person.name.
|
158
|
+
expect(person.name).to eq(reloaded)
|
159
159
|
end
|
160
160
|
|
161
161
|
it "retains the relation to the parent" do
|
162
|
-
reloaded.namable.
|
162
|
+
expect(reloaded.namable).to eq(person)
|
163
163
|
end
|
164
164
|
end
|
165
165
|
end
|
@@ -184,15 +184,15 @@ describe Mongoid::Reloading do
|
|
184
184
|
end
|
185
185
|
|
186
186
|
it "reloads the embedded document attributes" do
|
187
|
-
reloaded.name.
|
187
|
+
expect(reloaded.name).to eq("work")
|
188
188
|
end
|
189
189
|
|
190
190
|
it "reloads the reference on the parent" do
|
191
|
-
address.locations.first.
|
191
|
+
expect(address.locations.first).to eq(reloaded)
|
192
192
|
end
|
193
193
|
|
194
194
|
it "reloads the reference on the root" do
|
195
|
-
person.addresses.first.locations.first.
|
195
|
+
expect(person.addresses.first.locations.first).to eq(reloaded)
|
196
196
|
end
|
197
197
|
end
|
198
198
|
end
|
@@ -214,7 +214,7 @@ describe Mongoid::Reloading do
|
|
214
214
|
end
|
215
215
|
|
216
216
|
it "reloads the association" do
|
217
|
-
person.addresses.
|
217
|
+
expect(person.addresses).to be_empty
|
218
218
|
end
|
219
219
|
end
|
220
220
|
|
@@ -237,7 +237,7 @@ describe Mongoid::Reloading do
|
|
237
237
|
end
|
238
238
|
|
239
239
|
it "reloads the association" do
|
240
|
-
person.game.score.
|
240
|
+
expect(person.game.score).to eq(75)
|
241
241
|
end
|
242
242
|
end
|
243
243
|
|
@@ -256,47 +256,7 @@ describe Mongoid::Reloading do
|
|
256
256
|
end
|
257
257
|
|
258
258
|
it "reloads the association" do
|
259
|
-
game.person.title.
|
260
|
-
end
|
261
|
-
end
|
262
|
-
|
263
|
-
context "when the identity map is enabled" do
|
264
|
-
|
265
|
-
before do
|
266
|
-
Mongoid.identity_map_enabled = true
|
267
|
-
end
|
268
|
-
|
269
|
-
after do
|
270
|
-
Mongoid.identity_map_enabled = false
|
271
|
-
end
|
272
|
-
|
273
|
-
context "when the relation type changes" do
|
274
|
-
|
275
|
-
let!(:doctor) do
|
276
|
-
Doctor.create
|
277
|
-
end
|
278
|
-
|
279
|
-
let!(:game) do
|
280
|
-
Game.create(:person => doctor)
|
281
|
-
end
|
282
|
-
|
283
|
-
before do
|
284
|
-
doctor.becomes(Doktor)
|
285
|
-
end
|
286
|
-
|
287
|
-
context "when reloading the base" do
|
288
|
-
|
289
|
-
it "reloads the correct type of document" do
|
290
|
-
game.reload.person.should be_a(Doktor)
|
291
|
-
end
|
292
|
-
end
|
293
|
-
|
294
|
-
context "when reloading the association" do
|
295
|
-
|
296
|
-
it "reloads the correct type of document" do
|
297
|
-
game.person(true).should be_a(Doktor)
|
298
|
-
end
|
299
|
-
end
|
259
|
+
expect(game.person.title).to eq("Mam")
|
300
260
|
end
|
301
261
|
end
|
302
262
|
end
|