mongoid 7.1.11 → 7.2.0
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/README.md +10 -3
- data/lib/config/locales/en.yml +37 -14
- data/lib/mongoid/association/depending.rb +1 -6
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +1 -1
- data/lib/mongoid/association/many.rb +3 -3
- data/lib/mongoid/association/proxy.rb +1 -1
- 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 +37 -2
- data/lib/mongoid/association/referenced/has_many/proxy.rb +9 -2
- 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/attributes.rb +1 -8
- data/lib/mongoid/clients/factory.rb +17 -0
- data/lib/mongoid/composable.rb +1 -0
- data/lib/mongoid/config/environment.rb +1 -9
- data/lib/mongoid/config.rb +3 -0
- data/lib/mongoid/contextual/atomic.rb +2 -7
- data/lib/mongoid/contextual/mongo.rb +23 -4
- data/lib/mongoid/contextual/none.rb +0 -3
- data/lib/mongoid/copyable.rb +7 -3
- 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 +23 -8
- data/lib/mongoid/criteria/queryable/selector.rb +7 -3
- data/lib/mongoid/criteria/queryable/storable.rb +7 -7
- data/lib/mongoid/criteria.rb +58 -8
- data/lib/mongoid/document.rb +19 -9
- 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/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/errors.rb +7 -2
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +27 -10
- data/lib/mongoid/fields/validators/macro.rb +22 -9
- data/lib/mongoid/fields.rb +3 -0
- data/lib/mongoid/findable.rb +50 -14
- data/lib/mongoid/indexable.rb +2 -2
- data/lib/mongoid/interceptable.rb +2 -4
- data/lib/mongoid/matchable.rb +1 -149
- 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 +52 -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/matcher.rb +127 -0
- data/lib/mongoid/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistence_context.rb +1 -3
- data/lib/mongoid/query_cache.rb +64 -62
- data/lib/mongoid/reloadable.rb +2 -7
- data/lib/mongoid/serializable.rb +1 -1
- data/lib/mongoid/stringified_symbol.rb +53 -0
- data/lib/mongoid/tasks/database.rb +1 -1
- data/lib/mongoid/traversable.rb +111 -4
- data/lib/mongoid/validatable/associated.rb +1 -1
- data/lib/mongoid/validatable/presence.rb +3 -3
- data/lib/mongoid/validatable/uniqueness.rb +1 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +23 -1
- data/lib/rails/generators/mongoid/config/config_generator.rb +1 -8
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +1 -1
- data/spec/README.md +19 -4
- data/spec/integration/app_spec.rb +84 -174
- 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/document_spec.rb +0 -21
- 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/gte.yml +132 -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/lte.yml +132 -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/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 +0 -50
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +37 -17
- 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/belongs_to/proxy_spec.rb +0 -17
- 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 +0 -41
- data/spec/mongoid/atomic_spec.rb +23 -0
- data/spec/mongoid/attributes/nested_spec.rb +1 -1
- data/spec/mongoid/attributes_spec.rb +0 -241
- data/spec/mongoid/clients/factory_spec.rb +35 -9
- data/spec/mongoid/clients/options_spec.rb +3 -11
- data/spec/mongoid/clients/sessions_spec.rb +1 -6
- data/spec/mongoid/config/environment_spec.rb +8 -86
- data/spec/mongoid/config_spec.rb +28 -0
- data/spec/mongoid/contextual/atomic_spec.rb +29 -81
- data/spec/mongoid/contextual/geo_near_spec.rb +1 -1
- 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 +0 -36
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +84 -82
- data/spec/mongoid/criteria_spec.rb +204 -43
- data/spec/mongoid/document_query_spec.rb +0 -51
- data/spec/mongoid/document_spec.rb +90 -36
- data/spec/mongoid/equality_spec.rb +0 -1
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
- data/spec/mongoid/errors/mongoid_error_spec.rb +8 -20
- 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/persistable/settable_spec.rb +0 -30
- data/spec/mongoid/persistable/updatable_spec.rb +0 -2
- data/spec/mongoid/persistable_spec.rb +2 -2
- 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/lib/mrss/constraints.rb +10 -92
- data/spec/shared/lib/mrss/lite_constraints.rb +0 -16
- data/spec/shared/lib/mrss/spec_organizer.rb +2 -32
- data/spec/spec_helper.rb +3 -3
- data/spec/support/constraints.rb +24 -0
- data/spec/support/helpers.rb +1 -1
- data/spec/{app → support}/models/actor.rb +1 -1
- data/spec/{app → support}/models/address.rb +0 -4
- data/spec/support/models/armrest.rb +10 -0
- data/spec/{app → support}/models/browser.rb +1 -1
- data/spec/{app → support}/models/canvas.rb +1 -1
- data/spec/{app → support}/models/coding.rb +1 -1
- data/spec/support/models/crate.rb +13 -0
- data/spec/support/models/deed.rb +8 -0
- data/spec/{app → support}/models/dictionary.rb +0 -6
- data/spec/{app → support}/models/driver.rb +1 -1
- data/spec/support/models/guitar.rb +5 -0
- data/spec/support/models/idnodef.rb +8 -0
- data/spec/support/models/instrument.rb +9 -0
- data/spec/{app → support}/models/item.rb +1 -1
- data/spec/{app → support}/models/mop.rb +0 -10
- data/spec/support/models/order.rb +11 -0
- data/spec/{app → support}/models/owner.rb +2 -0
- data/spec/{app → support}/models/palette.rb +1 -1
- data/spec/{app → support}/models/person.rb +1 -10
- data/spec/support/models/piano.rb +5 -0
- data/spec/support/models/profile.rb +18 -0
- data/spec/support/models/publication.rb +5 -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/shape.rb +2 -2
- data/spec/support/models/system_role.rb +7 -0
- data/spec/{app → support}/models/tool.rb +2 -2
- data/spec/support/models/toy.rb +10 -0
- data/spec/{app → support}/models/truck.rb +2 -0
- data/spec/{app → support}/models/vehicle.rb +7 -2
- data/spec/{app → support}/models/writer.rb +2 -2
- data/spec/support/spec_config.rb +1 -9
- data.tar.gz.sig +0 -0
- metadata +839 -820
- metadata.gz.sig +2 -2
- data/lib/mongoid/errors/empty_config_file.rb +0 -26
- data/lib/mongoid/errors/invalid_config_file.rb +0 -26
- 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/customer.rb +0 -11
- data/spec/app/models/customer_address.rb +0 -12
- data/spec/app/models/publication.rb +0 -5
- data/spec/integration/callbacks_models.rb +0 -49
- data/spec/integration/callbacks_spec.rb +0 -216
- data/spec/integration/contextual/empty_spec.rb +0 -142
- data/spec/mongoid/errors/invalid_config_file_spec.rb +0 -32
- 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/shared/bin/get-mongodb-download-url +0 -17
- data/spec/shared/bin/s3-copy +0 -45
- data/spec/shared/bin/s3-upload +0 -69
- data/spec/shared/lib/mrss/cluster_config.rb +0 -226
- data/spec/shared/lib/mrss/docker_runner.rb +0 -271
- data/spec/shared/lib/mrss/event_subscriber.rb +0 -200
- data/spec/shared/lib/mrss/server_version_registry.rb +0 -120
- data/spec/shared/lib/mrss/utils.rb +0 -15
- data/spec/shared/share/Dockerfile.erb +0 -323
- data/spec/shared/share/haproxy-1.conf +0 -16
- data/spec/shared/share/haproxy-2.conf +0 -17
- data/spec/shared/shlib/distro.sh +0 -73
- data/spec/shared/shlib/server.sh +0 -367
- data/spec/shared/shlib/set_env.sh +0 -131
- /data/spec/{app → support}/models/account.rb +0 -0
- /data/spec/{app → support}/models/acolyte.rb +0 -0
- /data/spec/{app → support}/models/actress.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/{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/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/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/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/{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/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/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/{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/{app → support}/models/image.rb +0 -0
- /data/spec/{app → support}/models/implant.rb +0 -0
- /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/{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/{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/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/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/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/{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/{app → support}/models/pronunciation.rb +0 -0
- /data/spec/{app → support}/models/pub.rb +0 -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 → 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/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/{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/topping.rb +0 -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/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/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
|
@@ -52,7 +52,7 @@ module Mrss
|
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def require_topology(*topologies)
|
|
55
|
-
invalid_topologies = topologies - [:single, :replica_set, :sharded
|
|
55
|
+
invalid_topologies = topologies - [:single, :replica_set, :sharded]
|
|
56
56
|
|
|
57
57
|
unless invalid_topologies.empty?
|
|
58
58
|
raise ArgumentError, "Invalid topologies requested: #{invalid_topologies.join(', ')}"
|
|
@@ -82,7 +82,7 @@ module Mrss
|
|
|
82
82
|
unless ClusterConfig.instance.server_version >= '4.0'
|
|
83
83
|
skip 'Transactions tests in a replica set topology require server 4.0+'
|
|
84
84
|
end
|
|
85
|
-
when :sharded
|
|
85
|
+
when :sharded
|
|
86
86
|
unless ClusterConfig.instance.server_version >= '4.2'
|
|
87
87
|
skip 'Transactions tests in a sharded cluster topology require server 4.2+'
|
|
88
88
|
end
|
|
@@ -113,14 +113,6 @@ module Mrss
|
|
|
113
113
|
end
|
|
114
114
|
end
|
|
115
115
|
|
|
116
|
-
def require_retry_writes
|
|
117
|
-
before(:all) do
|
|
118
|
-
unless SpecConfig.instance.retry_writes?
|
|
119
|
-
skip "Retry writes is disabled"
|
|
120
|
-
end
|
|
121
|
-
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
116
|
def require_no_retry_writes
|
|
125
117
|
before(:all) do
|
|
126
118
|
if SpecConfig.instance.retry_writes?
|
|
@@ -155,33 +147,6 @@ module Mrss
|
|
|
155
147
|
end
|
|
156
148
|
end
|
|
157
149
|
|
|
158
|
-
def require_no_snappy_compression
|
|
159
|
-
before(:all) do
|
|
160
|
-
compressors = SpecConfig.instance.compressors
|
|
161
|
-
if compressors && compressors.include?('snappy')
|
|
162
|
-
skip "Snappy compression is enabled"
|
|
163
|
-
end
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
def require_zstd_compression
|
|
168
|
-
before(:all) do
|
|
169
|
-
compressors = SpecConfig.instance.compressors
|
|
170
|
-
unless compressors && compressors.include?('zstd')
|
|
171
|
-
skip "Zstd compression is not enabled"
|
|
172
|
-
end
|
|
173
|
-
end
|
|
174
|
-
end
|
|
175
|
-
|
|
176
|
-
def require_no_zstd_compression
|
|
177
|
-
before(:all) do
|
|
178
|
-
compressors = SpecConfig.instance.compressors
|
|
179
|
-
if compressors && compressors.include?('zstd')
|
|
180
|
-
skip "Zstd compression is enabled"
|
|
181
|
-
end
|
|
182
|
-
end
|
|
183
|
-
end
|
|
184
|
-
|
|
185
150
|
def require_no_compression
|
|
186
151
|
before(:all) do
|
|
187
152
|
if SpecConfig.instance.compressors
|
|
@@ -249,52 +214,31 @@ module Mrss
|
|
|
249
214
|
# (mongos 4.0+ overrides the write concern)
|
|
250
215
|
def require_set_write_concern
|
|
251
216
|
before(:all) do
|
|
252
|
-
if
|
|
253
|
-
ClusterConfig.instance.short_server_version >= '4.0'
|
|
254
|
-
then
|
|
217
|
+
if ClusterConfig.instance.topology == :sharded && ClusterConfig.instance.short_server_version >= '4.0'
|
|
255
218
|
skip "mongos 4.0+ overrides write concern"
|
|
256
219
|
end
|
|
257
220
|
end
|
|
258
221
|
end
|
|
259
222
|
|
|
260
|
-
def
|
|
223
|
+
def require_multi_shard
|
|
261
224
|
before(:all) do
|
|
262
225
|
if ClusterConfig.instance.topology == :sharded && SpecConfig.instance.addresses.length == 1
|
|
263
|
-
skip 'Test requires a minimum of two
|
|
264
|
-
end
|
|
265
|
-
|
|
266
|
-
if ClusterConfig.instance.topology == :load_balanced && SpecConfig.instance.single_mongos?
|
|
267
|
-
skip 'Test requires a minimum of two mongoses if run in load-balanced topology'
|
|
226
|
+
skip 'Test requires a minimum of two shards if run in sharded topology'
|
|
268
227
|
end
|
|
269
228
|
end
|
|
270
229
|
end
|
|
271
230
|
|
|
272
|
-
|
|
273
|
-
# When we set fail points, the fail point may be set on one mongos and
|
|
274
|
-
# operation may be executed on another mongos, causing failures.
|
|
275
|
-
# Tests that are not setting targeted fail points should utilize this
|
|
276
|
-
# method to restrict themselves to single mongos.
|
|
277
|
-
#
|
|
278
|
-
# In load-balanced topology, the same problem can happen when there is
|
|
279
|
-
# more than one mongos behind the load balancer.
|
|
280
|
-
def require_no_multi_mongos
|
|
231
|
+
def require_no_multi_shard
|
|
281
232
|
before(:all) do
|
|
282
233
|
if ClusterConfig.instance.topology == :sharded && SpecConfig.instance.addresses.length > 1
|
|
283
|
-
skip 'Test requires a single
|
|
284
|
-
end
|
|
285
|
-
if ClusterConfig.instance.topology == :load_balanced && !SpecConfig.instance.single_mongos?
|
|
286
|
-
skip 'Test requires a single mongos, as indicated by SINGLE_MONGOS=1 environment variable, if run in load-balanced topology'
|
|
234
|
+
skip 'Test requires a single shard if run in sharded topology'
|
|
287
235
|
end
|
|
288
236
|
end
|
|
289
237
|
end
|
|
290
238
|
|
|
291
|
-
alias :require_no_multi_shard :require_no_multi_mongos
|
|
292
|
-
|
|
293
239
|
def require_wired_tiger
|
|
294
240
|
before(:all) do
|
|
295
|
-
|
|
296
|
-
# assume that a serverless instance uses WiredTiger Storage Engine.
|
|
297
|
-
if !SpecConfig.instance.serverless? && ClusterConfig.instance.storage_engine != :wired_tiger
|
|
241
|
+
if ClusterConfig.instance.storage_engine != :wired_tiger
|
|
298
242
|
skip 'Test requires WiredTiger storage engine'
|
|
299
243
|
end
|
|
300
244
|
end
|
|
@@ -303,9 +247,7 @@ module Mrss
|
|
|
303
247
|
def require_wired_tiger_on_36
|
|
304
248
|
before(:all) do
|
|
305
249
|
if ClusterConfig.instance.short_server_version >= '3.6'
|
|
306
|
-
|
|
307
|
-
# assume that a serverless instance uses WiredTiger Storage Engine.
|
|
308
|
-
if !SpecConfig.instance.serverless? && ClusterConfig.instance.storage_engine != :wired_tiger
|
|
250
|
+
if ClusterConfig.instance.storage_engine != :wired_tiger
|
|
309
251
|
skip 'Test requires WiredTiger storage engine on 3.6+ servers'
|
|
310
252
|
end
|
|
311
253
|
end
|
|
@@ -314,7 +256,7 @@ module Mrss
|
|
|
314
256
|
|
|
315
257
|
def require_mmapv1
|
|
316
258
|
before(:all) do
|
|
317
|
-
if
|
|
259
|
+
if ClusterConfig.instance.storage_engine != :mmapv1
|
|
318
260
|
skip 'Test requires MMAPv1 storage engine'
|
|
319
261
|
end
|
|
320
262
|
end
|
|
@@ -357,29 +299,5 @@ module Mrss
|
|
|
357
299
|
end
|
|
358
300
|
end
|
|
359
301
|
end
|
|
360
|
-
|
|
361
|
-
def require_required_api_version
|
|
362
|
-
before(:all) do
|
|
363
|
-
unless ENV['API_VERSION_REQUIRED'] == '1'
|
|
364
|
-
skip 'Set API_VERSION_REQUIRED=1 to run this test'
|
|
365
|
-
end
|
|
366
|
-
end
|
|
367
|
-
end
|
|
368
|
-
|
|
369
|
-
def require_no_required_api_version
|
|
370
|
-
before(:all) do
|
|
371
|
-
if ENV['API_VERSION_REQUIRED'] == '1'
|
|
372
|
-
skip 'Cannot have API_VERSION_REQUIRED=1 to run this test'
|
|
373
|
-
end
|
|
374
|
-
end
|
|
375
|
-
end
|
|
376
|
-
|
|
377
|
-
def require_unix_socket
|
|
378
|
-
before(:all) do
|
|
379
|
-
if ENV['TOPOLOGY'] == 'load-balanced'
|
|
380
|
-
skip 'Load balancer does not listen on Unix sockets'
|
|
381
|
-
end
|
|
382
|
-
end
|
|
383
|
-
end
|
|
384
302
|
end
|
|
385
303
|
end
|
|
@@ -171,21 +171,5 @@ module Mrss
|
|
|
171
171
|
end
|
|
172
172
|
end
|
|
173
173
|
end
|
|
174
|
-
|
|
175
|
-
def require_active_support
|
|
176
|
-
before(:all) do
|
|
177
|
-
if !SpecConfig.instance.active_support?
|
|
178
|
-
skip 'This test requires ActiveSupport; set WITH_ACTIVE_SUPPORT=1 in environment'
|
|
179
|
-
end
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
def no_active_support
|
|
184
|
-
before(:all) do
|
|
185
|
-
if SpecConfig.instance.active_support?
|
|
186
|
-
skip 'This test requires no ActiveSupport; unset WITH_ACTIVE_SUPPORT in environment'
|
|
187
|
-
end
|
|
188
|
-
end
|
|
189
|
-
end
|
|
190
174
|
end
|
|
191
175
|
end
|
|
@@ -1,6 +1,3 @@
|
|
|
1
|
-
# frozen_string_literal: true
|
|
2
|
-
# encoding: utf-8
|
|
3
|
-
|
|
4
1
|
autoload :JSON, 'json'
|
|
5
2
|
autoload :FileUtils, 'fileutils'
|
|
6
3
|
autoload :Find, 'find'
|
|
@@ -25,28 +22,18 @@ module Mrss
|
|
|
25
22
|
end
|
|
26
23
|
|
|
27
24
|
def initialize(root: nil, classifiers:, priority_order:,
|
|
28
|
-
spec_root: nil, rspec_json_path: nil, rspec_all_json_path: nil
|
|
29
|
-
randomize: false
|
|
25
|
+
spec_root: nil, rspec_json_path: nil, rspec_all_json_path: nil
|
|
30
26
|
)
|
|
31
27
|
@spec_root = spec_root || File.join(root, 'spec')
|
|
32
28
|
@classifiers = classifiers
|
|
33
29
|
@priority_order = priority_order
|
|
34
30
|
@rspec_json_path = rspec_json_path || File.join(root, 'tmp/rspec.json')
|
|
35
31
|
@rspec_all_json_path = rspec_all_json_path || File.join(root, 'tmp/rspec-all.json')
|
|
36
|
-
@randomize = !!randomize
|
|
37
32
|
end
|
|
38
33
|
|
|
39
34
|
attr_reader :spec_root, :classifiers, :priority_order
|
|
40
35
|
attr_reader :rspec_json_path, :rspec_all_json_path
|
|
41
36
|
|
|
42
|
-
def randomize?
|
|
43
|
-
@randomize
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
def seed
|
|
47
|
-
@seed ||= (rand * 100_000).to_i
|
|
48
|
-
end
|
|
49
|
-
|
|
50
37
|
def buckets
|
|
51
38
|
@buckets ||= {}.tap do |buckets|
|
|
52
39
|
Find.find(spec_root) do |path|
|
|
@@ -91,20 +78,10 @@ module Mrss
|
|
|
91
78
|
end
|
|
92
79
|
|
|
93
80
|
def run
|
|
94
|
-
run_buckets(*buckets.keys)
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def run_buckets(*buckets)
|
|
98
81
|
FileUtils.rm_f(rspec_all_json_path)
|
|
99
82
|
|
|
100
|
-
buckets.each do |bucket|
|
|
101
|
-
if bucket && !self.buckets[bucket]
|
|
102
|
-
raise "Unknown bucket #{bucket}"
|
|
103
|
-
end
|
|
104
|
-
end
|
|
105
|
-
buckets = Hash[self.buckets.select { |k, v| buckets.include?(k) }]
|
|
106
|
-
|
|
107
83
|
failed = []
|
|
84
|
+
buckets = self.buckets.dup
|
|
108
85
|
|
|
109
86
|
priority_order.each do |category|
|
|
110
87
|
if files = buckets.delete(category)
|
|
@@ -132,12 +109,8 @@ module Mrss
|
|
|
132
109
|
puts "Running #{category.to_s.gsub('_', ' ')} tests"
|
|
133
110
|
FileUtils.rm_f(rspec_json_path)
|
|
134
111
|
cmd = %w(rspec) + paths
|
|
135
|
-
if randomize?
|
|
136
|
-
cmd += %W(--order rand:#{seed})
|
|
137
|
-
end
|
|
138
112
|
|
|
139
113
|
begin
|
|
140
|
-
puts "Running #{cmd.join(' ')}"
|
|
141
114
|
ChildProcessHelper.check_call(cmd)
|
|
142
115
|
ensure
|
|
143
116
|
if File.exist?(rspec_json_path)
|
|
@@ -163,9 +136,6 @@ module Mrss
|
|
|
163
136
|
end
|
|
164
137
|
new.delete('version')
|
|
165
138
|
new.delete('summary_line')
|
|
166
|
-
# The spec organizer runs all buckets with the same seed, hence
|
|
167
|
-
# we can drop the seed from new results.
|
|
168
|
-
new.delete('seed')
|
|
169
139
|
unless new.empty?
|
|
170
140
|
raise "Unhandled rspec results keys: #{new.keys.join(', ')}"
|
|
171
141
|
end
|
data/spec/spec_helper.rb
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
|
|
4
4
|
require 'lite_spec_helper'
|
|
5
5
|
|
|
6
|
-
MODELS = File.join(File.dirname(__FILE__), "
|
|
6
|
+
MODELS = File.join(File.dirname(__FILE__), "support/models")
|
|
7
7
|
$LOAD_PATH.unshift(MODELS)
|
|
8
8
|
|
|
9
9
|
require "action_controller"
|
|
@@ -43,7 +43,7 @@ if SpecConfig.instance.ci?
|
|
|
43
43
|
client = Mongo::Client.new(SpecConfig.instance.addresses)
|
|
44
44
|
while starting
|
|
45
45
|
begin
|
|
46
|
-
client.command(
|
|
46
|
+
client.command(Mongo::Server::Monitor::Connection::ISMASTER)
|
|
47
47
|
break
|
|
48
48
|
rescue Mongo::Error::OperationFailure => e
|
|
49
49
|
sleep(2)
|
|
@@ -83,7 +83,7 @@ Mongoid.configure do |config|
|
|
|
83
83
|
config.load_configuration(CONFIG)
|
|
84
84
|
end
|
|
85
85
|
|
|
86
|
-
# Autoload every model for the test suite that sits in spec/
|
|
86
|
+
# Autoload every model for the test suite that sits in spec/support/models.
|
|
87
87
|
Dir[ File.join(MODELS, "*.rb") ].sort.each do |file|
|
|
88
88
|
name = File.basename(file, ".rb")
|
|
89
89
|
autoload name.camelize.to_sym, name
|
data/spec/support/constraints.rb
CHANGED
|
@@ -4,6 +4,30 @@
|
|
|
4
4
|
module Constraints
|
|
5
5
|
RAILS_VERSION = ActiveSupport.version.to_s.split('.')[0..1].join('.').freeze
|
|
6
6
|
|
|
7
|
+
def min_driver_version(version)
|
|
8
|
+
required_version = version.split('.').map(&:to_i)
|
|
9
|
+
actual_version = driver_version(required_version.length)
|
|
10
|
+
before(:all) do
|
|
11
|
+
if (actual_version <=> required_version) < 0
|
|
12
|
+
skip "Driver version #{version} or higher is required"
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def max_driver_version(version)
|
|
18
|
+
required_version = version.split('.').map(&:to_i)
|
|
19
|
+
actual_version = driver_version(required_version.length)
|
|
20
|
+
before(:all) do
|
|
21
|
+
if (actual_version <=> required_version) > 0
|
|
22
|
+
skip "Driver version #{version} or lower is required"
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def driver_version(precision)
|
|
28
|
+
Mongo::VERSION.split('.')[0...precision].map(&:to_i)
|
|
29
|
+
end
|
|
30
|
+
|
|
7
31
|
def min_rails_version(version)
|
|
8
32
|
unless version =~ /\A\d+\.\d+\z/
|
|
9
33
|
raise ArgumentError, "Version can only be major.minor: #{version}"
|
data/spec/support/helpers.rb
CHANGED
|
@@ -6,13 +6,7 @@ class Dictionary
|
|
|
6
6
|
field :name, type: String
|
|
7
7
|
field :publisher, type: String
|
|
8
8
|
field :year, type: Integer
|
|
9
|
-
|
|
10
|
-
# This field must be a Time
|
|
11
9
|
field :published, type: Time
|
|
12
|
-
|
|
13
|
-
# This field must be a Date
|
|
14
|
-
field :submitted_on, type: Date
|
|
15
|
-
|
|
16
10
|
field :description, type: String, localize: true
|
|
17
11
|
field :l, type: String, as: :language
|
|
18
12
|
has_many :words, validate: false
|
|
@@ -13,14 +13,4 @@ class Mop
|
|
|
13
13
|
# transformed differently based on the type of field being queried.
|
|
14
14
|
field :int_field, type: Integer
|
|
15
15
|
field :array_field, type: Array
|
|
16
|
-
field :date_field, type: Date
|
|
17
|
-
field :time_field, type: Time
|
|
18
|
-
field :datetime_field, type: DateTime
|
|
19
|
-
field :big_decimal_field, type: BigDecimal
|
|
20
|
-
field :decimal128_field, type: BSON::Decimal128
|
|
21
|
-
field :symbol_field, type: Symbol
|
|
22
|
-
field :bson_symbol_field, type: BSON::Symbol::Raw
|
|
23
|
-
field :regexp_field, type: Regexp
|
|
24
|
-
field :bson_regexp_field, type: BSON::Regexp::Raw
|
|
25
16
|
end
|
|
26
|
-
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
4
|
+
class Order
|
|
5
|
+
include Mongoid::Document
|
|
6
|
+
field :status, type: Mongoid::StringifiedSymbol
|
|
7
|
+
|
|
8
|
+
# This is a dummy field that verifies the Mongoid::Fields::StringifiedSymbol
|
|
9
|
+
# alias.
|
|
10
|
+
field :saved_status, type: StringifiedSymbol
|
|
11
|
+
end
|
|
@@ -136,10 +136,6 @@ class Person
|
|
|
136
136
|
scope :without_ssn, ->{ without(:ssn) }
|
|
137
137
|
scope :search, ->(query){ any_of({ title: query }) }
|
|
138
138
|
|
|
139
|
-
def self.older_than(age:)
|
|
140
|
-
where(:age.gt => age)
|
|
141
|
-
end
|
|
142
|
-
|
|
143
139
|
def score_with_rescoring=(score)
|
|
144
140
|
@rescored = score.to_i + 20
|
|
145
141
|
self.score_without_rescoring = score
|
|
@@ -210,15 +206,10 @@ class Person
|
|
|
210
206
|
self.map_with_default["key"] = value
|
|
211
207
|
end
|
|
212
208
|
|
|
213
|
-
def set_personal_data(ssn:, age:)
|
|
214
|
-
self.ssn = ssn
|
|
215
|
-
self.age = age
|
|
216
|
-
end
|
|
217
|
-
|
|
218
209
|
reset_callbacks(:validate)
|
|
219
210
|
reset_callbacks(:create)
|
|
220
211
|
reset_callbacks(:save)
|
|
221
212
|
reset_callbacks(:destroy)
|
|
222
213
|
end
|
|
223
214
|
|
|
224
|
-
require "
|
|
215
|
+
require "support/models/doctor"
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
4
|
+
class Profile
|
|
5
|
+
include Mongoid::Document
|
|
6
|
+
field :name, type: String
|
|
7
|
+
|
|
8
|
+
embeds_one :profile_image
|
|
9
|
+
|
|
10
|
+
shard_key :name
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
class ProfileImage
|
|
14
|
+
include Mongoid::Document
|
|
15
|
+
field :url, type: String
|
|
16
|
+
|
|
17
|
+
embedded_in :profile
|
|
18
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# encoding: utf-8
|
|
3
|
+
|
|
4
|
+
class Seat
|
|
5
|
+
include Mongoid::Document
|
|
6
|
+
|
|
7
|
+
embedded_in :vehicle
|
|
8
|
+
|
|
9
|
+
field :rating, type: Integer
|
|
10
|
+
|
|
11
|
+
embeds_many :armrests
|
|
12
|
+
|
|
13
|
+
before_create :set_rating
|
|
14
|
+
before_update :update_rating
|
|
15
|
+
|
|
16
|
+
private
|
|
17
|
+
|
|
18
|
+
def set_rating
|
|
19
|
+
self.rating ||= 100
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def update_rating
|
|
23
|
+
self.rating += 1
|
|
24
|
+
end
|
|
25
|
+
end
|