mongoid 3.1.4 → 3.1.5
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 +34 -0
- data/lib/mongoid/contextual.rb +3 -0
- data/lib/mongoid/criteria.rb +10 -2
- data/lib/mongoid/document.rb +1 -1
- data/lib/mongoid/paranoia.rb +4 -0
- data/lib/mongoid/persistence/upsertion.rb +1 -0
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +16 -2
- data/lib/mongoid/relations/macros.rb +1 -1
- data/lib/mongoid/relations/one.rb +12 -0
- data/lib/mongoid/relations/referenced/in.rb +18 -1
- data/lib/mongoid/relations/referenced/many_to_many.rb +2 -2
- data/lib/mongoid/validations.rb +1 -1
- data/lib/mongoid/validations/localizable.rb +1 -1
- data/lib/mongoid/validations/presence.rb +1 -1
- data/lib/mongoid/validations/uniqueness.rb +1 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/support/ruby_version.rb +1 -1
- data/spec/app/models/account.rb +32 -0
- data/spec/app/models/acolyte.rb +16 -0
- data/spec/app/models/actor.rb +19 -0
- data/spec/app/models/actor_observer.rb +15 -0
- data/spec/app/models/actress.rb +2 -0
- data/spec/app/models/address.rb +72 -0
- data/spec/app/models/address_component.rb +5 -0
- data/spec/app/models/address_number.rb +6 -0
- data/spec/app/models/agency.rb +5 -0
- data/spec/app/models/agent.rb +12 -0
- data/spec/app/models/album.rb +14 -0
- data/spec/app/models/alert.rb +5 -0
- data/spec/app/models/animal.rb +25 -0
- data/spec/app/models/answer.rb +4 -0
- data/spec/app/models/appointment.rb +7 -0
- data/spec/app/models/article.rb +13 -0
- data/spec/app/models/artist.rb +66 -0
- data/spec/app/models/artwork.rb +4 -0
- data/spec/app/models/augmentation.rb +11 -0
- data/spec/app/models/author.rb +6 -0
- data/spec/app/models/band.rb +25 -0
- data/spec/app/models/bar.rb +9 -0
- data/spec/app/models/basic.rb +6 -0
- data/spec/app/models/bed.rb +1 -0
- data/spec/app/models/big_palette.rb +2 -0
- data/spec/app/models/birthday.rb +13 -0
- data/spec/app/models/book.rb +12 -0
- data/spec/app/models/breed.rb +4 -0
- data/spec/app/models/browser.rb +6 -0
- data/spec/app/models/building.rb +7 -0
- data/spec/app/models/building_address.rb +7 -0
- data/spec/app/models/bus.rb +7 -0
- data/spec/app/models/business.rb +5 -0
- data/spec/app/models/callback_recorder.rb +25 -0
- data/spec/app/models/callback_test.rb +9 -0
- data/spec/app/models/canvas.rb +25 -0
- data/spec/app/models/car.rb +1 -0
- data/spec/app/models/cat.rb +8 -0
- data/spec/app/models/category.rb +8 -0
- data/spec/app/models/child.rb +4 -0
- data/spec/app/models/child_doc.rb +22 -0
- data/spec/app/models/church.rb +4 -0
- data/spec/app/models/circle.rb +3 -0
- data/spec/app/models/circuit.rb +4 -0
- data/spec/app/models/circus.rb +7 -0
- data/spec/app/models/code.rb +5 -0
- data/spec/app/models/comment.rb +16 -0
- data/spec/app/models/contractor.rb +7 -0
- data/spec/app/models/cookie.rb +6 -0
- data/spec/app/models/country_code.rb +8 -0
- data/spec/app/models/definition.rb +8 -0
- data/spec/app/models/description.rb +11 -0
- data/spec/app/models/dictionary.rb +10 -0
- data/spec/app/models/division.rb +10 -0
- data/spec/app/models/doctor.rb +12 -0
- data/spec/app/models/dog.rb +7 -0
- data/spec/app/models/dokument.rb +5 -0
- data/spec/app/models/driver.rb +7 -0
- data/spec/app/models/drug.rb +8 -0
- data/spec/app/models/email.rb +6 -0
- data/spec/app/models/employer.rb +5 -0
- data/spec/app/models/entry.rb +6 -0
- data/spec/app/models/eraser.rb +1 -0
- data/spec/app/models/event.rb +22 -0
- data/spec/app/models/exhibition.rb +4 -0
- data/spec/app/models/exhibitor.rb +5 -0
- data/spec/app/models/eye.rb +9 -0
- data/spec/app/models/eye_bowl.rb +9 -0
- data/spec/app/models/face.rb +8 -0
- data/spec/app/models/favorite.rb +6 -0
- data/spec/app/models/filesystem.rb +4 -0
- data/spec/app/models/fire_hydrant.rb +6 -0
- data/spec/app/models/firefox.rb +4 -0
- data/spec/app/models/fish.rb +8 -0
- data/spec/app/models/folder.rb +7 -0
- data/spec/app/models/folder_item.rb +9 -0
- data/spec/app/models/fruits.rb +28 -0
- data/spec/app/models/game.rb +21 -0
- data/spec/app/models/ghost.rb +7 -0
- data/spec/app/models/home.rb +4 -0
- data/spec/app/models/house.rb +8 -0
- data/spec/app/models/html_writer.rb +3 -0
- data/spec/app/models/image.rb +22 -0
- data/spec/app/models/implant.rb +16 -0
- data/spec/app/models/item.rb +12 -0
- data/spec/app/models/jar.rb +7 -0
- data/spec/app/models/label.rb +40 -0
- data/spec/app/models/language.rb +5 -0
- data/spec/app/models/lat_lng.rb +15 -0
- data/spec/app/models/league.rb +11 -0
- data/spec/app/models/learner.rb +2 -0
- data/spec/app/models/line_item.rb +6 -0
- data/spec/app/models/location.rb +8 -0
- data/spec/app/models/login.rb +8 -0
- data/spec/app/models/manufacturer.rb +7 -0
- data/spec/app/models/meat.rb +4 -0
- data/spec/app/models/membership.rb +4 -0
- data/spec/app/models/mixed_drink.rb +4 -0
- data/spec/app/models/movie.rb +12 -0
- data/spec/app/models/my_hash.rb +2 -0
- data/spec/app/models/name.rb +23 -0
- data/spec/app/models/node.rb +5 -0
- data/spec/app/models/note.rb +12 -0
- data/spec/app/models/ordered_post.rb +6 -0
- data/spec/app/models/ordered_preference.rb +6 -0
- data/spec/app/models/oscar.rb +15 -0
- data/spec/app/models/override.rb +16 -0
- data/spec/app/models/ownable.rb +6 -0
- data/spec/app/models/owner.rb +6 -0
- data/spec/app/models/pack.rb +3 -0
- data/spec/app/models/page.rb +5 -0
- data/spec/app/models/page_question.rb +4 -0
- data/spec/app/models/palette.rb +7 -0
- data/spec/app/models/paranoid_phone.rb +25 -0
- data/spec/app/models/paranoid_post.rb +36 -0
- data/spec/app/models/parent.rb +5 -0
- data/spec/app/models/parent_doc.rb +6 -0
- data/spec/app/models/passport.rb +5 -0
- data/spec/app/models/patient.rb +9 -0
- data/spec/app/models/pdf_writer.rb +3 -0
- data/spec/app/models/pencil.rb +1 -0
- data/spec/app/models/person.rb +201 -0
- data/spec/app/models/pet.rb +23 -0
- data/spec/app/models/pet_owner.rb +6 -0
- data/spec/app/models/phone.rb +11 -0
- data/spec/app/models/phone_observer.rb +6 -0
- data/spec/app/models/pizza.rb +7 -0
- data/spec/app/models/player.rb +35 -0
- data/spec/app/models/post.rb +43 -0
- data/spec/app/models/powerup.rb +11 -0
- data/spec/app/models/preference.rb +9 -0
- data/spec/app/models/princess.rb +8 -0
- data/spec/app/models/product.rb +17 -0
- data/spec/app/models/profile.rb +5 -0
- data/spec/app/models/pronunciation.rb +5 -0
- data/spec/app/models/purchase.rb +4 -0
- data/spec/app/models/question.rb +8 -0
- data/spec/app/models/quiz.rb +10 -0
- data/spec/app/models/rating.rb +8 -0
- data/spec/app/models/record.rb +46 -0
- data/spec/app/models/registry.rb +4 -0
- data/spec/app/models/role.rb +7 -0
- data/spec/app/models/root_category.rb +4 -0
- data/spec/app/models/sandwich.rb +4 -0
- data/spec/app/models/scheduler.rb +7 -0
- data/spec/app/models/seo.rb +7 -0
- data/spec/app/models/series.rb +4 -0
- data/spec/app/models/server.rb +13 -0
- data/spec/app/models/service.rb +22 -0
- data/spec/app/models/shape.rb +12 -0
- data/spec/app/models/shelf.rb +5 -0
- data/spec/app/models/shipping_container.rb +5 -0
- data/spec/app/models/shipping_pack.rb +3 -0
- data/spec/app/models/shop.rb +6 -0
- data/spec/app/models/short_agent.rb +4 -0
- data/spec/app/models/short_quiz.rb +5 -0
- data/spec/app/models/slave.rb +6 -0
- data/spec/app/models/song.rb +8 -0
- data/spec/app/models/square.rb +4 -0
- data/spec/app/models/strategy.rb +3 -0
- data/spec/app/models/sub_item.rb +3 -0
- data/spec/app/models/subscription.rb +4 -0
- data/spec/app/models/survey.rb +5 -0
- data/spec/app/models/symptom.rb +6 -0
- data/spec/app/models/tag.rb +8 -0
- data/spec/app/models/target.rb +5 -0
- data/spec/app/models/template.rb +5 -0
- data/spec/app/models/thing.rb +9 -0
- data/spec/app/models/title.rb +4 -0
- data/spec/app/models/tool.rb +8 -0
- data/spec/app/models/topping.rb +5 -0
- data/spec/app/models/track.rb +38 -0
- data/spec/app/models/translation.rb +5 -0
- data/spec/app/models/tree.rb +9 -0
- data/spec/app/models/truck.rb +3 -0
- data/spec/app/models/user.rb +21 -0
- data/spec/app/models/user_account.rb +10 -0
- data/spec/app/models/validation_callback.rb +10 -0
- data/spec/app/models/vehicle.rb +11 -0
- data/spec/app/models/version.rb +5 -0
- data/spec/app/models/vet_visit.rb +5 -0
- data/spec/app/models/video.rb +17 -0
- data/spec/app/models/video_game.rb +1 -0
- data/spec/app/models/weapon.rb +11 -0
- data/spec/app/models/wiki_page.rb +17 -0
- data/spec/app/models/word.rb +12 -0
- data/spec/app/models/word_origin.rb +11 -0
- data/spec/app/models/writer.rb +11 -0
- data/spec/config/mongoid.yml +40 -0
- data/spec/mongoid/atomic/modifiers_spec.rb +456 -0
- data/spec/mongoid/atomic/paths/embedded/many_spec.rb +159 -0
- data/spec/mongoid/atomic/paths/embedded/one_spec.rb +152 -0
- data/spec/mongoid/atomic/paths/root_spec.rb +106 -0
- data/spec/mongoid/atomic/paths_spec.rb +270 -0
- data/spec/mongoid/atomic/positionable_spec.rb +227 -0
- data/spec/mongoid/atomic_spec.rb +365 -0
- data/spec/mongoid/attributes/processing_spec.rb +149 -0
- data/spec/mongoid/attributes/readonly_spec.rb +169 -0
- data/spec/mongoid/attributes_spec.rb +1705 -0
- data/spec/mongoid/callbacks_spec.rb +1564 -0
- data/spec/mongoid/components_spec.rb +24 -0
- data/spec/mongoid/config/environment_spec.rb +83 -0
- data/spec/mongoid/config/options_spec.rb +56 -0
- data/spec/mongoid/config_spec.rb +334 -0
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +293 -0
- data/spec/mongoid/contextual/aggregable/mongo_spec.rb +455 -0
- data/spec/mongoid/contextual/atomic_spec.rb +525 -0
- data/spec/mongoid/contextual/find_and_modify_spec.rb +220 -0
- data/spec/mongoid/contextual/geo_near_spec.rb +405 -0
- data/spec/mongoid/contextual/map_reduce_spec.rb +464 -0
- data/spec/mongoid/contextual/memory_spec.rb +1236 -0
- data/spec/mongoid/contextual/mongo_spec.rb +1757 -0
- data/spec/mongoid/copyable_spec.rb +393 -0
- data/spec/mongoid/criteria_spec.rb +5140 -0
- data/spec/mongoid/criterion/destructive_spec.rb +101 -0
- data/spec/mongoid/criterion/inspection_spec.rb +27 -0
- data/spec/mongoid/criterion/marshalable_spec.rb +28 -0
- data/spec/mongoid/criterion/modifiable_spec.rb +409 -0
- data/spec/mongoid/criterion/modification_spec.rb +402 -0
- data/spec/mongoid/criterion/scoping_spec.rb +391 -0
- data/spec/mongoid/dirty_spec.rb +1508 -0
- data/spec/mongoid/document_spec.rb +1146 -0
- data/spec/mongoid/equality_spec.rb +241 -0
- data/spec/mongoid/errors/ambiguous_relationship_spec.rb +29 -0
- data/spec/mongoid/errors/callback_spec.rb +29 -0
- data/spec/mongoid/errors/delete_restriction_spec.rb +29 -0
- data/spec/mongoid/errors/document_not_found_spec.rb +104 -0
- data/spec/mongoid/errors/eager_load_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_collection_spec.rb +36 -0
- data/spec/mongoid/errors/invalid_config_option_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_field_option_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_field_spec.rb +37 -0
- data/spec/mongoid/errors/invalid_find_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_includes_spec.rb +40 -0
- data/spec/mongoid/errors/invalid_index_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_options_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_path_spec.rb +23 -0
- data/spec/mongoid/errors/invalid_scope_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_set_polymorphic_relation_spec.rb +17 -0
- data/spec/mongoid/errors/invalid_storage_options_spec.rb +29 -0
- data/spec/mongoid/errors/invalid_time_spec.rb +29 -0
- data/spec/mongoid/errors/inverse_not_found_spec.rb +29 -0
- data/spec/mongoid/errors/mixed_relations_spec.rb +29 -0
- data/spec/mongoid/errors/mixed_session_configuration_spec.rb +29 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +48 -0
- data/spec/mongoid/errors/nested_attributes_metadata_not_found_spec.rb +29 -0
- data/spec/mongoid/errors/no_environment_spec.rb +29 -0
- data/spec/mongoid/errors/no_map_reduce_output_spec.rb +29 -0
- data/spec/mongoid/errors/no_metadata_spec.rb +23 -0
- data/spec/mongoid/errors/no_parent_spec.rb +29 -0
- data/spec/mongoid/errors/no_session_config_spec.rb +29 -0
- data/spec/mongoid/errors/no_session_database_spec.rb +29 -0
- data/spec/mongoid/errors/no_session_hosts_spec.rb +29 -0
- data/spec/mongoid/errors/no_sessions_config_spec.rb +29 -0
- data/spec/mongoid/errors/readonly_attribute_spec.rb +29 -0
- data/spec/mongoid/errors/scope_overwrite_spec.rb +29 -0
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +29 -0
- data/spec/mongoid/errors/unknown_attribute_spec.rb +29 -0
- data/spec/mongoid/errors/unsaved_document_spec.rb +37 -0
- data/spec/mongoid/errors/unsupported_javascript_spec.rb +29 -0
- data/spec/mongoid/errors/validations_spec.rb +45 -0
- data/spec/mongoid/errors/versioning_not_on_root_spec.rb +29 -0
- data/spec/mongoid/extensions/array_spec.rb +638 -0
- data/spec/mongoid/extensions/big_decimal_spec.rb +104 -0
- data/spec/mongoid/extensions/binary_spec.rb +60 -0
- data/spec/mongoid/extensions/boolean_spec.rb +135 -0
- data/spec/mongoid/extensions/date_spec.rb +235 -0
- data/spec/mongoid/extensions/date_time_spec.rb +155 -0
- data/spec/mongoid/extensions/false_class_spec.rb +42 -0
- data/spec/mongoid/extensions/float_spec.rb +133 -0
- data/spec/mongoid/extensions/hash_spec.rb +333 -0
- data/spec/mongoid/extensions/integer_spec.rb +136 -0
- data/spec/mongoid/extensions/module_spec.rb +42 -0
- data/spec/mongoid/extensions/nil_class_spec.rb +11 -0
- data/spec/mongoid/extensions/object_id_spec.rb +946 -0
- data/spec/mongoid/extensions/object_spec.rb +292 -0
- data/spec/mongoid/extensions/range_spec.rb +105 -0
- data/spec/mongoid/extensions/regexp_spec.rb +47 -0
- data/spec/mongoid/extensions/set_spec.rb +33 -0
- data/spec/mongoid/extensions/string_spec.rb +368 -0
- data/spec/mongoid/extensions/symbol_spec.rb +76 -0
- data/spec/mongoid/extensions/time_spec.rb +467 -0
- data/spec/mongoid/extensions/time_with_zone_spec.rb +405 -0
- data/spec/mongoid/extensions/true_class_spec.rb +42 -0
- data/spec/mongoid/factory_spec.rb +185 -0
- data/spec/mongoid/fields/foreign_key_spec.rb +694 -0
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +184 -0
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +201 -0
- data/spec/mongoid/fields/localized_spec.rb +386 -0
- data/spec/mongoid/fields/standard_spec.rb +166 -0
- data/spec/mongoid/fields_spec.rb +1253 -0
- data/spec/mongoid/finders_spec.rb +321 -0
- data/spec/mongoid/hierarchy_spec.rb +244 -0
- data/spec/mongoid/identity_map_spec.rb +564 -0
- data/spec/mongoid/indexes_spec.rb +404 -0
- data/spec/mongoid/inspection_spec.rb +57 -0
- data/spec/mongoid/json_spec.rb +33 -0
- data/spec/mongoid/loggable_spec.rb +21 -0
- data/spec/mongoid/matchers/all_spec.rb +31 -0
- data/spec/mongoid/matchers/and_spec.rb +162 -0
- data/spec/mongoid/matchers/default_spec.rb +130 -0
- data/spec/mongoid/matchers/exists_spec.rb +57 -0
- data/spec/mongoid/matchers/gt_spec.rb +74 -0
- data/spec/mongoid/matchers/gte_spec.rb +74 -0
- data/spec/mongoid/matchers/in_spec.rb +25 -0
- data/spec/mongoid/matchers/lt_spec.rb +74 -0
- data/spec/mongoid/matchers/lte_spec.rb +74 -0
- data/spec/mongoid/matchers/ne_spec.rb +25 -0
- data/spec/mongoid/matchers/nin_spec.rb +25 -0
- data/spec/mongoid/matchers/or_spec.rb +106 -0
- data/spec/mongoid/matchers/size_spec.rb +25 -0
- data/spec/mongoid/matchers_spec.rb +532 -0
- data/spec/mongoid/multi_parameter_attributes_spec.rb +128 -0
- data/spec/mongoid/nested_attributes_spec.rb +4945 -0
- data/spec/mongoid/observer_spec.rb +290 -0
- data/spec/mongoid/paranoia_spec.rb +759 -0
- data/spec/mongoid/persistence/atomic/add_to_set_spec.rb +262 -0
- data/spec/mongoid/persistence/atomic/bit_spec.rb +88 -0
- data/spec/mongoid/persistence/atomic/inc_spec.rb +133 -0
- data/spec/mongoid/persistence/atomic/pop_spec.rb +111 -0
- data/spec/mongoid/persistence/atomic/pull_all_spec.rb +77 -0
- data/spec/mongoid/persistence/atomic/pull_spec.rb +80 -0
- data/spec/mongoid/persistence/atomic/push_all_spec.rb +77 -0
- data/spec/mongoid/persistence/atomic/push_spec.rb +77 -0
- data/spec/mongoid/persistence/atomic/rename_spec.rb +42 -0
- data/spec/mongoid/persistence/atomic/sets_spec.rb +154 -0
- data/spec/mongoid/persistence/atomic/unset_spec.rb +65 -0
- data/spec/mongoid/persistence/atomic_spec.rb +216 -0
- data/spec/mongoid/persistence/operations/embedded/insert_spec.rb +191 -0
- data/spec/mongoid/persistence/operations/embedded/remove_spec.rb +8 -0
- data/spec/mongoid/persistence/operations/insert_spec.rb +149 -0
- data/spec/mongoid/persistence/operations/remove_spec.rb +113 -0
- data/spec/mongoid/persistence/operations/update_spec.rb +141 -0
- data/spec/mongoid/persistence/operations/upsert_spec.rb +59 -0
- data/spec/mongoid/persistence/operations_spec.rb +313 -0
- data/spec/mongoid/persistence_spec.rb +2279 -0
- data/spec/mongoid/railties/document_spec.rb +24 -0
- data/spec/mongoid/relations/accessors_spec.rb +844 -0
- data/spec/mongoid/relations/auto_save_spec.rb +261 -0
- data/spec/mongoid/relations/bindings/embedded/in_spec.rb +171 -0
- data/spec/mongoid/relations/bindings/embedded/many_spec.rb +54 -0
- data/spec/mongoid/relations/bindings/embedded/one_spec.rb +77 -0
- data/spec/mongoid/relations/bindings/referenced/in_spec.rb +241 -0
- data/spec/mongoid/relations/bindings/referenced/many_spec.rb +153 -0
- data/spec/mongoid/relations/bindings/referenced/many_to_many_spec.rb +178 -0
- data/spec/mongoid/relations/bindings/referenced/one_spec.rb +131 -0
- data/spec/mongoid/relations/builders/embedded/in_spec.rb +34 -0
- data/spec/mongoid/relations/builders/embedded/many_spec.rb +132 -0
- data/spec/mongoid/relations/builders/embedded/one_spec.rb +99 -0
- data/spec/mongoid/relations/builders/nested_attributes/many_spec.rb +234 -0
- data/spec/mongoid/relations/builders/nested_attributes/one_spec.rb +250 -0
- data/spec/mongoid/relations/builders/referenced/in_spec.rb +241 -0
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +137 -0
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +178 -0
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +124 -0
- data/spec/mongoid/relations/builders_spec.rb +226 -0
- data/spec/mongoid/relations/cascading/delete_spec.rb +101 -0
- data/spec/mongoid/relations/cascading/destroy_spec.rb +47 -0
- data/spec/mongoid/relations/cascading/nullify_spec.rb +32 -0
- data/spec/mongoid/relations/cascading/restrict_spec.rb +68 -0
- data/spec/mongoid/relations/cascading_spec.rb +355 -0
- data/spec/mongoid/relations/constraint_spec.rb +74 -0
- data/spec/mongoid/relations/conversions_spec.rb +126 -0
- data/spec/mongoid/relations/counter_cache_spec.rb +205 -0
- data/spec/mongoid/relations/cyclic_spec.rb +156 -0
- data/spec/mongoid/relations/embedded/dirty_spec.rb +65 -0
- data/spec/mongoid/relations/embedded/in_spec.rb +580 -0
- data/spec/mongoid/relations/embedded/many_spec.rb +3841 -0
- data/spec/mongoid/relations/embedded/one_spec.rb +1055 -0
- data/spec/mongoid/relations/macros_spec.rb +625 -0
- data/spec/mongoid/relations/metadata_spec.rb +2030 -0
- data/spec/mongoid/relations/options_spec.rb +35 -0
- data/spec/mongoid/relations/polymorphic_spec.rb +132 -0
- data/spec/mongoid/relations/proxy_spec.rb +48 -0
- data/spec/mongoid/relations/referenced/in_spec.rb +1501 -0
- data/spec/mongoid/relations/referenced/many_spec.rb +3632 -0
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +3561 -0
- data/spec/mongoid/relations/referenced/one_spec.rb +1331 -0
- data/spec/mongoid/relations/reflections_spec.rb +101 -0
- data/spec/mongoid/relations/synchronization_spec.rb +453 -0
- data/spec/mongoid/relations/targets/enumerable_spec.rb +1710 -0
- data/spec/mongoid/relations_spec.rb +188 -0
- data/spec/mongoid/reloading_spec.rb +305 -0
- data/spec/mongoid/scoping_spec.rb +978 -0
- data/spec/mongoid/serialization_spec.rb +833 -0
- data/spec/mongoid/sessions/factory_spec.rb +312 -0
- data/spec/mongoid/sessions/mongo_uri_spec.rb +103 -0
- data/spec/mongoid/sessions_spec.rb +1111 -0
- data/spec/mongoid/sharding_spec.rb +61 -0
- data/spec/mongoid/state_spec.rb +102 -0
- data/spec/mongoid/threaded_spec.rb +296 -0
- data/spec/mongoid/timestamps/created/short_spec.rb +51 -0
- data/spec/mongoid/timestamps/created_spec.rb +44 -0
- data/spec/mongoid/timestamps/timeless_spec.rb +130 -0
- data/spec/mongoid/timestamps/updated/short_spec.rb +90 -0
- data/spec/mongoid/timestamps/updated_spec.rb +86 -0
- data/spec/mongoid/timestamps_spec.rb +112 -0
- data/spec/mongoid/unit_of_work_spec.rb +196 -0
- data/spec/mongoid/validations/associated_spec.rb +183 -0
- data/spec/mongoid/validations/format_spec.rb +83 -0
- data/spec/mongoid/validations/length_spec.rb +223 -0
- data/spec/mongoid/validations/numericality_spec.rb +30 -0
- data/spec/mongoid/validations/presence_spec.rb +592 -0
- data/spec/mongoid/validations/uniqueness_spec.rb +2399 -0
- data/spec/mongoid/validations_spec.rb +309 -0
- data/spec/mongoid/versioning_spec.rb +540 -0
- data/spec/mongoid_spec.rb +74 -0
- data/spec/rack/mongoid/middleware/identity_map_spec.rb +72 -0
- data/spec/rails/mongoid_spec.rb +462 -0
- data/spec/spec_helper.rb +93 -0
- metadata +826 -6
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::Integer do
|
|
4
|
+
|
|
5
|
+
let(:number) do
|
|
6
|
+
118347652312341
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
describe "#__mongoize_time__" do
|
|
10
|
+
|
|
11
|
+
let(:integer) do
|
|
12
|
+
1335532685
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
let(:mongoized) do
|
|
16
|
+
integer.__mongoize_time__
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "returns the float as a time" do
|
|
20
|
+
mongoized.should eq(Time.at(integer))
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe ".demongoize" do
|
|
25
|
+
|
|
26
|
+
context "when the the value is an integer" do
|
|
27
|
+
|
|
28
|
+
it "returns a integer" do
|
|
29
|
+
Integer.demongoize(number).should eq(number)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "when the value is nil" do
|
|
34
|
+
|
|
35
|
+
it "returns nil" do
|
|
36
|
+
Integer.demongoize(nil).should be_nil
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
context "when the value is not an integer" do
|
|
41
|
+
|
|
42
|
+
it "converts the value to an integer" do
|
|
43
|
+
Integer.demongoize("1.0").should eq(1)
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
describe ".mongoize" do
|
|
49
|
+
|
|
50
|
+
context "when the value is a number" do
|
|
51
|
+
|
|
52
|
+
context "when the value is an integer" do
|
|
53
|
+
|
|
54
|
+
context "when the value is small" do
|
|
55
|
+
|
|
56
|
+
it "it returns the integer" do
|
|
57
|
+
Integer.mongoize(3).should eq(3)
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
context "when the value is large" do
|
|
62
|
+
|
|
63
|
+
it "returns the integer" do
|
|
64
|
+
Integer.mongoize(1024**2).to_s.should eq("1048576")
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
context "when the value is a decimal" do
|
|
70
|
+
|
|
71
|
+
it "casts to integer" do
|
|
72
|
+
Integer.mongoize(2.5).should eq(2)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
context "when the value is floating point zero" do
|
|
77
|
+
|
|
78
|
+
it "returns the integer zero" do
|
|
79
|
+
Integer.mongoize(0.00000).should eq(0)
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
context "when the value is a floating point integer" do
|
|
84
|
+
|
|
85
|
+
it "returns the integer number" do
|
|
86
|
+
Integer.mongoize(4.00000).should eq(4)
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
context "when the value has leading zeros" do
|
|
91
|
+
|
|
92
|
+
it "returns the stripped integer" do
|
|
93
|
+
Integer.mongoize("000011").should eq(11)
|
|
94
|
+
end
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
context "when the string is not a number" do
|
|
99
|
+
|
|
100
|
+
context "when the string is non numerical" do
|
|
101
|
+
|
|
102
|
+
it "returns 0" do
|
|
103
|
+
Integer.mongoize("foo").should eq(0)
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
context "when the string is numerical" do
|
|
108
|
+
|
|
109
|
+
it "returns the integer value for the string" do
|
|
110
|
+
Integer.mongoize("3").should eq(3)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
context "when the string is empty" do
|
|
115
|
+
|
|
116
|
+
it "returns nil" do
|
|
117
|
+
Integer.mongoize("").should be_nil
|
|
118
|
+
end
|
|
119
|
+
end
|
|
120
|
+
|
|
121
|
+
context "when the string is nil" do
|
|
122
|
+
|
|
123
|
+
it "returns nil" do
|
|
124
|
+
Integer.mongoize(nil).should be_nil
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
describe "#mongoize" do
|
|
131
|
+
|
|
132
|
+
it "returns self" do
|
|
133
|
+
number.mongoize.should eq(number)
|
|
134
|
+
end
|
|
135
|
+
end
|
|
136
|
+
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::Module do
|
|
4
|
+
|
|
5
|
+
describe "#re_define_method" do
|
|
6
|
+
|
|
7
|
+
context "when the method already exists" do
|
|
8
|
+
|
|
9
|
+
class Smoochy
|
|
10
|
+
def sing
|
|
11
|
+
"singing"
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
before do
|
|
16
|
+
Smoochy.re_define_method("sing") do
|
|
17
|
+
"singing again"
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "redefines the existing method" do
|
|
22
|
+
Smoochy.new.sing.should eq("singing again")
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
context "when the method does not exist" do
|
|
27
|
+
|
|
28
|
+
class Rhino
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
before do
|
|
32
|
+
Rhino.re_define_method("sing") do
|
|
33
|
+
"singing"
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it "redefines the existing method" do
|
|
38
|
+
Rhino.new.sing.should eq("singing")
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,946 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Extensions::ObjectId do
|
|
4
|
+
|
|
5
|
+
let(:object_id) do
|
|
6
|
+
Moped::BSON::ObjectId.new
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
let(:composite_key) do
|
|
10
|
+
"21-jump-street"
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe "#__evolve_object_id__" do
|
|
14
|
+
|
|
15
|
+
it "returns self" do
|
|
16
|
+
object_id.__evolve_object_id__.should eq(object_id)
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "returns the same instance" do
|
|
20
|
+
object_id.__evolve_object_id__.should equal(object_id)
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
describe ".evolve" do
|
|
25
|
+
|
|
26
|
+
context "when the class is using object ids" do
|
|
27
|
+
|
|
28
|
+
context "when provided a single object id" do
|
|
29
|
+
|
|
30
|
+
let(:evolved) do
|
|
31
|
+
Moped::BSON::ObjectId.evolve(object_id)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
it "returns the object id" do
|
|
35
|
+
evolved.should eq(object_id)
|
|
36
|
+
end
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
context "when provided an array of object ids" do
|
|
40
|
+
|
|
41
|
+
let(:other_id) do
|
|
42
|
+
Moped::BSON::ObjectId.new
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
let(:evolved) do
|
|
46
|
+
Moped::BSON::ObjectId.evolve([ object_id, other_id ])
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "returns the array of object ids" do
|
|
50
|
+
evolved.should eq([ object_id, other_id ])
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
context "when provided a single string" do
|
|
55
|
+
|
|
56
|
+
context "when the string is a valid object id" do
|
|
57
|
+
|
|
58
|
+
let(:evolved) do
|
|
59
|
+
Moped::BSON::ObjectId.evolve(object_id.to_s)
|
|
60
|
+
end
|
|
61
|
+
|
|
62
|
+
it "evolves to an object id" do
|
|
63
|
+
evolved.should eq(object_id)
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
context "when the string is not a valid object id" do
|
|
68
|
+
|
|
69
|
+
it "returns the key" do
|
|
70
|
+
Moped::BSON::ObjectId.evolve(composite_key).should eq(
|
|
71
|
+
composite_key
|
|
72
|
+
)
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
context "when the string is empty" do
|
|
77
|
+
|
|
78
|
+
let(:evolved) do
|
|
79
|
+
Moped::BSON::ObjectId.evolve("")
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "evolves to an empty string" do
|
|
83
|
+
evolved.should be_empty
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
|
|
88
|
+
context "when provided an array" do
|
|
89
|
+
|
|
90
|
+
context "when array key of nils" do
|
|
91
|
+
|
|
92
|
+
let(:evolved) do
|
|
93
|
+
Moped::BSON::ObjectId.evolve([ nil, nil ])
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
it "returns the array with nils" do
|
|
97
|
+
evolved.should eq([ nil, nil ])
|
|
98
|
+
end
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
context "when the array key is empty strings" do
|
|
102
|
+
|
|
103
|
+
let(:evolved) do
|
|
104
|
+
Moped::BSON::ObjectId.evolve([ "", "" ])
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "returns the array with empty strings" do
|
|
108
|
+
evolved.should eq([ "", "" ])
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
context "when the array key is full of strings" do
|
|
113
|
+
|
|
114
|
+
context "when the strings are valid object ids" do
|
|
115
|
+
|
|
116
|
+
let(:other_id) do
|
|
117
|
+
Moped::BSON::ObjectId.new
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
let(:evolved) do
|
|
121
|
+
Moped::BSON::ObjectId.evolve([ object_id.to_s, other_id.to_s ])
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "evolves to an array of object ids" do
|
|
125
|
+
evolved.should eq([ object_id, other_id ])
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
context "when the strings are not valid object ids" do
|
|
130
|
+
|
|
131
|
+
let(:other_key) do
|
|
132
|
+
"hawaii-five-o"
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
let(:evolved) do
|
|
136
|
+
Moped::BSON::ObjectId.evolve([ composite_key, other_key ])
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
it "returns the key" do
|
|
140
|
+
Moped::BSON::ObjectId.evolve(composite_key).should eq(
|
|
141
|
+
composite_key
|
|
142
|
+
)
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
end
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
context "when provided a hash" do
|
|
149
|
+
|
|
150
|
+
context "when the hash key is _id" do
|
|
151
|
+
|
|
152
|
+
context "when the value is an object id" do
|
|
153
|
+
|
|
154
|
+
let(:hash) do
|
|
155
|
+
{ _id: object_id }
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
let(:evolved) do
|
|
159
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
160
|
+
end
|
|
161
|
+
|
|
162
|
+
it "returns the hash" do
|
|
163
|
+
evolved.should eq(hash)
|
|
164
|
+
end
|
|
165
|
+
end
|
|
166
|
+
|
|
167
|
+
context "when the value is an array of object ids" do
|
|
168
|
+
|
|
169
|
+
let(:other_id) do
|
|
170
|
+
Moped::BSON::ObjectId.new
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
let(:hash) do
|
|
174
|
+
{ _id: [ object_id, other_id ] }
|
|
175
|
+
end
|
|
176
|
+
|
|
177
|
+
let(:evolved) do
|
|
178
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it "returns the hash" do
|
|
182
|
+
evolved.should eq(hash)
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
context "when the value is a string" do
|
|
187
|
+
|
|
188
|
+
let(:hash) do
|
|
189
|
+
{ _id: object_id.to_s }
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
let(:evolved) do
|
|
193
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
194
|
+
end
|
|
195
|
+
|
|
196
|
+
it "returns the hash with evolved value" do
|
|
197
|
+
evolved.should eq({ _id: object_id })
|
|
198
|
+
end
|
|
199
|
+
end
|
|
200
|
+
|
|
201
|
+
context "when the value is an array of strings" do
|
|
202
|
+
|
|
203
|
+
let(:other_id) do
|
|
204
|
+
Moped::BSON::ObjectId.new
|
|
205
|
+
end
|
|
206
|
+
|
|
207
|
+
let(:hash) do
|
|
208
|
+
{ _id: [ object_id.to_s, other_id.to_s ] }
|
|
209
|
+
end
|
|
210
|
+
|
|
211
|
+
let(:evolved) do
|
|
212
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
it "returns the hash with evolved values" do
|
|
216
|
+
evolved.should eq({ _id: [ object_id, other_id ] })
|
|
217
|
+
end
|
|
218
|
+
end
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
context "when the hash key is id" do
|
|
222
|
+
|
|
223
|
+
context "when the value is an object id" do
|
|
224
|
+
|
|
225
|
+
let(:hash) do
|
|
226
|
+
{ id: object_id }
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
let(:evolved) do
|
|
230
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
231
|
+
end
|
|
232
|
+
|
|
233
|
+
it "returns the hash" do
|
|
234
|
+
evolved.should eq(hash)
|
|
235
|
+
end
|
|
236
|
+
end
|
|
237
|
+
|
|
238
|
+
context "when the value is an array of object ids" do
|
|
239
|
+
|
|
240
|
+
let(:other_id) do
|
|
241
|
+
Moped::BSON::ObjectId.new
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
let(:hash) do
|
|
245
|
+
{ id: [ object_id, other_id ] }
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
let(:evolved) do
|
|
249
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
it "returns the hash" do
|
|
253
|
+
evolved.should eq(hash)
|
|
254
|
+
end
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
context "when the value is a string" do
|
|
258
|
+
|
|
259
|
+
let(:hash) do
|
|
260
|
+
{ id: object_id.to_s }
|
|
261
|
+
end
|
|
262
|
+
|
|
263
|
+
let(:evolved) do
|
|
264
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
265
|
+
end
|
|
266
|
+
|
|
267
|
+
it "returns the hash with evolved value" do
|
|
268
|
+
evolved.should eq({ id: object_id })
|
|
269
|
+
end
|
|
270
|
+
end
|
|
271
|
+
|
|
272
|
+
context "when the value is an array of strings" do
|
|
273
|
+
|
|
274
|
+
let(:other_id) do
|
|
275
|
+
Moped::BSON::ObjectId.new
|
|
276
|
+
end
|
|
277
|
+
|
|
278
|
+
let(:hash) do
|
|
279
|
+
{ id: [ object_id.to_s, other_id.to_s ] }
|
|
280
|
+
end
|
|
281
|
+
|
|
282
|
+
let(:evolved) do
|
|
283
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
284
|
+
end
|
|
285
|
+
|
|
286
|
+
it "returns the hash with evolved values" do
|
|
287
|
+
evolved.should eq({ id: [ object_id, other_id ] })
|
|
288
|
+
end
|
|
289
|
+
end
|
|
290
|
+
end
|
|
291
|
+
|
|
292
|
+
context "when the hash key is not an id" do
|
|
293
|
+
|
|
294
|
+
context "when the value is a string" do
|
|
295
|
+
|
|
296
|
+
let(:hash) do
|
|
297
|
+
{ key: composite_key }
|
|
298
|
+
end
|
|
299
|
+
|
|
300
|
+
let(:evolved) do
|
|
301
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
302
|
+
end
|
|
303
|
+
|
|
304
|
+
it "returns the hash" do
|
|
305
|
+
evolved.should eq(hash)
|
|
306
|
+
end
|
|
307
|
+
end
|
|
308
|
+
|
|
309
|
+
context "when the value is an array of strings" do
|
|
310
|
+
|
|
311
|
+
let(:hash) do
|
|
312
|
+
{ key: [ composite_key ] }
|
|
313
|
+
end
|
|
314
|
+
|
|
315
|
+
let(:evolved) do
|
|
316
|
+
Moped::BSON::ObjectId.evolve(hash)
|
|
317
|
+
end
|
|
318
|
+
|
|
319
|
+
it "returns the hash" do
|
|
320
|
+
evolved.should eq(hash)
|
|
321
|
+
end
|
|
322
|
+
end
|
|
323
|
+
end
|
|
324
|
+
end
|
|
325
|
+
end
|
|
326
|
+
end
|
|
327
|
+
|
|
328
|
+
describe ".mongoize" do
|
|
329
|
+
|
|
330
|
+
context "when the class is using object ids" do
|
|
331
|
+
|
|
332
|
+
context "when provided a single object id" do
|
|
333
|
+
|
|
334
|
+
let(:mongoized) do
|
|
335
|
+
Moped::BSON::ObjectId.mongoize(object_id)
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
it "returns the object id" do
|
|
339
|
+
mongoized.should eq(object_id)
|
|
340
|
+
end
|
|
341
|
+
end
|
|
342
|
+
|
|
343
|
+
context "when provided an array of object ids" do
|
|
344
|
+
|
|
345
|
+
let(:other_id) do
|
|
346
|
+
Moped::BSON::ObjectId.new
|
|
347
|
+
end
|
|
348
|
+
|
|
349
|
+
let(:mongoized) do
|
|
350
|
+
Moped::BSON::ObjectId.mongoize([ object_id, other_id ])
|
|
351
|
+
end
|
|
352
|
+
|
|
353
|
+
it "returns the array of object ids" do
|
|
354
|
+
mongoized.should eq([ object_id, other_id ])
|
|
355
|
+
end
|
|
356
|
+
end
|
|
357
|
+
|
|
358
|
+
context "when provided a single string" do
|
|
359
|
+
|
|
360
|
+
context "when the string is a valid object id" do
|
|
361
|
+
|
|
362
|
+
let(:mongoized) do
|
|
363
|
+
Moped::BSON::ObjectId.mongoize(object_id.to_s)
|
|
364
|
+
end
|
|
365
|
+
|
|
366
|
+
it "mongoizes to an object id" do
|
|
367
|
+
mongoized.should eq(object_id)
|
|
368
|
+
end
|
|
369
|
+
end
|
|
370
|
+
|
|
371
|
+
context "when the string is not a valid object id" do
|
|
372
|
+
|
|
373
|
+
it "returns the key" do
|
|
374
|
+
Moped::BSON::ObjectId.mongoize(composite_key).should eq(
|
|
375
|
+
composite_key
|
|
376
|
+
)
|
|
377
|
+
end
|
|
378
|
+
end
|
|
379
|
+
|
|
380
|
+
context "when the string is empty" do
|
|
381
|
+
|
|
382
|
+
let(:mongoized) do
|
|
383
|
+
Moped::BSON::ObjectId.mongoize("")
|
|
384
|
+
end
|
|
385
|
+
|
|
386
|
+
it "mongoizes to nil" do
|
|
387
|
+
mongoized.should be_nil
|
|
388
|
+
end
|
|
389
|
+
end
|
|
390
|
+
end
|
|
391
|
+
|
|
392
|
+
context "when provided an array" do
|
|
393
|
+
|
|
394
|
+
context "when array key of nils" do
|
|
395
|
+
|
|
396
|
+
let(:mongoized) do
|
|
397
|
+
Moped::BSON::ObjectId.mongoize([ nil, nil ])
|
|
398
|
+
end
|
|
399
|
+
|
|
400
|
+
it "returns an empty array" do
|
|
401
|
+
mongoized.should be_empty
|
|
402
|
+
end
|
|
403
|
+
end
|
|
404
|
+
|
|
405
|
+
context "when the array key is empty strings" do
|
|
406
|
+
|
|
407
|
+
let(:mongoized) do
|
|
408
|
+
Moped::BSON::ObjectId.mongoize([ "", "" ])
|
|
409
|
+
end
|
|
410
|
+
|
|
411
|
+
it "returns an empty array" do
|
|
412
|
+
mongoized.should be_empty
|
|
413
|
+
end
|
|
414
|
+
end
|
|
415
|
+
|
|
416
|
+
context "when the array key is full of strings" do
|
|
417
|
+
|
|
418
|
+
context "when the strings are valid object ids" do
|
|
419
|
+
|
|
420
|
+
let(:other_id) do
|
|
421
|
+
Moped::BSON::ObjectId.new
|
|
422
|
+
end
|
|
423
|
+
|
|
424
|
+
let(:mongoized) do
|
|
425
|
+
Moped::BSON::ObjectId.mongoize([ object_id.to_s, other_id.to_s ])
|
|
426
|
+
end
|
|
427
|
+
|
|
428
|
+
it "mongoizes to an array of object ids" do
|
|
429
|
+
mongoized.should eq([ object_id, other_id ])
|
|
430
|
+
end
|
|
431
|
+
end
|
|
432
|
+
|
|
433
|
+
context "when the strings are not valid object ids" do
|
|
434
|
+
|
|
435
|
+
let(:other_key) do
|
|
436
|
+
"hawaii-five-o"
|
|
437
|
+
end
|
|
438
|
+
|
|
439
|
+
let(:mongoized) do
|
|
440
|
+
Moped::BSON::ObjectId.mongoize([ composite_key, other_key ])
|
|
441
|
+
end
|
|
442
|
+
|
|
443
|
+
it "returns the key" do
|
|
444
|
+
Moped::BSON::ObjectId.mongoize(composite_key).should eq(
|
|
445
|
+
composite_key
|
|
446
|
+
)
|
|
447
|
+
end
|
|
448
|
+
end
|
|
449
|
+
end
|
|
450
|
+
end
|
|
451
|
+
|
|
452
|
+
context "when provided a hash" do
|
|
453
|
+
|
|
454
|
+
context "when the hash key is _id" do
|
|
455
|
+
|
|
456
|
+
context "when the value is an object id" do
|
|
457
|
+
|
|
458
|
+
let(:hash) do
|
|
459
|
+
{ _id: object_id }
|
|
460
|
+
end
|
|
461
|
+
|
|
462
|
+
let(:mongoized) do
|
|
463
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
464
|
+
end
|
|
465
|
+
|
|
466
|
+
it "returns the hash" do
|
|
467
|
+
mongoized.should eq(hash)
|
|
468
|
+
end
|
|
469
|
+
end
|
|
470
|
+
|
|
471
|
+
context "when the value is an array of object ids" do
|
|
472
|
+
|
|
473
|
+
let(:other_id) do
|
|
474
|
+
Moped::BSON::ObjectId.new
|
|
475
|
+
end
|
|
476
|
+
|
|
477
|
+
let(:hash) do
|
|
478
|
+
{ _id: [ object_id, other_id ] }
|
|
479
|
+
end
|
|
480
|
+
|
|
481
|
+
let(:mongoized) do
|
|
482
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
483
|
+
end
|
|
484
|
+
|
|
485
|
+
it "returns the hash" do
|
|
486
|
+
mongoized.should eq(hash)
|
|
487
|
+
end
|
|
488
|
+
end
|
|
489
|
+
|
|
490
|
+
context "when the value is a string" do
|
|
491
|
+
|
|
492
|
+
let(:hash) do
|
|
493
|
+
{ _id: object_id.to_s }
|
|
494
|
+
end
|
|
495
|
+
|
|
496
|
+
let(:mongoized) do
|
|
497
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
498
|
+
end
|
|
499
|
+
|
|
500
|
+
it "returns the hash with mongoized value" do
|
|
501
|
+
mongoized.should eq({ _id: object_id })
|
|
502
|
+
end
|
|
503
|
+
end
|
|
504
|
+
|
|
505
|
+
context "when the value is an array of strings" do
|
|
506
|
+
|
|
507
|
+
let(:other_id) do
|
|
508
|
+
Moped::BSON::ObjectId.new
|
|
509
|
+
end
|
|
510
|
+
|
|
511
|
+
let(:hash) do
|
|
512
|
+
{ _id: [ object_id.to_s, other_id.to_s ] }
|
|
513
|
+
end
|
|
514
|
+
|
|
515
|
+
let(:mongoized) do
|
|
516
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
517
|
+
end
|
|
518
|
+
|
|
519
|
+
it "returns the hash with mongoized values" do
|
|
520
|
+
mongoized.should eq({ _id: [ object_id, other_id ] })
|
|
521
|
+
end
|
|
522
|
+
end
|
|
523
|
+
end
|
|
524
|
+
|
|
525
|
+
context "when the hash key is id" do
|
|
526
|
+
|
|
527
|
+
context "when the value is an object id" do
|
|
528
|
+
|
|
529
|
+
let(:hash) do
|
|
530
|
+
{ id: object_id }
|
|
531
|
+
end
|
|
532
|
+
|
|
533
|
+
let(:mongoized) do
|
|
534
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
535
|
+
end
|
|
536
|
+
|
|
537
|
+
it "returns the hash" do
|
|
538
|
+
mongoized.should eq(hash)
|
|
539
|
+
end
|
|
540
|
+
end
|
|
541
|
+
|
|
542
|
+
context "when the value is an array of object ids" do
|
|
543
|
+
|
|
544
|
+
let(:other_id) do
|
|
545
|
+
Moped::BSON::ObjectId.new
|
|
546
|
+
end
|
|
547
|
+
|
|
548
|
+
let(:hash) do
|
|
549
|
+
{ id: [ object_id, other_id ] }
|
|
550
|
+
end
|
|
551
|
+
|
|
552
|
+
let(:mongoized) do
|
|
553
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
554
|
+
end
|
|
555
|
+
|
|
556
|
+
it "returns the hash" do
|
|
557
|
+
mongoized.should eq(hash)
|
|
558
|
+
end
|
|
559
|
+
end
|
|
560
|
+
|
|
561
|
+
context "when the value is a string" do
|
|
562
|
+
|
|
563
|
+
let(:hash) do
|
|
564
|
+
{ id: object_id.to_s }
|
|
565
|
+
end
|
|
566
|
+
|
|
567
|
+
let(:mongoized) do
|
|
568
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
569
|
+
end
|
|
570
|
+
|
|
571
|
+
it "returns the hash with mongoized value" do
|
|
572
|
+
mongoized.should eq({ id: object_id })
|
|
573
|
+
end
|
|
574
|
+
end
|
|
575
|
+
|
|
576
|
+
context "when the value is an array of strings" do
|
|
577
|
+
|
|
578
|
+
let(:other_id) do
|
|
579
|
+
Moped::BSON::ObjectId.new
|
|
580
|
+
end
|
|
581
|
+
|
|
582
|
+
let(:hash) do
|
|
583
|
+
{ id: [ object_id.to_s, other_id.to_s ] }
|
|
584
|
+
end
|
|
585
|
+
|
|
586
|
+
let(:mongoized) do
|
|
587
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
588
|
+
end
|
|
589
|
+
|
|
590
|
+
it "returns the hash with mongoized values" do
|
|
591
|
+
mongoized.should eq({ id: [ object_id, other_id ] })
|
|
592
|
+
end
|
|
593
|
+
end
|
|
594
|
+
end
|
|
595
|
+
|
|
596
|
+
context "when the hash key is not an id" do
|
|
597
|
+
|
|
598
|
+
context "when the value is a string" do
|
|
599
|
+
|
|
600
|
+
let(:hash) do
|
|
601
|
+
{ key: composite_key }
|
|
602
|
+
end
|
|
603
|
+
|
|
604
|
+
let(:mongoized) do
|
|
605
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
606
|
+
end
|
|
607
|
+
|
|
608
|
+
it "returns the hash" do
|
|
609
|
+
mongoized.should eq(hash)
|
|
610
|
+
end
|
|
611
|
+
end
|
|
612
|
+
|
|
613
|
+
context "when the value is an array of strings" do
|
|
614
|
+
|
|
615
|
+
let(:hash) do
|
|
616
|
+
{ key: [ composite_key ] }
|
|
617
|
+
end
|
|
618
|
+
|
|
619
|
+
let(:mongoized) do
|
|
620
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
621
|
+
end
|
|
622
|
+
|
|
623
|
+
it "returns the hash" do
|
|
624
|
+
mongoized.should eq(hash)
|
|
625
|
+
end
|
|
626
|
+
end
|
|
627
|
+
end
|
|
628
|
+
end
|
|
629
|
+
end
|
|
630
|
+
end
|
|
631
|
+
|
|
632
|
+
describe ".mongoize" do
|
|
633
|
+
|
|
634
|
+
context "when the class is using object ids" do
|
|
635
|
+
|
|
636
|
+
context "when provided a single object id" do
|
|
637
|
+
|
|
638
|
+
let(:mongoized) do
|
|
639
|
+
Moped::BSON::ObjectId.mongoize(object_id)
|
|
640
|
+
end
|
|
641
|
+
|
|
642
|
+
it "returns the object id" do
|
|
643
|
+
mongoized.should eq(object_id)
|
|
644
|
+
end
|
|
645
|
+
end
|
|
646
|
+
|
|
647
|
+
context "when provided an array of object ids" do
|
|
648
|
+
|
|
649
|
+
let(:other_id) do
|
|
650
|
+
Moped::BSON::ObjectId.new
|
|
651
|
+
end
|
|
652
|
+
|
|
653
|
+
let(:mongoized) do
|
|
654
|
+
Moped::BSON::ObjectId.mongoize([ object_id, other_id ])
|
|
655
|
+
end
|
|
656
|
+
|
|
657
|
+
it "returns the array of object ids" do
|
|
658
|
+
mongoized.should eq([ object_id, other_id ])
|
|
659
|
+
end
|
|
660
|
+
end
|
|
661
|
+
|
|
662
|
+
context "when provided a single string" do
|
|
663
|
+
|
|
664
|
+
context "when the string is a valid object id" do
|
|
665
|
+
|
|
666
|
+
let(:mongoized) do
|
|
667
|
+
Moped::BSON::ObjectId.mongoize(object_id.to_s)
|
|
668
|
+
end
|
|
669
|
+
|
|
670
|
+
it "mongoizes to an object id" do
|
|
671
|
+
mongoized.should eq(object_id)
|
|
672
|
+
end
|
|
673
|
+
end
|
|
674
|
+
|
|
675
|
+
context "when the string is not a valid object id" do
|
|
676
|
+
|
|
677
|
+
it "returns the key" do
|
|
678
|
+
Moped::BSON::ObjectId.mongoize(composite_key).should eq(
|
|
679
|
+
composite_key
|
|
680
|
+
)
|
|
681
|
+
end
|
|
682
|
+
end
|
|
683
|
+
|
|
684
|
+
context "when the string is empty" do
|
|
685
|
+
|
|
686
|
+
let(:mongoized) do
|
|
687
|
+
Moped::BSON::ObjectId.mongoize("")
|
|
688
|
+
end
|
|
689
|
+
|
|
690
|
+
it "mongoizes to nil" do
|
|
691
|
+
mongoized.should be_nil
|
|
692
|
+
end
|
|
693
|
+
end
|
|
694
|
+
end
|
|
695
|
+
|
|
696
|
+
context "when provided an array" do
|
|
697
|
+
|
|
698
|
+
context "when array key of nils" do
|
|
699
|
+
|
|
700
|
+
let(:mongoized) do
|
|
701
|
+
Moped::BSON::ObjectId.mongoize([ nil, nil ])
|
|
702
|
+
end
|
|
703
|
+
|
|
704
|
+
it "returns an empty array" do
|
|
705
|
+
mongoized.should be_empty
|
|
706
|
+
end
|
|
707
|
+
end
|
|
708
|
+
|
|
709
|
+
context "when the array key is empty strings" do
|
|
710
|
+
|
|
711
|
+
let(:mongoized) do
|
|
712
|
+
Moped::BSON::ObjectId.mongoize([ "", "" ])
|
|
713
|
+
end
|
|
714
|
+
|
|
715
|
+
it "returns an empty array" do
|
|
716
|
+
mongoized.should be_empty
|
|
717
|
+
end
|
|
718
|
+
end
|
|
719
|
+
|
|
720
|
+
context "when the array key is full of strings" do
|
|
721
|
+
|
|
722
|
+
context "when the strings are valid object ids" do
|
|
723
|
+
|
|
724
|
+
let(:other_id) do
|
|
725
|
+
Moped::BSON::ObjectId.new
|
|
726
|
+
end
|
|
727
|
+
|
|
728
|
+
let(:mongoized) do
|
|
729
|
+
Moped::BSON::ObjectId.mongoize([ object_id.to_s, other_id.to_s ])
|
|
730
|
+
end
|
|
731
|
+
|
|
732
|
+
it "mongoizes to an array of object ids" do
|
|
733
|
+
mongoized.should eq([ object_id, other_id ])
|
|
734
|
+
end
|
|
735
|
+
end
|
|
736
|
+
|
|
737
|
+
context "when the strings are not valid object ids" do
|
|
738
|
+
|
|
739
|
+
let(:other_key) do
|
|
740
|
+
"hawaii-five-o"
|
|
741
|
+
end
|
|
742
|
+
|
|
743
|
+
let(:mongoized) do
|
|
744
|
+
Moped::BSON::ObjectId.mongoize([ composite_key, other_key ])
|
|
745
|
+
end
|
|
746
|
+
|
|
747
|
+
it "returns the key" do
|
|
748
|
+
Moped::BSON::ObjectId.mongoize(composite_key).should eq(
|
|
749
|
+
composite_key
|
|
750
|
+
)
|
|
751
|
+
end
|
|
752
|
+
end
|
|
753
|
+
end
|
|
754
|
+
end
|
|
755
|
+
|
|
756
|
+
context "when provided a hash" do
|
|
757
|
+
|
|
758
|
+
context "when the hash key is _id" do
|
|
759
|
+
|
|
760
|
+
context "when the value is an object id" do
|
|
761
|
+
|
|
762
|
+
let(:hash) do
|
|
763
|
+
{ _id: object_id }
|
|
764
|
+
end
|
|
765
|
+
|
|
766
|
+
let(:mongoized) do
|
|
767
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
768
|
+
end
|
|
769
|
+
|
|
770
|
+
it "returns the hash" do
|
|
771
|
+
mongoized.should eq(hash)
|
|
772
|
+
end
|
|
773
|
+
end
|
|
774
|
+
|
|
775
|
+
context "when the value is an array of object ids" do
|
|
776
|
+
|
|
777
|
+
let(:other_id) do
|
|
778
|
+
Moped::BSON::ObjectId.new
|
|
779
|
+
end
|
|
780
|
+
|
|
781
|
+
let(:hash) do
|
|
782
|
+
{ _id: [ object_id, other_id ] }
|
|
783
|
+
end
|
|
784
|
+
|
|
785
|
+
let(:mongoized) do
|
|
786
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
787
|
+
end
|
|
788
|
+
|
|
789
|
+
it "returns the hash" do
|
|
790
|
+
mongoized.should eq(hash)
|
|
791
|
+
end
|
|
792
|
+
end
|
|
793
|
+
|
|
794
|
+
context "when the value is a string" do
|
|
795
|
+
|
|
796
|
+
let(:hash) do
|
|
797
|
+
{ _id: object_id.to_s }
|
|
798
|
+
end
|
|
799
|
+
|
|
800
|
+
let(:mongoized) do
|
|
801
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
802
|
+
end
|
|
803
|
+
|
|
804
|
+
it "returns the hash with mongoized value" do
|
|
805
|
+
mongoized.should eq({ _id: object_id })
|
|
806
|
+
end
|
|
807
|
+
end
|
|
808
|
+
|
|
809
|
+
context "when the value is an array of strings" do
|
|
810
|
+
|
|
811
|
+
let(:other_id) do
|
|
812
|
+
Moped::BSON::ObjectId.new
|
|
813
|
+
end
|
|
814
|
+
|
|
815
|
+
let(:hash) do
|
|
816
|
+
{ _id: [ object_id.to_s, other_id.to_s ] }
|
|
817
|
+
end
|
|
818
|
+
|
|
819
|
+
let(:mongoized) do
|
|
820
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
821
|
+
end
|
|
822
|
+
|
|
823
|
+
it "returns the hash with mongoized values" do
|
|
824
|
+
mongoized.should eq({ _id: [ object_id, other_id ] })
|
|
825
|
+
end
|
|
826
|
+
end
|
|
827
|
+
end
|
|
828
|
+
|
|
829
|
+
context "when the hash key is id" do
|
|
830
|
+
|
|
831
|
+
context "when the value is an object id" do
|
|
832
|
+
|
|
833
|
+
let(:hash) do
|
|
834
|
+
{ id: object_id }
|
|
835
|
+
end
|
|
836
|
+
|
|
837
|
+
let(:mongoized) do
|
|
838
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
839
|
+
end
|
|
840
|
+
|
|
841
|
+
it "returns the hash" do
|
|
842
|
+
mongoized.should eq(hash)
|
|
843
|
+
end
|
|
844
|
+
end
|
|
845
|
+
|
|
846
|
+
context "when the value is an array of object ids" do
|
|
847
|
+
|
|
848
|
+
let(:other_id) do
|
|
849
|
+
Moped::BSON::ObjectId.new
|
|
850
|
+
end
|
|
851
|
+
|
|
852
|
+
let(:hash) do
|
|
853
|
+
{ id: [ object_id, other_id ] }
|
|
854
|
+
end
|
|
855
|
+
|
|
856
|
+
let(:mongoized) do
|
|
857
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
858
|
+
end
|
|
859
|
+
|
|
860
|
+
it "returns the hash" do
|
|
861
|
+
mongoized.should eq(hash)
|
|
862
|
+
end
|
|
863
|
+
end
|
|
864
|
+
|
|
865
|
+
context "when the value is a string" do
|
|
866
|
+
|
|
867
|
+
let(:hash) do
|
|
868
|
+
{ id: object_id.to_s }
|
|
869
|
+
end
|
|
870
|
+
|
|
871
|
+
let(:mongoized) do
|
|
872
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
873
|
+
end
|
|
874
|
+
|
|
875
|
+
it "returns the hash with mongoized value" do
|
|
876
|
+
mongoized.should eq({ id: object_id })
|
|
877
|
+
end
|
|
878
|
+
end
|
|
879
|
+
|
|
880
|
+
context "when the value is an array of strings" do
|
|
881
|
+
|
|
882
|
+
let(:other_id) do
|
|
883
|
+
Moped::BSON::ObjectId.new
|
|
884
|
+
end
|
|
885
|
+
|
|
886
|
+
let(:hash) do
|
|
887
|
+
{ id: [ object_id.to_s, other_id.to_s ] }
|
|
888
|
+
end
|
|
889
|
+
|
|
890
|
+
let(:mongoized) do
|
|
891
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
892
|
+
end
|
|
893
|
+
|
|
894
|
+
it "returns the hash with mongoized values" do
|
|
895
|
+
mongoized.should eq({ id: [ object_id, other_id ] })
|
|
896
|
+
end
|
|
897
|
+
end
|
|
898
|
+
end
|
|
899
|
+
|
|
900
|
+
context "when the hash key is not an id" do
|
|
901
|
+
|
|
902
|
+
context "when the value is a string" do
|
|
903
|
+
|
|
904
|
+
let(:hash) do
|
|
905
|
+
{ key: composite_key }
|
|
906
|
+
end
|
|
907
|
+
|
|
908
|
+
let(:mongoized) do
|
|
909
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
910
|
+
end
|
|
911
|
+
|
|
912
|
+
it "returns the hash" do
|
|
913
|
+
mongoized.should eq(hash)
|
|
914
|
+
end
|
|
915
|
+
end
|
|
916
|
+
|
|
917
|
+
context "when the value is an array of strings" do
|
|
918
|
+
|
|
919
|
+
let(:hash) do
|
|
920
|
+
{ key: [ composite_key ] }
|
|
921
|
+
end
|
|
922
|
+
|
|
923
|
+
let(:mongoized) do
|
|
924
|
+
Moped::BSON::ObjectId.mongoize(hash)
|
|
925
|
+
end
|
|
926
|
+
|
|
927
|
+
it "returns the hash" do
|
|
928
|
+
mongoized.should eq(hash)
|
|
929
|
+
end
|
|
930
|
+
end
|
|
931
|
+
end
|
|
932
|
+
end
|
|
933
|
+
end
|
|
934
|
+
end
|
|
935
|
+
|
|
936
|
+
describe "#__mongoize_object_id__" do
|
|
937
|
+
|
|
938
|
+
it "returns self" do
|
|
939
|
+
object_id.__mongoize_object_id__.should eq(object_id)
|
|
940
|
+
end
|
|
941
|
+
|
|
942
|
+
it "returns the same instance" do
|
|
943
|
+
object_id.__mongoize_object_id__.should equal(object_id)
|
|
944
|
+
end
|
|
945
|
+
end
|
|
946
|
+
end
|