mongoid 7.1.5 → 7.2.1
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 +0 -0
- data.tar.gz.sig +0 -0
- data/README.md +9 -2
- data/Rakefile +33 -7
- 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/association/referenced/has_one/proxy.rb +6 -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 -7
- data/lib/mongoid/criteria/queryable/storable.rb +3 -3
- data/lib/mongoid/document.rb +18 -5
- 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/interceptable.rb +3 -1
- data/lib/mongoid/matchable.rb +1 -149
- data/lib/mongoid/matcher.rb +127 -0
- data/lib/mongoid/matcher/all.rb +22 -0
- data/lib/mongoid/matcher/and.rb +21 -0
- data/lib/mongoid/matcher/elem_match.rb +35 -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 +40 -0
- data/lib/mongoid/matcher/expression_operator.rb +19 -0
- data/lib/mongoid/matcher/field_expression.rb +63 -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/app_spec.rb +46 -13
- data/spec/integration/associations/embedded_spec.rb +94 -0
- data/spec/integration/associations/embeds_many_spec.rb +24 -0
- data/spec/integration/associations/embeds_one_spec.rb +24 -0
- data/spec/integration/associations/has_many_spec.rb +108 -13
- data/spec/integration/associations/has_one_spec.rb +108 -13
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
- data/spec/integration/atomic/modifiers_spec.rb +117 -0
- data/spec/integration/callbacks_models.rb +49 -0
- data/spec/integration/callbacks_spec.rb +216 -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 +363 -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 +16 -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/lite_spec_helper.rb +4 -3
- data/spec/mongoid/association/depending_spec.rb +78 -26
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +50 -0
- 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/paths_spec.rb +41 -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_logical_spec.rb +36 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
- data/spec/mongoid/criteria_spec.rb +204 -39
- 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/traversal.yml +259 -0
- data/spec/mongoid/matcher/extract_attribute_spec.rb +47 -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/shared/LICENSE +20 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +211 -0
- data/spec/shared/lib/mrss/constraints.rb +330 -0
- data/spec/shared/lib/mrss/docker_runner.rb +262 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +175 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +69 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +149 -0
- data/spec/shared/share/Dockerfile.erb +229 -0
- data/spec/shared/shlib/distro.sh +73 -0
- data/spec/shared/shlib/server.sh +270 -0
- data/spec/shared/shlib/set_env.sh +128 -0
- data/spec/spec_helper.rb +4 -2
- data/spec/support/constraints.rb +20 -222
- 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/support/models/customer.rb +11 -0
- data/spec/support/models/customer_address.rb +12 -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 +6 -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 +16 -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 +3 -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 +1 -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 +1 -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 +895 -755
- metadata.gz.sig +0 -0
- 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
- data/spec/support/child_process_helper.rb +0 -76
- data/spec/support/lite_constraints.rb +0 -22
metadata.gz.sig
CHANGED
Binary file
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Checks that all values match.
|
8
|
-
class All < Default
|
9
|
-
|
10
|
-
# Return true if the attribute and first value in the hash are equal.
|
11
|
-
#
|
12
|
-
# @example Do the values match?
|
13
|
-
# matcher._matches?({ :key => 10 })
|
14
|
-
#
|
15
|
-
# @param [ Hash ] condition The condition to evaluate. This must be
|
16
|
-
# a one-element hash like {'$gt' => 1}.
|
17
|
-
#
|
18
|
-
# @return [ true, false ] If the values match.
|
19
|
-
def _matches?(condition)
|
20
|
-
first = condition_value(condition)
|
21
|
-
return false if first.is_a?(Array) && first.empty?
|
22
|
-
|
23
|
-
attribute_array = Array.wrap(@attribute)
|
24
|
-
first.all? do |e|
|
25
|
-
attribute_array.any? { |_attribute| e === _attribute }
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Defines behavior for handling $and expressions in embedded documents.
|
8
|
-
class And < Default
|
9
|
-
|
10
|
-
# Does the supplied query match the attribute?
|
11
|
-
#
|
12
|
-
# @example Does this match?
|
13
|
-
# matcher._matches?([ { field => value } ])
|
14
|
-
#
|
15
|
-
# @param [ Array ] conditions The or expression.
|
16
|
-
#
|
17
|
-
# @return [ true, false ] True if matches, false if not.
|
18
|
-
#
|
19
|
-
# @since 2.3.0
|
20
|
-
def _matches?(conditions)
|
21
|
-
conditions.each do |condition|
|
22
|
-
condition.keys.each do |k|
|
23
|
-
key = k
|
24
|
-
value = condition[k]
|
25
|
-
return false unless document._matches?(key => value)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
true
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,121 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Contains all the default behavior for checking for matching documents
|
8
|
-
# given MongoDB expressions.
|
9
|
-
class Default
|
10
|
-
|
11
|
-
attr_accessor :attribute, :document
|
12
|
-
|
13
|
-
# Creating a new matcher only requires the value.
|
14
|
-
#
|
15
|
-
# @example Create a new matcher.
|
16
|
-
# Default.new("attribute")
|
17
|
-
#
|
18
|
-
# @param [ Object ] attribute The current attribute to check against.
|
19
|
-
#
|
20
|
-
# @since 1.0.0
|
21
|
-
def initialize(attribute, document = nil)
|
22
|
-
@attribute, @document = attribute, document
|
23
|
-
end
|
24
|
-
|
25
|
-
# Checks whether the attribute matches the value, using the default
|
26
|
-
# MongoDB matching logic (i.e., when no operator is specified in the
|
27
|
-
# criteria).
|
28
|
-
#
|
29
|
-
# If attribute and value are both of basic types like string or number,
|
30
|
-
# this method returns true if and only if the attribute equals the value.
|
31
|
-
#
|
32
|
-
# Value can also be of a type like Regexp or Range which defines
|
33
|
-
# more complex matching/inclusion behavior via the === operator.
|
34
|
-
# If so, and attribute is still of a basic type like string or number,
|
35
|
-
# this method returns true if and only if the value's === operator
|
36
|
-
# returns true for the attribute. For example, this method returns true
|
37
|
-
# if attribute is a string and value is a Regexp and attribute matches
|
38
|
-
# the value, of if attribute is a number and value is a Range and
|
39
|
-
# the value includes the attribute.
|
40
|
-
#
|
41
|
-
# If attribute is an array and value is not an array, the checks just
|
42
|
-
# described (i.e. the === operator invocation) are performed on each item
|
43
|
-
# of the attribute array. If any of the items in the attribute match
|
44
|
-
# the value according to the value type's === operator, this method
|
45
|
-
# returns true.
|
46
|
-
#
|
47
|
-
# If attribute and value are both arrays, this method returns true if and
|
48
|
-
# only if the arrays are equal (including the order of the elements).
|
49
|
-
#
|
50
|
-
# @param [ Object ] value The value to check.
|
51
|
-
#
|
52
|
-
# @return [ true, false ] True if attribute matches the value, false if not.
|
53
|
-
#
|
54
|
-
# @since 1.0.0
|
55
|
-
def _matches?(value)
|
56
|
-
if attribute.is_a?(Array) && !value.is_a?(Array)
|
57
|
-
attribute.any? { |_attribute| value === _attribute }
|
58
|
-
else
|
59
|
-
value === attribute
|
60
|
-
end
|
61
|
-
end
|
62
|
-
|
63
|
-
protected
|
64
|
-
|
65
|
-
# Given a condition, which is a one-element hash consisting of an
|
66
|
-
# operator and a value like {'$gt' => 1}, return the value.
|
67
|
-
#
|
68
|
-
# @example Get the condition value.
|
69
|
-
# matcher.condition_value({'$gt' => 1})
|
70
|
-
# # => 1
|
71
|
-
#
|
72
|
-
# @param [ Hash ] condition The condition.
|
73
|
-
#
|
74
|
-
# @return [ Object ] The value of the condition.
|
75
|
-
#
|
76
|
-
# @since 1.0.0
|
77
|
-
def condition_value(condition)
|
78
|
-
unless condition.is_a?(Hash)
|
79
|
-
raise ArgumentError, 'Condition must be a hash'
|
80
|
-
end
|
81
|
-
|
82
|
-
unless condition.length == 1
|
83
|
-
raise ArgumentError, 'Condition must have one element'
|
84
|
-
end
|
85
|
-
|
86
|
-
condition.values.first
|
87
|
-
end
|
88
|
-
|
89
|
-
# Determines whether the attribute value stored in this matcher
|
90
|
-
# satisfies the provided condition using the provided operator.
|
91
|
-
#
|
92
|
-
# For example, given an instance of Gt matcher with the @attribute of
|
93
|
-
# 2, the matcher is set up to answer whether the attribute is
|
94
|
-
# greater than some input value. This input value is provided in
|
95
|
-
# the condition, which could be {"$gt" => 1}, and the operator is
|
96
|
-
# provided (somewhat in a duplicate fashion) in the operator argument,
|
97
|
-
# in this case :>.
|
98
|
-
#
|
99
|
-
# @example
|
100
|
-
# matcher = Matchable::Gt.new(2)
|
101
|
-
# matcher.determine({'$gt' => 1}, :>)
|
102
|
-
# # => true
|
103
|
-
#
|
104
|
-
# @param [ Hash ] condition The condition to evaluate. This must be
|
105
|
-
# a one-element hash; the key is ignored, and the value is passed
|
106
|
-
# as the argument to the operator.
|
107
|
-
# @param [ Symbol, String ] operator The comparison operator or method.
|
108
|
-
# The operator is invoked on the attribute stored in the matcher
|
109
|
-
# instance.
|
110
|
-
#
|
111
|
-
# @return [ true, false ] Result of condition evaluation.
|
112
|
-
#
|
113
|
-
# @since 1.0.0
|
114
|
-
def determine(condition, operator)
|
115
|
-
attribute.__array__.any? do |attr|
|
116
|
-
attr && attr.send(operator, condition_value(condition))
|
117
|
-
end
|
118
|
-
end
|
119
|
-
end
|
120
|
-
end
|
121
|
-
end
|
@@ -1,36 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
class ElemMatch < Default
|
8
|
-
|
9
|
-
# Return true if a given predicate matches a sub document entirely
|
10
|
-
#
|
11
|
-
# @example Do the values match?
|
12
|
-
# matcher._matches?({"$elemMatch" => {"a" => 1, "b" => 2}})
|
13
|
-
#
|
14
|
-
# @param [ Hash ] value The values to check.
|
15
|
-
#
|
16
|
-
# @return [ true, false ] If the values match.
|
17
|
-
def _matches?(value)
|
18
|
-
elem_match = value["$elemMatch"] || value[:$elemMatch]
|
19
|
-
|
20
|
-
if !@attribute.is_a?(Array) || !value.kind_of?(Hash) || !elem_match.kind_of?(Hash)
|
21
|
-
return false
|
22
|
-
end
|
23
|
-
|
24
|
-
return @attribute.any? do |sub_document|
|
25
|
-
elem_match.all? do |k, v|
|
26
|
-
if v.try(:first).try(:[],0) == "$not".freeze || v.try(:first).try(:[],0) == :$not
|
27
|
-
!Matchable.matcher(sub_document, k, v.first[1])._matches?(v.first[1])
|
28
|
-
else
|
29
|
-
Matchable.matcher(sub_document, k, v)._matches?(v)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
35
|
-
end
|
36
|
-
end
|
data/lib/mongoid/matchable/eq.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Performs equivalency checks.
|
8
|
-
class Eq < Default
|
9
|
-
|
10
|
-
# Return true if the attribute and first value are equal.
|
11
|
-
#
|
12
|
-
# @example Do the values match?
|
13
|
-
# matcher._matches?({ :key => 10 })
|
14
|
-
#
|
15
|
-
# @param [ Hash ] value The values to check.
|
16
|
-
#
|
17
|
-
# @return [ true, false ] True if matches, false if not.
|
18
|
-
def _matches?(value)
|
19
|
-
super(value.values.first)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Checks for existence.
|
8
|
-
class Exists < Default
|
9
|
-
|
10
|
-
# Return true if the attribute exists and checking for existence or
|
11
|
-
# return true if the attribute does not exist and checking for
|
12
|
-
# non-existence.
|
13
|
-
#
|
14
|
-
# @example Does anything exist?
|
15
|
-
# matcher._matches?({ :key => 10 })
|
16
|
-
#
|
17
|
-
# @param [ Hash ] value The values to check.
|
18
|
-
#
|
19
|
-
# @return [ true, false ] If a value exists.
|
20
|
-
def _matches?(value)
|
21
|
-
@attribute.nil? != value.values.first
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/mongoid/matchable/gt.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Performs Greater Than matching.
|
8
|
-
class Gt < Default
|
9
|
-
|
10
|
-
# Return true if the attribute is greater than the value.
|
11
|
-
#
|
12
|
-
# @example Do the values match?
|
13
|
-
# matcher._matches?({ :key => 10 })
|
14
|
-
#
|
15
|
-
# @param [ Hash ] value The values to check.
|
16
|
-
#
|
17
|
-
# @return [ true, false ] If a value exists.
|
18
|
-
def _matches?(value)
|
19
|
-
determine(value, :>)
|
20
|
-
rescue ArgumentError
|
21
|
-
false
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Performs Greater than or equal to matching.
|
8
|
-
class Gte < Default
|
9
|
-
|
10
|
-
# Return true if the attribute is greater than or equal to the value.
|
11
|
-
#
|
12
|
-
# @example Do the values match?
|
13
|
-
# matcher._matches?({ :key => 10 })
|
14
|
-
#
|
15
|
-
# @param [ Hash ] value The values to check.
|
16
|
-
#
|
17
|
-
# @return [ true, false ] If a value exists.
|
18
|
-
def _matches?(value)
|
19
|
-
determine(value, :>=)
|
20
|
-
rescue ArgumentError
|
21
|
-
false
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/mongoid/matchable/in.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Performs matching for any value in an array.
|
8
|
-
class In < Default
|
9
|
-
|
10
|
-
# Return true if the attribute is in the values.
|
11
|
-
#
|
12
|
-
# @example Do the values match?
|
13
|
-
# matcher._matches?({ :key => 10 })
|
14
|
-
#
|
15
|
-
# @param [ Hash ] value The values to check.
|
16
|
-
#
|
17
|
-
# @return [ true, false ] If a value exists.
|
18
|
-
def _matches?(value)
|
19
|
-
attribute_array = @attribute.nil? ? [nil] : Array.wrap(@attribute)
|
20
|
-
value.values.first.any? do |e|
|
21
|
-
attribute_array.any? { |_attribute| e === _attribute }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
data/lib/mongoid/matchable/lt.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Performs less than matching.
|
8
|
-
class Lt < Default
|
9
|
-
|
10
|
-
# Return true if the attribute is less than the value.
|
11
|
-
#
|
12
|
-
# @example Do the values match?
|
13
|
-
# matcher._matches?({ :key => 10 })
|
14
|
-
#
|
15
|
-
# @param [ Hash ] value The values to check.
|
16
|
-
#
|
17
|
-
# @return [ true, false ] If a value exists.
|
18
|
-
def _matches?(value)
|
19
|
-
determine(value, :<)
|
20
|
-
rescue ArgumentError
|
21
|
-
false
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Performs less than or equal to matching.
|
8
|
-
class Lte < Default
|
9
|
-
|
10
|
-
# Return true if the attribute is less than or equal to the value.
|
11
|
-
#
|
12
|
-
# @example Do the values match?
|
13
|
-
# matcher._matches?({ :key => 10 })
|
14
|
-
#
|
15
|
-
# @param [ Hash ] value The values to check.
|
16
|
-
#
|
17
|
-
# @return [ true, false ] If a value exists.
|
18
|
-
def _matches?(value)
|
19
|
-
determine(value, :<=)
|
20
|
-
rescue ArgumentError
|
21
|
-
false
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
data/lib/mongoid/matchable/ne.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Performs non-equivalency checks.
|
8
|
-
class Ne < Default
|
9
|
-
|
10
|
-
# Return true if the attribute and first value are not equal.
|
11
|
-
#
|
12
|
-
# @example Do the values match?
|
13
|
-
# matcher._matches?({ :key => 10 })
|
14
|
-
#
|
15
|
-
# @param [ Hash ] value The values to check.
|
16
|
-
#
|
17
|
-
# @return [ true, false ] True if matches, false if not.
|
18
|
-
def _matches?(value)
|
19
|
-
!super(value.values.first)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
@@ -1,24 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
# encoding: utf-8
|
3
|
-
|
4
|
-
module Mongoid
|
5
|
-
module Matchable
|
6
|
-
|
7
|
-
# Performs not in checking.
|
8
|
-
class Nin < Default
|
9
|
-
|
10
|
-
# Return true if the attribute is not in the value list.
|
11
|
-
#
|
12
|
-
# @example Do the values match?
|
13
|
-
# matcher._matches?({ :key => 10 })
|
14
|
-
#
|
15
|
-
# @param [ Hash ] value The values to check.
|
16
|
-
#
|
17
|
-
# @return [ true, false ] If a value exists.
|
18
|
-
def _matches?(value)
|
19
|
-
attribute_array = @attribute.nil? ? [nil] : Array.wrap(@attribute)
|
20
|
-
attribute_array.none? { |e| value.values.first.include?(e) }
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|