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,51 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Timestamps::Created::Short do
|
|
4
|
+
|
|
5
|
+
describe ".included" do
|
|
6
|
+
|
|
7
|
+
let(:quiz) do
|
|
8
|
+
ShortQuiz.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:fields) do
|
|
12
|
+
ShortQuiz.fields
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
before do
|
|
16
|
+
quiz.run_callbacks(:create)
|
|
17
|
+
quiz.run_callbacks(:save)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "adds c_at to the document" do
|
|
21
|
+
fields["c_at"].should_not be_nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "does not add u_at to the document" do
|
|
25
|
+
fields["u_at"].should be_nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "does not add the created_at to the document" do
|
|
29
|
+
fields["created_at"].should be_nil
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "forces the c_at timestamps to UTC" do
|
|
33
|
+
quiz.created_at.should be_within(10).of(Time.now.utc)
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "when the document is created" do
|
|
38
|
+
|
|
39
|
+
let(:quiz) do
|
|
40
|
+
ShortQuiz.create
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it "runs the created callbacks" do
|
|
44
|
+
quiz.created_at.should be_within(10).of(Time.now.utc)
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
it "allows access via the raw field" do
|
|
48
|
+
quiz.c_at.should eq(quiz.created_at)
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Timestamps::Created do
|
|
4
|
+
|
|
5
|
+
describe ".included" do
|
|
6
|
+
|
|
7
|
+
let(:quiz) do
|
|
8
|
+
Quiz.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:fields) do
|
|
12
|
+
Quiz.fields
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
before do
|
|
16
|
+
quiz.run_callbacks(:create)
|
|
17
|
+
quiz.run_callbacks(:save)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "adds created_at to the document" do
|
|
21
|
+
fields["created_at"].should_not be_nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "does not add updated_at to the document" do
|
|
25
|
+
fields["updated_at"].should be_nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "forces the created_at timestamps to UTC" do
|
|
29
|
+
quiz.created_at.should be_within(10).of(Time.now.utc)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
context "when the document is created" do
|
|
34
|
+
|
|
35
|
+
let(:quiz) do
|
|
36
|
+
Quiz.create
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
it "runs the created callbacks" do
|
|
40
|
+
quiz.created_at.should_not be_nil
|
|
41
|
+
quiz.created_at.should be_within(10).of(Time.now.utc)
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
end
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Timestamps::Timeless do
|
|
4
|
+
|
|
5
|
+
describe "#timeless" do
|
|
6
|
+
|
|
7
|
+
before(:all) do
|
|
8
|
+
class Chicken
|
|
9
|
+
include Mongoid::Document
|
|
10
|
+
include Mongoid::Timestamps
|
|
11
|
+
|
|
12
|
+
before_save :lay_timeless_egg
|
|
13
|
+
|
|
14
|
+
def lay_timeless_egg
|
|
15
|
+
Egg.timeless.create!
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
class Egg
|
|
20
|
+
include Mongoid::Document
|
|
21
|
+
include Mongoid::Timestamps
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
after(:all) do
|
|
26
|
+
Object.send(:remove_const, :Chicken)
|
|
27
|
+
Object.send(:remove_const, :Egg)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
context "when others persist in the scope of the chain" do
|
|
31
|
+
|
|
32
|
+
context "when the root executes normally" do
|
|
33
|
+
|
|
34
|
+
let!(:chicken) do
|
|
35
|
+
Chicken.create!
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it "creates the parent with a timestamp" do
|
|
39
|
+
expect(chicken.created_at).to_not be_nil
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it "creates the child with no timestamp" do
|
|
43
|
+
expect(Egg.last.created_at).to be_nil
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
context "when the root executes timeless" do
|
|
48
|
+
|
|
49
|
+
let!(:chicken) do
|
|
50
|
+
Chicken.timeless.create!
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "creates the parent with a timestamp" do
|
|
54
|
+
expect(chicken.created_at).to be_nil
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "creates the child with no timestamp" do
|
|
58
|
+
expect(Egg.last.created_at).to be_nil
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context "when used as a proxy method" do
|
|
64
|
+
|
|
65
|
+
context "when used on the document instance" do
|
|
66
|
+
|
|
67
|
+
let(:document) do
|
|
68
|
+
Dokument.new
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
before do
|
|
72
|
+
document.timeless.save
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
it "does not set the created timestamp" do
|
|
76
|
+
document.created_at.should be_nil
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
it "does not set the updated timestamp" do
|
|
80
|
+
document.updated_at.should be_nil
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
it "clears out the timeless option after save" do
|
|
84
|
+
expect(document).to be_timestamping
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
context "when subsequently persisting" do
|
|
88
|
+
|
|
89
|
+
before do
|
|
90
|
+
document.update_attribute(:title, "Sir")
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
it "sets the updated timestamp" do
|
|
94
|
+
document.updated_at.should_not be_nil
|
|
95
|
+
end
|
|
96
|
+
end
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
context "when used on the class" do
|
|
100
|
+
|
|
101
|
+
let!(:document) do
|
|
102
|
+
Dokument.timeless.create
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
it "does not set the created timestamp" do
|
|
106
|
+
document.created_at.should be_nil
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
it "does not set the updated timestamp" do
|
|
110
|
+
document.updated_at.should be_nil
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
it "clears out the timeless option after save" do
|
|
114
|
+
expect(document).to be_timestamping
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
context "when subsequently persisting" do
|
|
118
|
+
|
|
119
|
+
before do
|
|
120
|
+
document.update_attribute(:title, "Sir")
|
|
121
|
+
end
|
|
122
|
+
|
|
123
|
+
it "sets the updated timestamp" do
|
|
124
|
+
document.updated_at.should_not be_nil
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Timestamps::Updated::Short do
|
|
4
|
+
|
|
5
|
+
describe ".included" do
|
|
6
|
+
|
|
7
|
+
let(:agent) do
|
|
8
|
+
ShortAgent.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:fields) do
|
|
12
|
+
ShortAgent.fields
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
before do
|
|
16
|
+
agent.run_callbacks(:create)
|
|
17
|
+
agent.run_callbacks(:save)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "does not add c_at to the document" do
|
|
21
|
+
fields["c_at"].should be_nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "adds u_at to the document" do
|
|
25
|
+
fields["u_at"].should_not be_nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "does not add the long updated_at" do
|
|
29
|
+
fields["updated_at"].should be_nil
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "forces the updated_at timestamps to UTC" do
|
|
33
|
+
agent.updated_at.should be_within(10).of(Time.now.utc)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "aliases the raw field" do
|
|
37
|
+
agent.u_at.should eq(agent.updated_at)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
context "when the document is new" do
|
|
42
|
+
|
|
43
|
+
context "when providing the timestamp" do
|
|
44
|
+
|
|
45
|
+
let(:time) do
|
|
46
|
+
Time.new(2012, 1, 1)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
let(:doc) do
|
|
50
|
+
ShortAgent.create(updated_at: time)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "does not override it with the default" do
|
|
54
|
+
doc.updated_at.should eq(time)
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
it "does not persist an auto value" do
|
|
58
|
+
doc.reload.updated_at.should eq(time)
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
context "when the document has not changed" do
|
|
64
|
+
|
|
65
|
+
let(:agent) do
|
|
66
|
+
ShortAgent.instantiate("_id" => Moped::BSON::ObjectId.new, "account_ids" => [])
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
before do
|
|
70
|
+
agent.new_record = false
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
it "does not run the update callbacks" do
|
|
74
|
+
agent.should_receive(:updated_at=).never
|
|
75
|
+
agent.save
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
context "when the document is created" do
|
|
80
|
+
|
|
81
|
+
let(:agent) do
|
|
82
|
+
ShortAgent.create
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
it "runs the update callbacks" do
|
|
86
|
+
agent.updated_at.should_not be_nil
|
|
87
|
+
agent.updated_at.should be_within(10).of(Time.now.utc)
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Timestamps::Updated do
|
|
4
|
+
|
|
5
|
+
describe ".included" do
|
|
6
|
+
|
|
7
|
+
let(:agent) do
|
|
8
|
+
Agent.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:fields) do
|
|
12
|
+
Agent.fields
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
before do
|
|
16
|
+
agent.run_callbacks(:create)
|
|
17
|
+
agent.run_callbacks(:save)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "does not add created_at to the document" do
|
|
21
|
+
fields["created_at"].should be_nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "adds updated_at to the document" do
|
|
25
|
+
fields["updated_at"].should_not be_nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "forces the updated_at timestamps to UTC" do
|
|
29
|
+
agent.updated_at.should be_within(10).of(Time.now.utc)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "includes a record_timestamps class_accessor to ease AR compatibility" do
|
|
33
|
+
Agent.should.respond_to? :record_timestamps
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
context "when the document is new" do
|
|
38
|
+
|
|
39
|
+
context "when providing the timestamp" do
|
|
40
|
+
|
|
41
|
+
let(:time) do
|
|
42
|
+
Time.new(2012, 1, 1)
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
let(:doc) do
|
|
46
|
+
Dokument.create(updated_at: time)
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
it "does not override it with the default" do
|
|
50
|
+
doc.updated_at.should eq(time)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it "does not persist an auto value" do
|
|
54
|
+
doc.reload.updated_at.should eq(time)
|
|
55
|
+
end
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
context "when the document has not changed" do
|
|
60
|
+
|
|
61
|
+
let(:agent) do
|
|
62
|
+
Agent.instantiate("_id" => Moped::BSON::ObjectId.new, "account_ids" => [])
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
before do
|
|
66
|
+
agent.new_record = false
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
it "does not run the update callbacks" do
|
|
70
|
+
agent.should_receive(:updated_at=).never
|
|
71
|
+
agent.save
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
context "when the document is created" do
|
|
76
|
+
|
|
77
|
+
let(:agent) do
|
|
78
|
+
Agent.create
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it "runs the update callbacks" do
|
|
82
|
+
agent.updated_at.should_not be_nil
|
|
83
|
+
agent.updated_at.should be_within(10).of(Time.now.utc)
|
|
84
|
+
end
|
|
85
|
+
end
|
|
86
|
+
end
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
require "spec_helper"
|
|
2
|
+
|
|
3
|
+
describe Mongoid::Timestamps do
|
|
4
|
+
|
|
5
|
+
describe ".included" do
|
|
6
|
+
|
|
7
|
+
let(:document) do
|
|
8
|
+
Dokument.new
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
let(:fields) do
|
|
12
|
+
Dokument.fields
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
before do
|
|
16
|
+
document.run_callbacks(:create)
|
|
17
|
+
document.run_callbacks(:save)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
it "adds created_at to the document" do
|
|
21
|
+
fields["created_at"].should_not be_nil
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it "adds updated_at to the document" do
|
|
25
|
+
fields["updated_at"].should_not be_nil
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it "forces the created_at timestamps to UTC" do
|
|
29
|
+
document.created_at.should be_within(10).of(Time.now.utc)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it "forces the updated_at timestamps to UTC" do
|
|
33
|
+
document.updated_at.should be_within(10).of(Time.now.utc)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
it "ensures created_at equals updated_at on new records" do
|
|
37
|
+
document.updated_at.should eq(document.created_at)
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
it "includes a record_timestamps class_accessor to ease AR compatibility" do
|
|
41
|
+
Dokument.should.respond_to? :record_timestamps
|
|
42
|
+
end
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
context "when the document has not changed" do
|
|
46
|
+
|
|
47
|
+
let(:document) do
|
|
48
|
+
Dokument.instantiate(Dokument.new.attributes)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
before do
|
|
52
|
+
document.new_record = false
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
it "does not run the update callbacks" do
|
|
56
|
+
document.should_receive(:updated_at=).never
|
|
57
|
+
document.save
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
context "when the document has changed with updated_at specified" do
|
|
62
|
+
|
|
63
|
+
let(:document) do
|
|
64
|
+
Dokument.new(created_at: Time.now.utc)
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
before do
|
|
68
|
+
document.new_record = false
|
|
69
|
+
document.updated_at = DateTime.parse("2001-06-12")
|
|
70
|
+
end
|
|
71
|
+
|
|
72
|
+
it "does not set updated at" do
|
|
73
|
+
document.should_receive(:updated_at=).never
|
|
74
|
+
document.save
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
context "when the document is created" do
|
|
79
|
+
|
|
80
|
+
let!(:document) do
|
|
81
|
+
Dokument.create
|
|
82
|
+
end
|
|
83
|
+
|
|
84
|
+
it "runs the update callbacks" do
|
|
85
|
+
document.updated_at.should eq(document.created_at)
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
context "when only embedded documents have changed" do
|
|
90
|
+
|
|
91
|
+
let!(:document) do
|
|
92
|
+
Dokument.create(updated_at: 2.days.ago)
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
let!(:address) do
|
|
96
|
+
document.addresses.create(street: "Karl Marx Strasse")
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
let!(:updated_at) do
|
|
100
|
+
document.updated_at
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
before do
|
|
104
|
+
address.number = 1
|
|
105
|
+
document.save
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
it "updates the root document updated at" do
|
|
109
|
+
document.updated_at.should be_within(1).of(Time.now)
|
|
110
|
+
end
|
|
111
|
+
end
|
|
112
|
+
end
|