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
@@ -11,7 +11,7 @@ describe Mongoid::Document do
|
|
11
11
|
end
|
12
12
|
|
13
13
|
it "does not respond to _destroy" do
|
14
|
-
person.
|
14
|
+
expect(person).to_not respond_to(:_destroy)
|
15
15
|
end
|
16
16
|
|
17
17
|
describe ".included" do
|
@@ -44,25 +44,25 @@ describe Mongoid::Document do
|
|
44
44
|
|
45
45
|
context "when Document has been included in a model" do
|
46
46
|
it ".models should include that model" do
|
47
|
-
models.
|
47
|
+
expect(models).to include(klass)
|
48
48
|
end
|
49
49
|
end
|
50
50
|
|
51
51
|
context "before Document has been included" do
|
52
52
|
it ".models should *not* include that model" do
|
53
|
-
models.
|
53
|
+
expect(models).to_not include(new_klass)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
57
57
|
context "after Document has been included" do
|
58
58
|
it ".models should include that model" do
|
59
|
-
models.
|
59
|
+
expect(models).to include(new_model)
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
63
|
context "after Document has been included multiple times" do
|
64
64
|
it ".models should include that model just once" do
|
65
|
-
models.count(twice_a_new_model).
|
65
|
+
expect(models.count(twice_a_new_model)).to be_eql(1)
|
66
66
|
end
|
67
67
|
end
|
68
68
|
end
|
@@ -76,11 +76,11 @@ describe Mongoid::Document do
|
|
76
76
|
end
|
77
77
|
|
78
78
|
it "includes the root" do
|
79
|
-
types.
|
79
|
+
expect(types).to include("Person")
|
80
80
|
end
|
81
81
|
|
82
82
|
it "includes the subclasses" do
|
83
|
-
types.
|
83
|
+
expect(types).to include("Doctor")
|
84
84
|
end
|
85
85
|
end
|
86
86
|
|
@@ -91,7 +91,7 @@ describe Mongoid::Document do
|
|
91
91
|
end
|
92
92
|
|
93
93
|
it "returns the document" do
|
94
|
-
types.
|
94
|
+
expect(types).to eq([ "Address" ])
|
95
95
|
end
|
96
96
|
end
|
97
97
|
|
@@ -106,7 +106,7 @@ describe Mongoid::Document do
|
|
106
106
|
end
|
107
107
|
|
108
108
|
it "should clear descendants' cache" do
|
109
|
-
Person._types.
|
109
|
+
expect(Person._types).to include(descendant.to_s)
|
110
110
|
end
|
111
111
|
end
|
112
112
|
end
|
@@ -118,7 +118,7 @@ describe Mongoid::Document do
|
|
118
118
|
end
|
119
119
|
|
120
120
|
it "returns the attributes with indifferent access" do
|
121
|
-
person[:title].
|
121
|
+
expect(person[:title]).to eq("Sir")
|
122
122
|
end
|
123
123
|
end
|
124
124
|
|
@@ -131,7 +131,7 @@ describe Mongoid::Document do
|
|
131
131
|
context "when the document is new" do
|
132
132
|
|
133
133
|
it "has a new key name" do
|
134
|
-
document.cache_key.
|
134
|
+
expect(document.cache_key).to eq("dokuments/new")
|
135
135
|
end
|
136
136
|
end
|
137
137
|
|
@@ -148,7 +148,7 @@ describe Mongoid::Document do
|
|
148
148
|
end
|
149
149
|
|
150
150
|
it "has the id and updated_at key name" do
|
151
|
-
document.cache_key.
|
151
|
+
expect(document.cache_key).to eq("dokuments/#{document.id}-#{updated_at}")
|
152
152
|
end
|
153
153
|
end
|
154
154
|
|
@@ -159,23 +159,35 @@ describe Mongoid::Document do
|
|
159
159
|
end
|
160
160
|
|
161
161
|
it "has the id key name" do
|
162
|
-
document.cache_key.
|
162
|
+
expect(document.cache_key).to eq("dokuments/#{document.id}")
|
163
163
|
end
|
164
164
|
end
|
165
|
+
end
|
165
166
|
|
166
|
-
|
167
|
-
let(:artist) do
|
168
|
-
Artist.new
|
169
|
-
end
|
170
|
-
before do
|
171
|
-
artist.save
|
172
|
-
end
|
167
|
+
context "when model dont have Timestamps" do
|
173
168
|
|
174
|
-
|
175
|
-
|
176
|
-
end
|
169
|
+
let(:artist) do
|
170
|
+
Artist.create!
|
177
171
|
end
|
178
172
|
|
173
|
+
it "should have the id key name" do
|
174
|
+
expect(artist.cache_key).to eq("artists/#{artist.id}")
|
175
|
+
end
|
176
|
+
end
|
177
|
+
|
178
|
+
context "when model has Short Timestamps" do
|
179
|
+
|
180
|
+
let(:agent) do
|
181
|
+
ShortAgent.create!
|
182
|
+
end
|
183
|
+
|
184
|
+
let!(:updated_at) do
|
185
|
+
agent.updated_at.utc.to_s(:number)
|
186
|
+
end
|
187
|
+
|
188
|
+
it "has the id and updated_at key name" do
|
189
|
+
expect(agent.cache_key).to eq("short_agents/#{agent.id}-#{updated_at}")
|
190
|
+
end
|
179
191
|
end
|
180
192
|
end
|
181
193
|
|
@@ -186,7 +198,7 @@ describe Mongoid::Document do
|
|
186
198
|
end
|
187
199
|
|
188
200
|
it "returns a [doc.class, doc.id] array" do
|
189
|
-
person.identity.
|
201
|
+
expect(person.identity).to eq([person.class, person.id])
|
190
202
|
end
|
191
203
|
end
|
192
204
|
|
@@ -197,7 +209,7 @@ describe Mongoid::Document do
|
|
197
209
|
end
|
198
210
|
|
199
211
|
it "returns the identity hash" do
|
200
|
-
person.hash.
|
212
|
+
expect(person.hash).to eq(person.identity.hash)
|
201
213
|
end
|
202
214
|
end
|
203
215
|
|
@@ -208,15 +220,40 @@ describe Mongoid::Document do
|
|
208
220
|
end
|
209
221
|
|
210
222
|
it "sets persisted to false" do
|
211
|
-
person.
|
223
|
+
expect(person).to_not be_persisted
|
212
224
|
end
|
213
225
|
|
214
226
|
it "creates an id for the document" do
|
215
|
-
person.id.
|
227
|
+
expect(person.id).to be_a(BSON::ObjectId)
|
216
228
|
end
|
217
229
|
|
218
230
|
it "sets the attributes" do
|
219
|
-
person.title.
|
231
|
+
expect(person.title).to eq("Sir")
|
232
|
+
end
|
233
|
+
|
234
|
+
context "when the model has a default scope" do
|
235
|
+
|
236
|
+
context "when the default scope is settable" do
|
237
|
+
|
238
|
+
let(:sound) do
|
239
|
+
Sound.new
|
240
|
+
end
|
241
|
+
|
242
|
+
it "sets the default scoping on the model" do
|
243
|
+
expect(sound).to be_active
|
244
|
+
end
|
245
|
+
end
|
246
|
+
|
247
|
+
context "when the default scope is not settable" do
|
248
|
+
|
249
|
+
let(:audio) do
|
250
|
+
Audio.new
|
251
|
+
end
|
252
|
+
|
253
|
+
it "does not set the default scoping" do
|
254
|
+
expect(audio.likes).to be_nil
|
255
|
+
end
|
256
|
+
end
|
220
257
|
end
|
221
258
|
|
222
259
|
context "when accessing a relation from an overridden setter" do
|
@@ -226,11 +263,11 @@ describe Mongoid::Document do
|
|
226
263
|
end
|
227
264
|
|
228
265
|
it "allows access to the relation" do
|
229
|
-
doctor.users.first.
|
266
|
+
expect(doctor.users.first).to be_a(User)
|
230
267
|
end
|
231
268
|
|
232
269
|
it "properly allows super calls" do
|
233
|
-
doctor.specialty.
|
270
|
+
expect(doctor.specialty).to eq("surgery")
|
234
271
|
end
|
235
272
|
end
|
236
273
|
|
@@ -249,7 +286,7 @@ describe Mongoid::Document do
|
|
249
286
|
end
|
250
287
|
|
251
288
|
it "runs the callbacks" do
|
252
|
-
person.title.
|
289
|
+
expect(person.title).to eq("Madam")
|
253
290
|
end
|
254
291
|
end
|
255
292
|
|
@@ -270,14 +307,14 @@ describe Mongoid::Document do
|
|
270
307
|
end
|
271
308
|
|
272
309
|
it "runs the callbacks" do
|
273
|
-
person.game.name.
|
310
|
+
expect(person.game.name).to eq("Ms. Pacman")
|
274
311
|
end
|
275
312
|
end
|
276
313
|
|
277
314
|
context "when instantiating model" do
|
278
315
|
|
279
316
|
let(:person) do
|
280
|
-
Person.instantiate("_id" =>
|
317
|
+
Person.instantiate("_id" => BSON::ObjectId.new, "title" => "Sir")
|
281
318
|
end
|
282
319
|
|
283
320
|
before do
|
@@ -291,7 +328,7 @@ describe Mongoid::Document do
|
|
291
328
|
end
|
292
329
|
|
293
330
|
it "runs the callbacks" do
|
294
|
-
person.title.
|
331
|
+
expect(person.title).to eq("Madam")
|
295
332
|
end
|
296
333
|
end
|
297
334
|
end
|
@@ -299,7 +336,7 @@ describe Mongoid::Document do
|
|
299
336
|
context "when defaults are defined" do
|
300
337
|
|
301
338
|
it "sets the default values" do
|
302
|
-
person.age.
|
339
|
+
expect(person.age).to eq(100)
|
303
340
|
end
|
304
341
|
end
|
305
342
|
|
@@ -312,7 +349,7 @@ describe Mongoid::Document do
|
|
312
349
|
end
|
313
350
|
|
314
351
|
it "yields to the block" do
|
315
|
-
person.title.
|
352
|
+
expect(person.title).to eq("King")
|
316
353
|
end
|
317
354
|
end
|
318
355
|
end
|
@@ -322,7 +359,7 @@ describe Mongoid::Document do
|
|
322
359
|
context "when passing a block" do
|
323
360
|
|
324
361
|
let(:id) do
|
325
|
-
|
362
|
+
BSON::ObjectId.new
|
326
363
|
end
|
327
364
|
|
328
365
|
let(:document) do
|
@@ -332,22 +369,14 @@ describe Mongoid::Document do
|
|
332
369
|
end
|
333
370
|
|
334
371
|
it "yields to the block" do
|
335
|
-
document.likes.
|
372
|
+
expect(document.likes).to eq(1000)
|
336
373
|
end
|
337
374
|
end
|
338
375
|
|
339
376
|
context "when an id exists" do
|
340
377
|
|
341
|
-
before do
|
342
|
-
Mongoid.identity_map_enabled = true
|
343
|
-
end
|
344
|
-
|
345
|
-
after do
|
346
|
-
Mongoid.identity_map_enabled = false
|
347
|
-
end
|
348
|
-
|
349
378
|
let(:id) do
|
350
|
-
|
379
|
+
BSON::ObjectId.new
|
351
380
|
end
|
352
381
|
|
353
382
|
let!(:person) do
|
@@ -355,15 +384,11 @@ describe Mongoid::Document do
|
|
355
384
|
end
|
356
385
|
|
357
386
|
it "sets the attributes" do
|
358
|
-
person.title.
|
387
|
+
expect(person.title).to eq("Sir")
|
359
388
|
end
|
360
389
|
|
361
390
|
it "sets persisted to true" do
|
362
|
-
person.
|
363
|
-
end
|
364
|
-
|
365
|
-
it "puts the document in the identity map" do
|
366
|
-
Mongoid::IdentityMap.get(Person, id).should eq(person)
|
391
|
+
expect(person).to be_persisted
|
367
392
|
end
|
368
393
|
end
|
369
394
|
|
@@ -374,7 +399,7 @@ describe Mongoid::Document do
|
|
374
399
|
end
|
375
400
|
|
376
401
|
it "creates a new document" do
|
377
|
-
person.
|
402
|
+
expect(person).to be_a(Person)
|
378
403
|
end
|
379
404
|
end
|
380
405
|
end
|
@@ -386,7 +411,7 @@ describe Mongoid::Document do
|
|
386
411
|
end
|
387
412
|
|
388
413
|
it "returns the class model name" do
|
389
|
-
person.model_name.
|
414
|
+
expect(person.model_name).to eq("Person")
|
390
415
|
end
|
391
416
|
end
|
392
417
|
|
@@ -397,7 +422,7 @@ describe Mongoid::Document do
|
|
397
422
|
end
|
398
423
|
|
399
424
|
it "returns the internal attributes" do
|
400
|
-
person.raw_attributes["title"].
|
425
|
+
expect(person.raw_attributes["title"]).to eq("Sir")
|
401
426
|
end
|
402
427
|
end
|
403
428
|
|
@@ -412,7 +437,7 @@ describe Mongoid::Document do
|
|
412
437
|
end
|
413
438
|
|
414
439
|
it "returns the document in an array" do
|
415
|
-
people.
|
440
|
+
expect(people).to eq([ person ])
|
416
441
|
end
|
417
442
|
end
|
418
443
|
|
@@ -435,15 +460,15 @@ describe Mongoid::Document do
|
|
435
460
|
end
|
436
461
|
|
437
462
|
it "includes embeds one attributes" do
|
438
|
-
person.as_document.
|
463
|
+
expect(person.as_document).to have_key("name")
|
439
464
|
end
|
440
465
|
|
441
466
|
it "includes embeds many attributes" do
|
442
|
-
person.as_document.
|
467
|
+
expect(person.as_document).to have_key("addresses")
|
443
468
|
end
|
444
469
|
|
445
470
|
it "includes second level embeds many attributes" do
|
446
|
-
person.as_document["addresses"].first.
|
471
|
+
expect(person.as_document["addresses"].first).to have_key("locations")
|
447
472
|
end
|
448
473
|
|
449
474
|
context "with relation define store_as option in embeded_many" do
|
@@ -453,11 +478,11 @@ describe Mongoid::Document do
|
|
453
478
|
end
|
454
479
|
|
455
480
|
it 'includes the store_as key association' do
|
456
|
-
person.as_document.
|
481
|
+
expect(person.as_document).to have_key("mobile_phones")
|
457
482
|
end
|
458
483
|
|
459
484
|
it 'should not include the key of association' do
|
460
|
-
person.as_document.
|
485
|
+
expect(person.as_document).to_not have_key("phones")
|
461
486
|
end
|
462
487
|
end
|
463
488
|
|
@@ -469,7 +494,7 @@ describe Mongoid::Document do
|
|
469
494
|
end
|
470
495
|
|
471
496
|
it "does not include the document in the hash" do
|
472
|
-
person.as_document["addresses"].
|
497
|
+
expect(person.as_document["addresses"]).to be_empty
|
473
498
|
end
|
474
499
|
end
|
475
500
|
|
@@ -483,7 +508,7 @@ describe Mongoid::Document do
|
|
483
508
|
end
|
484
509
|
|
485
510
|
it "does not include the document in the hash" do
|
486
|
-
person.as_document.
|
511
|
+
expect(person.as_document).to_not have_key("name")
|
487
512
|
end
|
488
513
|
end
|
489
514
|
end
|
@@ -497,31 +522,31 @@ describe Mongoid::Document do
|
|
497
522
|
end
|
498
523
|
|
499
524
|
it "returns nil" do
|
500
|
-
person.to_key.
|
525
|
+
expect(person.to_key).to be_nil
|
501
526
|
end
|
502
527
|
end
|
503
528
|
|
504
529
|
context "when the document is not new" do
|
505
530
|
|
506
531
|
let(:person) do
|
507
|
-
Person.instantiate("_id" =>
|
532
|
+
Person.instantiate("_id" => BSON::ObjectId.new)
|
508
533
|
end
|
509
534
|
|
510
535
|
it "returns the id in an array" do
|
511
|
-
person.to_key.
|
536
|
+
expect(person.to_key).to eq([ person.id ])
|
512
537
|
end
|
513
538
|
end
|
514
539
|
|
515
540
|
context "when the document is destroyed" do
|
516
541
|
|
517
542
|
let(:person) do
|
518
|
-
Person.instantiate("_id" =>
|
543
|
+
Person.instantiate("_id" => BSON::ObjectId.new).tap do |peep|
|
519
544
|
peep.destroyed = true
|
520
545
|
end
|
521
546
|
end
|
522
547
|
|
523
548
|
it "returns the id in an array" do
|
524
|
-
person.to_key.
|
549
|
+
expect(person.to_key).to eq([ person.id ])
|
525
550
|
end
|
526
551
|
end
|
527
552
|
end
|
@@ -535,18 +560,18 @@ describe Mongoid::Document do
|
|
535
560
|
end
|
536
561
|
|
537
562
|
it "returns nil" do
|
538
|
-
person.to_param.
|
563
|
+
expect(person.to_param).to be_nil
|
539
564
|
end
|
540
565
|
end
|
541
566
|
|
542
567
|
context "when the document is not new" do
|
543
568
|
|
544
569
|
let(:person) do
|
545
|
-
Person.instantiate("_id" =>
|
570
|
+
Person.instantiate("_id" => BSON::ObjectId.new)
|
546
571
|
end
|
547
572
|
|
548
573
|
it "returns the id as a string" do
|
549
|
-
person.to_param.
|
574
|
+
expect(person.to_param).to eq(person.id.to_s)
|
550
575
|
end
|
551
576
|
end
|
552
577
|
end
|
@@ -560,7 +585,7 @@ describe Mongoid::Document do
|
|
560
585
|
context "when attributes are not frozen" do
|
561
586
|
|
562
587
|
it "return false" do
|
563
|
-
person.
|
588
|
+
expect(person).to_not be_frozen
|
564
589
|
expect {
|
565
590
|
person.title = "something"
|
566
591
|
}.to_not raise_error
|
@@ -573,7 +598,7 @@ describe Mongoid::Document do
|
|
573
598
|
end
|
574
599
|
|
575
600
|
it "return true" do
|
576
|
-
person.
|
601
|
+
expect(person).to be_frozen
|
577
602
|
end
|
578
603
|
end
|
579
604
|
end
|
@@ -587,7 +612,7 @@ describe Mongoid::Document do
|
|
587
612
|
context "when not frozen" do
|
588
613
|
|
589
614
|
it "freezes attributes" do
|
590
|
-
person.freeze.
|
615
|
+
expect(person.freeze).to eq(person)
|
591
616
|
expect { person.title = "something" }.to raise_error
|
592
617
|
end
|
593
618
|
end
|
@@ -610,7 +635,7 @@ describe Mongoid::Document do
|
|
610
635
|
describe ".logger" do
|
611
636
|
|
612
637
|
it "returns the mongoid logger" do
|
613
|
-
Person.logger.
|
638
|
+
expect(Person.logger).to eq(Mongoid.logger)
|
614
639
|
end
|
615
640
|
end
|
616
641
|
|
@@ -621,7 +646,7 @@ describe Mongoid::Document do
|
|
621
646
|
end
|
622
647
|
|
623
648
|
it "returns the mongoid logger" do
|
624
|
-
person.send(:logger).
|
649
|
+
expect(person.send(:logger)).to eq(Mongoid.logger)
|
625
650
|
end
|
626
651
|
end
|
627
652
|
|
@@ -632,7 +657,7 @@ describe Mongoid::Document do
|
|
632
657
|
end
|
633
658
|
|
634
659
|
it "resets to the global scope" do
|
635
|
-
movie.global_set.
|
660
|
+
expect(movie.global_set).to be_a(::Set)
|
636
661
|
end
|
637
662
|
end
|
638
663
|
context "when a model name conflicts with a mongoid internal" do
|
@@ -642,7 +667,7 @@ describe Mongoid::Document do
|
|
642
667
|
end
|
643
668
|
|
644
669
|
it "allows the model name" do
|
645
|
-
scheduler.strategy.
|
670
|
+
expect(scheduler.strategy).to be_a(Strategy)
|
646
671
|
end
|
647
672
|
end
|
648
673
|
|
@@ -652,16 +677,16 @@ describe Mongoid::Document do
|
|
652
677
|
|
653
678
|
it "sets the defaults before yielding" do
|
654
679
|
Person.new do |person|
|
655
|
-
person.age.
|
680
|
+
expect(person.age).to eq(100)
|
656
681
|
end
|
657
682
|
end
|
658
683
|
end
|
659
684
|
end
|
660
685
|
|
661
|
-
context "defining a
|
686
|
+
context "defining a BSON::ObjectId as a field" do
|
662
687
|
|
663
688
|
let(:bson_id) do
|
664
|
-
|
689
|
+
BSON::ObjectId.new
|
665
690
|
end
|
666
691
|
|
667
692
|
let(:person) do
|
@@ -673,11 +698,11 @@ describe Mongoid::Document do
|
|
673
698
|
end
|
674
699
|
|
675
700
|
it "persists the correct type" do
|
676
|
-
person.reload.bson_id.
|
701
|
+
expect(person.reload.bson_id).to be_a(BSON::ObjectId)
|
677
702
|
end
|
678
703
|
|
679
704
|
it "has the correct value" do
|
680
|
-
person.bson_id.
|
705
|
+
expect(person.bson_id).to eq(bson_id)
|
681
706
|
end
|
682
707
|
end
|
683
708
|
|
@@ -692,7 +717,7 @@ describe Mongoid::Document do
|
|
692
717
|
end
|
693
718
|
|
694
719
|
it "converts them to nil" do
|
695
|
-
post.person_id.
|
720
|
+
expect(post.person_id).to be_nil
|
696
721
|
end
|
697
722
|
end
|
698
723
|
|
@@ -742,15 +767,15 @@ describe Mongoid::Document do
|
|
742
767
|
end
|
743
768
|
|
744
769
|
it "copies attributes" do
|
745
|
-
person.title.
|
770
|
+
expect(person.title).to eq('Sir')
|
746
771
|
end
|
747
772
|
|
748
773
|
it "keeps the same object id" do
|
749
|
-
person.id.
|
774
|
+
expect(person.id).to eq(manager.id)
|
750
775
|
end
|
751
776
|
|
752
777
|
it "sets the class type" do
|
753
|
-
person._type.
|
778
|
+
expect(person._type).to eq("Person")
|
754
779
|
end
|
755
780
|
|
756
781
|
it "raises an error when inappropriate class is provided" do
|
@@ -773,11 +798,11 @@ describe Mongoid::Document do
|
|
773
798
|
end
|
774
799
|
|
775
800
|
it "copies the embedded documents" do
|
776
|
-
person.appointments.first.
|
801
|
+
expect(person.appointments.first).to eq(appointment)
|
777
802
|
end
|
778
803
|
|
779
804
|
it "returns new instances" do
|
780
|
-
person.appointments.first.
|
805
|
+
expect(person.appointments.first).to_not equal(appointment)
|
781
806
|
end
|
782
807
|
end
|
783
808
|
|
@@ -794,11 +819,11 @@ describe Mongoid::Document do
|
|
794
819
|
end
|
795
820
|
|
796
821
|
it "copies the embedded documents" do
|
797
|
-
person.addresses.first.
|
822
|
+
expect(person.addresses.first).to eq(address)
|
798
823
|
end
|
799
824
|
|
800
825
|
it "returns new instances" do
|
801
|
-
person.addresses.first.
|
826
|
+
expect(person.addresses.first).to_not equal(address)
|
802
827
|
end
|
803
828
|
end
|
804
829
|
|
@@ -821,11 +846,11 @@ describe Mongoid::Document do
|
|
821
846
|
end
|
822
847
|
|
823
848
|
it "copies the embedded documents" do
|
824
|
-
person.addresses.first.
|
849
|
+
expect(person.addresses.first).to eq(address)
|
825
850
|
end
|
826
851
|
|
827
852
|
it "copies the embedded documents only once" do
|
828
|
-
person.reload.addresses.length.
|
853
|
+
expect(person.reload.addresses.length).to eq(1)
|
829
854
|
end
|
830
855
|
end
|
831
856
|
end
|
@@ -842,7 +867,7 @@ describe Mongoid::Document do
|
|
842
867
|
end
|
843
868
|
|
844
869
|
it "copies the localize attribute" do
|
845
|
-
person.desc.
|
870
|
+
expect(person.desc).to eq("description")
|
846
871
|
end
|
847
872
|
end
|
848
873
|
|
@@ -853,7 +878,7 @@ describe Mongoid::Document do
|
|
853
878
|
end
|
854
879
|
|
855
880
|
it "copies the state" do
|
856
|
-
person.
|
881
|
+
expect(person).to be_a_new_record
|
857
882
|
end
|
858
883
|
end
|
859
884
|
|
@@ -868,7 +893,7 @@ describe Mongoid::Document do
|
|
868
893
|
end
|
869
894
|
|
870
895
|
it "copies the state" do
|
871
|
-
person.
|
896
|
+
expect(person).to be_persisted
|
872
897
|
end
|
873
898
|
end
|
874
899
|
|
@@ -883,7 +908,7 @@ describe Mongoid::Document do
|
|
883
908
|
end
|
884
909
|
|
885
910
|
it "copies the state" do
|
886
|
-
person.
|
911
|
+
expect(person).to be_destroyed
|
887
912
|
end
|
888
913
|
end
|
889
914
|
|
@@ -899,11 +924,11 @@ describe Mongoid::Document do
|
|
899
924
|
end
|
900
925
|
|
901
926
|
it "copies over the dirty changes" do
|
902
|
-
person.changes["ssn"].
|
927
|
+
expect(person.changes["ssn"]).to eq([ nil, "123-22-1234" ])
|
903
928
|
end
|
904
929
|
|
905
930
|
it "adds the _type change" do
|
906
|
-
person.changes["_type"].
|
931
|
+
expect(person.changes["_type"]).to eq([ "Manager", "Person" ])
|
907
932
|
end
|
908
933
|
end
|
909
934
|
|
@@ -919,7 +944,7 @@ describe Mongoid::Document do
|
|
919
944
|
end
|
920
945
|
|
921
946
|
it "copies the errors" do
|
922
|
-
person.errors.
|
947
|
+
expect(person.errors).to include(:ssn)
|
923
948
|
end
|
924
949
|
end
|
925
950
|
end
|
@@ -937,15 +962,15 @@ describe Mongoid::Document do
|
|
937
962
|
end
|
938
963
|
|
939
964
|
it "copies attributes" do
|
940
|
-
manager.title.
|
965
|
+
expect(manager.title).to eq('Sir')
|
941
966
|
end
|
942
967
|
|
943
968
|
it "keeps the same object id" do
|
944
|
-
manager.id.
|
969
|
+
expect(manager.id).to eq(person.id)
|
945
970
|
end
|
946
971
|
|
947
972
|
it "sets the class type" do
|
948
|
-
manager._type.
|
973
|
+
expect(manager._type).to eq("Manager")
|
949
974
|
end
|
950
975
|
|
951
976
|
it "raises an error when inappropriate class is provided" do
|
@@ -966,11 +991,11 @@ describe Mongoid::Document do
|
|
966
991
|
end
|
967
992
|
|
968
993
|
it "copies the embedded documents" do
|
969
|
-
manager.addresses.first.
|
994
|
+
expect(manager.addresses.first).to eq(address)
|
970
995
|
end
|
971
996
|
|
972
997
|
it "returns new instances" do
|
973
|
-
manager.addresses.first.
|
998
|
+
expect(manager.addresses.first).to_not equal(address)
|
974
999
|
end
|
975
1000
|
end
|
976
1001
|
|
@@ -981,7 +1006,7 @@ describe Mongoid::Document do
|
|
981
1006
|
end
|
982
1007
|
|
983
1008
|
it "copies the state" do
|
984
|
-
manager.
|
1009
|
+
expect(manager).to be_a_new_record
|
985
1010
|
end
|
986
1011
|
end
|
987
1012
|
|
@@ -996,7 +1021,7 @@ describe Mongoid::Document do
|
|
996
1021
|
end
|
997
1022
|
|
998
1023
|
it "copies the state" do
|
999
|
-
manager.
|
1024
|
+
expect(manager).to be_persisted
|
1000
1025
|
end
|
1001
1026
|
|
1002
1027
|
context "when downcasted document is saved" do
|
@@ -1006,15 +1031,19 @@ describe Mongoid::Document do
|
|
1006
1031
|
end
|
1007
1032
|
|
1008
1033
|
it "keeps the type" do
|
1009
|
-
manager.
|
1034
|
+
expect(manager).to be_an_instance_of(Manager)
|
1035
|
+
end
|
1036
|
+
|
1037
|
+
it "copies over the dirty changes" do
|
1038
|
+
expect(manager.changes["ssn"]).to eq(person.changes["ssn"])
|
1010
1039
|
end
|
1011
1040
|
|
1012
1041
|
it "can by queried by the parent class" do
|
1013
|
-
Person.find(manager.id).
|
1042
|
+
expect(Person.find(manager.id)).to be_an_instance_of(Manager)
|
1014
1043
|
end
|
1015
1044
|
|
1016
1045
|
it "can by queried by the main class" do
|
1017
|
-
Manager.find(manager.id).
|
1046
|
+
expect(Manager.find(manager.id)).to be_an_instance_of(Manager)
|
1018
1047
|
end
|
1019
1048
|
end
|
1020
1049
|
end
|
@@ -1030,7 +1059,7 @@ describe Mongoid::Document do
|
|
1030
1059
|
end
|
1031
1060
|
|
1032
1061
|
it "copies the state" do
|
1033
|
-
manager.
|
1062
|
+
expect(manager).to be_destroyed
|
1034
1063
|
end
|
1035
1064
|
end
|
1036
1065
|
|
@@ -1046,11 +1075,11 @@ describe Mongoid::Document do
|
|
1046
1075
|
end
|
1047
1076
|
|
1048
1077
|
it "copies over the dirty changes" do
|
1049
|
-
manager.changes["ssn"].
|
1078
|
+
expect(manager.changes["ssn"]).to eq([ nil, "123-22-1234" ])
|
1050
1079
|
end
|
1051
1080
|
|
1052
1081
|
it "adds the _type change" do
|
1053
|
-
manager.changes["_type"].
|
1082
|
+
expect(manager.changes["_type"]).to eq([ "Person", "Manager" ])
|
1054
1083
|
end
|
1055
1084
|
end
|
1056
1085
|
|
@@ -1066,7 +1095,24 @@ describe Mongoid::Document do
|
|
1066
1095
|
end
|
1067
1096
|
|
1068
1097
|
it "copies the errors" do
|
1069
|
-
manager.errors.
|
1098
|
+
expect(manager.errors).to include(:ssn)
|
1099
|
+
end
|
1100
|
+
|
1101
|
+
end
|
1102
|
+
|
1103
|
+
context "when the subclass validates attributes not present on the parent class" do
|
1104
|
+
|
1105
|
+
before do
|
1106
|
+
Manager.validates_inclusion_of(:level, in: [1, 2])
|
1107
|
+
end
|
1108
|
+
|
1109
|
+
let(:manager) do
|
1110
|
+
person.becomes(Manager)
|
1111
|
+
end
|
1112
|
+
|
1113
|
+
it "validates the instance of the subclass" do
|
1114
|
+
manager.level = 3
|
1115
|
+
expect(manager.valid?).to be false
|
1070
1116
|
end
|
1071
1117
|
end
|
1072
1118
|
|
@@ -1077,7 +1123,7 @@ describe Mongoid::Document do
|
|
1077
1123
|
end
|
1078
1124
|
|
1079
1125
|
it "applies default attributes" do
|
1080
|
-
manager.level.
|
1126
|
+
expect(manager.level).to eq(1)
|
1081
1127
|
end
|
1082
1128
|
end
|
1083
1129
|
end
|
@@ -1132,13 +1178,13 @@ describe Mongoid::Document do
|
|
1132
1178
|
end
|
1133
1179
|
|
1134
1180
|
it "stores the parent object" do
|
1135
|
-
cache.fetch("key") { person }.
|
1136
|
-
cache.fetch("key").
|
1181
|
+
expect(cache.fetch("key") { person }).to eq(person)
|
1182
|
+
expect(cache.fetch("key")).to eq(person)
|
1137
1183
|
end
|
1138
1184
|
|
1139
1185
|
it "stores the embedded object" do
|
1140
|
-
cache.fetch("key") { account }.
|
1141
|
-
cache.fetch("key").
|
1186
|
+
expect(cache.fetch("key") { account }).to eq(account)
|
1187
|
+
expect(cache.fetch("key")).to eq(account)
|
1142
1188
|
end
|
1143
1189
|
end
|
1144
1190
|
end
|