mongoid 7.1.0.rc0 → 7.2.0.rc1
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/CHANGELOG.md +6 -6
- data/LICENSE +1 -1
- data/README.md +14 -7
- data/Rakefile +21 -0
- data/lib/config/locales/en.yml +42 -6
- data/lib/mongoid.rb +26 -2
- data/lib/mongoid/association/accessors.rb +37 -2
- data/lib/mongoid/association/depending.rb +1 -6
- data/lib/mongoid/association/embedded/embeds_many.rb +2 -1
- data/lib/mongoid/association/embedded/embeds_one.rb +2 -1
- data/lib/mongoid/association/many.rb +5 -4
- data/lib/mongoid/association/proxy.rb +6 -4
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +38 -2
- data/lib/mongoid/association/referenced/eager.rb +29 -9
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +1 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +30 -15
- data/lib/mongoid/association/referenced/has_many/proxy.rb +11 -3
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/atomic.rb +13 -3
- data/lib/mongoid/atomic/modifiers.rb +1 -1
- data/lib/mongoid/attributes.rb +28 -20
- data/lib/mongoid/attributes/dynamic.rb +1 -1
- data/lib/mongoid/clients/factory.rb +19 -2
- data/lib/mongoid/clients/options.rb +8 -8
- data/lib/mongoid/clients/sessions.rb +20 -4
- data/lib/mongoid/clients/storage_options.rb +5 -5
- data/lib/mongoid/composable.rb +1 -0
- data/lib/mongoid/config.rb +45 -12
- data/lib/mongoid/config/options.rb +5 -2
- data/lib/mongoid/contextual.rb +5 -4
- data/lib/mongoid/contextual/geo_near.rb +3 -2
- data/lib/mongoid/contextual/map_reduce.rb +3 -2
- data/lib/mongoid/contextual/mongo.rb +25 -5
- data/lib/mongoid/copyable.rb +2 -2
- data/lib/mongoid/criteria.rb +80 -11
- data/lib/mongoid/criteria/modifiable.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +6 -6
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +12 -0
- data/lib/mongoid/criteria/queryable/key.rb +1 -1
- data/lib/mongoid/criteria/queryable/mergeable.rb +75 -8
- data/lib/mongoid/criteria/queryable/pipeline.rb +3 -2
- data/lib/mongoid/criteria/queryable/selectable.rb +141 -19
- data/lib/mongoid/criteria/queryable/selector.rb +3 -3
- data/lib/mongoid/criteria/queryable/storable.rb +106 -101
- data/lib/mongoid/document.rb +15 -3
- data/lib/mongoid/errors.rb +7 -0
- data/lib/mongoid/errors/eager_load.rb +2 -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/errors/no_client_config.rb +2 -2
- data/lib/mongoid/errors/no_default_client.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +4 -2
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/factory.rb +27 -10
- data/lib/mongoid/fields.rb +2 -1
- data/lib/mongoid/fields/standard.rb +2 -1
- data/lib/mongoid/fields/validators/macro.rb +26 -10
- data/lib/mongoid/findable.rb +55 -18
- data/lib/mongoid/indexable.rb +2 -2
- data/lib/mongoid/interceptable.rb +5 -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 +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/persistable/deletable.rb +1 -1
- data/lib/mongoid/persistable/pushable.rb +11 -2
- data/lib/mongoid/persistence_context.rb +6 -6
- data/lib/mongoid/query_cache.rb +83 -38
- data/lib/mongoid/railties/database.rake +7 -0
- data/lib/mongoid/reloadable.rb +2 -2
- data/lib/mongoid/serializable.rb +11 -3
- data/lib/mongoid/shardable.rb +56 -4
- data/lib/mongoid/tasks/database.rake +10 -5
- data/lib/mongoid/tasks/database.rb +83 -0
- data/lib/mongoid/timestamps/timeless.rb +3 -1
- data/lib/mongoid/traversable.rb +111 -4
- data/lib/mongoid/validatable/uniqueness.rb +1 -1
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +32 -23
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
- data/spec/integration/app_spec.rb +254 -0
- data/spec/integration/associations/embedded_spec.rb +148 -0
- data/spec/integration/associations/has_many_spec.rb +69 -0
- data/spec/integration/associations/has_one_spec.rb +69 -0
- data/spec/integration/associations/nested_attributes_assignment_spec.rb +116 -0
- data/spec/integration/atomic/modifiers_spec.rb +117 -0
- data/spec/integration/bson_regexp_raw_spec.rb +20 -0
- data/spec/integration/criteria/date_field_spec.rb +41 -0
- data/spec/integration/criteria/logical_spec.rb +13 -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 +22 -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/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/shardable_spec.rb +149 -0
- data/spec/lite_spec_helper.rb +15 -4
- data/spec/mongoid/association/accessors_spec.rb +238 -63
- 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 +20 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +10 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +1 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +0 -2
- data/spec/mongoid/association/referenced/belongs_to/eager_spec.rb +193 -10
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +140 -1
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +146 -68
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +462 -187
- data/spec/mongoid/association/referenced/has_many_models.rb +9 -0
- data/spec/mongoid/association/referenced/has_one_models.rb +9 -0
- 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/attributes_spec.rb +19 -7
- data/spec/mongoid/changeable_spec.rb +23 -0
- data/spec/mongoid/clients/factory_spec.rb +45 -8
- data/spec/mongoid/clients/options_spec.rb +11 -11
- data/spec/mongoid/clients/sessions_spec.rb +9 -10
- data/spec/mongoid/clients/transactions_spec.rb +20 -8
- data/spec/mongoid/clients_spec.rb +2 -2
- data/spec/mongoid/config_spec.rb +28 -0
- data/spec/mongoid/contextual/atomic_spec.rb +22 -11
- data/spec/mongoid/contextual/geo_near_spec.rb +11 -2
- data/spec/mongoid/contextual/map_reduce_spec.rb +20 -5
- data/spec/mongoid/contextual/mongo_spec.rb +146 -69
- data/spec/mongoid/copyable_spec.rb +153 -1
- data/spec/mongoid/copyable_spec_models.rb +14 -0
- data/spec/mongoid/criteria/queryable/extensions/regexp_raw_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +7 -7
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +1 -1
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +19 -7
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +28 -1
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +45 -12
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +1051 -392
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +136 -82
- data/spec/mongoid/criteria/queryable/storable_spec.rb +80 -2
- data/spec/mongoid/criteria_spec.rb +240 -41
- data/spec/mongoid/document_fields_spec.rb +29 -0
- data/spec/mongoid/document_persistence_context_spec.rb +33 -0
- data/spec/mongoid/document_spec.rb +89 -15
- data/spec/mongoid/errors/delete_restriction_spec.rb +1 -1
- data/spec/mongoid/errors/no_client_config_spec.rb +2 -2
- data/spec/mongoid/errors/no_client_database_spec.rb +3 -3
- data/spec/mongoid/errors/no_client_hosts_spec.rb +3 -3
- data/spec/mongoid/factory_spec.rb +261 -28
- data/spec/mongoid/fields_spec.rb +72 -3
- data/spec/mongoid/findable_spec.rb +32 -0
- data/spec/mongoid/indexable_spec.rb +34 -6
- data/spec/mongoid/inspectable_spec.rb +29 -2
- data/spec/mongoid/interceptable_spec.rb +64 -2
- data/spec/mongoid/interceptable_spec_models.rb +76 -0
- 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/pushable_spec.rb +55 -1
- 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 +498 -29
- data/spec/mongoid/relations/proxy_spec.rb +1 -1
- data/spec/mongoid/reloadable_spec.rb +72 -0
- data/spec/mongoid/scopable_spec.rb +2 -1
- data/spec/mongoid/serializable_spec.rb +149 -20
- data/spec/mongoid/shardable_models.rb +61 -0
- data/spec/mongoid/shardable_spec.rb +69 -16
- data/spec/mongoid/tasks/database_rake_spec.rb +13 -13
- data/spec/mongoid/tasks/database_spec.rb +1 -1
- data/spec/mongoid/traversable_spec.rb +1100 -0
- data/spec/spec_helper.rb +4 -33
- data/spec/support/child_process_helper.rb +79 -0
- data/spec/support/cluster_config.rb +3 -3
- data/spec/support/constraints.rb +50 -10
- data/spec/support/expectations.rb +3 -1
- data/spec/support/helpers.rb +11 -0
- data/spec/support/lite_constraints.rb +22 -0
- 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/support/models/coding.rb +4 -0
- data/spec/support/models/coding/pull_request.rb +12 -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/deed.rb +8 -0
- data/spec/{app → support}/models/definition.rb +0 -0
- data/spec/support/models/delegating_patient.rb +16 -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 +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/{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 +1 -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 +1 -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/support/models/publication/encyclopedia.rb +12 -0
- data/spec/support/models/publication/review.rb +14 -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/session_registry.rb +50 -0
- data/spec/support/spec_config.rb +13 -5
- data/spec/support/spec_organizer.rb +130 -0
- metadata +882 -752
- 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/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
@@ -6,6 +6,9 @@ class HmmCompany
|
|
6
6
|
|
7
7
|
field :p, type: Integer
|
8
8
|
has_many :emails, primary_key: :p, foreign_key: :f, class_name: 'HmmEmail'
|
9
|
+
|
10
|
+
# The addresses are added with different dependency mechanisms in tests:
|
11
|
+
#has_many :addresses, class_name: 'HmmAddress', dependent: :destroy
|
9
12
|
end
|
10
13
|
|
11
14
|
class HmmEmail
|
@@ -15,6 +18,12 @@ class HmmEmail
|
|
15
18
|
belongs_to :company, primary_key: :p, foreign_key: :f, class_name: 'HmmCompany'
|
16
19
|
end
|
17
20
|
|
21
|
+
class HmmAddress
|
22
|
+
include Mongoid::Document
|
23
|
+
|
24
|
+
belongs_to :company, class_name: 'HmmCompany'
|
25
|
+
end
|
26
|
+
|
18
27
|
class HmmSchool
|
19
28
|
include Mongoid::Document
|
20
29
|
|
@@ -6,6 +6,9 @@ class HomCollege
|
|
6
6
|
|
7
7
|
has_one :accreditation, class_name: 'HomAccreditation'
|
8
8
|
|
9
|
+
# The address is added with different dependency mechanisms in tests:
|
10
|
+
#has_one :address, class_name: 'HomAddress', dependent: :destroy
|
11
|
+
|
9
12
|
field :state, type: String
|
10
13
|
end
|
11
14
|
|
@@ -24,6 +27,12 @@ class HomAccreditation::Child
|
|
24
27
|
belongs_to :hom_college
|
25
28
|
end
|
26
29
|
|
30
|
+
class HomAddress
|
31
|
+
include Mongoid::Document
|
32
|
+
|
33
|
+
belongs_to :college, class_name: 'HomCollege'
|
34
|
+
end
|
35
|
+
|
27
36
|
module HomNs
|
28
37
|
class PrefixedParent
|
29
38
|
include Mongoid::Document
|
@@ -9,6 +9,26 @@ describe Mongoid::Atomic::Modifiers do
|
|
9
9
|
described_class.new
|
10
10
|
end
|
11
11
|
|
12
|
+
describe "#push_conflict?" do
|
13
|
+
let(:result) { modifiers.send(:push_conflict?, field) }
|
14
|
+
|
15
|
+
context 'for embeds many subdocument' do
|
16
|
+
context 'when another field on subdocument is being set' do
|
17
|
+
before do
|
18
|
+
modifiers.set('foo.0.a' => 1)
|
19
|
+
end
|
20
|
+
|
21
|
+
let(:field) { 'foo' }
|
22
|
+
|
23
|
+
it 'does not conflict' do
|
24
|
+
pending 'https://jira.mongodb.org/browse/MONGOID-4982'
|
25
|
+
|
26
|
+
result.should be false
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
12
32
|
describe "#add_to_set" do
|
13
33
|
|
14
34
|
context "when the unique adds are empty" do
|
@@ -344,6 +364,33 @@ describe Mongoid::Atomic::Modifiers do
|
|
344
364
|
end
|
345
365
|
end
|
346
366
|
end
|
367
|
+
|
368
|
+
context 'when there is another operation on a sibling of a key which is nested' do
|
369
|
+
|
370
|
+
let(:first_op) do
|
371
|
+
{ "addresses.0.name" => 'test' }
|
372
|
+
end
|
373
|
+
|
374
|
+
let(:push_op) do
|
375
|
+
{ "addresses.0.locations" => { "street" => "Oxford St" } }
|
376
|
+
end
|
377
|
+
|
378
|
+
before do
|
379
|
+
modifiers.set(first_op)
|
380
|
+
modifiers.push(push_op)
|
381
|
+
end
|
382
|
+
|
383
|
+
it "does not conflict and adds push to top level" do
|
384
|
+
pending 'https://jira.mongodb.org/browse/MONGOID-4982'
|
385
|
+
|
386
|
+
modifiers.should == {
|
387
|
+
'$set' => { "addresses.0.name" => 'test' },
|
388
|
+
'$push' => {"addresses.0.locations" => {'$each' => [
|
389
|
+
{ "street" => "Oxford St" },
|
390
|
+
]}},
|
391
|
+
}
|
392
|
+
end
|
393
|
+
end
|
347
394
|
end
|
348
395
|
|
349
396
|
describe "#set" do
|
data/spec/mongoid/atomic_spec.rb
CHANGED
@@ -362,6 +362,29 @@ describe Mongoid::Atomic do
|
|
362
362
|
)
|
363
363
|
end
|
364
364
|
end
|
365
|
+
|
366
|
+
context 'when adding nested embedded docs and updating top level embedded doc' do
|
367
|
+
let!(:truck) { Truck.create! }
|
368
|
+
let!(:crate) { truck.crates.create!(volume: 1) }
|
369
|
+
|
370
|
+
before do
|
371
|
+
truck.crates.first.volume = 2
|
372
|
+
truck.crates.first.toys.build(name: 'Bear')
|
373
|
+
truck.crates.build
|
374
|
+
end
|
375
|
+
|
376
|
+
it 'correctly distributes the operations' do
|
377
|
+
pending 'https://jira.mongodb.org/browse/MONGOID-4982'
|
378
|
+
|
379
|
+
truck.atomic_updates.should == {
|
380
|
+
'$set' => {'crates.0.volume' => 2},
|
381
|
+
'$push' => {'crates.0.toys' => {'$each' => [crate.toys.first.attributes]}},
|
382
|
+
conflicts: {
|
383
|
+
'$push' => {'crates' => {'$each' => [truck.crates.last.attributes]}},
|
384
|
+
},
|
385
|
+
}
|
386
|
+
end
|
387
|
+
end
|
365
388
|
end
|
366
389
|
end
|
367
390
|
end
|
@@ -1349,10 +1349,16 @@ describe Mongoid::Attributes do
|
|
1349
1349
|
context "when attribute is a Hash" do
|
1350
1350
|
let(:person) { Person.new map: { somekey: "somevalue" } }
|
1351
1351
|
|
1352
|
-
it "raises an error when
|
1353
|
-
expect
|
1352
|
+
it "raises an error when trying to set a value of invalid type - array" do
|
1353
|
+
expect do
|
1354
1354
|
person.map = []
|
1355
|
-
|
1355
|
+
end.to raise_error(Mongoid::Errors::InvalidValue, /Value of type Array cannot be written to a field of type Hash/)
|
1356
|
+
end
|
1357
|
+
|
1358
|
+
it "raises an error when trying to set a value of invalid type - boolean" do
|
1359
|
+
expect do
|
1360
|
+
person.map = false
|
1361
|
+
end.to raise_error(Mongoid::Errors::InvalidValue, /Value of type FalseClass cannot be written to a field of type Hash/)
|
1356
1362
|
end
|
1357
1363
|
|
1358
1364
|
it "can set a Hash value" do
|
@@ -1367,10 +1373,16 @@ describe Mongoid::Attributes do
|
|
1367
1373
|
expect(person.aliases).to eq([ :alias_1 ])
|
1368
1374
|
end
|
1369
1375
|
|
1370
|
-
it "raises an error when
|
1371
|
-
expect
|
1376
|
+
it "raises an error when trying to set a value of invalid type - hash" do
|
1377
|
+
expect do
|
1372
1378
|
person.aliases = {}
|
1373
|
-
|
1379
|
+
end.to raise_error(Mongoid::Errors::InvalidValue, /Value of type Hash cannot be written to a field of type Array/)
|
1380
|
+
end
|
1381
|
+
|
1382
|
+
it "raises an error when trying to set a value of invalid type - boolean" do
|
1383
|
+
expect do
|
1384
|
+
person.aliases = false
|
1385
|
+
end.to raise_error(Mongoid::Errors::InvalidValue, /Value of type FalseClass cannot be written to a field of type Array/)
|
1374
1386
|
end
|
1375
1387
|
end
|
1376
1388
|
|
@@ -1425,7 +1437,7 @@ describe Mongoid::Attributes do
|
|
1425
1437
|
end
|
1426
1438
|
|
1427
1439
|
describe "#typed_attributes" do
|
1428
|
-
|
1440
|
+
|
1429
1441
|
let(:date_time) do
|
1430
1442
|
DateTime.current
|
1431
1443
|
end
|
@@ -949,6 +949,29 @@ describe Mongoid::Changeable do
|
|
949
949
|
end
|
950
950
|
end
|
951
951
|
|
952
|
+
context 'when habtm association changes' do
|
953
|
+
|
954
|
+
let(:person) do
|
955
|
+
Person.create!(title: "Grand Poobah")
|
956
|
+
end
|
957
|
+
|
958
|
+
let(:user_account) do
|
959
|
+
UserAccount.create!
|
960
|
+
end
|
961
|
+
|
962
|
+
before do
|
963
|
+
person.user_accounts << user_account
|
964
|
+
end
|
965
|
+
|
966
|
+
it 'returns a hash of changes' do
|
967
|
+
pending 'https://jira.mongodb.org/browse/MONGOID-4843'
|
968
|
+
|
969
|
+
person.changes.should == {
|
970
|
+
user_account_ids: [[], [user_account.id]]
|
971
|
+
}
|
972
|
+
end
|
973
|
+
end
|
974
|
+
|
952
975
|
context "when the document has not changed" do
|
953
976
|
|
954
977
|
let(:acolyte) do
|
@@ -41,7 +41,7 @@ describe Mongoid::Clients::Factory do
|
|
41
41
|
let(:config) do
|
42
42
|
{
|
43
43
|
default: { hosts: SpecConfig.instance.addresses, database: database_id },
|
44
|
-
|
44
|
+
analytics: { hosts: SpecConfig.instance.addresses, database: database_id }
|
45
45
|
}
|
46
46
|
end
|
47
47
|
|
@@ -54,7 +54,7 @@ describe Mongoid::Clients::Factory do
|
|
54
54
|
end
|
55
55
|
|
56
56
|
let(:client) do
|
57
|
-
described_class.create(:
|
57
|
+
described_class.create(:analytics)
|
58
58
|
end
|
59
59
|
|
60
60
|
let(:cluster) do
|
@@ -65,6 +65,11 @@ describe Mongoid::Clients::Factory do
|
|
65
65
|
expect(client).to be_a(Mongo::Client)
|
66
66
|
end
|
67
67
|
|
68
|
+
it 'does not produce driver warnings' do
|
69
|
+
Mongo::Logger.logger.should_not receive(:warn)
|
70
|
+
client
|
71
|
+
end
|
72
|
+
|
68
73
|
let(:cluster_addresses) do
|
69
74
|
cluster.addresses.map(&:to_s)
|
70
75
|
end
|
@@ -74,6 +79,38 @@ describe Mongoid::Clients::Factory do
|
|
74
79
|
it "sets the platform to Mongoid's platform constant" do
|
75
80
|
expect(client.options[:platform]).to eq(Mongoid::PLATFORM_DETAILS)
|
76
81
|
end
|
82
|
+
|
83
|
+
context 'driver 2.13+' do
|
84
|
+
min_driver_version '2.13'
|
85
|
+
|
86
|
+
it 'sets Mongoid as a wrapping library' do
|
87
|
+
client.options[:wrapping_libraries].should == [BSON::Document.new(
|
88
|
+
Mongoid::Clients::Factory::MONGOID_WRAPPING_LIBRARY)]
|
89
|
+
end
|
90
|
+
|
91
|
+
context 'when configuration specifies a wrapping library' do
|
92
|
+
|
93
|
+
let(:config) do
|
94
|
+
{
|
95
|
+
default: { hosts: SpecConfig.instance.addresses, database: database_id },
|
96
|
+
analytics: {
|
97
|
+
hosts: SpecConfig.instance.addresses,
|
98
|
+
database: database_id,
|
99
|
+
options: {
|
100
|
+
wrapping_libraries: [{name: 'Foo'}],
|
101
|
+
},
|
102
|
+
}
|
103
|
+
}
|
104
|
+
end
|
105
|
+
|
106
|
+
it 'adds Mongoid as another wrapping library' do
|
107
|
+
client.options[:wrapping_libraries].should == [
|
108
|
+
BSON::Document.new(Mongoid::Clients::Factory::MONGOID_WRAPPING_LIBRARY),
|
109
|
+
{'name' => 'Foo'},
|
110
|
+
]
|
111
|
+
end
|
112
|
+
end
|
113
|
+
end
|
77
114
|
end
|
78
115
|
|
79
116
|
context "when the configuration has no ports" do
|
@@ -81,7 +118,7 @@ describe Mongoid::Clients::Factory do
|
|
81
118
|
let(:config) do
|
82
119
|
{
|
83
120
|
default: { hosts: [ "127.0.0.1" ], database: database_id },
|
84
|
-
|
121
|
+
analytics: { hosts: [ "127.0.0.1" ], database: database_id }
|
85
122
|
}
|
86
123
|
end
|
87
124
|
|
@@ -94,7 +131,7 @@ describe Mongoid::Clients::Factory do
|
|
94
131
|
end
|
95
132
|
|
96
133
|
let(:client) do
|
97
|
-
described_class.create(:
|
134
|
+
described_class.create(:analytics)
|
98
135
|
end
|
99
136
|
|
100
137
|
let(:default) do
|
@@ -125,7 +162,7 @@ describe Mongoid::Clients::Factory do
|
|
125
162
|
let(:config) do
|
126
163
|
{
|
127
164
|
default: { hosts: [ "127.0.0.1:27017" ], database: database_id },
|
128
|
-
|
165
|
+
analytics: { uri: "mongodb://127.0.0.1:27017/mongoid_test" }
|
129
166
|
}
|
130
167
|
end
|
131
168
|
|
@@ -138,7 +175,7 @@ describe Mongoid::Clients::Factory do
|
|
138
175
|
end
|
139
176
|
|
140
177
|
let(:client) do
|
141
|
-
described_class.create(:
|
178
|
+
described_class.create(:analytics)
|
142
179
|
end
|
143
180
|
|
144
181
|
let(:cluster) do
|
@@ -163,7 +200,7 @@ describe Mongoid::Clients::Factory do
|
|
163
200
|
let(:config) do
|
164
201
|
{
|
165
202
|
default: { hosts: [ "127.0.0.1:1234" ], database: database_id, server_selection_timeout: 1 },
|
166
|
-
|
203
|
+
analytics: { uri: "mongodb://127.0.0.1:1234,127.0.0.1:5678/mongoid_test?serverSelectionTimeoutMS=1000" }
|
167
204
|
}
|
168
205
|
end
|
169
206
|
|
@@ -176,7 +213,7 @@ describe Mongoid::Clients::Factory do
|
|
176
213
|
end
|
177
214
|
|
178
215
|
let(:client) do
|
179
|
-
described_class.create(:
|
216
|
+
described_class.create(:analytics)
|
180
217
|
end
|
181
218
|
|
182
219
|
let(:cluster) do
|
@@ -14,7 +14,7 @@ describe Mongoid::Clients::Options, retry: 3 do
|
|
14
14
|
Mongoid::Clients.clients.clear
|
15
15
|
end
|
16
16
|
|
17
|
-
describe '#with'
|
17
|
+
describe '#with' do
|
18
18
|
|
19
19
|
context 'when passing some options' do
|
20
20
|
|
@@ -151,7 +151,7 @@ describe Mongoid::Clients::Options, retry: 3 do
|
|
151
151
|
let(:config) do
|
152
152
|
{
|
153
153
|
default: { hosts: SpecConfig.instance.addresses, database: database_id },
|
154
|
-
|
154
|
+
analytics: { uri: "mongodb://#{SpecConfig.instance.addresses.first}/analytics-db?connectTimeoutMS=3000" }
|
155
155
|
}
|
156
156
|
end
|
157
157
|
|
@@ -164,14 +164,14 @@ describe Mongoid::Clients::Options, retry: 3 do
|
|
164
164
|
end
|
165
165
|
|
166
166
|
let(:persistence_context) do
|
167
|
-
Minim.with(client: :
|
167
|
+
Minim.with(client: :analytics) do |klass|
|
168
168
|
klass.persistence_context
|
169
169
|
end
|
170
170
|
end
|
171
171
|
|
172
172
|
it 'uses the database specified in the uri' do
|
173
|
-
expect(persistence_context.database_name).to eq('
|
174
|
-
expect(persistence_context.client.database.name).to eq('
|
173
|
+
expect(persistence_context.database_name).to eq('analytics-db')
|
174
|
+
expect(persistence_context.client.database.name).to eq('analytics-db')
|
175
175
|
end
|
176
176
|
|
177
177
|
it 'uses the options specified in the uri' do
|
@@ -291,7 +291,7 @@ describe Mongoid::Clients::Options, retry: 3 do
|
|
291
291
|
end
|
292
292
|
end
|
293
293
|
|
294
|
-
describe '.with'
|
294
|
+
describe '.with' do
|
295
295
|
|
296
296
|
context 'when passing some options' do
|
297
297
|
|
@@ -344,8 +344,8 @@ describe Mongoid::Clients::Options, retry: 3 do
|
|
344
344
|
let(:config) do
|
345
345
|
{
|
346
346
|
default: { hosts: SpecConfig.instance.addresses, database: database_id },
|
347
|
-
|
348
|
-
uri: "mongodb://#{SpecConfig.instance.addresses.first}/
|
347
|
+
analytics: {
|
348
|
+
uri: "mongodb://#{SpecConfig.instance.addresses.first}/analytics-db",
|
349
349
|
options: {
|
350
350
|
server_selection_timeout: 0.5,
|
351
351
|
},
|
@@ -358,14 +358,14 @@ describe Mongoid::Clients::Options, retry: 3 do
|
|
358
358
|
end
|
359
359
|
|
360
360
|
let(:persistence_context) do
|
361
|
-
test_model.with(client: :
|
361
|
+
test_model.with(client: :analytics) do |object|
|
362
362
|
object.persistence_context
|
363
363
|
end
|
364
364
|
end
|
365
365
|
|
366
366
|
it 'uses the database specified in the uri' do
|
367
|
-
expect(persistence_context.database_name).to eq('
|
368
|
-
expect(persistence_context.client.database.name).to eq('
|
367
|
+
expect(persistence_context.database_name).to eq('analytics-db')
|
368
|
+
expect(persistence_context.client.database.name).to eq('analytics-db')
|
369
369
|
end
|
370
370
|
end
|
371
371
|
|
@@ -20,12 +20,7 @@ describe Mongoid::Clients::Sessions do
|
|
20
20
|
|
21
21
|
let(:subscriber) do
|
22
22
|
client = Mongoid::Clients.with_name(:other)
|
23
|
-
monitoring =
|
24
|
-
client.send(:monitoring)
|
25
|
-
else
|
26
|
-
# driver 2.5
|
27
|
-
client.instance_variable_get('@monitoring')
|
28
|
-
end
|
23
|
+
monitoring = client.send(:monitoring)
|
29
24
|
monitoring.subscribers['Command'].find do |s|
|
30
25
|
s.is_a?(EventSubscriber)
|
31
26
|
end
|
@@ -43,7 +38,8 @@ describe Mongoid::Clients::Sessions do
|
|
43
38
|
|
44
39
|
context 'when a session is used on a model class' do
|
45
40
|
|
46
|
-
context 'when sessions are supported'
|
41
|
+
context 'when sessions are supported' do
|
42
|
+
min_server_version '3.6'
|
47
43
|
|
48
44
|
around do |example|
|
49
45
|
Mongoid::Clients.with_name(:other).database.collections.each(&:drop)
|
@@ -172,7 +168,8 @@ describe Mongoid::Clients::Sessions do
|
|
172
168
|
end
|
173
169
|
end
|
174
170
|
|
175
|
-
context 'when sessions are not supported'
|
171
|
+
context 'when sessions are not supported' do
|
172
|
+
max_server_version '3.4'
|
176
173
|
|
177
174
|
let!(:error) do
|
178
175
|
e = nil
|
@@ -199,7 +196,8 @@ describe Mongoid::Clients::Sessions do
|
|
199
196
|
end
|
200
197
|
end
|
201
198
|
|
202
|
-
context 'when sessions are supported'
|
199
|
+
context 'when sessions are supported' do
|
200
|
+
min_server_version '3.6'
|
203
201
|
|
204
202
|
around do |example|
|
205
203
|
Mongoid::Clients.with_name(:other).database.collections.each(&:drop)
|
@@ -316,7 +314,8 @@ describe Mongoid::Clients::Sessions do
|
|
316
314
|
end
|
317
315
|
end
|
318
316
|
|
319
|
-
context 'when sessions are not supported'
|
317
|
+
context 'when sessions are not supported' do
|
318
|
+
max_server_version '3.4'
|
320
319
|
|
321
320
|
let!(:error) do
|
322
321
|
e = nil
|