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,262 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Persistence::Atomic::AddToSet do
|
|
4
|
+
|
|
5
|
+
describe "#persist" do
|
|
6
|
+
|
|
7
|
+
context "when the document is new" do
|
|
8
|
+
|
|
9
|
+
let(:person) do
|
|
10
|
+
Person.new
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
context "when adding a single value" do
|
|
14
|
+
|
|
15
|
+
let!(:added) do
|
|
16
|
+
person.add_to_set(:aliases, "Bond")
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
it "adds the value onto the array" do
|
|
20
|
+
person.aliases.should eq([ "Bond" ])
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
it "does not reset the dirty flagging" do
|
|
24
|
+
person.changes["aliases"].should eq([nil, ["Bond"]])
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it "returns the new array value" do
|
|
28
|
+
added.should eq([ "Bond" ])
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context "when adding multiple values" do
|
|
33
|
+
|
|
34
|
+
let!(:added) do
|
|
35
|
+
person.add_to_set(:aliases, [ "Bond", "James" ])
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "adds the value onto the array" do
|
|
39
|
+
person.aliases.should eq([ "Bond", "James" ])
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "does not reset the dirty flagging" do
|
|
43
|
+
person.changes["aliases"].should eq([nil, ["Bond", "James"]])
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "returns the new array value" do
|
|
47
|
+
added.should eq([ "Bond", "James" ])
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
context "when the field exists" do
|
|
53
|
+
|
|
54
|
+
context "when the value is unique" do
|
|
55
|
+
|
|
56
|
+
let(:person) do
|
|
57
|
+
Person.create(aliases: [ "007" ])
|
|
58
|
+
end
|
|
59
|
+
|
|
60
|
+
context "when adding a single value" do
|
|
61
|
+
|
|
62
|
+
let!(:added) do
|
|
63
|
+
person.add_to_set(:aliases, "Bond")
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
let(:reloaded) do
|
|
67
|
+
person.reload
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
it "adds the value onto the array" do
|
|
71
|
+
person.aliases.should eq([ "007", "Bond" ])
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
it "persists the data" do
|
|
75
|
+
reloaded.aliases.should eq([ "007", "Bond" ])
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
it "removes the field from the dirty attributes" do
|
|
79
|
+
person.changes["aliases"].should be_nil
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
it "resets the document dirty flag" do
|
|
83
|
+
person.should_not be_changed
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it "returns the new array value" do
|
|
87
|
+
added.should eq([ "007", "Bond" ])
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
context "when adding a multiple values" do
|
|
92
|
+
|
|
93
|
+
let!(:added) do
|
|
94
|
+
person.add_to_set(:aliases, [ "Bond", "James" ])
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
let(:reloaded) do
|
|
98
|
+
person.reload
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it "adds the value onto the array" do
|
|
102
|
+
person.aliases.should eq([ "007", "Bond", "James" ])
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "persists the data" do
|
|
106
|
+
reloaded.aliases.should eq([ "007", "Bond", "James" ])
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "removes the field from the dirty attributes" do
|
|
110
|
+
person.changes["aliases"].should be_nil
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "resets the document dirty flag" do
|
|
114
|
+
person.should_not be_changed
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it "returns the new array value" do
|
|
118
|
+
added.should eq([ "007", "Bond", "James" ])
|
|
119
|
+
end
|
|
120
|
+
end
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
context "when the value is not unique" do
|
|
124
|
+
|
|
125
|
+
let(:person) do
|
|
126
|
+
Person.create(aliases: [ "Bond" ])
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
context "when adding a single value" do
|
|
130
|
+
|
|
131
|
+
let!(:added) do
|
|
132
|
+
person.add_to_set(:aliases, "Bond")
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
let(:reloaded) do
|
|
136
|
+
person.reload
|
|
137
|
+
end
|
|
138
|
+
|
|
139
|
+
it "does not add the value" do
|
|
140
|
+
person.aliases.should eq([ "Bond" ])
|
|
141
|
+
end
|
|
142
|
+
|
|
143
|
+
it "persists the data" do
|
|
144
|
+
reloaded.aliases.should eq([ "Bond" ])
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
it "removes the field from the dirty attributes" do
|
|
148
|
+
person.changes["aliases"].should be_nil
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
it "resets the document dirty flag" do
|
|
152
|
+
person.should_not be_changed
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
it "returns the array value" do
|
|
156
|
+
added.should eq([ "Bond" ])
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
context "when adding multiple values" do
|
|
161
|
+
|
|
162
|
+
let!(:added) do
|
|
163
|
+
person.add_to_set(:aliases, [ "Bond", "James" ])
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
let(:reloaded) do
|
|
167
|
+
person.reload
|
|
168
|
+
end
|
|
169
|
+
|
|
170
|
+
it "does not add the duplicate value" do
|
|
171
|
+
person.aliases.should eq([ "Bond", "James" ])
|
|
172
|
+
end
|
|
173
|
+
|
|
174
|
+
it "persists the data" do
|
|
175
|
+
reloaded.aliases.should eq([ "Bond", "James" ])
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
it "removes the field from the dirty attributes" do
|
|
179
|
+
person.changes["aliases"].should be_nil
|
|
180
|
+
end
|
|
181
|
+
|
|
182
|
+
it "resets the document dirty flag" do
|
|
183
|
+
person.should_not be_changed
|
|
184
|
+
end
|
|
185
|
+
|
|
186
|
+
it "returns the array value" do
|
|
187
|
+
added.should eq([ "Bond", "James" ])
|
|
188
|
+
end
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
context "when the field does not exist" do
|
|
194
|
+
|
|
195
|
+
let(:person) do
|
|
196
|
+
Person.create
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
context "when adding a single value" do
|
|
200
|
+
|
|
201
|
+
let!(:added) do
|
|
202
|
+
person.add_to_set(:aliases, "Bond")
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
let(:reloaded) do
|
|
206
|
+
person.reload
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
it "adds the value onto the array" do
|
|
210
|
+
person.aliases.should eq([ "Bond" ])
|
|
211
|
+
end
|
|
212
|
+
|
|
213
|
+
it "persists the data" do
|
|
214
|
+
reloaded.aliases.should eq([ "Bond" ])
|
|
215
|
+
end
|
|
216
|
+
|
|
217
|
+
it "removes the field from the dirty attributes" do
|
|
218
|
+
person.changes["aliases"].should be_nil
|
|
219
|
+
end
|
|
220
|
+
|
|
221
|
+
it "resets the document dirty flag" do
|
|
222
|
+
person.should_not be_changed
|
|
223
|
+
end
|
|
224
|
+
|
|
225
|
+
it "returns the new array value" do
|
|
226
|
+
added.should eq([ "Bond" ])
|
|
227
|
+
end
|
|
228
|
+
end
|
|
229
|
+
|
|
230
|
+
context "when adding multiple values" do
|
|
231
|
+
|
|
232
|
+
let!(:added) do
|
|
233
|
+
person.add_to_set(:aliases, [ "Bond", "James" ])
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
let(:reloaded) do
|
|
237
|
+
person.reload
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
it "adds the value onto the array" do
|
|
241
|
+
person.aliases.should eq([ "Bond", "James" ])
|
|
242
|
+
end
|
|
243
|
+
|
|
244
|
+
it "persists the data" do
|
|
245
|
+
reloaded.aliases.should eq([ "Bond", "James" ])
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
it "removes the field from the dirty attributes" do
|
|
249
|
+
person.changes["aliases"].should be_nil
|
|
250
|
+
end
|
|
251
|
+
|
|
252
|
+
it "resets the document dirty flag" do
|
|
253
|
+
person.should_not be_changed
|
|
254
|
+
end
|
|
255
|
+
|
|
256
|
+
it "returns the new array value" do
|
|
257
|
+
added.should eq([ "Bond", "James" ])
|
|
258
|
+
end
|
|
259
|
+
end
|
|
260
|
+
end
|
|
261
|
+
end
|
|
262
|
+
end
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Persistence::Atomic::Bit do
|
|
4
|
+
|
|
5
|
+
describe "#bit" do
|
|
6
|
+
|
|
7
|
+
let(:person) do
|
|
8
|
+
Person.create(age: 60)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:reloaded) do
|
|
12
|
+
person.reload
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "when performing a bitwise and" do
|
|
16
|
+
|
|
17
|
+
let!(:bit) do
|
|
18
|
+
person.bit(:age, { and: 13 })
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "performs the bitwise operation" do
|
|
22
|
+
person.age.should eq(12)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "returns the new value" do
|
|
26
|
+
bit.should eq(12)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "persists the changes" do
|
|
30
|
+
reloaded.age.should eq(12)
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
it "resets the dirty attributes" do
|
|
34
|
+
person.changes["age"].should be_nil
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
context "when performing a bitwise or" do
|
|
39
|
+
|
|
40
|
+
let!(:bit) do
|
|
41
|
+
person.bit(:age, { or: 13 })
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
it "performs the bitwise operation" do
|
|
45
|
+
person.age.should eq(61)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it "returns the new value" do
|
|
49
|
+
bit.should eq(61)
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
it "persists the changes" do
|
|
53
|
+
reloaded.age.should eq(61)
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
it "resets the dirty attributes" do
|
|
57
|
+
person.changes["age"].should be_nil
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
context "when chaining bitwise operations" do
|
|
62
|
+
|
|
63
|
+
let(:hash) do
|
|
64
|
+
{ and: 13, or: 10 }
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
let!(:bit) do
|
|
68
|
+
person.bit(:age, hash)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it "performs the bitwise operation" do
|
|
72
|
+
person.age.should eq(14)
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "returns the new value" do
|
|
76
|
+
bit.should eq(14)
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "persists the changes" do
|
|
80
|
+
reloaded.age.should eq(14)
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "resets the dirty attributes" do
|
|
84
|
+
person.changes["age"].should be_nil
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
@@ -0,0 +1,133 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Persistence::Atomic::Inc do
|
|
4
|
+
|
|
5
|
+
describe "#inc" do
|
|
6
|
+
|
|
7
|
+
let(:person) do
|
|
8
|
+
Person.create(age: 100)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:reloaded) do
|
|
12
|
+
person.reload
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
context "when incrementing a field on an embedded document" do
|
|
16
|
+
|
|
17
|
+
let(:address) do
|
|
18
|
+
person.addresses.create(street: "Tauentzienstr", number: 5)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
let!(:inced) do
|
|
22
|
+
address.inc(:number, 5)
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
it "increments the provided value" do
|
|
26
|
+
inced.should eq(10)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
it "persists the change" do
|
|
30
|
+
reloaded.addresses.first.number.should eq(10)
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
context "when incrementing a field with a value" do
|
|
35
|
+
|
|
36
|
+
context "when provided an integer" do
|
|
37
|
+
|
|
38
|
+
let!(:inced) do
|
|
39
|
+
person.inc(:age, 2)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "increments by the provided value" do
|
|
43
|
+
person.age.should eq(102)
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
it "returns the new value" do
|
|
47
|
+
inced.should eq(102)
|
|
48
|
+
end
|
|
49
|
+
|
|
50
|
+
it "persists the changes" do
|
|
51
|
+
reloaded.age.should eq(102)
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
it "keeps the field as an integer" do
|
|
55
|
+
inced.should be_a(Integer)
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it "resets the dirty attributes" do
|
|
59
|
+
person.changes["age"].should be_nil
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context "when provided a big decimal" do
|
|
64
|
+
|
|
65
|
+
let!(:inced) do
|
|
66
|
+
person.inc(:blood_alcohol_content, BigDecimal.new("2.2"))
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "increments by the provided value" do
|
|
70
|
+
person.blood_alcohol_content.should eq(2.2)
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "returns the new value" do
|
|
74
|
+
inced.should eq(2.2)
|
|
75
|
+
end
|
|
76
|
+
|
|
77
|
+
it "persists the changes" do
|
|
78
|
+
reloaded.blood_alcohol_content.should eq(2.2)
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "resets the dirty attributes" do
|
|
82
|
+
person.changes["blood_alcohol_content"].should be_nil
|
|
83
|
+
end
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
context "when incrementing a nil field" do
|
|
88
|
+
|
|
89
|
+
let!(:inced) do
|
|
90
|
+
person.inc(:score, 2)
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "sets the value to the provided number" do
|
|
94
|
+
person.score.should eq(2)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it "returns the new value" do
|
|
98
|
+
inced.should eq(2)
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
it "persists the changes" do
|
|
102
|
+
reloaded.score.should eq(2)
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "resets the dirty attributes" do
|
|
106
|
+
person.changes["score"].should be_nil
|
|
107
|
+
end
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
context "when incrementing a non existant field" do
|
|
111
|
+
|
|
112
|
+
let!(:inced) do
|
|
113
|
+
person.inc(:high_score, 5)
|
|
114
|
+
end
|
|
115
|
+
|
|
116
|
+
it "sets the value to the provided number" do
|
|
117
|
+
person.high_score.should eq(5)
|
|
118
|
+
end
|
|
119
|
+
|
|
120
|
+
it "returns the new value" do
|
|
121
|
+
inced.should eq(5)
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
it "persists the changes" do
|
|
125
|
+
reloaded.high_score.should eq(5)
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
it "resets the dirty attributes" do
|
|
129
|
+
person.changes["high_score"].should be_nil
|
|
130
|
+
end
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
end
|