mongoid 6.4.8 → 7.0.13
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/LICENSE +1 -0
- data/README.md +4 -3
- data/Rakefile +33 -7
- data/lib/config/locales/en.yml +17 -0
- data/lib/mongoid/association/accessors.rb +339 -0
- data/lib/mongoid/{relations/binding.rb → association/bindable.rb} +32 -52
- data/lib/mongoid/association/builders.rb +92 -0
- data/lib/mongoid/{relations/constraint.rb → association/constrainable.rb} +11 -22
- data/lib/mongoid/association/depending.rb +137 -0
- data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
- data/lib/mongoid/{relations → association}/embedded/batchable.rb +19 -19
- data/lib/mongoid/association/embedded/cyclic.rb +109 -0
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +56 -0
- data/lib/mongoid/{relations/builders/embedded/in.rb → association/embedded/embedded_in/buildable.rb} +12 -6
- data/lib/mongoid/association/embedded/embedded_in/proxy.rb +121 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +154 -0
- data/lib/mongoid/{relations/bindings/embedded/many.rb → association/embedded/embeds_many/binding.rb} +11 -9
- data/lib/mongoid/{relations/builders/embedded/many.rb → association/embedded/embeds_many/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +552 -0
- data/lib/mongoid/association/embedded/embeds_many.rb +211 -0
- data/lib/mongoid/{relations/bindings/embedded/one.rb → association/embedded/embeds_one/binding.rb} +12 -10
- data/lib/mongoid/{relations/builders/embedded/one.rb → association/embedded/embeds_one/buildable.rb} +13 -7
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +130 -0
- data/lib/mongoid/association/embedded/embeds_one.rb +174 -0
- data/lib/mongoid/association/embedded.rb +4 -0
- data/lib/mongoid/association/macros.rb +204 -0
- data/lib/mongoid/{relations → association}/many.rb +19 -49
- data/lib/mongoid/{relations → association}/marshalable.rb +6 -4
- data/lib/mongoid/association/nested/many.rb +200 -0
- data/lib/mongoid/association/nested/nested_buildable.rb +72 -0
- data/lib/mongoid/association/nested/one.rb +127 -0
- data/lib/mongoid/association/nested.rb +15 -0
- data/lib/mongoid/{relations → association}/one.rb +6 -6
- data/lib/mongoid/association/options.rb +152 -0
- data/lib/mongoid/{relations → association}/proxy.rb +45 -59
- data/lib/mongoid/association/referenced/auto_save.rb +79 -0
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +87 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +46 -0
- data/lib/mongoid/association/referenced/belongs_to/eager.rb +36 -0
- data/lib/mongoid/association/referenced/belongs_to/proxy.rb +136 -0
- data/lib/mongoid/association/referenced/belongs_to.rb +248 -0
- data/lib/mongoid/association/referenced/counter_cache.rb +163 -0
- data/lib/mongoid/association/referenced/eager.rb +162 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/binding.rb +71 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/buildable.rb +40 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/eager.rb +52 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +312 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +290 -0
- data/lib/mongoid/{relations/bindings/referenced/many.rb → association/referenced/has_many/binding.rb} +6 -5
- data/lib/mongoid/association/referenced/has_many/buildable.rb +38 -0
- data/lib/mongoid/association/referenced/has_many/eager.rb +43 -0
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +510 -0
- data/lib/mongoid/association/referenced/has_many/proxy.rb +578 -0
- data/lib/mongoid/association/referenced/has_many.rb +275 -0
- data/lib/mongoid/{relations/bindings/referenced/one.rb → association/referenced/has_one/binding.rb} +11 -8
- data/lib/mongoid/association/referenced/has_one/buildable.rb +60 -0
- data/lib/mongoid/association/referenced/has_one/eager.rb +35 -0
- data/lib/mongoid/{relations/builders/nested_attributes/one.rb → association/referenced/has_one/nested_builder.rb} +9 -9
- data/lib/mongoid/association/referenced/has_one/proxy.rb +113 -0
- data/lib/mongoid/association/referenced/has_one.rb +204 -0
- data/lib/mongoid/association/referenced/syncable.rb +170 -0
- data/lib/mongoid/association/referenced.rb +7 -0
- data/lib/mongoid/{relations → association}/reflections.rb +21 -17
- data/lib/mongoid/association/relatable.rb +511 -0
- data/lib/mongoid/{relations.rb → association.rb} +57 -56
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded.rb +1 -1
- data/lib/mongoid/atomic.rb +14 -4
- data/lib/mongoid/attributes/dynamic.rb +16 -15
- data/lib/mongoid/attributes/nested.rb +22 -11
- data/lib/mongoid/attributes/processing.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +2 -4
- data/lib/mongoid/attributes.rb +55 -31
- data/lib/mongoid/changeable.rb +1 -1
- data/lib/mongoid/clients/options.rb +7 -5
- data/lib/mongoid/clients/sessions.rb +20 -4
- data/lib/mongoid/composable.rb +4 -4
- data/lib/mongoid/config/environment.rb +21 -8
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/memory.rb +21 -3
- data/lib/mongoid/contextual/mongo.rb +10 -8
- data/lib/mongoid/copyable.rb +11 -6
- data/lib/mongoid/criteria/includable.rb +14 -14
- data/lib/mongoid/criteria/modifiable.rb +8 -3
- data/lib/mongoid/criteria/options.rb +2 -2
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +3 -3
- data/lib/mongoid/criteria/queryable/extensions/string.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/time.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +12 -0
- data/lib/mongoid/criteria/queryable/key.rb +67 -8
- data/lib/mongoid/criteria/queryable/mergeable.rb +5 -4
- data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
- data/lib/mongoid/criteria/queryable/selectable.rb +5 -3
- data/lib/mongoid/criteria/queryable/selector.rb +9 -31
- data/lib/mongoid/criteria.rb +9 -3
- data/lib/mongoid/document.rb +14 -4
- data/lib/mongoid/errors/invalid_dependent_strategy.rb +32 -0
- data/lib/mongoid/errors/invalid_relation_option.rb +29 -0
- data/lib/mongoid/errors/unknown_model.rb +25 -0
- data/lib/mongoid/errors.rb +3 -0
- data/lib/mongoid/extensions/array.rb +5 -5
- data/lib/mongoid/extensions/hash.rb +9 -4
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/range.rb +1 -0
- data/lib/mongoid/extensions/regexp.rb +1 -1
- data/lib/mongoid/extensions/string.rb +2 -2
- data/lib/mongoid/extensions.rb +0 -4
- data/lib/mongoid/factory.rb +13 -3
- data/lib/mongoid/fields/foreign_key.rb +5 -5
- data/lib/mongoid/fields/standard.rb +2 -14
- data/lib/mongoid/fields/validators/macro.rb +1 -1
- data/lib/mongoid/fields.rb +5 -4
- data/lib/mongoid/indexable.rb +4 -1
- data/lib/mongoid/interceptable.rb +8 -6
- data/lib/mongoid/matchable/all.rb +4 -3
- data/lib/mongoid/matchable/and.rb +1 -1
- data/lib/mongoid/matchable/default.rb +71 -24
- data/lib/mongoid/matchable/elem_match.rb +9 -3
- data/lib/mongoid/matchable/eq.rb +22 -0
- data/lib/mongoid/matchable/ne.rb +1 -1
- data/lib/mongoid/matchable/regexp.rb +2 -2
- data/lib/mongoid/matchable.rb +17 -16
- data/lib/mongoid/persistable/deletable.rb +7 -6
- data/lib/mongoid/persistable/incrementable.rb +1 -1
- data/lib/mongoid/persistable/logical.rb +1 -1
- data/lib/mongoid/persistable/pushable.rb +11 -2
- data/lib/mongoid/persistable/settable.rb +57 -12
- data/lib/mongoid/persistable.rb +4 -5
- data/lib/mongoid/persistence_context.rb +26 -11
- data/lib/mongoid/positional.rb +1 -1
- data/lib/mongoid/query_cache.rb +4 -2
- data/lib/mongoid/serializable.rb +4 -4
- data/lib/mongoid/shardable.rb +1 -1
- data/lib/mongoid/touchable.rb +102 -0
- data/lib/mongoid/traversable.rb +3 -3
- data/lib/mongoid/validatable/macros.rb +1 -1
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +5 -5
- data/lib/mongoid/validatable.rb +8 -8
- data/lib/mongoid/version.rb +2 -1
- data/lib/mongoid.rb +1 -0
- data/lib/rails/generators/mongoid/config/config_generator.rb +8 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -0
- data/lib/rails/generators/mongoid/model/templates/model.rb.tt +1 -1
- data/spec/README.md +18 -0
- data/spec/app/models/animal.rb +2 -1
- data/spec/app/models/bomb.rb +1 -1
- data/spec/app/models/customer.rb +11 -0
- data/spec/app/models/customer_address.rb +12 -0
- data/spec/app/models/message.rb +1 -1
- data/spec/app/models/minim.rb +7 -0
- data/spec/app/models/other_owner_object.rb +2 -0
- data/spec/app/models/person.rb +5 -2
- data/spec/app/models/shipment_address.rb +1 -0
- data/spec/app/models/store_as_dup_test3.rb +7 -0
- data/spec/app/models/store_as_dup_test4.rb +7 -0
- data/spec/app/models/updatable.rb +7 -0
- data/spec/app/models/vertex.rb +6 -0
- data/spec/app/models/wiki_page.rb +1 -1
- data/spec/config/mongoid.yml +13 -3
- data/spec/integration/app_spec.rb +341 -0
- data/spec/integration/associations/belongs_to_spec.rb +13 -0
- data/spec/integration/associations/embedded_spec.rb +176 -0
- data/spec/integration/callbacks_models.rb +49 -0
- data/spec/integration/callbacks_spec.rb +216 -0
- data/spec/integration/criteria/date_field_spec.rb +41 -0
- data/spec/integration/criteria/time_with_zone_spec.rb +32 -0
- data/spec/integration/matchable_spec.rb +680 -0
- data/spec/lite_spec_helper.rb +71 -0
- data/spec/mongoid/{relations → association}/accessors_spec.rb +40 -1
- data/spec/mongoid/{relations → association}/auto_save_spec.rb +60 -12
- data/spec/mongoid/{relations → association}/builders_spec.rb +1 -1
- data/spec/mongoid/association/constrainable_spec.rb +115 -0
- data/spec/mongoid/{relations → association}/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +866 -0
- data/spec/mongoid/{relations → association}/eager_spec.rb +12 -12
- data/spec/mongoid/{relations → association/embedded}/cyclic_spec.rb +1 -1
- data/spec/mongoid/{relations → association}/embedded/dirty_spec.rb +0 -0
- data/spec/mongoid/{relations/bindings/embedded/in_spec.rb → association/embedded/embedded_in/binding_spec.rb} +13 -13
- data/spec/mongoid/{relations/builders/embedded/in_spec.rb → association/embedded/embedded_in/buildable_spec.rb} +9 -9
- data/spec/mongoid/{relations/embedded/in_spec.rb → association/embedded/embedded_in/proxy_spec.rb} +55 -77
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +901 -0
- data/spec/mongoid/{relations/bindings/embedded/many_spec.rb → association/embedded/embeds_many/binding_spec.rb} +3 -3
- data/spec/mongoid/{relations/builders/embedded/many_spec.rb → association/embedded/embeds_many/buildable_spec.rb} +17 -45
- data/spec/mongoid/{relations/embedded/many_spec.rb → association/embedded/embeds_many/proxy_spec.rb} +124 -182
- data/spec/mongoid/association/embedded/embeds_many_models.rb +53 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +862 -0
- data/spec/mongoid/{relations/bindings/embedded/one_spec.rb → association/embedded/embeds_one/binding_spec.rb} +4 -4
- data/spec/mongoid/{relations/builders/embedded/one_spec.rb → association/embedded/embeds_one/buildable_spec.rb} +14 -34
- data/spec/mongoid/{relations/embedded/one_spec.rb → association/embedded/embeds_one/proxy_spec.rb} +39 -84
- data/spec/mongoid/association/embedded/embeds_one_dnl_models.rb +6 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +51 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +954 -0
- data/spec/mongoid/{relations → association}/macros_spec.rb +148 -73
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/many_spec.rb +16 -19
- data/spec/mongoid/{relations/builders/nested_attributes → association/nested}/one_spec.rb +17 -20
- data/spec/mongoid/association/options_spec.rb +1321 -0
- data/spec/mongoid/{relations → association}/polymorphic_spec.rb +66 -34
- data/spec/mongoid/{relations/bindings/referenced/in_spec.rb → association/referenced/belongs_to/binding_spec.rb} +7 -7
- data/spec/mongoid/{relations/builders/referenced/in_spec.rb → association/referenced/belongs_to/buildable_spec.rb} +46 -79
- data/spec/mongoid/{relations/eager/belongs_to_spec.rb → association/referenced/belongs_to/eager_spec.rb} +33 -14
- data/spec/mongoid/{relations/referenced/in_spec.rb → association/referenced/belongs_to/proxy_spec.rb} +57 -91
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2023 -0
- data/spec/mongoid/{relations/bindings/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/buildable_spec.rb +121 -0
- data/spec/mongoid/{relations/eager/has_and_belongs_to_many_spec.rb → association/referenced/has_and_belongs_to_many/eager_spec.rb} +26 -7
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_persistence_spec.rb +56 -0
- data/spec/mongoid/{relations/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/proxy_spec.rb} +247 -99
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +26 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +1027 -0
- data/spec/mongoid/{relations/bindings/referenced/many_spec.rb → association/referenced/has_many/binding_spec.rb} +5 -5
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +119 -0
- data/spec/mongoid/{relations/eager/has_many_spec.rb → association/referenced/has_many/eager_spec.rb} +26 -11
- data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +227 -1
- data/spec/mongoid/association/referenced/has_many/proxy_query_spec.rb +23 -0
- data/spec/mongoid/{relations/referenced/many_spec.rb → association/referenced/has_many/proxy_spec.rb} +30 -94
- data/spec/mongoid/association/referenced/has_many_models.rb +37 -0
- data/spec/mongoid/association/referenced/has_many_spec.rb +1225 -0
- data/spec/mongoid/{relations/bindings/referenced/one_spec.rb → association/referenced/has_one/binding_spec.rb} +4 -4
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +113 -0
- data/spec/mongoid/{relations/eager/has_one_spec.rb → association/referenced/has_one/eager_spec.rb} +10 -10
- data/spec/mongoid/{relations/referenced/one_spec.rb → association/referenced/has_one/proxy_spec.rb} +9 -109
- data/spec/mongoid/association/referenced/has_one_models.rb +48 -0
- data/spec/mongoid/association/referenced/has_one_spec.rb +1360 -0
- data/spec/mongoid/{relations → association}/reflections_spec.rb +1 -12
- data/spec/mongoid/{relations/synchronization_spec.rb → association/syncable_spec.rb} +4 -2
- data/spec/mongoid/{relations_spec.rb → association_spec.rb} +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +2 -2
- data/spec/mongoid/atomic/paths_spec.rb +41 -0
- data/spec/mongoid/atomic_spec.rb +4 -4
- data/spec/mongoid/attributes/dynamic_spec.rb +153 -0
- data/spec/mongoid/attributes/nested_spec.rb +29 -11
- data/spec/mongoid/attributes/readonly_spec.rb +80 -125
- data/spec/mongoid/attributes_spec.rb +298 -9
- data/spec/mongoid/clients/factory_spec.rb +20 -38
- data/spec/mongoid/clients/options_spec.rb +64 -50
- data/spec/mongoid/clients/sessions_spec.rb +9 -5
- data/spec/mongoid/clients/transactions_spec.rb +390 -0
- data/spec/mongoid/clients_spec.rb +70 -10
- data/spec/mongoid/config_spec.rb +27 -1
- data/spec/mongoid/contextual/atomic_spec.rb +37 -14
- data/spec/mongoid/contextual/geo_near_spec.rb +11 -2
- data/spec/mongoid/contextual/map_reduce_spec.rb +20 -5
- data/spec/mongoid/contextual/memory_spec.rb +19 -0
- data/spec/mongoid/contextual/mongo_spec.rb +107 -56
- data/spec/mongoid/copyable_spec.rb +90 -6
- data/spec/mongoid/copyable_spec_models.rb +17 -0
- data/spec/mongoid/criteria/modifiable_spec.rb +173 -1
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +54 -0
- data/spec/mongoid/criteria/queryable/extensions/regexp_spec.rb +7 -7
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +44 -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/key_spec.rb +48 -6
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +12 -0
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +762 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +5 -224
- data/spec/mongoid/criteria/queryable/selector_spec.rb +37 -0
- data/spec/mongoid/criteria_spec.rb +36 -19
- data/spec/mongoid/document_fields_spec.rb +88 -0
- data/spec/mongoid/document_persistence_context_spec.rb +33 -0
- data/spec/mongoid/document_spec.rb +29 -4
- data/spec/mongoid/extensions/array_spec.rb +11 -15
- data/spec/mongoid/extensions/hash_spec.rb +18 -1
- data/spec/mongoid/extensions/object_spec.rb +7 -11
- data/spec/mongoid/extensions/range_spec.rb +7 -0
- data/spec/mongoid/factory_spec.rb +21 -3
- data/spec/mongoid/fields/foreign_key_spec.rb +24 -32
- data/spec/mongoid/fields_spec.rb +1 -1
- data/spec/mongoid/indexable_spec.rb +24 -12
- data/spec/mongoid/interceptable_spec.rb +22 -1
- data/spec/mongoid/matchable/default_spec.rb +10 -3
- data/spec/mongoid/matchable/elem_match_spec.rb +20 -0
- data/spec/mongoid/matchable/eq_spec.rb +48 -0
- data/spec/mongoid/matchable/regexp_spec.rb +2 -2
- data/spec/mongoid/matchable_spec.rb +2 -2
- data/spec/mongoid/persistable/pushable_spec.rb +55 -1
- data/spec/mongoid/persistable/savable_spec.rb +5 -5
- data/spec/mongoid/persistable/settable_spec.rb +125 -10
- data/spec/mongoid/persistable_spec.rb +21 -6
- data/spec/mongoid/persistence_context_spec.rb +1 -1
- data/spec/mongoid/query_cache_spec.rb +65 -27
- data/spec/mongoid/relations/proxy_spec.rb +124 -124
- data/spec/mongoid/scopable_spec.rb +2 -1
- data/spec/mongoid/shardable_spec.rb +32 -12
- data/spec/mongoid/tasks/database_rake_spec.rb +13 -13
- data/spec/mongoid/tasks/database_spec.rb +1 -1
- data/spec/mongoid/{relations/touchable_spec.rb → touchable_spec.rb} +40 -1
- data/spec/mongoid/validatable/associated_spec.rb +1 -1
- data/spec/mongoid/validatable/presence_spec.rb +7 -6
- data/spec/mongoid/validatable/uniqueness_spec.rb +33 -6
- data/spec/mongoid/validatable_spec.rb +1 -1
- data/spec/shared/LICENSE +20 -0
- data/spec/shared/bin/get-mongodb-download-url +17 -0
- data/spec/shared/lib/mrss/child_process_helper.rb +80 -0
- data/spec/shared/lib/mrss/cluster_config.rb +221 -0
- data/spec/shared/lib/mrss/constraints.rb +354 -0
- data/spec/shared/lib/mrss/docker_runner.rb +265 -0
- data/spec/shared/lib/mrss/lite_constraints.rb +191 -0
- data/spec/shared/lib/mrss/server_version_registry.rb +115 -0
- data/spec/shared/lib/mrss/spec_organizer.rb +162 -0
- data/spec/shared/lib/mrss/utils.rb +15 -0
- data/spec/shared/share/Dockerfile.erb +231 -0
- data/spec/shared/shlib/distro.sh +73 -0
- data/spec/shared/shlib/server.sh +290 -0
- data/spec/shared/shlib/set_env.sh +128 -0
- data/spec/spec_helper.rb +34 -49
- data/spec/support/cluster_config.rb +3 -3
- data/spec/support/constraints.rb +21 -76
- data/spec/support/expectations.rb +17 -3
- data/spec/support/spec_config.rb +20 -7
- data.tar.gz.sig +0 -0
- metadata +646 -541
- metadata.gz.sig +1 -5
- data/lib/mongoid/relations/accessors.rb +0 -267
- data/lib/mongoid/relations/auto_save.rb +0 -94
- data/lib/mongoid/relations/bindings/embedded/in.rb +0 -59
- data/lib/mongoid/relations/bindings/referenced/in.rb +0 -65
- data/lib/mongoid/relations/bindings/referenced/many_to_many.rb +0 -70
- data/lib/mongoid/relations/bindings.rb +0 -9
- data/lib/mongoid/relations/builder.rb +0 -57
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +0 -199
- data/lib/mongoid/relations/builders/referenced/in.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many.rb +0 -26
- data/lib/mongoid/relations/builders/referenced/many_to_many.rb +0 -39
- data/lib/mongoid/relations/builders/referenced/one.rb +0 -26
- data/lib/mongoid/relations/builders.rb +0 -106
- data/lib/mongoid/relations/cascading/delete.rb +0 -44
- data/lib/mongoid/relations/cascading/destroy.rb +0 -43
- data/lib/mongoid/relations/cascading/nullify.rb +0 -35
- data/lib/mongoid/relations/cascading/restrict.rb +0 -39
- data/lib/mongoid/relations/cascading.rb +0 -56
- data/lib/mongoid/relations/conversions.rb +0 -34
- data/lib/mongoid/relations/counter_cache.rb +0 -160
- data/lib/mongoid/relations/cyclic.rb +0 -107
- data/lib/mongoid/relations/eager/base.rb +0 -153
- data/lib/mongoid/relations/eager/belongs_to.rb +0 -31
- data/lib/mongoid/relations/eager/has_and_belongs_to_many.rb +0 -47
- data/lib/mongoid/relations/eager/has_many.rb +0 -38
- data/lib/mongoid/relations/eager/has_one.rb +0 -30
- data/lib/mongoid/relations/embedded/in.rb +0 -241
- data/lib/mongoid/relations/embedded/many.rb +0 -683
- data/lib/mongoid/relations/embedded/one.rb +0 -235
- data/lib/mongoid/relations/macros.rb +0 -367
- data/lib/mongoid/relations/metadata.rb +0 -1179
- data/lib/mongoid/relations/nested_builder.rb +0 -74
- data/lib/mongoid/relations/options.rb +0 -49
- data/lib/mongoid/relations/polymorphic.rb +0 -39
- data/lib/mongoid/relations/referenced/in.rb +0 -304
- data/lib/mongoid/relations/referenced/many.rb +0 -812
- data/lib/mongoid/relations/referenced/many_to_many.rb +0 -479
- data/lib/mongoid/relations/referenced/one.rb +0 -290
- data/lib/mongoid/relations/synchronization.rb +0 -169
- data/lib/mongoid/relations/targets/enumerable.rb +0 -493
- data/lib/mongoid/relations/targets.rb +0 -2
- data/lib/mongoid/relations/touchable.rb +0 -97
- data/spec/mongoid/fields/internal/foreign_keys/array_spec.rb +0 -184
- data/spec/mongoid/fields/internal/foreign_keys/object_spec.rb +0 -201
- data/spec/mongoid/relations/builders/referenced/many_spec.rb +0 -137
- data/spec/mongoid/relations/builders/referenced/many_to_many_spec.rb +0 -178
- data/spec/mongoid/relations/builders/referenced/one_spec.rb +0 -111
- data/spec/mongoid/relations/cascading/delete_spec.rb +0 -101
- data/spec/mongoid/relations/cascading/destroy_spec.rb +0 -47
- data/spec/mongoid/relations/cascading/nullify_spec.rb +0 -32
- data/spec/mongoid/relations/cascading/restrict_spec.rb +0 -68
- data/spec/mongoid/relations/cascading_spec.rb +0 -355
- data/spec/mongoid/relations/constraint_spec.rb +0 -75
- data/spec/mongoid/relations/conversions_spec.rb +0 -128
- data/spec/mongoid/relations/metadata_spec.rb +0 -1985
- data/spec/mongoid/relations/options_spec.rb +0 -35
|
@@ -1,124 +1,124 @@
|
|
|
1
|
-
require "spec_helper"
|
|
2
|
-
|
|
3
|
-
describe Mongoid::Relations::Proxy do
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
end
|
|
1
|
+
# require "spec_helper"
|
|
2
|
+
#
|
|
3
|
+
# describe Mongoid::Relations::Proxy do
|
|
4
|
+
#
|
|
5
|
+
# describe '#with' do
|
|
6
|
+
#
|
|
7
|
+
# let(:circus) do
|
|
8
|
+
# Circus.new
|
|
9
|
+
# end
|
|
10
|
+
#
|
|
11
|
+
# let(:animal) do
|
|
12
|
+
# Animal.new
|
|
13
|
+
# end
|
|
14
|
+
#
|
|
15
|
+
# before do
|
|
16
|
+
# circus.animals << animal
|
|
17
|
+
# circus.save
|
|
18
|
+
# end
|
|
19
|
+
#
|
|
20
|
+
# it 'uses the new persistence options' do
|
|
21
|
+
# expect {
|
|
22
|
+
# animal.with(write: { w: 100 }) do |an|
|
|
23
|
+
# an.update_attribute(:name, 'kangaroo')
|
|
24
|
+
# end
|
|
25
|
+
# }.to raise_exception(Mongo::Error::OperationFailure)
|
|
26
|
+
# end
|
|
27
|
+
# end
|
|
28
|
+
#
|
|
29
|
+
# describe "#find" do
|
|
30
|
+
# let(:person) do
|
|
31
|
+
# Person.create
|
|
32
|
+
# end
|
|
33
|
+
#
|
|
34
|
+
# let(:messages) do
|
|
35
|
+
# person.messages
|
|
36
|
+
# end
|
|
37
|
+
#
|
|
38
|
+
# let(:msg1) do
|
|
39
|
+
# messages.create(body: 'msg1')
|
|
40
|
+
# end
|
|
41
|
+
#
|
|
42
|
+
# it "returns nil with no arguments" do
|
|
43
|
+
# expect(messages.find).to be_nil
|
|
44
|
+
# expect(messages.send(:find)).to be_nil
|
|
45
|
+
# expect(messages.__send__(:find)).to be_nil
|
|
46
|
+
# expect(messages.public_send(:find)).to be_nil
|
|
47
|
+
# end
|
|
48
|
+
#
|
|
49
|
+
# it "returns the object corresponding to the id" do
|
|
50
|
+
# expect(messages.find(msg1.id)).to eq(msg1)
|
|
51
|
+
# expect(messages.send(:find, msg1.id)).to eq(msg1)
|
|
52
|
+
# expect(messages.__send__(:find, msg1.id)).to eq(msg1)
|
|
53
|
+
# expect(messages.public_send(:find, msg1.id)).to eq(msg1)
|
|
54
|
+
# end
|
|
55
|
+
# end
|
|
56
|
+
#
|
|
57
|
+
# describe "#extend" do
|
|
58
|
+
#
|
|
59
|
+
# before(:all) do
|
|
60
|
+
# Person.reset_callbacks(:validate)
|
|
61
|
+
# module Testable
|
|
62
|
+
# end
|
|
63
|
+
# end
|
|
64
|
+
#
|
|
65
|
+
# after(:all) do
|
|
66
|
+
# Object.send(:remove_const, :Testable)
|
|
67
|
+
# end
|
|
68
|
+
#
|
|
69
|
+
# let(:person) do
|
|
70
|
+
# Person.create
|
|
71
|
+
# end
|
|
72
|
+
#
|
|
73
|
+
# let(:name) do
|
|
74
|
+
# person.build_name
|
|
75
|
+
# end
|
|
76
|
+
#
|
|
77
|
+
# before do
|
|
78
|
+
# name.namable.extend(Testable)
|
|
79
|
+
# end
|
|
80
|
+
#
|
|
81
|
+
# it "extends the proxied object" do
|
|
82
|
+
# expect(person).to be_a(Testable)
|
|
83
|
+
# end
|
|
84
|
+
#
|
|
85
|
+
# context "when extending from the relation definition" do
|
|
86
|
+
#
|
|
87
|
+
# let!(:address) do
|
|
88
|
+
# person.addresses.create(street: "hobrecht")
|
|
89
|
+
# end
|
|
90
|
+
#
|
|
91
|
+
# let(:found) do
|
|
92
|
+
# person.addresses.find_by_street("hobrecht")
|
|
93
|
+
# end
|
|
94
|
+
#
|
|
95
|
+
# it "extends the proxy" do
|
|
96
|
+
# expect(found).to eq(address)
|
|
97
|
+
# end
|
|
98
|
+
# end
|
|
99
|
+
# end
|
|
100
|
+
#
|
|
101
|
+
# describe "equality" do
|
|
102
|
+
# let(:messages) do
|
|
103
|
+
# Person.create.messages
|
|
104
|
+
# end
|
|
105
|
+
#
|
|
106
|
+
# it "is #equal? to itself" do
|
|
107
|
+
# expect(messages.equal?(messages)).to eq(true)
|
|
108
|
+
# end
|
|
109
|
+
#
|
|
110
|
+
# it "is == to itself" do
|
|
111
|
+
# expect(messages == messages).to eq(true)
|
|
112
|
+
# end
|
|
113
|
+
#
|
|
114
|
+
# it "is not #equal? to its target" do
|
|
115
|
+
# expect(messages.equal?(messages.target)).to eq(false)
|
|
116
|
+
# expect(messages.target.equal?(messages)).to eq(false)
|
|
117
|
+
# end
|
|
118
|
+
#
|
|
119
|
+
# it "is == to its target" do
|
|
120
|
+
# expect(messages == messages.target).to eq(true)
|
|
121
|
+
# expect(messages.target == messages).to eq(true)
|
|
122
|
+
# end
|
|
123
|
+
# end
|
|
124
|
+
# end
|
|
@@ -227,7 +227,8 @@ describe Mongoid::Scopable do
|
|
|
227
227
|
|
|
228
228
|
context "when provided a criteria" do
|
|
229
229
|
|
|
230
|
-
context 'when a collation is defined on the criteria'
|
|
230
|
+
context 'when a collation is defined on the criteria' do
|
|
231
|
+
min_server_version '3.4'
|
|
231
232
|
|
|
232
233
|
before do
|
|
233
234
|
Band.scope(:tests, ->{ Band.where(name: 'TESTING').collation(locale: 'en_US', strength: 2) })
|
|
@@ -49,23 +49,43 @@ describe Mongoid::Shardable do
|
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
|
|
52
|
-
describe
|
|
52
|
+
describe '#shard_key_selector' do
|
|
53
|
+
subject { instance.shard_key_selector }
|
|
54
|
+
let(:klass) { Band }
|
|
55
|
+
let(:value) { 'a-brand-name' }
|
|
53
56
|
|
|
54
|
-
|
|
55
|
-
Band
|
|
56
|
-
end
|
|
57
|
+
before { klass.shard_key(:name) }
|
|
57
58
|
|
|
58
|
-
|
|
59
|
-
klass.new
|
|
60
|
-
end
|
|
59
|
+
context 'when record is new' do
|
|
60
|
+
let(:instance) { klass.new(name: value) }
|
|
61
61
|
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
62
|
+
it { is_expected.to eq({ 'name' => value }) }
|
|
63
|
+
|
|
64
|
+
context 'changing shard key value' do
|
|
65
|
+
let(:new_value) { 'a-new-value' }
|
|
66
|
+
|
|
67
|
+
before do
|
|
68
|
+
instance.name = new_value
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it { is_expected.to eq({ 'name' => new_value }) }
|
|
72
|
+
end
|
|
65
73
|
end
|
|
66
74
|
|
|
67
|
-
|
|
68
|
-
|
|
75
|
+
context 'when record is persisted' do
|
|
76
|
+
let(:instance) { klass.create(name: value) }
|
|
77
|
+
|
|
78
|
+
it { is_expected.to eq({ 'name' => value }) }
|
|
79
|
+
|
|
80
|
+
context 'changing shard key value' do
|
|
81
|
+
let(:new_value) { 'a-new-value' }
|
|
82
|
+
|
|
83
|
+
before do
|
|
84
|
+
instance.name = new_value
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it { is_expected.to eq({ 'name' => value }) }
|
|
88
|
+
end
|
|
69
89
|
end
|
|
70
90
|
end
|
|
71
91
|
end
|
|
@@ -45,7 +45,7 @@ shared_context "rails rake task" do
|
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
describe "db:drop"
|
|
48
|
+
describe "db:drop" do
|
|
49
49
|
include_context "rake task"
|
|
50
50
|
include_context "rails rake task"
|
|
51
51
|
|
|
@@ -58,7 +58,7 @@ describe "db:drop", if: non_legacy_server? do
|
|
|
58
58
|
end
|
|
59
59
|
end
|
|
60
60
|
|
|
61
|
-
describe "db:purge"
|
|
61
|
+
describe "db:purge" do
|
|
62
62
|
include_context "rake task"
|
|
63
63
|
include_context "rails rake task"
|
|
64
64
|
|
|
@@ -71,7 +71,7 @@ describe "db:purge", if: non_legacy_server? do
|
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
73
|
|
|
74
|
-
describe "db:seed"
|
|
74
|
+
describe "db:seed" do
|
|
75
75
|
include_context "rake task"
|
|
76
76
|
include_context "rails rake task"
|
|
77
77
|
|
|
@@ -85,7 +85,7 @@ describe "db:seed", if: non_legacy_server? do
|
|
|
85
85
|
end
|
|
86
86
|
end
|
|
87
87
|
|
|
88
|
-
describe "db:setup"
|
|
88
|
+
describe "db:setup" do
|
|
89
89
|
include_context "rake task"
|
|
90
90
|
include_context "rails rake task"
|
|
91
91
|
|
|
@@ -117,7 +117,7 @@ describe "db:setup", if: non_legacy_server? do
|
|
|
117
117
|
end
|
|
118
118
|
end
|
|
119
119
|
|
|
120
|
-
describe "db:reset"
|
|
120
|
+
describe "db:reset" do
|
|
121
121
|
include_context "rake task"
|
|
122
122
|
include_context "rails rake task"
|
|
123
123
|
|
|
@@ -135,7 +135,7 @@ describe "db:reset", if: non_legacy_server? do
|
|
|
135
135
|
end
|
|
136
136
|
end
|
|
137
137
|
|
|
138
|
-
describe "db:create"
|
|
138
|
+
describe "db:create" do
|
|
139
139
|
include_context "rake task"
|
|
140
140
|
include_context "rails rake task"
|
|
141
141
|
|
|
@@ -144,7 +144,7 @@ describe "db:create", if: non_legacy_server? do
|
|
|
144
144
|
end
|
|
145
145
|
end
|
|
146
146
|
|
|
147
|
-
describe "db:migrate"
|
|
147
|
+
describe "db:migrate" do
|
|
148
148
|
include_context "rake task"
|
|
149
149
|
include_context "rails rake task"
|
|
150
150
|
|
|
@@ -153,7 +153,7 @@ describe "db:migrate", if: non_legacy_server? do
|
|
|
153
153
|
end
|
|
154
154
|
end
|
|
155
155
|
|
|
156
|
-
describe "db:test:prepare"
|
|
156
|
+
describe "db:test:prepare" do
|
|
157
157
|
include_context "rake task"
|
|
158
158
|
include_context "rails rake task"
|
|
159
159
|
|
|
@@ -174,7 +174,7 @@ describe "db:test:prepare", if: non_legacy_server? do
|
|
|
174
174
|
end
|
|
175
175
|
end
|
|
176
176
|
|
|
177
|
-
describe "db:mongoid:create_indexes"
|
|
177
|
+
describe "db:mongoid:create_indexes" do
|
|
178
178
|
include_context "rake task"
|
|
179
179
|
|
|
180
180
|
it_behaves_like "create_indexes"
|
|
@@ -198,7 +198,7 @@ describe "db:mongoid:create_indexes", if: non_legacy_server? do
|
|
|
198
198
|
end
|
|
199
199
|
end
|
|
200
200
|
|
|
201
|
-
describe "db:mongoid:remove_undefined_indexes"
|
|
201
|
+
describe "db:mongoid:remove_undefined_indexes" do
|
|
202
202
|
include_context "rake task"
|
|
203
203
|
|
|
204
204
|
it "receives remove_undefined_indexes" do
|
|
@@ -224,7 +224,7 @@ describe "db:mongoid:remove_undefined_indexes", if: non_legacy_server? do
|
|
|
224
224
|
end
|
|
225
225
|
end
|
|
226
226
|
|
|
227
|
-
describe "db:mongoid:remove_indexes"
|
|
227
|
+
describe "db:mongoid:remove_indexes" do
|
|
228
228
|
include_context "rake task"
|
|
229
229
|
|
|
230
230
|
it "receives remove_indexes" do
|
|
@@ -250,7 +250,7 @@ describe "db:mongoid:remove_indexes", if: non_legacy_server? do
|
|
|
250
250
|
end
|
|
251
251
|
end
|
|
252
252
|
|
|
253
|
-
describe "db:mongoid:drop"
|
|
253
|
+
describe "db:mongoid:drop" do
|
|
254
254
|
include_context "rake task"
|
|
255
255
|
|
|
256
256
|
it "works" do
|
|
@@ -266,7 +266,7 @@ describe "db:mongoid:drop", if: non_legacy_server? do
|
|
|
266
266
|
end
|
|
267
267
|
end
|
|
268
268
|
|
|
269
|
-
describe "db:mongoid:purge"
|
|
269
|
+
describe "db:mongoid:purge" do
|
|
270
270
|
include_context "rake task"
|
|
271
271
|
|
|
272
272
|
it "receives a purge" do
|
|
@@ -1,11 +1,36 @@
|
|
|
1
1
|
require "spec_helper"
|
|
2
2
|
|
|
3
|
-
describe Mongoid::
|
|
3
|
+
describe Mongoid::Touchable do
|
|
4
4
|
|
|
5
5
|
describe "#touch" do
|
|
6
6
|
|
|
7
|
+
context "when the document has no associations" do
|
|
8
|
+
let(:updatable) do
|
|
9
|
+
Updatable.create
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it "responds to #touch" do
|
|
13
|
+
expect(updatable).to respond_to(:touch)
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
it "updates the timestamp when called" do
|
|
17
|
+
expect(updatable.updated_at).to be_nil
|
|
18
|
+
|
|
19
|
+
updatable.touch
|
|
20
|
+
updated_at = updatable.updated_at
|
|
21
|
+
expect(updated_at).not_to be_nil
|
|
22
|
+
|
|
23
|
+
updatable.touch
|
|
24
|
+
expect(updatable.updated_at).to be > updated_at
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
7
28
|
context "when the document is embedded" do
|
|
8
29
|
|
|
30
|
+
before do
|
|
31
|
+
Label.send(:include, Mongoid::Touchable::InstanceMethods)
|
|
32
|
+
end
|
|
33
|
+
|
|
9
34
|
let(:band) do
|
|
10
35
|
Band.create(name: "Placebo")
|
|
11
36
|
end
|
|
@@ -29,6 +54,11 @@ describe Mongoid::Relations::Touchable do
|
|
|
29
54
|
|
|
30
55
|
context "when no relations have touch options" do
|
|
31
56
|
|
|
57
|
+
before do
|
|
58
|
+
Person.send(:include, Mongoid::Touchable::InstanceMethods)
|
|
59
|
+
Agent.send(:include, Mongoid::Touchable::InstanceMethods)
|
|
60
|
+
end
|
|
61
|
+
|
|
32
62
|
context "when no updated at is defined" do
|
|
33
63
|
|
|
34
64
|
let(:person) do
|
|
@@ -209,6 +239,11 @@ describe Mongoid::Relations::Touchable do
|
|
|
209
239
|
|
|
210
240
|
context "when the relation is a parent of an embedded doc" do
|
|
211
241
|
|
|
242
|
+
before do
|
|
243
|
+
Page.send(:include, Mongoid::Touchable::InstanceMethods)
|
|
244
|
+
Edit.send(:include, Mongoid::Touchable::InstanceMethods)
|
|
245
|
+
end
|
|
246
|
+
|
|
212
247
|
let(:page) do
|
|
213
248
|
WikiPage.create(title: "test")
|
|
214
249
|
end
|
|
@@ -229,6 +264,10 @@ describe Mongoid::Relations::Touchable do
|
|
|
229
264
|
|
|
230
265
|
context "when the parent of embedded doc has cascade callbacks" do
|
|
231
266
|
|
|
267
|
+
before do
|
|
268
|
+
Band.send(:include, Mongoid::Touchable::InstanceMethods)
|
|
269
|
+
end
|
|
270
|
+
|
|
232
271
|
let!(:book) do
|
|
233
272
|
Book.new
|
|
234
273
|
end
|
|
@@ -171,7 +171,7 @@ describe Mongoid::Validatable::AssociatedValidator do
|
|
|
171
171
|
end
|
|
172
172
|
end
|
|
173
173
|
|
|
174
|
-
context "when the
|
|
174
|
+
context "when the association has all valid documents" do
|
|
175
175
|
|
|
176
176
|
let(:associated) do
|
|
177
177
|
double(valid?: true, flagged_for_destroy?: false)
|
|
@@ -211,13 +211,14 @@ describe Mongoid::Validatable::PresenceValidator do
|
|
|
211
211
|
|
|
212
212
|
context "when the relation is a has one" do
|
|
213
213
|
|
|
214
|
-
|
|
214
|
+
around do |example|
|
|
215
|
+
original_relations = Person.relations
|
|
216
|
+
Person.has_one :game, autosave: true
|
|
215
217
|
Person.validates :game, presence: true
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
after do
|
|
218
|
+
example.run
|
|
219
219
|
Person.reset_callbacks(:save)
|
|
220
220
|
Person.reset_callbacks(:validate)
|
|
221
|
+
Person.relations = original_relations
|
|
221
222
|
end
|
|
222
223
|
|
|
223
224
|
context "when the relation is new" do
|
|
@@ -249,7 +250,7 @@ describe Mongoid::Validatable::PresenceValidator do
|
|
|
249
250
|
context "when the relation is a has one and autosave is false" do
|
|
250
251
|
|
|
251
252
|
before do
|
|
252
|
-
Person.relations["game"][:autosave] = false
|
|
253
|
+
Person.relations["game"].options[:autosave] = false
|
|
253
254
|
Person.validates :game, presence: true
|
|
254
255
|
end
|
|
255
256
|
|
|
@@ -258,7 +259,7 @@ describe Mongoid::Validatable::PresenceValidator do
|
|
|
258
259
|
end
|
|
259
260
|
|
|
260
261
|
it "does not change autosave on the relation" do
|
|
261
|
-
expect(Person.relations["game"]
|
|
262
|
+
expect(Person.relations["game"].autosave?).to be false
|
|
262
263
|
end
|
|
263
264
|
|
|
264
265
|
context "when the relation is new" do
|
|
@@ -796,20 +796,47 @@ describe Mongoid::Validatable::UniquenessValidator do
|
|
|
796
796
|
end
|
|
797
797
|
end
|
|
798
798
|
|
|
799
|
-
context "when a range
|
|
799
|
+
context "when a range condition is provided" do
|
|
800
800
|
|
|
801
801
|
before do
|
|
802
|
-
Dictionary.validates_uniqueness_of(:name,
|
|
803
|
-
|
|
804
|
-
Dictionary.create(name: "French-English", year: 1960)
|
|
802
|
+
Dictionary.validates_uniqueness_of(:name,
|
|
803
|
+
conditions: -> { Dictionary.where(:year.gte => 1900, :year.lt => 2000) })
|
|
805
804
|
end
|
|
806
805
|
|
|
807
806
|
after do
|
|
808
807
|
Dictionary.reset_callbacks(:validate)
|
|
809
808
|
end
|
|
810
809
|
|
|
811
|
-
|
|
812
|
-
|
|
810
|
+
context 'when multiple documents would match the condition' do
|
|
811
|
+
it "prevents creation of new document" do
|
|
812
|
+
Dictionary.create!(name: "French-English", year: 1950)
|
|
813
|
+
|
|
814
|
+
expect do
|
|
815
|
+
Dictionary.create!(name: "French-English", year: 1960)
|
|
816
|
+
end.to raise_error(Mongoid::Errors::Validations, /Name is already taken/)
|
|
817
|
+
|
|
818
|
+
expect(Dictionary.all.size).to eq(1)
|
|
819
|
+
end
|
|
820
|
+
end
|
|
821
|
+
|
|
822
|
+
context 'when only new document would match the condition' do
|
|
823
|
+
it 'creates the new document' do
|
|
824
|
+
Dictionary.create!(name: "French-English", year: 950)
|
|
825
|
+
expect do
|
|
826
|
+
Dictionary.create!(name: "French-English", year: 1950)
|
|
827
|
+
end.not_to raise_error
|
|
828
|
+
end
|
|
829
|
+
end
|
|
830
|
+
|
|
831
|
+
context 'when only existing document matches the condition' do
|
|
832
|
+
it 'creates the new document' do
|
|
833
|
+
pending 'https://jira.mongodb.org/browse/MONGOID-4815'
|
|
834
|
+
|
|
835
|
+
Dictionary.create!(name: "French-English", year: 1950)
|
|
836
|
+
expect do
|
|
837
|
+
Dictionary.create!(name: "French-English", year: 950)
|
|
838
|
+
end.not_to raise_error
|
|
839
|
+
end
|
|
813
840
|
end
|
|
814
841
|
end
|
|
815
842
|
|
data/spec/shared/LICENSE
ADDED
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
Copyright (c) 2020 MongoDB, Inc.
|
|
2
|
+
|
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
|
4
|
+
a copy of this software and associated documentation files (the
|
|
5
|
+
"Software"), to deal in the Software without restriction, including
|
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
|
9
|
+
the following conditions:
|
|
10
|
+
|
|
11
|
+
The above copyright notice and this permission notice shall be
|
|
12
|
+
included in all copies or substantial portions of the Software.
|
|
13
|
+
|
|
14
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
17
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
|
18
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
|
19
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
|
20
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
desired_version, arch = ARGV
|
|
4
|
+
if arch.nil?
|
|
5
|
+
STDERR.puts "Usage: get-mongodb-download-url desired-version arch"
|
|
6
|
+
exit 1
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
$: << File.join(File.dirname(__FILE__), '../lib')
|
|
10
|
+
require 'mrss/server_version_registry'
|
|
11
|
+
|
|
12
|
+
begin
|
|
13
|
+
puts Mrss::ServerVersionRegistry.new(desired_version, arch).download_url
|
|
14
|
+
rescue Mrss::ServerVersionRegistry::Error => exc
|
|
15
|
+
STDERR.puts "Error: #{exc}"
|
|
16
|
+
exit 2
|
|
17
|
+
end
|