mongoid 7.1.8 → 7.2.3
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
- checksums.yaml.gz.sig +1 -3
- data.tar.gz.sig +0 -0
- data/README.md +9 -2
- data/lib/config/locales/en.yml +37 -1
- data/lib/mongoid.rb +23 -0
- data/lib/mongoid/association/depending.rb +1 -6
- data/lib/mongoid/association/many.rb +3 -3
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +36 -1
- data/lib/mongoid/association/referenced/has_many/proxy.rb +8 -1
- data/lib/mongoid/association/referenced/has_one/buildable.rb +9 -1
- data/lib/mongoid/atomic/modifiers.rb +1 -1
- data/lib/mongoid/attributes/dynamic.rb +1 -1
- data/lib/mongoid/clients/factory.rb +17 -0
- data/lib/mongoid/composable.rb +1 -0
- data/lib/mongoid/config.rb +3 -0
- data/lib/mongoid/contextual/mongo.rb +23 -4
- data/lib/mongoid/copyable.rb +7 -3
- data/lib/mongoid/criteria.rb +57 -7
- data/lib/mongoid/criteria/queryable/key.rb +1 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +2 -2
- data/lib/mongoid/criteria/queryable/selectable.rb +21 -6
- data/lib/mongoid/criteria/queryable/selector.rb +3 -3
- data/lib/mongoid/criteria/queryable/storable.rb +3 -3
- data/lib/mongoid/document.rb +15 -3
- data/lib/mongoid/errors.rb +7 -0
- data/lib/mongoid/errors/invalid_discriminator_key_target.rb +25 -0
- data/lib/mongoid/errors/invalid_elem_match_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_estimated_count_criteria.rb +26 -0
- data/lib/mongoid/errors/invalid_expression_operator.rb +28 -0
- data/lib/mongoid/errors/invalid_field_operator.rb +33 -0
- data/lib/mongoid/errors/invalid_query.rb +41 -0
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +27 -10
- data/lib/mongoid/fields.rb +3 -0
- data/lib/mongoid/fields/validators/macro.rb +22 -9
- data/lib/mongoid/findable.rb +50 -14
- data/lib/mongoid/indexable.rb +2 -2
- data/lib/mongoid/matchable.rb +1 -149
- data/lib/mongoid/matcher.rb +103 -0
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/elem_match.rb +36 -0
- data/lib/mongoid/matcher/elem_match_expression.rb +20 -0
- data/lib/mongoid/matcher/eq.rb +11 -0
- data/lib/mongoid/matcher/eq_impl.rb +32 -0
- data/lib/mongoid/matcher/eq_impl_with_regexp.rb +21 -0
- data/lib/mongoid/matcher/exists.rb +15 -0
- data/lib/mongoid/matcher/expression.rb +31 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +62 -0
- data/lib/mongoid/matcher/field_operator.rb +48 -0
- data/lib/mongoid/matcher/gt.rb +17 -0
- data/lib/mongoid/matcher/gte.rb +17 -0
- data/lib/mongoid/matcher/in.rb +25 -0
- data/lib/mongoid/matcher/lt.rb +17 -0
- data/lib/mongoid/matcher/lte.rb +17 -0
- data/lib/mongoid/matcher/ne.rb +16 -0
- data/lib/mongoid/matcher/nin.rb +11 -0
- data/lib/mongoid/matcher/nor.rb +25 -0
- data/lib/mongoid/matcher/not.rb +29 -0
- data/lib/mongoid/matcher/or.rb +21 -0
- data/lib/mongoid/matcher/regex.rb +41 -0
- data/lib/mongoid/matcher/size.rb +26 -0
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/query_cache.rb +64 -62
- data/lib/mongoid/reloadable.rb +2 -2
- data/lib/mongoid/serializable.rb +1 -1
- data/lib/mongoid/stringified_symbol.rb +53 -0
- data/lib/mongoid/traversable.rb +111 -4
- data/lib/mongoid/version.rb +1 -1
- data/spec/README.md +19 -4
- data/spec/integration/associations/embedded_spec.rb +94 -0
- data/spec/integration/associations/has_many_spec.rb +67 -14
- data/spec/integration/associations/has_one_spec.rb +67 -14
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
- data/spec/integration/atomic/modifiers_spec.rb +117 -0
- data/spec/integration/discriminator_key_spec.rb +354 -0
- data/spec/integration/discriminator_value_spec.rb +207 -0
- data/spec/integration/{matchable_spec.rb → matcher_examples_spec.rb} +120 -41
- data/spec/integration/matcher_operator_data/all.yml +140 -0
- data/spec/integration/matcher_operator_data/and.yml +93 -0
- data/spec/integration/matcher_operator_data/elem_match.yml +409 -0
- data/spec/integration/matcher_operator_data/elem_match_expr.yml +213 -0
- data/spec/integration/matcher_operator_data/eq.yml +191 -0
- data/spec/integration/matcher_operator_data/exists.yml +213 -0
- data/spec/integration/matcher_operator_data/generic_op.yml +17 -0
- data/spec/integration/matcher_operator_data/gt.yml +132 -0
- data/spec/integration/matcher_operator_data/gt_types.yml +63 -0
- data/spec/integration/matcher_operator_data/gte.yml +132 -0
- data/spec/integration/matcher_operator_data/gte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/implicit.yml +331 -0
- data/spec/integration/matcher_operator_data/implicit_traversal.yml +112 -0
- data/spec/integration/matcher_operator_data/in.yml +194 -0
- data/spec/integration/matcher_operator_data/invalid_op.yml +59 -0
- data/spec/integration/matcher_operator_data/invalid_syntax.yml +39 -0
- data/spec/integration/matcher_operator_data/lt.yml +132 -0
- data/spec/integration/matcher_operator_data/lt_types.yml +15 -0
- data/spec/integration/matcher_operator_data/lte.yml +132 -0
- data/spec/integration/matcher_operator_data/lte_types.yml +15 -0
- data/spec/integration/matcher_operator_data/multiple.yml +29 -0
- data/spec/integration/matcher_operator_data/ne.yml +150 -0
- data/spec/integration/matcher_operator_data/ne_types.yml +15 -0
- data/spec/integration/matcher_operator_data/nin.yml +114 -0
- data/spec/integration/matcher_operator_data/nor.yml +126 -0
- data/spec/integration/matcher_operator_data/not.yml +196 -0
- data/spec/integration/matcher_operator_data/or.yml +137 -0
- data/spec/integration/matcher_operator_data/regex.yml +174 -0
- data/spec/integration/matcher_operator_data/regex_options.yml +72 -0
- data/spec/integration/matcher_operator_data/size.yml +174 -0
- data/spec/integration/matcher_operator_spec.rb +100 -0
- data/spec/integration/matcher_spec.rb +189 -0
- data/spec/integration/server_query_spec.rb +142 -0
- data/spec/integration/stringified_symbol_field_spec.rb +190 -0
- data/spec/mongoid/association/depending_spec.rb +78 -26
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +33 -0
- data/spec/mongoid/association/embedded/embeds_many_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +460 -186
- data/spec/mongoid/association/referenced/has_many_models.rb +21 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +21 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +47 -0
- data/spec/mongoid/atomic_spec.rb +23 -0
- data/spec/mongoid/attributes/nested_spec.rb +1 -1
- data/spec/mongoid/clients/factory_spec.rb +37 -0
- data/spec/mongoid/clients/sessions_spec.rb +1 -6
- data/spec/mongoid/config_spec.rb +28 -0
- data/spec/mongoid/contextual/mongo_spec.rb +70 -16
- data/spec/mongoid/copyable_spec.rb +197 -18
- data/spec/mongoid/copyable_spec_models.rb +28 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
- data/spec/mongoid/criteria_spec.rb +204 -39
- data/spec/mongoid/document_fields_spec.rb +26 -0
- data/spec/mongoid/document_spec.rb +89 -15
- data/spec/mongoid/equality_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
- data/spec/mongoid/extensions/stringified_symbol_spec.rb +85 -0
- data/spec/mongoid/factory_spec.rb +261 -28
- data/spec/mongoid/fields_spec.rb +48 -2
- data/spec/mongoid/findable_spec.rb +32 -0
- data/spec/mongoid/indexable_spec.rb +28 -2
- data/spec/mongoid/inspectable_spec.rb +29 -2
- data/spec/mongoid/interceptable_spec.rb +2 -2
- data/spec/mongoid/matcher/extract_attribute_data/numeric_keys.yml +104 -0
- data/spec/mongoid/matcher/extract_attribute_data/traversal.yml +239 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +37 -0
- data/spec/mongoid/persistable/creatable_spec.rb +108 -25
- data/spec/mongoid/persistable/deletable_spec.rb +86 -0
- data/spec/mongoid/persistable/savable_spec.rb +174 -16
- data/spec/mongoid/query_cache_middleware_spec.rb +16 -3
- data/spec/mongoid/query_cache_spec.rb +442 -41
- data/spec/mongoid/reloadable_spec.rb +72 -0
- data/spec/mongoid/serializable_spec.rb +21 -3
- data/spec/mongoid/traversable_spec.rb +1100 -0
- data/spec/spec_helper.rb +2 -2
- data/spec/support/constraints.rb +24 -0
- data/spec/support/helpers.rb +1 -1
- data/spec/{app → support}/models/account.rb +0 -0
- data/spec/{app → support}/models/acolyte.rb +0 -0
- data/spec/{app → support}/models/actor.rb +1 -1
- data/spec/{app → support}/models/actress.rb +0 -0
- data/spec/{app → support}/models/address.rb +0 -0
- data/spec/{app → support}/models/address_component.rb +0 -0
- data/spec/{app → support}/models/address_number.rb +0 -0
- data/spec/{app → support}/models/agency.rb +0 -0
- data/spec/{app → support}/models/agent.rb +0 -0
- data/spec/{app → support}/models/album.rb +0 -0
- data/spec/{app → support}/models/alert.rb +0 -0
- data/spec/{app → support}/models/animal.rb +0 -0
- data/spec/{app → support}/models/answer.rb +0 -0
- data/spec/{app → support}/models/appointment.rb +0 -0
- data/spec/support/models/armrest.rb +10 -0
- data/spec/{app → support}/models/array_field.rb +0 -0
- data/spec/{app → support}/models/article.rb +0 -0
- data/spec/{app → support}/models/artist.rb +0 -0
- data/spec/{app → support}/models/artwork.rb +0 -0
- data/spec/{app → support}/models/audio.rb +0 -0
- data/spec/{app → support}/models/augmentation.rb +0 -0
- data/spec/{app → support}/models/author.rb +0 -0
- data/spec/{app → support}/models/baby.rb +0 -0
- data/spec/{app → support}/models/band.rb +0 -0
- data/spec/{app → support}/models/bar.rb +0 -0
- data/spec/{app → support}/models/basic.rb +0 -0
- data/spec/{app → support}/models/bed.rb +0 -0
- data/spec/{app → support}/models/big_palette.rb +0 -0
- data/spec/{app → support}/models/birthday.rb +0 -0
- data/spec/{app → support}/models/bomb.rb +0 -0
- data/spec/{app → support}/models/book.rb +0 -0
- data/spec/{app → support}/models/breed.rb +0 -0
- data/spec/{app → support}/models/browser.rb +1 -1
- data/spec/{app → support}/models/building.rb +0 -0
- data/spec/{app → support}/models/building_address.rb +0 -0
- data/spec/{app → support}/models/bus.rb +0 -0
- data/spec/{app → support}/models/business.rb +0 -0
- data/spec/{app → support}/models/callback_test.rb +0 -0
- data/spec/{app → support}/models/canvas.rb +1 -1
- data/spec/{app → support}/models/car.rb +0 -0
- data/spec/{app → support}/models/cat.rb +0 -0
- data/spec/{app → support}/models/category.rb +0 -0
- data/spec/{app → support}/models/child.rb +0 -0
- data/spec/{app → support}/models/child_doc.rb +0 -0
- data/spec/{app → support}/models/church.rb +0 -0
- data/spec/{app → support}/models/circle.rb +0 -0
- data/spec/{app → support}/models/circuit.rb +0 -0
- data/spec/{app → support}/models/circus.rb +0 -0
- data/spec/{app → support}/models/code.rb +0 -0
- data/spec/{app → support}/models/coding.rb +1 -1
- data/spec/{app → support}/models/coding/pull_request.rb +0 -0
- data/spec/{app → support}/models/comment.rb +0 -0
- data/spec/{app → support}/models/company.rb +0 -0
- data/spec/{app → support}/models/consumption_period.rb +0 -0
- data/spec/{app → support}/models/contextable_item.rb +0 -0
- data/spec/{app → support}/models/contractor.rb +0 -0
- data/spec/{app → support}/models/cookie.rb +0 -0
- data/spec/{app → support}/models/country_code.rb +0 -0
- data/spec/{app → support}/models/courier_job.rb +0 -0
- data/spec/support/models/crate.rb +13 -0
- data/spec/{app → support}/models/customer.rb +0 -0
- data/spec/{app → support}/models/customer_address.rb +0 -0
- data/spec/support/models/deed.rb +8 -0
- data/spec/{app → support}/models/definition.rb +0 -0
- data/spec/{app → support}/models/delegating_patient.rb +0 -0
- data/spec/{app → support}/models/description.rb +0 -0
- data/spec/{app → support}/models/dictionary.rb +0 -0
- data/spec/{app → support}/models/division.rb +0 -0
- data/spec/{app → support}/models/doctor.rb +0 -0
- data/spec/{app → support}/models/dog.rb +0 -0
- data/spec/{app → support}/models/dokument.rb +0 -0
- data/spec/{app → support}/models/draft.rb +0 -0
- data/spec/{app → support}/models/dragon.rb +0 -0
- data/spec/{app → support}/models/driver.rb +1 -1
- data/spec/{app → support}/models/drug.rb +0 -0
- data/spec/{app → support}/models/dungeon.rb +0 -0
- data/spec/{app → support}/models/edit.rb +0 -0
- data/spec/{app → support}/models/email.rb +0 -0
- data/spec/{app → support}/models/employer.rb +0 -0
- data/spec/{app → support}/models/entry.rb +0 -0
- data/spec/{app → support}/models/eraser.rb +0 -0
- data/spec/{app → support}/models/even.rb +0 -0
- data/spec/{app → support}/models/event.rb +0 -0
- data/spec/{app → support}/models/exhibition.rb +0 -0
- data/spec/{app → support}/models/exhibitor.rb +0 -0
- data/spec/{app → support}/models/explosion.rb +0 -0
- data/spec/{app → support}/models/eye.rb +0 -0
- data/spec/{app → support}/models/eye_bowl.rb +0 -0
- data/spec/{app → support}/models/face.rb +0 -0
- data/spec/{app → support}/models/favorite.rb +0 -0
- data/spec/{app → support}/models/filesystem.rb +0 -0
- data/spec/{app → support}/models/fire_hydrant.rb +0 -0
- data/spec/{app → support}/models/firefox.rb +0 -0
- data/spec/{app → support}/models/fish.rb +0 -0
- data/spec/{app → support}/models/folder.rb +0 -0
- data/spec/{app → support}/models/folder_item.rb +0 -0
- data/spec/{app → support}/models/fruits.rb +0 -0
- data/spec/{app → support}/models/game.rb +0 -0
- data/spec/{app → support}/models/ghost.rb +0 -0
- data/spec/support/models/guitar.rb +5 -0
- data/spec/{app → support}/models/home.rb +0 -0
- data/spec/{app → support}/models/house.rb +0 -0
- data/spec/{app → support}/models/html_writer.rb +0 -0
- data/spec/{app → support}/models/id_key.rb +0 -0
- data/spec/support/models/idnodef.rb +8 -0
- data/spec/{app → support}/models/image.rb +0 -0
- data/spec/{app → support}/models/implant.rb +0 -0
- data/spec/support/models/instrument.rb +9 -0
- data/spec/{app → support}/models/item.rb +1 -1
- data/spec/{app → support}/models/jar.rb +0 -0
- data/spec/{app → support}/models/kaleidoscope.rb +0 -0
- data/spec/{app → support}/models/kangaroo.rb +0 -0
- data/spec/{app → support}/models/label.rb +0 -0
- data/spec/{app → support}/models/language.rb +0 -0
- data/spec/{app → support}/models/lat_lng.rb +0 -0
- data/spec/{app → support}/models/league.rb +0 -0
- data/spec/{app → support}/models/learner.rb +0 -0
- data/spec/{app → support}/models/line_item.rb +0 -0
- data/spec/{app → support}/models/location.rb +0 -0
- data/spec/{app → support}/models/login.rb +0 -0
- data/spec/{app → support}/models/manufacturer.rb +0 -0
- data/spec/{app → support}/models/meat.rb +0 -0
- data/spec/{app → support}/models/membership.rb +0 -0
- data/spec/{app → support}/models/message.rb +0 -0
- data/spec/{app → support}/models/minim.rb +0 -0
- data/spec/{app → support}/models/mixed_drink.rb +0 -0
- data/spec/support/models/mop.rb +26 -0
- data/spec/{app → support}/models/movie.rb +0 -0
- data/spec/{app → support}/models/my_hash.rb +0 -0
- data/spec/{app → support}/models/name.rb +0 -0
- data/spec/{app → support}/models/name_only.rb +0 -0
- data/spec/{app → support}/models/node.rb +0 -0
- data/spec/{app → support}/models/note.rb +0 -0
- data/spec/{app → support}/models/odd.rb +0 -0
- data/spec/support/models/order.rb +11 -0
- data/spec/{app → support}/models/ordered_post.rb +0 -0
- data/spec/{app → support}/models/ordered_preference.rb +0 -0
- data/spec/{app → support}/models/oscar.rb +0 -0
- data/spec/{app → support}/models/other_owner_object.rb +0 -0
- data/spec/{app → support}/models/override.rb +0 -0
- data/spec/{app → support}/models/ownable.rb +0 -0
- data/spec/{app → support}/models/owner.rb +2 -0
- data/spec/{app → support}/models/pack.rb +0 -0
- data/spec/{app → support}/models/page.rb +0 -0
- data/spec/{app → support}/models/page_question.rb +0 -0
- data/spec/{app → support}/models/palette.rb +1 -1
- data/spec/{app → support}/models/parent.rb +0 -0
- data/spec/{app → support}/models/parent_doc.rb +0 -0
- data/spec/{app → support}/models/passport.rb +0 -0
- data/spec/{app → support}/models/patient.rb +0 -0
- data/spec/{app → support}/models/pdf_writer.rb +0 -0
- data/spec/{app → support}/models/pencil.rb +0 -0
- data/spec/{app → support}/models/person.rb +1 -1
- data/spec/{app → support}/models/pet.rb +0 -0
- data/spec/{app → support}/models/pet_owner.rb +0 -0
- data/spec/{app → support}/models/phone.rb +0 -0
- data/spec/support/models/piano.rb +5 -0
- data/spec/{app → support}/models/pizza.rb +0 -0
- data/spec/{app → support}/models/player.rb +0 -0
- data/spec/{app → support}/models/post.rb +0 -0
- data/spec/{app → support}/models/post_genre.rb +0 -0
- data/spec/{app → support}/models/powerup.rb +0 -0
- data/spec/{app → support}/models/preference.rb +0 -0
- data/spec/{app → support}/models/princess.rb +0 -0
- data/spec/{app → support}/models/product.rb +0 -0
- data/spec/support/models/profile.rb +18 -0
- data/spec/{app → support}/models/pronunciation.rb +0 -0
- data/spec/{app → support}/models/pub.rb +0 -0
- data/spec/support/models/publication.rb +5 -0
- data/spec/{app → support}/models/publication/encyclopedia.rb +0 -0
- data/spec/{app → support}/models/publication/review.rb +0 -0
- data/spec/{app → support}/models/purchase.rb +0 -0
- data/spec/{app → support}/models/question.rb +0 -0
- data/spec/{app → support}/models/quiz.rb +0 -0
- data/spec/{app → support}/models/rating.rb +0 -0
- data/spec/{app → support}/models/record.rb +0 -0
- data/spec/{app → support}/models/registry.rb +0 -0
- data/spec/{app → support}/models/role.rb +0 -0
- data/spec/{app → support}/models/root_category.rb +0 -0
- data/spec/{app → support}/models/sandwich.rb +0 -0
- data/spec/{app → support}/models/scheduler.rb +0 -0
- data/spec/{app/models/profile.rb → support/models/scribe.rb} +2 -2
- data/spec/support/models/seat.rb +25 -0
- data/spec/{app → support}/models/seo.rb +0 -0
- data/spec/{app → support}/models/series.rb +0 -0
- data/spec/{app → support}/models/server.rb +0 -0
- data/spec/{app → support}/models/service.rb +0 -0
- data/spec/{app → support}/models/shape.rb +2 -2
- data/spec/{app → support}/models/shelf.rb +0 -0
- data/spec/{app → support}/models/shipment_address.rb +0 -0
- data/spec/{app → support}/models/shipping_container.rb +0 -0
- data/spec/{app → support}/models/shipping_pack.rb +0 -0
- data/spec/{app → support}/models/shop.rb +0 -0
- data/spec/{app → support}/models/short_agent.rb +0 -0
- data/spec/{app → support}/models/short_quiz.rb +0 -0
- data/spec/{app → support}/models/simple.rb +0 -0
- data/spec/{app → support}/models/slave.rb +0 -0
- data/spec/{app → support}/models/song.rb +0 -0
- data/spec/{app → support}/models/sound.rb +0 -0
- data/spec/{app → support}/models/square.rb +0 -0
- data/spec/{app → support}/models/staff.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test1.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test2.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test3.rb +0 -0
- data/spec/{app → support}/models/store_as_dup_test4.rb +0 -0
- data/spec/{app → support}/models/strategy.rb +0 -0
- data/spec/{app → support}/models/sub_item.rb +0 -0
- data/spec/{app → support}/models/subscription.rb +0 -0
- data/spec/{app → support}/models/survey.rb +0 -0
- data/spec/{app → support}/models/symptom.rb +0 -0
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tag.rb +0 -0
- data/spec/{app → support}/models/target.rb +0 -0
- data/spec/{app → support}/models/template.rb +0 -0
- data/spec/{app → support}/models/thing.rb +0 -0
- data/spec/{app → support}/models/title.rb +0 -0
- data/spec/{app → support}/models/tool.rb +2 -2
- data/spec/{app → support}/models/topping.rb +0 -0
- data/spec/support/models/toy.rb +10 -0
- data/spec/{app → support}/models/track.rb +0 -0
- data/spec/{app → support}/models/translation.rb +0 -0
- data/spec/{app → support}/models/tree.rb +0 -0
- data/spec/{app → support}/models/truck.rb +2 -0
- data/spec/{app → support}/models/updatable.rb +0 -0
- data/spec/{app → support}/models/user.rb +0 -0
- data/spec/{app → support}/models/user_account.rb +0 -0
- data/spec/{app → support}/models/validation_callback.rb +0 -0
- data/spec/{app → support}/models/vehicle.rb +7 -2
- data/spec/{app → support}/models/version.rb +0 -0
- data/spec/{app → support}/models/vertex.rb +0 -0
- data/spec/{app → support}/models/vet_visit.rb +0 -0
- data/spec/{app → support}/models/video.rb +0 -0
- data/spec/{app → support}/models/video_game.rb +0 -0
- data/spec/{app → support}/models/weapon.rb +0 -0
- data/spec/{app → support}/models/wiki_page.rb +0 -0
- data/spec/{app → support}/models/word.rb +0 -0
- data/spec/{app → support}/models/word_origin.rb +0 -0
- data/spec/{app → support}/models/writer.rb +2 -2
- data/spec/support/spec_config.rb +1 -1
- metadata +617 -508
- metadata.gz.sig +3 -4
- data/lib/mongoid/matchable/all.rb +0 -30
- data/lib/mongoid/matchable/and.rb +0 -32
- data/lib/mongoid/matchable/default.rb +0 -121
- data/lib/mongoid/matchable/elem_match.rb +0 -36
- data/lib/mongoid/matchable/eq.rb +0 -23
- data/lib/mongoid/matchable/exists.rb +0 -25
- data/lib/mongoid/matchable/gt.rb +0 -25
- data/lib/mongoid/matchable/gte.rb +0 -25
- data/lib/mongoid/matchable/in.rb +0 -26
- data/lib/mongoid/matchable/lt.rb +0 -25
- data/lib/mongoid/matchable/lte.rb +0 -25
- data/lib/mongoid/matchable/ne.rb +0 -23
- data/lib/mongoid/matchable/nin.rb +0 -24
- data/lib/mongoid/matchable/nor.rb +0 -38
- data/lib/mongoid/matchable/or.rb +0 -35
- data/lib/mongoid/matchable/regexp.rb +0 -30
- data/lib/mongoid/matchable/size.rb +0 -23
- data/spec/app/models/publication.rb +0 -5
- data/spec/mongoid/matchable/all_spec.rb +0 -34
- data/spec/mongoid/matchable/and_spec.rb +0 -190
- data/spec/mongoid/matchable/default_spec.rb +0 -140
- data/spec/mongoid/matchable/elem_match_spec.rb +0 -109
- data/spec/mongoid/matchable/eq_spec.rb +0 -49
- data/spec/mongoid/matchable/exists_spec.rb +0 -60
- data/spec/mongoid/matchable/gt_spec.rb +0 -89
- data/spec/mongoid/matchable/gte_spec.rb +0 -87
- data/spec/mongoid/matchable/in_spec.rb +0 -52
- data/spec/mongoid/matchable/lt_spec.rb +0 -88
- data/spec/mongoid/matchable/lte_spec.rb +0 -88
- data/spec/mongoid/matchable/ne_spec.rb +0 -49
- data/spec/mongoid/matchable/nin_spec.rb +0 -51
- data/spec/mongoid/matchable/nor_spec.rb +0 -210
- data/spec/mongoid/matchable/or_spec.rb +0 -134
- data/spec/mongoid/matchable/regexp_spec.rb +0 -62
- data/spec/mongoid/matchable/size_spec.rb +0 -28
- data/spec/mongoid/matchable_spec.rb +0 -856
@@ -85,4 +85,30 @@ describe Mongoid::Document do
|
|
85
85
|
end
|
86
86
|
end
|
87
87
|
end
|
88
|
+
|
89
|
+
context 'Regexp field' do
|
90
|
+
shared_examples "persists strings as regexp" do |type|
|
91
|
+
it 'persists strings as regexp' do
|
92
|
+
mop = Mop.create!(regexp_field: 'foo')
|
93
|
+
expect(mop.regexp_field).to be_a Regexp
|
94
|
+
expect(Mop.find(mop.id).regexp_field).to be_a BSON::Regexp::Raw
|
95
|
+
expect(
|
96
|
+
Mop.collection.find(
|
97
|
+
"_id" => mop.id,
|
98
|
+
"regexp_field" => { "$type" => type }
|
99
|
+
).count
|
100
|
+
).to be == 1
|
101
|
+
end
|
102
|
+
end
|
103
|
+
|
104
|
+
context "< 3.2" do
|
105
|
+
max_server_version("3.1")
|
106
|
+
include_examples "persists strings as regexp", 11
|
107
|
+
end
|
108
|
+
|
109
|
+
context ">= 3.2" do
|
110
|
+
min_server_version("3.2")
|
111
|
+
it_behaves_like "persists strings as regexp", "regex"
|
112
|
+
end
|
113
|
+
end
|
88
114
|
end
|
@@ -116,7 +116,50 @@ describe Mongoid::Document do
|
|
116
116
|
end
|
117
117
|
|
118
118
|
it "should clear descendants' cache" do
|
119
|
-
expect(Person._types).to include(descendant.
|
119
|
+
expect(Person._types).to include(descendant.discriminator_value)
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
|
124
|
+
describe "._mongoid_clear_types" do
|
125
|
+
|
126
|
+
context "when changing the discriminator_value" do
|
127
|
+
|
128
|
+
before do
|
129
|
+
Kangaroo._types
|
130
|
+
Kangaroo.discriminator_value = "dvalue"
|
131
|
+
end
|
132
|
+
|
133
|
+
after do
|
134
|
+
Kangaroo.discriminator_value = nil
|
135
|
+
end
|
136
|
+
|
137
|
+
it "has the correct _types" do
|
138
|
+
expect(Kangaroo._types).to eq(["dvalue"])
|
139
|
+
end
|
140
|
+
end
|
141
|
+
|
142
|
+
context "when changing the discriminator_value in child" do
|
143
|
+
|
144
|
+
before do
|
145
|
+
Shape._types
|
146
|
+
Circle.discriminator_value = "dvalue"
|
147
|
+
end
|
148
|
+
|
149
|
+
after do
|
150
|
+
Circle.discriminator_value = nil
|
151
|
+
end
|
152
|
+
|
153
|
+
it "has the correct _types" do
|
154
|
+
expect(Circle._types).to eq(["dvalue"])
|
155
|
+
end
|
156
|
+
|
157
|
+
it "has the new Circle discriminator value" do
|
158
|
+
expect(Shape._types).to include("dvalue")
|
159
|
+
end
|
160
|
+
|
161
|
+
it "doesn't have the old Circle discriminator value" do
|
162
|
+
expect(Shape._types).to_not include("Cirlce")
|
120
163
|
end
|
121
164
|
end
|
122
165
|
end
|
@@ -881,27 +924,58 @@ describe Mongoid::Document do
|
|
881
924
|
end
|
882
925
|
|
883
926
|
context "when no embedded documents are present" do
|
927
|
+
context "when using the default discriminator key" do
|
928
|
+
let(:person) do
|
929
|
+
manager.becomes(Person)
|
930
|
+
end
|
884
931
|
|
885
|
-
|
886
|
-
|
887
|
-
|
932
|
+
it "copies attributes" do
|
933
|
+
expect(person.title).to eq('Sir')
|
934
|
+
end
|
888
935
|
|
889
|
-
|
890
|
-
|
891
|
-
|
936
|
+
it "keeps the same object id" do
|
937
|
+
expect(person.id).to eq(manager.id)
|
938
|
+
end
|
892
939
|
|
893
|
-
|
894
|
-
|
940
|
+
it "sets the class type" do
|
941
|
+
expect(person._type).to eq("Person")
|
942
|
+
end
|
943
|
+
|
944
|
+
it "raises an error when inappropriate class is provided" do
|
945
|
+
expect {
|
946
|
+
manager.becomes(String)
|
947
|
+
}.to raise_error(ArgumentError, /A class which includes Mongoid::Document is expected/)
|
948
|
+
end
|
895
949
|
end
|
896
950
|
|
897
|
-
|
898
|
-
|
951
|
+
context "when using a custom discriminator key" do
|
952
|
+
before do
|
953
|
+
Person.discriminator_key = "dkey"
|
954
|
+
end
|
955
|
+
|
956
|
+
after do
|
957
|
+
Person.discriminator_key = nil
|
958
|
+
end
|
959
|
+
|
960
|
+
it "sets the class type with new discriminator key" do
|
961
|
+
expect(person.dkey).to eq("Person")
|
962
|
+
end
|
899
963
|
end
|
900
964
|
|
901
|
-
|
902
|
-
|
903
|
-
|
904
|
-
|
965
|
+
context "when using a custom discriminator key and discriminator value" do
|
966
|
+
before do
|
967
|
+
Person.discriminator_key = "dkey"
|
968
|
+
Person.discriminator_value = "dvalue"
|
969
|
+
end
|
970
|
+
|
971
|
+
after do
|
972
|
+
Person.discriminator_key = nil
|
973
|
+
Person.discriminator_value = nil
|
974
|
+
end
|
975
|
+
|
976
|
+
it "sets the class type with new discriminator key" do
|
977
|
+
expect(person.dkey).to eq("dvalue")
|
978
|
+
end
|
905
979
|
end
|
906
980
|
end
|
907
981
|
|
@@ -19,7 +19,7 @@ describe Mongoid::Errors::DeleteRestriction do
|
|
19
19
|
|
20
20
|
it "contains the summary in the message" do
|
21
21
|
expect(error.message).to include(
|
22
|
-
"When defining 'drugs' with a :dependent => :
|
22
|
+
"When defining 'drugs' with a :dependent => :restrict_with_error,"
|
23
23
|
)
|
24
24
|
end
|
25
25
|
|
@@ -0,0 +1,85 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
# encoding: utf-8
|
3
|
+
|
4
|
+
require "spec_helper"
|
5
|
+
|
6
|
+
describe Mongoid::StringifiedSymbol do
|
7
|
+
|
8
|
+
describe ".demongoize" do
|
9
|
+
|
10
|
+
context "when the object is not a symbol" do
|
11
|
+
|
12
|
+
it "returns the symbol" do
|
13
|
+
expect(Mongoid::StringifiedSymbol.demongoize("test")).to eq(:test)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
context "when the object is a symbol" do
|
18
|
+
|
19
|
+
it "returns the symbol" do
|
20
|
+
expect(Mongoid::StringifiedSymbol.demongoize(:test)).to eq(:test)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
context "when the object is a BSON Symbol" do
|
25
|
+
|
26
|
+
it "returns a symbol" do
|
27
|
+
expect(Mongoid::StringifiedSymbol.demongoize(BSON::Symbol::Raw.new(:test))).to eq(:test)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
context "when the object is an integer" do
|
33
|
+
|
34
|
+
it "returns a symbol" do
|
35
|
+
expect(Mongoid::StringifiedSymbol.demongoize(14)).to eq(:"14")
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
context "when the object is nil" do
|
40
|
+
|
41
|
+
it "returns nil" do
|
42
|
+
expect(Mongoid::StringifiedSymbol.demongoize(nil)).to be_nil
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe ".mongoize" do
|
48
|
+
|
49
|
+
context "when the object is not a symbol" do
|
50
|
+
|
51
|
+
it "returns the object" do
|
52
|
+
expect(Mongoid::StringifiedSymbol.mongoize("test")).to eq("test")
|
53
|
+
end
|
54
|
+
|
55
|
+
it "returns the string" do
|
56
|
+
expect(Mongoid::StringifiedSymbol.mongoize([0,1,2])).to eq("[0, 1, 2]")
|
57
|
+
end
|
58
|
+
|
59
|
+
it "returns the string" do
|
60
|
+
expect(Mongoid::StringifiedSymbol.mongoize(2)).to eq("2")
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
context "when the object is a symbol" do
|
65
|
+
|
66
|
+
it "returns a string" do
|
67
|
+
expect(Mongoid::StringifiedSymbol.mongoize(:test)).to eq("test")
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
context "when the object is nil" do
|
72
|
+
|
73
|
+
it "returns nil" do
|
74
|
+
expect(Mongoid::StringifiedSymbol.mongoize(nil)).to be_nil
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
describe "#mongoize" do
|
80
|
+
|
81
|
+
it "returns self" do
|
82
|
+
expect(:test.mongoize).to eq(:test)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -78,28 +78,98 @@ describe Mongoid::Factory do
|
|
78
78
|
end
|
79
79
|
|
80
80
|
context "when type is not preset" do
|
81
|
+
context "when using the default discriminator key" do
|
82
|
+
let(:attributes) do
|
83
|
+
{ "title" => "Sir" }
|
84
|
+
end
|
81
85
|
|
82
|
-
|
83
|
-
|
84
|
-
|
86
|
+
let(:person) do
|
87
|
+
described_class.build(Person, attributes)
|
88
|
+
end
|
85
89
|
|
86
|
-
|
87
|
-
|
88
|
-
|
90
|
+
it "instantiates based on the provided class" do
|
91
|
+
expect(person.title).to eq("Sir")
|
92
|
+
end
|
89
93
|
|
90
|
-
|
91
|
-
|
94
|
+
context "when the type is a symbol" do
|
95
|
+
|
96
|
+
let(:person) do
|
97
|
+
described_class.build(Person, { :_type => "Doctor" })
|
98
|
+
end
|
99
|
+
|
100
|
+
it "instantiates the subclass" do
|
101
|
+
expect(person.class).to eq(Doctor)
|
102
|
+
end
|
103
|
+
end
|
92
104
|
end
|
93
|
-
end
|
94
105
|
|
95
|
-
|
106
|
+
context "when using a custom discriminator key" do
|
107
|
+
before do
|
108
|
+
Person.discriminator_key = "dkey"
|
109
|
+
end
|
96
110
|
|
97
|
-
|
98
|
-
|
111
|
+
after do
|
112
|
+
Person.discriminator_key = nil
|
113
|
+
end
|
114
|
+
|
115
|
+
let(:attributes) do
|
116
|
+
{ "title" => "Sir" }
|
117
|
+
end
|
118
|
+
|
119
|
+
let(:person) do
|
120
|
+
described_class.build(Person, attributes)
|
121
|
+
end
|
122
|
+
|
123
|
+
it "instantiates based on the provided class" do
|
124
|
+
expect(person.title).to eq("Sir")
|
125
|
+
end
|
126
|
+
|
127
|
+
context "when the type is a symbol" do
|
128
|
+
|
129
|
+
let(:person) do
|
130
|
+
described_class.build(Person, { :dkey => "Doctor" })
|
131
|
+
end
|
132
|
+
|
133
|
+
it "instantiates the subclass" do
|
134
|
+
expect(person.class).to eq(Doctor)
|
135
|
+
end
|
136
|
+
end
|
99
137
|
end
|
100
138
|
|
101
|
-
|
102
|
-
|
139
|
+
context "when using a custom discriminator key and value" do
|
140
|
+
before do
|
141
|
+
Person.discriminator_key = "dkey"
|
142
|
+
Doctor.discriminator_value = "dvalue"
|
143
|
+
end
|
144
|
+
|
145
|
+
after do
|
146
|
+
Person.discriminator_key = nil
|
147
|
+
Doctor.discriminator_value = nil
|
148
|
+
end
|
149
|
+
|
150
|
+
let(:attributes) do
|
151
|
+
{ "title" => "Sir", "dkey" => "dvalue" }
|
152
|
+
end
|
153
|
+
|
154
|
+
let(:doctor) do
|
155
|
+
described_class.build(Person, attributes)
|
156
|
+
end
|
157
|
+
|
158
|
+
it "instantiates based on the provided class" do
|
159
|
+
expect(doctor.title).to eq("Sir")
|
160
|
+
end
|
161
|
+
|
162
|
+
it "generates based on the provided class" do
|
163
|
+
expect(doctor).to be_a(Person)
|
164
|
+
end
|
165
|
+
|
166
|
+
it "sets the attributes" do
|
167
|
+
expect(doctor.title).to eq("Sir")
|
168
|
+
end
|
169
|
+
|
170
|
+
it "has the correct discriminator key/value" do
|
171
|
+
expect(doctor.dkey).to eq("dvalue")
|
172
|
+
end
|
103
173
|
end
|
104
174
|
end
|
105
175
|
end
|
@@ -109,15 +179,64 @@ describe Mongoid::Factory do
|
|
109
179
|
context "when the attributes are nil" do
|
110
180
|
|
111
181
|
let(:document) do
|
112
|
-
described_class.from_db(
|
182
|
+
described_class.from_db(model_cls, nil)
|
113
183
|
end
|
114
184
|
|
115
|
-
|
116
|
-
|
185
|
+
context 'when model class does not use inheritance' do
|
186
|
+
context 'when model overwrites _id field to not have a default' do
|
187
|
+
let(:model_cls) { Idnodef }
|
188
|
+
|
189
|
+
it "generates based on the provided class" do
|
190
|
+
expect(document).to be_a(model_cls)
|
191
|
+
end
|
192
|
+
|
193
|
+
it "sets the attributes to empty" do
|
194
|
+
expect(document.attributes).to be_empty
|
195
|
+
end
|
196
|
+
end
|
197
|
+
|
198
|
+
context 'with default _id auto-assignment behavior' do
|
199
|
+
let(:model_cls) { Agency }
|
200
|
+
|
201
|
+
it "generates based on the provided class" do
|
202
|
+
expect(document).to be_a(model_cls)
|
203
|
+
end
|
204
|
+
|
205
|
+
it "sets the attributes to generated _id only" do
|
206
|
+
document.attributes.should == {'_id' => document.id}
|
207
|
+
end
|
208
|
+
end
|
209
|
+
end
|
210
|
+
|
211
|
+
context 'when model class is an inheritance root' do
|
212
|
+
let(:model_cls) { Address }
|
213
|
+
|
214
|
+
before do
|
215
|
+
# Ensure a child is defined
|
216
|
+
ShipmentAddress.superclass.should be model_cls
|
217
|
+
end
|
218
|
+
|
219
|
+
it "generates based on the provided class" do
|
220
|
+
expect(document).to be_a(model_cls)
|
221
|
+
end
|
222
|
+
|
223
|
+
it "sets the attributes to _type only" do
|
224
|
+
# Note that Address provides the _id override.
|
225
|
+
document.attributes.should == {'_type' => 'Address'}
|
226
|
+
end
|
117
227
|
end
|
118
228
|
|
119
|
-
|
120
|
-
|
229
|
+
context 'when model class is an inheritance leaf' do
|
230
|
+
let(:model_cls) { ShipmentAddress }
|
231
|
+
|
232
|
+
it "generates based on the provided class" do
|
233
|
+
expect(document).to be_a(model_cls)
|
234
|
+
end
|
235
|
+
|
236
|
+
it "sets the attributes to empty" do
|
237
|
+
# Note that Address provides the _id override.
|
238
|
+
document.attributes.should == {'_type' => 'ShipmentAddress'}
|
239
|
+
end
|
121
240
|
end
|
122
241
|
end
|
123
242
|
|
@@ -179,20 +298,80 @@ describe Mongoid::Factory do
|
|
179
298
|
|
180
299
|
context "when a type is not in the attributes" do
|
181
300
|
|
182
|
-
|
183
|
-
|
184
|
-
|
301
|
+
context "when using the default discriminator key" do
|
302
|
+
let(:attributes) do
|
303
|
+
{ "title" => "Sir" }
|
304
|
+
end
|
185
305
|
|
186
|
-
|
187
|
-
|
306
|
+
let(:document) do
|
307
|
+
described_class.from_db(Person, attributes)
|
308
|
+
end
|
309
|
+
|
310
|
+
it "generates based on the provided class" do
|
311
|
+
expect(document).to be_a(Person)
|
312
|
+
end
|
313
|
+
|
314
|
+
it "sets the attributes" do
|
315
|
+
expect(document.title).to eq("Sir")
|
316
|
+
end
|
188
317
|
end
|
189
318
|
|
190
|
-
|
191
|
-
|
319
|
+
context "when using a custom discriminator key" do
|
320
|
+
before do
|
321
|
+
Person.discriminator_key = "dkey"
|
322
|
+
end
|
323
|
+
|
324
|
+
after do
|
325
|
+
Person.discriminator_key = nil
|
326
|
+
end
|
327
|
+
|
328
|
+
let(:attributes) do
|
329
|
+
{ "title" => "Sir" }
|
330
|
+
end
|
331
|
+
|
332
|
+
let(:document) do
|
333
|
+
described_class.from_db(Person, attributes)
|
334
|
+
end
|
335
|
+
|
336
|
+
it "generates based on the provided class" do
|
337
|
+
expect(document).to be_a(Person)
|
338
|
+
end
|
339
|
+
|
340
|
+
it "sets the attributes" do
|
341
|
+
expect(document.title).to eq("Sir")
|
342
|
+
end
|
192
343
|
end
|
193
344
|
|
194
|
-
|
195
|
-
|
345
|
+
context "when using a custom discriminator key and discriminator value" do
|
346
|
+
before do
|
347
|
+
Person.discriminator_key = "dkey"
|
348
|
+
Person.discriminator_value = "dvalue"
|
349
|
+
end
|
350
|
+
|
351
|
+
after do
|
352
|
+
Person.discriminator_key = nil
|
353
|
+
Person.discriminator_value = nil
|
354
|
+
end
|
355
|
+
|
356
|
+
let(:attributes) do
|
357
|
+
{ "title" => "Sir" }
|
358
|
+
end
|
359
|
+
|
360
|
+
let(:document) do
|
361
|
+
described_class.from_db(Person, attributes)
|
362
|
+
end
|
363
|
+
|
364
|
+
it "generates based on the provided class" do
|
365
|
+
expect(document).to be_a(Person)
|
366
|
+
end
|
367
|
+
|
368
|
+
it "sets the attributes" do
|
369
|
+
expect(document.title).to eq("Sir")
|
370
|
+
end
|
371
|
+
|
372
|
+
it "has the correct discriminator key/value" do
|
373
|
+
expect(document.dkey).to eq("dvalue")
|
374
|
+
end
|
196
375
|
end
|
197
376
|
end
|
198
377
|
|
@@ -211,7 +390,61 @@ describe Mongoid::Factory do
|
|
211
390
|
person
|
212
391
|
}.to raise_exception(Mongoid::Errors::UnknownModel)
|
213
392
|
end
|
393
|
+
end
|
394
|
+
|
395
|
+
context 'when type does not correspond to a Class name with custom discriminator key' do
|
396
|
+
|
397
|
+
before do
|
398
|
+
Person.discriminator_key = "dkey"
|
399
|
+
end
|
400
|
+
|
401
|
+
after do
|
402
|
+
Person.discriminator_key = nil
|
403
|
+
end
|
404
|
+
|
405
|
+
let(:attributes) do
|
406
|
+
{ "title" => "Sir", "dkey" => "invalid_class_name" }
|
407
|
+
end
|
408
|
+
|
409
|
+
let(:person) do
|
410
|
+
described_class.from_db(Person, attributes)
|
411
|
+
end
|
412
|
+
|
413
|
+
it 'raises a exception' do
|
414
|
+
expect {
|
415
|
+
person
|
416
|
+
}.to raise_exception(Mongoid::Errors::UnknownModel)
|
417
|
+
end
|
418
|
+
end
|
419
|
+
|
420
|
+
context 'when type does not correspond to a custom discriminator_value' do
|
421
|
+
before do
|
422
|
+
Person.discriminator_value = "dvalue"
|
423
|
+
end
|
424
|
+
|
425
|
+
after do
|
426
|
+
Person.discriminator_value = nil
|
427
|
+
end
|
214
428
|
|
429
|
+
let(:attributes) do
|
430
|
+
{ "title" => "Sir", "_type" => "dvalue" }
|
431
|
+
end
|
432
|
+
|
433
|
+
let(:person) do
|
434
|
+
described_class.from_db(Person, attributes)
|
435
|
+
end
|
436
|
+
|
437
|
+
it "generates based on the provided class" do
|
438
|
+
expect(person).to be_a(Person)
|
439
|
+
end
|
440
|
+
|
441
|
+
it "sets the attributes" do
|
442
|
+
expect(person.title).to eq("Sir")
|
443
|
+
end
|
444
|
+
|
445
|
+
it "has the correct discriminator key/value" do
|
446
|
+
expect(person._type).to eq("dvalue")
|
447
|
+
end
|
215
448
|
end
|
216
449
|
|
217
450
|
context 'when type is correct but the instantiation raises a NoMethodError' do
|