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,134 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
describe Mongoid::Selectable do
|
4
|
+
|
5
|
+
describe "#atomic_selector" do
|
6
|
+
|
7
|
+
context "when the document is a root document" do
|
8
|
+
|
9
|
+
context "when the document has a shard key" do
|
10
|
+
|
11
|
+
let(:profile) do
|
12
|
+
Profile.create(name: "google")
|
13
|
+
end
|
14
|
+
|
15
|
+
let!(:selector) do
|
16
|
+
profile.atomic_selector
|
17
|
+
end
|
18
|
+
|
19
|
+
it "returns the id and shard key in the hash" do
|
20
|
+
expect(selector).to eq({ "_id" => profile.id, "name" => profile.name })
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when the document does not have a shard key" do
|
25
|
+
|
26
|
+
context "when using object ids" do
|
27
|
+
|
28
|
+
let(:band) do
|
29
|
+
Band.create
|
30
|
+
end
|
31
|
+
|
32
|
+
let(:selector) do
|
33
|
+
band.atomic_selector
|
34
|
+
end
|
35
|
+
|
36
|
+
it "returns the hash with the id" do
|
37
|
+
expect(selector).to eq({ "_id" => band.id })
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
context "when using a custom id" do
|
42
|
+
|
43
|
+
let(:account) do
|
44
|
+
Account.create(name: "savings")
|
45
|
+
end
|
46
|
+
|
47
|
+
let(:selector) do
|
48
|
+
account.atomic_selector
|
49
|
+
end
|
50
|
+
|
51
|
+
context "when the id has not changed" do
|
52
|
+
|
53
|
+
it "returns the hash with the key" do
|
54
|
+
expect(selector).to eq({ "_id" => "savings" })
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
context "when the composite key has changed" do
|
59
|
+
|
60
|
+
before do
|
61
|
+
account.new_record = false
|
62
|
+
account.name = "current"
|
63
|
+
end
|
64
|
+
|
65
|
+
it "returns the hash with the old key" do
|
66
|
+
expect(selector).to eq({ "_id" => "savings" })
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
context "when the document is embedded" do
|
74
|
+
|
75
|
+
let(:person) do
|
76
|
+
Person.create
|
77
|
+
end
|
78
|
+
|
79
|
+
context "when the document is an embeds one" do
|
80
|
+
|
81
|
+
let(:name) do
|
82
|
+
person.create_name(first_name: "test", last_name: "user")
|
83
|
+
end
|
84
|
+
|
85
|
+
it "returns the hash with the selector" do
|
86
|
+
expect(name.atomic_selector).to eq(
|
87
|
+
{ "_id" => person.id, "name._id" => name.id }
|
88
|
+
)
|
89
|
+
end
|
90
|
+
end
|
91
|
+
|
92
|
+
context "when the document is an embeds many" do
|
93
|
+
|
94
|
+
let(:address) do
|
95
|
+
person.addresses.create(street: "kreuzbergstr")
|
96
|
+
end
|
97
|
+
|
98
|
+
it "returns the hash with the selector" do
|
99
|
+
expect(address.atomic_selector).to eq(
|
100
|
+
{ "_id" => person.id, "addresses._id" => address.id }
|
101
|
+
)
|
102
|
+
end
|
103
|
+
|
104
|
+
context "when the document's id changes" do
|
105
|
+
|
106
|
+
before do
|
107
|
+
address._id = "hobrecht"
|
108
|
+
end
|
109
|
+
|
110
|
+
it "returns only the parent selector" do
|
111
|
+
expect(address.atomic_selector).to eq(person.atomic_selector)
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
115
|
+
context "when the document is embedded multiple levels" do
|
116
|
+
|
117
|
+
let(:location) do
|
118
|
+
address.locations.create
|
119
|
+
end
|
120
|
+
|
121
|
+
it "returns a hash with the selector" do
|
122
|
+
expect(location.atomic_selector).to eq(
|
123
|
+
{
|
124
|
+
"_id" => person.id,
|
125
|
+
"addresses._id" => address.id,
|
126
|
+
"addresses.0.locations._id" => location.id
|
127
|
+
}
|
128
|
+
)
|
129
|
+
end
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|
134
|
+
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require "spec_helper"
|
2
2
|
|
3
|
-
describe Mongoid::
|
3
|
+
describe Mongoid::Serializable do
|
4
4
|
|
5
5
|
describe "#field_names" do
|
6
6
|
|
@@ -9,7 +9,36 @@ describe Mongoid::Serialization do
|
|
9
9
|
end
|
10
10
|
|
11
11
|
it "does not duplicate fields" do
|
12
|
-
band.send(:field_names, {}).
|
12
|
+
expect(band.send(:field_names, {})).to eq(band.fields.except("_type").keys.sort)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
describe ".include_root_in_json" do
|
17
|
+
|
18
|
+
let(:person) do
|
19
|
+
Person.new
|
20
|
+
end
|
21
|
+
|
22
|
+
context "when config set to true" do
|
23
|
+
|
24
|
+
before do
|
25
|
+
Mongoid.include_root_in_json = true
|
26
|
+
end
|
27
|
+
|
28
|
+
it "returns true" do
|
29
|
+
expect(person.include_root_in_json).to be true
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
context "when config set to false" do
|
34
|
+
|
35
|
+
before do
|
36
|
+
Mongoid.include_root_in_json = false
|
37
|
+
end
|
38
|
+
|
39
|
+
it "returns false" do
|
40
|
+
expect(person.include_root_in_json).to be false
|
41
|
+
end
|
13
42
|
end
|
14
43
|
end
|
15
44
|
|
@@ -30,7 +59,7 @@ describe Mongoid::Serialization do
|
|
30
59
|
end
|
31
60
|
|
32
61
|
it "grabs the attribute direct from the hash" do
|
33
|
-
attributes["loop"].
|
62
|
+
expect(attributes["loop"]).to eq("testing")
|
34
63
|
end
|
35
64
|
end
|
36
65
|
|
@@ -45,7 +74,7 @@ describe Mongoid::Serialization do
|
|
45
74
|
end
|
46
75
|
|
47
76
|
it "uses the overridden method" do
|
48
|
-
attributes["override_me"].
|
77
|
+
expect(attributes["override_me"]).to eq("1")
|
49
78
|
end
|
50
79
|
end
|
51
80
|
|
@@ -62,7 +91,7 @@ describe Mongoid::Serialization do
|
|
62
91
|
end
|
63
92
|
|
64
93
|
it "includes the embedded documents" do
|
65
|
-
attributes["addresses"].first.
|
94
|
+
expect(attributes["addresses"].first).to eq(address.serializable_hash)
|
66
95
|
end
|
67
96
|
end
|
68
97
|
|
@@ -77,11 +106,11 @@ describe Mongoid::Serialization do
|
|
77
106
|
end
|
78
107
|
|
79
108
|
it "uses the options" do
|
80
|
-
attributes["id"].
|
109
|
+
expect(attributes["id"]).to eq(person.id)
|
81
110
|
end
|
82
111
|
|
83
112
|
it "uses the options on embedded documents" do
|
84
|
-
address_attributes["id"].
|
113
|
+
expect(address_attributes["id"]).to eq(address.id)
|
85
114
|
end
|
86
115
|
end
|
87
116
|
|
@@ -96,7 +125,7 @@ describe Mongoid::Serialization do
|
|
96
125
|
end
|
97
126
|
|
98
127
|
it "includes the deeply nested document" do
|
99
|
-
attributes["addresses"][0]["locations"].
|
128
|
+
expect(attributes["addresses"][0]["locations"]).to_not be_empty
|
100
129
|
end
|
101
130
|
end
|
102
131
|
end
|
@@ -116,7 +145,7 @@ describe Mongoid::Serialization do
|
|
116
145
|
end
|
117
146
|
|
118
147
|
it "converts the objects to the defined type" do
|
119
|
-
attributes["dob"].
|
148
|
+
expect(attributes["dob"]).to eq(date)
|
120
149
|
end
|
121
150
|
end
|
122
151
|
|
@@ -127,7 +156,7 @@ describe Mongoid::Serialization do
|
|
127
156
|
end
|
128
157
|
|
129
158
|
before do
|
130
|
-
person.write_attributes(attributes
|
159
|
+
person.write_attributes(attributes)
|
131
160
|
end
|
132
161
|
|
133
162
|
let(:field_names) do
|
@@ -135,15 +164,15 @@ describe Mongoid::Serialization do
|
|
135
164
|
end
|
136
165
|
|
137
166
|
it "serializes assigned attributes" do
|
138
|
-
person.serializable_hash.
|
167
|
+
expect(person.serializable_hash).to include attributes
|
139
168
|
end
|
140
169
|
|
141
170
|
it "includes all defined fields except _type" do
|
142
|
-
person.serializable_hash.keys.
|
171
|
+
expect(person.serializable_hash.keys).to include(*field_names)
|
143
172
|
end
|
144
173
|
|
145
174
|
it "does not include _type" do
|
146
|
-
person.serializable_hash.keys.
|
175
|
+
expect(person.serializable_hash.keys).to_not include "_type"
|
147
176
|
end
|
148
177
|
|
149
178
|
context "when providing options" do
|
@@ -157,7 +186,7 @@ describe Mongoid::Serialization do
|
|
157
186
|
end
|
158
187
|
|
159
188
|
it "does not modify the options in the argument" do
|
160
|
-
options[:except].
|
189
|
+
expect(options[:except]).to be_nil
|
161
190
|
end
|
162
191
|
end
|
163
192
|
|
@@ -172,14 +201,14 @@ describe Mongoid::Serialization do
|
|
172
201
|
end
|
173
202
|
|
174
203
|
it "includes _type field" do
|
175
|
-
person.serializable_hash.keys.
|
204
|
+
expect(person.serializable_hash.keys).to include '_type'
|
176
205
|
end
|
177
206
|
end
|
178
207
|
|
179
208
|
context "when specifying which fields to only include" do
|
180
209
|
|
181
210
|
it "only includes the specified fields" do
|
182
|
-
person.serializable_hash(only: [:title]).
|
211
|
+
expect(person.serializable_hash(only: [:title])).to eq(
|
183
212
|
{ "title" => attributes["title"] }
|
184
213
|
)
|
185
214
|
end
|
@@ -188,16 +217,16 @@ describe Mongoid::Serialization do
|
|
188
217
|
context "when specifying extra inclusions" do
|
189
218
|
|
190
219
|
it "includes the extra fields" do
|
191
|
-
person.serializable_hash(
|
220
|
+
expect(person.serializable_hash(
|
192
221
|
methods: [ :_type ]
|
193
|
-
).has_key?("_type").
|
222
|
+
).has_key?("_type")).to be true
|
194
223
|
end
|
195
224
|
end
|
196
225
|
|
197
226
|
context "when specifying which fields to exclude" do
|
198
227
|
|
199
228
|
it "excludes the specified fields" do
|
200
|
-
person.serializable_hash(except: [:title]).
|
229
|
+
expect(person.serializable_hash(except: [:title])).to_not include(
|
201
230
|
"title" => attributes["title"]
|
202
231
|
)
|
203
232
|
end
|
@@ -219,13 +248,13 @@ describe Mongoid::Serialization do
|
|
219
248
|
end
|
220
249
|
|
221
250
|
it "includes dynamic fields" do
|
222
|
-
person.serializable_hash[dynamic_field_name].
|
251
|
+
expect(person.serializable_hash[dynamic_field_name]).to eq(dynamic_value)
|
223
252
|
end
|
224
253
|
|
225
254
|
context "when specifying which dynamic fields to only include" do
|
226
255
|
|
227
256
|
it "only includes the specified dynamic fields" do
|
228
|
-
person.serializable_hash(only: [dynamic_field_name]).
|
257
|
+
expect(person.serializable_hash(only: [dynamic_field_name])).to eq(
|
229
258
|
{ dynamic_field_name => dynamic_value }
|
230
259
|
)
|
231
260
|
end
|
@@ -234,7 +263,7 @@ describe Mongoid::Serialization do
|
|
234
263
|
context "when specified which dynamic fields to exclude" do
|
235
264
|
|
236
265
|
it "excludes the specified fields" do
|
237
|
-
person.serializable_hash(except: [dynamic_field_name]).
|
266
|
+
expect(person.serializable_hash(except: [dynamic_field_name])).to_not include(
|
238
267
|
dynamic_field_name => dynamic_value
|
239
268
|
)
|
240
269
|
end
|
@@ -248,7 +277,7 @@ describe Mongoid::Serialization do
|
|
248
277
|
end
|
249
278
|
|
250
279
|
before do
|
251
|
-
person.write_attributes(attributes
|
280
|
+
person.write_attributes(attributes)
|
252
281
|
end
|
253
282
|
|
254
283
|
context "when the model is saved before the relation is added" do
|
@@ -268,7 +297,7 @@ describe Mongoid::Serialization do
|
|
268
297
|
end
|
269
298
|
|
270
299
|
it "includes the relation" do
|
271
|
-
person.serializable_hash.keys.
|
300
|
+
expect(person.serializable_hash.keys).to include('addresses')
|
272
301
|
end
|
273
302
|
end
|
274
303
|
|
@@ -282,7 +311,7 @@ describe Mongoid::Serialization do
|
|
282
311
|
end
|
283
312
|
|
284
313
|
it "includes the relation" do
|
285
|
-
person.serializable_hash.keys.
|
314
|
+
expect(person.serializable_hash.keys).to include('name')
|
286
315
|
end
|
287
316
|
end
|
288
317
|
end
|
@@ -300,7 +329,7 @@ describe Mongoid::Serialization do
|
|
300
329
|
end
|
301
330
|
|
302
331
|
it "includes the relation" do
|
303
|
-
person.serializable_hash.keys.
|
332
|
+
expect(person.serializable_hash.keys).to include('addresses')
|
304
333
|
end
|
305
334
|
end
|
306
335
|
|
@@ -314,7 +343,7 @@ describe Mongoid::Serialization do
|
|
314
343
|
end
|
315
344
|
|
316
345
|
it "includes the relation" do
|
317
|
-
person.serializable_hash.keys.
|
346
|
+
expect(person.serializable_hash.keys).to include('name')
|
318
347
|
end
|
319
348
|
end
|
320
349
|
end
|
@@ -323,7 +352,7 @@ describe Mongoid::Serialization do
|
|
323
352
|
context "when including methods" do
|
324
353
|
|
325
354
|
it "includes the method result" do
|
326
|
-
person.serializable_hash(methods: [:foo]).
|
355
|
+
expect(person.serializable_hash(methods: [:foo])).to include(
|
327
356
|
"foo" => person.foo
|
328
357
|
)
|
329
358
|
end
|
@@ -362,7 +391,7 @@ describe Mongoid::Serialization do
|
|
362
391
|
end
|
363
392
|
|
364
393
|
it "does not generate new ids" do
|
365
|
-
hash["addresses"].first["_id"].
|
394
|
+
expect(hash["addresses"].first["_id"]).to be_nil
|
366
395
|
end
|
367
396
|
end
|
368
397
|
|
@@ -373,12 +402,12 @@ describe Mongoid::Serialization do
|
|
373
402
|
end
|
374
403
|
|
375
404
|
it "includes the first relation" do
|
376
|
-
relation_hash[0].
|
405
|
+
expect(relation_hash[0]).to include
|
377
406
|
{ "_id" => "kudamm", "street" => "Kudamm" }
|
378
407
|
end
|
379
408
|
|
380
409
|
it "includes the second relation" do
|
381
|
-
relation_hash[1].
|
410
|
+
expect(relation_hash[1]).to include
|
382
411
|
{ "_id" => "tauentzienstr", "street" => "Tauentzienstr" }
|
383
412
|
end
|
384
413
|
end
|
@@ -390,12 +419,12 @@ describe Mongoid::Serialization do
|
|
390
419
|
end
|
391
420
|
|
392
421
|
it "includes the first relation" do
|
393
|
-
relation_hash[0].
|
422
|
+
expect(relation_hash[0]).to include
|
394
423
|
{ "_id" => "kudamm", "street" => "Kudamm" }
|
395
424
|
end
|
396
425
|
|
397
426
|
it "includes the second relation" do
|
398
|
-
relation_hash[1].
|
427
|
+
expect(relation_hash[1]).to include
|
399
428
|
{ "_id" => "tauentzienstr", "street" => "Tauentzienstr" }
|
400
429
|
end
|
401
430
|
end
|
@@ -409,11 +438,11 @@ describe Mongoid::Serialization do
|
|
409
438
|
end
|
410
439
|
|
411
440
|
it "includes the first relation sans exceptions" do
|
412
|
-
relation_hash[0].
|
441
|
+
expect(relation_hash[0]).to include({ "street" => "Kudamm" })
|
413
442
|
end
|
414
443
|
|
415
444
|
it "includes the second relation sans exceptions" do
|
416
|
-
relation_hash[1].
|
445
|
+
expect(relation_hash[1]).to include({ "street" => "Tauentzienstr" })
|
417
446
|
end
|
418
447
|
end
|
419
448
|
|
@@ -432,9 +461,9 @@ describe Mongoid::Serialization do
|
|
432
461
|
end
|
433
462
|
|
434
463
|
it "includes the first relation" do
|
435
|
-
relation_hash[0]["locations"].any? do |location|
|
464
|
+
expect(relation_hash[0]["locations"].any? do |location|
|
436
465
|
location["name"] == "Home"
|
437
|
-
end.
|
466
|
+
end).to be true
|
438
467
|
end
|
439
468
|
|
440
469
|
context "after retrieved from database" do
|
@@ -460,12 +489,12 @@ describe Mongoid::Serialization do
|
|
460
489
|
end
|
461
490
|
|
462
491
|
it "includes the specific ralations" do
|
463
|
-
relation_hash[0]["locations"].map do |location|
|
492
|
+
expect(relation_hash[0]["locations"].map do |location|
|
464
493
|
location["name"]
|
465
|
-
end.
|
466
|
-
relation_hash[1]["locations"].map do |location|
|
494
|
+
end).to include "Home"
|
495
|
+
expect(relation_hash[1]["locations"].map do |location|
|
467
496
|
location["name"]
|
468
|
-
end.
|
497
|
+
end).to include "Hotel"
|
469
498
|
end
|
470
499
|
end
|
471
500
|
end
|
@@ -484,15 +513,15 @@ describe Mongoid::Serialization do
|
|
484
513
|
end
|
485
514
|
|
486
515
|
it "does not contain the root exclusion" do
|
487
|
-
hash["_id"].
|
516
|
+
expect(hash["_id"]).to be_nil
|
488
517
|
end
|
489
518
|
|
490
519
|
it "does not include the embedded many exclusion" do
|
491
|
-
relation_hash[0]["_id"].
|
520
|
+
expect(relation_hash[0]["_id"]).to be_nil
|
492
521
|
end
|
493
522
|
|
494
523
|
it "does not include the embedded one exclusion" do
|
495
|
-
hash["name"]["_id"].
|
524
|
+
expect(hash["name"]["_id"]).to be_nil
|
496
525
|
end
|
497
526
|
end
|
498
527
|
end
|
@@ -515,7 +544,7 @@ describe Mongoid::Serialization do
|
|
515
544
|
end
|
516
545
|
|
517
546
|
it "includes the specified relation" do
|
518
|
-
relation_hash.
|
547
|
+
expect(relation_hash).to include
|
519
548
|
{ "_id" => "leo-marvin", "first_name" => "Leo", "last_name" => "Marvin" }
|
520
549
|
end
|
521
550
|
end
|
@@ -527,7 +556,7 @@ describe Mongoid::Serialization do
|
|
527
556
|
end
|
528
557
|
|
529
558
|
it "includes the specified relation" do
|
530
|
-
relation_hash.
|
559
|
+
expect(relation_hash).to include
|
531
560
|
{ "_id" => "leo-marvin", "first_name" => "Leo", "last_name" => "Marvin" }
|
532
561
|
end
|
533
562
|
end
|
@@ -539,7 +568,7 @@ describe Mongoid::Serialization do
|
|
539
568
|
end
|
540
569
|
|
541
570
|
it "includes the specified relation sans exceptions" do
|
542
|
-
relation_hash.
|
571
|
+
expect(relation_hash).to include
|
543
572
|
{ "first_name" => "Leo", "last_name" => "Marvin" }
|
544
573
|
end
|
545
574
|
end
|
@@ -566,15 +595,15 @@ describe Mongoid::Serialization do
|
|
566
595
|
end
|
567
596
|
|
568
597
|
it "includes the specified relation" do
|
569
|
-
relation_hash.
|
598
|
+
expect(relation_hash).to_not be_nil
|
570
599
|
end
|
571
600
|
|
572
601
|
it "includes the first document related fields" do
|
573
|
-
relation_hash[0]["title"].
|
602
|
+
expect(relation_hash[0]["title"]).to eq("First")
|
574
603
|
end
|
575
604
|
|
576
605
|
it "includes the second document related fields" do
|
577
|
-
relation_hash[1]["title"].
|
606
|
+
expect(relation_hash[1]["title"]).to eq("Second")
|
578
607
|
end
|
579
608
|
end
|
580
609
|
|
@@ -585,15 +614,15 @@ describe Mongoid::Serialization do
|
|
585
614
|
end
|
586
615
|
|
587
616
|
it "includes the specified relation" do
|
588
|
-
relation_hash.
|
617
|
+
expect(relation_hash).to_not be_nil
|
589
618
|
end
|
590
619
|
|
591
620
|
it "includes the first document related fields" do
|
592
|
-
relation_hash[0]["title"].
|
621
|
+
expect(relation_hash[0]["title"]).to eq("First")
|
593
622
|
end
|
594
623
|
|
595
624
|
it "includes the second document related fields" do
|
596
|
-
relation_hash[1]["title"].
|
625
|
+
expect(relation_hash[1]["title"]).to eq("Second")
|
597
626
|
end
|
598
627
|
end
|
599
628
|
|
@@ -604,23 +633,23 @@ describe Mongoid::Serialization do
|
|
604
633
|
end
|
605
634
|
|
606
635
|
it "includes the specified relation" do
|
607
|
-
relation_hash.
|
636
|
+
expect(relation_hash).to_not be_nil
|
608
637
|
end
|
609
638
|
|
610
639
|
it "includes the first document related fields" do
|
611
|
-
relation_hash[0]["title"].
|
640
|
+
expect(relation_hash[0]["title"]).to eq("First")
|
612
641
|
end
|
613
642
|
|
614
643
|
it "includes the second document related fields" do
|
615
|
-
relation_hash[1]["title"].
|
644
|
+
expect(relation_hash[1]["title"]).to eq("Second")
|
616
645
|
end
|
617
646
|
|
618
647
|
it "does not include the first document exceptions" do
|
619
|
-
relation_hash[0]["_id"].
|
648
|
+
expect(relation_hash[0]["_id"]).to be_nil
|
620
649
|
end
|
621
650
|
|
622
651
|
it "does not include the second document exceptions" do
|
623
|
-
relation_hash[1]["_id"].
|
652
|
+
expect(relation_hash[1]["_id"]).to be_nil
|
624
653
|
end
|
625
654
|
end
|
626
655
|
end
|
@@ -646,15 +675,15 @@ describe Mongoid::Serialization do
|
|
646
675
|
end
|
647
676
|
|
648
677
|
it "includes the specified relation" do
|
649
|
-
relation_hash.
|
678
|
+
expect(relation_hash).to_not be_nil
|
650
679
|
end
|
651
680
|
|
652
681
|
it "includes the first document related fields" do
|
653
|
-
relation_hash[0]["name"].
|
682
|
+
expect(relation_hash[0]["name"]).to eq("First")
|
654
683
|
end
|
655
684
|
|
656
685
|
it "includes the second document related fields" do
|
657
|
-
relation_hash[1]["name"].
|
686
|
+
expect(relation_hash[1]["name"]).to eq("Second")
|
658
687
|
end
|
659
688
|
end
|
660
689
|
|
@@ -665,15 +694,15 @@ describe Mongoid::Serialization do
|
|
665
694
|
end
|
666
695
|
|
667
696
|
it "includes the specified relation" do
|
668
|
-
relation_hash.
|
697
|
+
expect(relation_hash).to_not be_nil
|
669
698
|
end
|
670
699
|
|
671
700
|
it "includes the first document related fields" do
|
672
|
-
relation_hash[0]["name"].
|
701
|
+
expect(relation_hash[0]["name"]).to eq("First")
|
673
702
|
end
|
674
703
|
|
675
704
|
it "includes the second document related fields" do
|
676
|
-
relation_hash[1]["name"].
|
705
|
+
expect(relation_hash[1]["name"]).to eq("Second")
|
677
706
|
end
|
678
707
|
end
|
679
708
|
|
@@ -691,27 +720,27 @@ describe Mongoid::Serialization do
|
|
691
720
|
end
|
692
721
|
|
693
722
|
it "includes the specified relation" do
|
694
|
-
relation_hash.
|
723
|
+
expect(relation_hash).to_not be_nil
|
695
724
|
end
|
696
725
|
|
697
726
|
it "includes the first document related fields" do
|
698
|
-
relation_hash[0]["name"].
|
727
|
+
expect(relation_hash[0]["name"]).to eq("First")
|
699
728
|
end
|
700
729
|
|
701
730
|
it "includes the second document related fields" do
|
702
|
-
relation_hash[1]["name"].
|
731
|
+
expect(relation_hash[1]["name"]).to eq("Second")
|
703
732
|
end
|
704
733
|
|
705
734
|
it "does not include the first document exceptions" do
|
706
|
-
relation_hash[0]["_id"].
|
735
|
+
expect(relation_hash[0]["_id"]).to be_nil
|
707
736
|
end
|
708
737
|
|
709
738
|
it "does not include the second document exceptions" do
|
710
|
-
relation_hash[1]["_id"].
|
739
|
+
expect(relation_hash[1]["_id"]).to be_nil
|
711
740
|
end
|
712
741
|
|
713
742
|
it "does not include the root exceptions" do
|
714
|
-
hash["preference_ids"].
|
743
|
+
expect(hash["preference_ids"]).to be_nil
|
715
744
|
end
|
716
745
|
end
|
717
746
|
end
|
@@ -732,7 +761,7 @@ describe Mongoid::Serialization do
|
|
732
761
|
end
|
733
762
|
|
734
763
|
it "uses the mongoid configuration" do
|
735
|
-
person.to_json.
|
764
|
+
expect(person.to_json).to include("person")
|
736
765
|
end
|
737
766
|
end
|
738
767
|
|
@@ -743,7 +772,7 @@ describe Mongoid::Serialization do
|
|
743
772
|
end
|
744
773
|
|
745
774
|
it "uses the mongoid configuration" do
|
746
|
-
person.to_json.
|
775
|
+
expect(person.to_json).to_not include("person")
|
747
776
|
end
|
748
777
|
end
|
749
778
|
|
@@ -760,7 +789,7 @@ describe Mongoid::Serialization do
|
|
760
789
|
end
|
761
790
|
|
762
791
|
it "serializes only the relation" do
|
763
|
-
json.
|
792
|
+
expect(json).to include(address.street)
|
764
793
|
end
|
765
794
|
end
|
766
795
|
|
@@ -775,7 +804,7 @@ describe Mongoid::Serialization do
|
|
775
804
|
end
|
776
805
|
|
777
806
|
it "serializes only the relation" do
|
778
|
-
json.
|
807
|
+
expect(json).to include(post.title)
|
779
808
|
end
|
780
809
|
end
|
781
810
|
end
|
@@ -783,14 +812,14 @@ describe Mongoid::Serialization do
|
|
783
812
|
|
784
813
|
describe "#to_xml" do
|
785
814
|
|
786
|
-
context "
|
815
|
+
context "BSON::ObjectId" do
|
787
816
|
|
788
817
|
let(:person) do
|
789
818
|
Person.new
|
790
819
|
end
|
791
820
|
|
792
821
|
it "serializes as string" do
|
793
|
-
person.to_xml.
|
822
|
+
expect(person.to_xml).to include("<_id>#{person.id}</_id>")
|
794
823
|
end
|
795
824
|
end
|
796
825
|
|
@@ -803,12 +832,12 @@ describe Mongoid::Serialization do
|
|
803
832
|
end
|
804
833
|
|
805
834
|
it "properly types the array" do
|
806
|
-
person.to_xml.
|
835
|
+
expect(person.to_xml).to include("<aliases type=\"array\">")
|
807
836
|
end
|
808
837
|
|
809
838
|
it "serializes the array" do
|
810
|
-
person.to_xml.
|
811
|
-
person.to_xml.
|
839
|
+
expect(person.to_xml).to include("<alias>Kelly</alias>")
|
840
|
+
expect(person.to_xml).to include("<alias>Machine Gun</alias>")
|
812
841
|
end
|
813
842
|
end
|
814
843
|
|
@@ -821,12 +850,12 @@ describe Mongoid::Serialization do
|
|
821
850
|
end
|
822
851
|
|
823
852
|
it "properly types the hash" do
|
824
|
-
person.to_xml.
|
853
|
+
expect(person.to_xml).to include("<map>")
|
825
854
|
end
|
826
855
|
|
827
856
|
it "serializes the hash" do
|
828
|
-
person.to_xml.
|
829
|
-
person.to_xml.
|
857
|
+
expect(person.to_xml).to include("<lat type=\"float\">24.5</lat>")
|
858
|
+
expect(person.to_xml).to include("<long type=\"float\">22.1</long>")
|
830
859
|
end
|
831
860
|
end
|
832
861
|
end
|