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
|
@@ -204,14 +204,10 @@ describe Mongoid::Extensions::Array do
|
|
|
204
204
|
|
|
205
205
|
context "when the related model uses object ids" do
|
|
206
206
|
|
|
207
|
-
let(:
|
|
207
|
+
let(:association) do
|
|
208
208
|
Person.relations["preferences"]
|
|
209
209
|
end
|
|
210
210
|
|
|
211
|
-
let(:constraint) do
|
|
212
|
-
metadata.constraint
|
|
213
|
-
end
|
|
214
|
-
|
|
215
211
|
context "when provided an object id" do
|
|
216
212
|
|
|
217
213
|
let(:object_id) do
|
|
@@ -219,7 +215,7 @@ describe Mongoid::Extensions::Array do
|
|
|
219
215
|
end
|
|
220
216
|
|
|
221
217
|
let(:fk) do
|
|
222
|
-
Array.__mongoize_fk__(
|
|
218
|
+
Array.__mongoize_fk__(association, object_id)
|
|
223
219
|
end
|
|
224
220
|
|
|
225
221
|
it "returns the object id as an array" do
|
|
@@ -234,7 +230,7 @@ describe Mongoid::Extensions::Array do
|
|
|
234
230
|
end
|
|
235
231
|
|
|
236
232
|
let(:fk) do
|
|
237
|
-
Array.__mongoize_fk__(
|
|
233
|
+
Array.__mongoize_fk__(association, [ object_id ])
|
|
238
234
|
end
|
|
239
235
|
|
|
240
236
|
it "returns the object ids" do
|
|
@@ -251,7 +247,7 @@ describe Mongoid::Extensions::Array do
|
|
|
251
247
|
end
|
|
252
248
|
|
|
253
249
|
let(:fk) do
|
|
254
|
-
Array.__mongoize_fk__(
|
|
250
|
+
Array.__mongoize_fk__(association, object_id.to_s)
|
|
255
251
|
end
|
|
256
252
|
|
|
257
253
|
it "returns the object id in an array" do
|
|
@@ -266,7 +262,7 @@ describe Mongoid::Extensions::Array do
|
|
|
266
262
|
end
|
|
267
263
|
|
|
268
264
|
let(:fk) do
|
|
269
|
-
Array.__mongoize_fk__(
|
|
265
|
+
Array.__mongoize_fk__(association, string)
|
|
270
266
|
end
|
|
271
267
|
|
|
272
268
|
it "returns the string in an array" do
|
|
@@ -277,7 +273,7 @@ describe Mongoid::Extensions::Array do
|
|
|
277
273
|
context "when the string is blank" do
|
|
278
274
|
|
|
279
275
|
let(:fk) do
|
|
280
|
-
Array.__mongoize_fk__(
|
|
276
|
+
Array.__mongoize_fk__(association, "")
|
|
281
277
|
end
|
|
282
278
|
|
|
283
279
|
it "returns an empty array" do
|
|
@@ -289,7 +285,7 @@ describe Mongoid::Extensions::Array do
|
|
|
289
285
|
context "when provided nil" do
|
|
290
286
|
|
|
291
287
|
let(:fk) do
|
|
292
|
-
Array.__mongoize_fk__(
|
|
288
|
+
Array.__mongoize_fk__(association, nil)
|
|
293
289
|
end
|
|
294
290
|
|
|
295
291
|
it "returns an empty array" do
|
|
@@ -306,7 +302,7 @@ describe Mongoid::Extensions::Array do
|
|
|
306
302
|
end
|
|
307
303
|
|
|
308
304
|
let(:fk) do
|
|
309
|
-
Array.__mongoize_fk__(
|
|
305
|
+
Array.__mongoize_fk__(association, [ object_id.to_s ])
|
|
310
306
|
end
|
|
311
307
|
|
|
312
308
|
it "returns the object id in an array" do
|
|
@@ -321,7 +317,7 @@ describe Mongoid::Extensions::Array do
|
|
|
321
317
|
end
|
|
322
318
|
|
|
323
319
|
let(:fk) do
|
|
324
|
-
Array.__mongoize_fk__(
|
|
320
|
+
Array.__mongoize_fk__(association, [ string ])
|
|
325
321
|
end
|
|
326
322
|
|
|
327
323
|
it "returns the string in an array" do
|
|
@@ -332,7 +328,7 @@ describe Mongoid::Extensions::Array do
|
|
|
332
328
|
context "when the strings are blank" do
|
|
333
329
|
|
|
334
330
|
let(:fk) do
|
|
335
|
-
Array.__mongoize_fk__(
|
|
331
|
+
Array.__mongoize_fk__(association, [ "", "" ])
|
|
336
332
|
end
|
|
337
333
|
|
|
338
334
|
it "returns an empty array" do
|
|
@@ -344,7 +340,7 @@ describe Mongoid::Extensions::Array do
|
|
|
344
340
|
context "when provided nils" do
|
|
345
341
|
|
|
346
342
|
let(:fk) do
|
|
347
|
-
Array.__mongoize_fk__(
|
|
343
|
+
Array.__mongoize_fk__(association, [ nil, nil, nil ])
|
|
348
344
|
end
|
|
349
345
|
|
|
350
346
|
it "returns an empty array" do
|
|
@@ -230,10 +230,27 @@ describe Mongoid::Extensions::Hash do
|
|
|
230
230
|
it "should retrieve a nested value under the provided key" do
|
|
231
231
|
expect(nested).to eq "hundred"
|
|
232
232
|
end
|
|
233
|
+
|
|
234
|
+
context 'and the value is falsey' do
|
|
235
|
+
let(:hash) do
|
|
236
|
+
{ "100" => { "name" => false } }
|
|
237
|
+
end
|
|
238
|
+
it "should retrieve the falsey nested value under the provided key" do
|
|
239
|
+
expect(nested).to eq false
|
|
240
|
+
end
|
|
241
|
+
end
|
|
242
|
+
|
|
243
|
+
context 'and the value is nil' do
|
|
244
|
+
let(:hash) do
|
|
245
|
+
{ "100" => { 0 => "Please don't return this value!" } }
|
|
246
|
+
end
|
|
247
|
+
it "should retrieve the nil nested value under the provided key" do
|
|
248
|
+
expect(nested).to eq nil
|
|
249
|
+
end
|
|
250
|
+
end
|
|
233
251
|
end
|
|
234
252
|
|
|
235
253
|
context "when the hash key is an integer" do
|
|
236
|
-
|
|
237
254
|
let(:hash) do
|
|
238
255
|
{ 100 => { "name" => "hundred" } }
|
|
239
256
|
end
|
|
@@ -39,14 +39,10 @@ describe Mongoid::Extensions::Object do
|
|
|
39
39
|
|
|
40
40
|
context "when the related model uses object ids" do
|
|
41
41
|
|
|
42
|
-
let(:
|
|
42
|
+
let(:association) do
|
|
43
43
|
Game.relations["person"]
|
|
44
44
|
end
|
|
45
45
|
|
|
46
|
-
let(:constraint) do
|
|
47
|
-
metadata.constraint
|
|
48
|
-
end
|
|
49
|
-
|
|
50
46
|
context "when provided an object id" do
|
|
51
47
|
|
|
52
48
|
let(:object_id) do
|
|
@@ -54,7 +50,7 @@ describe Mongoid::Extensions::Object do
|
|
|
54
50
|
end
|
|
55
51
|
|
|
56
52
|
let(:fk) do
|
|
57
|
-
Object.__mongoize_fk__(
|
|
53
|
+
Object.__mongoize_fk__(association, object_id)
|
|
58
54
|
end
|
|
59
55
|
|
|
60
56
|
it "returns the object id" do
|
|
@@ -71,7 +67,7 @@ describe Mongoid::Extensions::Object do
|
|
|
71
67
|
end
|
|
72
68
|
|
|
73
69
|
let(:fk) do
|
|
74
|
-
Object.__mongoize_fk__(
|
|
70
|
+
Object.__mongoize_fk__(association, object_id.to_s)
|
|
75
71
|
end
|
|
76
72
|
|
|
77
73
|
it "returns the object id" do
|
|
@@ -86,7 +82,7 @@ describe Mongoid::Extensions::Object do
|
|
|
86
82
|
end
|
|
87
83
|
|
|
88
84
|
let(:fk) do
|
|
89
|
-
Object.__mongoize_fk__(
|
|
85
|
+
Object.__mongoize_fk__(association, string)
|
|
90
86
|
end
|
|
91
87
|
|
|
92
88
|
it "returns the string" do
|
|
@@ -97,7 +93,7 @@ describe Mongoid::Extensions::Object do
|
|
|
97
93
|
context "when the string is blank" do
|
|
98
94
|
|
|
99
95
|
let(:fk) do
|
|
100
|
-
Object.__mongoize_fk__(
|
|
96
|
+
Object.__mongoize_fk__(association, "")
|
|
101
97
|
end
|
|
102
98
|
|
|
103
99
|
it "returns nil" do
|
|
@@ -109,7 +105,7 @@ describe Mongoid::Extensions::Object do
|
|
|
109
105
|
context "when provided nil" do
|
|
110
106
|
|
|
111
107
|
let(:fk) do
|
|
112
|
-
Object.__mongoize_fk__(
|
|
108
|
+
Object.__mongoize_fk__(association, nil)
|
|
113
109
|
end
|
|
114
110
|
|
|
115
111
|
it "returns nil" do
|
|
@@ -120,7 +116,7 @@ describe Mongoid::Extensions::Object do
|
|
|
120
116
|
context "when provided an empty array" do
|
|
121
117
|
|
|
122
118
|
let(:fk) do
|
|
123
|
-
Object.__mongoize_fk__(
|
|
119
|
+
Object.__mongoize_fk__(association, [])
|
|
124
120
|
end
|
|
125
121
|
|
|
126
122
|
it "returns an empty array" do
|
|
@@ -139,6 +139,13 @@ describe Mongoid::Extensions::Range do
|
|
|
139
139
|
expect(("a".."z").mongoize).to eq({ "min" => "a", "max" => "z" })
|
|
140
140
|
end
|
|
141
141
|
end
|
|
142
|
+
|
|
143
|
+
context 'when the value is a string' do
|
|
144
|
+
|
|
145
|
+
it 'returns a string' do
|
|
146
|
+
expect(Range.mongoize('3')).to eq('3')
|
|
147
|
+
end
|
|
148
|
+
end
|
|
142
149
|
end
|
|
143
150
|
|
|
144
151
|
describe "#resizable?" do
|
|
@@ -92,7 +92,7 @@ describe Mongoid::Factory do
|
|
|
92
92
|
context "when the type is a symbol" do
|
|
93
93
|
|
|
94
94
|
let(:person) do
|
|
95
|
-
described_class.build(Person, {:_type => "Doctor"})
|
|
95
|
+
described_class.build(Person, { :_type => "Doctor" })
|
|
96
96
|
end
|
|
97
97
|
|
|
98
98
|
it "instantiates the subclass" do
|
|
@@ -106,11 +106,11 @@ describe Mongoid::Factory do
|
|
|
106
106
|
context "when the attributes are nil" do
|
|
107
107
|
|
|
108
108
|
let(:document) do
|
|
109
|
-
described_class.from_db(
|
|
109
|
+
described_class.from_db(Animal, nil)
|
|
110
110
|
end
|
|
111
111
|
|
|
112
112
|
it "generates based on the provided class" do
|
|
113
|
-
expect(document).to be_a(
|
|
113
|
+
expect(document).to be_a(Animal)
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
it "sets the attributes to empty" do
|
|
@@ -192,5 +192,23 @@ describe Mongoid::Factory do
|
|
|
192
192
|
expect(document.title).to eq("Sir")
|
|
193
193
|
end
|
|
194
194
|
end
|
|
195
|
+
|
|
196
|
+
context 'when type does not correspond to a Class name' do
|
|
197
|
+
|
|
198
|
+
let(:attributes) do
|
|
199
|
+
{ "title" => "Sir", "_type" => "invalid_class_name" }
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
let(:person) do
|
|
203
|
+
described_class.from_db(Person, attributes)
|
|
204
|
+
end
|
|
205
|
+
|
|
206
|
+
it 'raises a exception' do
|
|
207
|
+
expect {
|
|
208
|
+
person
|
|
209
|
+
}.to raise_exception(Mongoid::Errors::UnknownModel)
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
end
|
|
195
213
|
end
|
|
196
214
|
end
|
|
@@ -7,7 +7,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
7
7
|
let(:field) do
|
|
8
8
|
described_class.new(
|
|
9
9
|
:vals,
|
|
10
|
-
|
|
10
|
+
association: Person.relations["preferences"],
|
|
11
11
|
type: Array,
|
|
12
12
|
default: [],
|
|
13
13
|
identity: true
|
|
@@ -68,7 +68,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
68
68
|
let(:field) do
|
|
69
69
|
described_class.new(
|
|
70
70
|
:vals,
|
|
71
|
-
|
|
71
|
+
association: Person.relations["posts"],
|
|
72
72
|
type: Array,
|
|
73
73
|
default: default,
|
|
74
74
|
identity: true
|
|
@@ -89,7 +89,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
89
89
|
let(:field) do
|
|
90
90
|
described_class.new(
|
|
91
91
|
:vals,
|
|
92
|
-
|
|
92
|
+
association: Person.relations["posts"],
|
|
93
93
|
type: Array,
|
|
94
94
|
default: [],
|
|
95
95
|
identity: true
|
|
@@ -103,14 +103,14 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
103
103
|
|
|
104
104
|
describe "#evolve" do
|
|
105
105
|
|
|
106
|
-
let(:
|
|
106
|
+
let(:association) do
|
|
107
107
|
Person.reflect_on_association(:preferences)
|
|
108
108
|
end
|
|
109
109
|
|
|
110
110
|
context "when provided a document" do
|
|
111
111
|
|
|
112
112
|
let(:field) do
|
|
113
|
-
described_class.new(:person_id, type: Object,
|
|
113
|
+
described_class.new(:person_id, type: Object, association: association)
|
|
114
114
|
end
|
|
115
115
|
|
|
116
116
|
let(:game) do
|
|
@@ -129,7 +129,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
129
129
|
context "when the type is an array" do
|
|
130
130
|
|
|
131
131
|
let(:field) do
|
|
132
|
-
described_class.new(:preference_ids, type: Array, default: [],
|
|
132
|
+
described_class.new(:preference_ids, type: Array, default: [], association: association)
|
|
133
133
|
end
|
|
134
134
|
|
|
135
135
|
context "when providing a single value" do
|
|
@@ -197,12 +197,12 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
197
197
|
|
|
198
198
|
context "when the relation stores ids as strings" do
|
|
199
199
|
|
|
200
|
-
let!(:
|
|
200
|
+
let!(:association) do
|
|
201
201
|
Agent.reflect_on_association(:accounts)
|
|
202
202
|
end
|
|
203
203
|
|
|
204
204
|
let!(:field) do
|
|
205
|
-
described_class.new(:account_ids, type: Array, default: [],
|
|
205
|
+
described_class.new(:account_ids, type: Array, default: [], association: association)
|
|
206
206
|
end
|
|
207
207
|
|
|
208
208
|
let(:id_one) do
|
|
@@ -260,12 +260,12 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
260
260
|
|
|
261
261
|
context "when the type is an object" do
|
|
262
262
|
|
|
263
|
-
let(:
|
|
263
|
+
let(:association) do
|
|
264
264
|
Game.reflect_on_association(:person)
|
|
265
265
|
end
|
|
266
266
|
|
|
267
267
|
let(:field) do
|
|
268
|
-
described_class.new(:person_id, type: Object,
|
|
268
|
+
described_class.new(:person_id, type: Object, association: association)
|
|
269
269
|
end
|
|
270
270
|
|
|
271
271
|
context "when providing a single value" do
|
|
@@ -312,12 +312,12 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
312
312
|
|
|
313
313
|
context "when the relation stores string ids" do
|
|
314
314
|
|
|
315
|
-
let(:
|
|
315
|
+
let(:association) do
|
|
316
316
|
Comment.reflect_on_association(:account)
|
|
317
317
|
end
|
|
318
318
|
|
|
319
319
|
let(:field) do
|
|
320
|
-
described_class.new(:person_id, type: Object,
|
|
320
|
+
described_class.new(:person_id, type: Object, association: association)
|
|
321
321
|
end
|
|
322
322
|
|
|
323
323
|
context "when the value is an id string" do
|
|
@@ -384,12 +384,12 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
384
384
|
|
|
385
385
|
context "when the relation stores ids as strings" do
|
|
386
386
|
|
|
387
|
-
let(:
|
|
387
|
+
let(:association) do
|
|
388
388
|
Comment.reflect_on_association(:account)
|
|
389
389
|
end
|
|
390
390
|
|
|
391
391
|
let(:field) do
|
|
392
|
-
described_class.new(:person_id, type: Object,
|
|
392
|
+
described_class.new(:person_id, type: Object, association: association)
|
|
393
393
|
end
|
|
394
394
|
|
|
395
395
|
let(:id_one) do
|
|
@@ -445,14 +445,14 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
445
445
|
end
|
|
446
446
|
end
|
|
447
447
|
|
|
448
|
-
context "when the
|
|
448
|
+
context "when the association is polymoprhic" do
|
|
449
449
|
|
|
450
|
-
let(:
|
|
450
|
+
let(:association) do
|
|
451
451
|
Agent.reflect_on_association(:names)
|
|
452
452
|
end
|
|
453
453
|
|
|
454
454
|
let(:field) do
|
|
455
|
-
described_class.new(:nameable_id, type: Object,
|
|
455
|
+
described_class.new(:nameable_id, type: Object, association: association)
|
|
456
456
|
end
|
|
457
457
|
|
|
458
458
|
let(:value) do
|
|
@@ -464,7 +464,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
464
464
|
end
|
|
465
465
|
|
|
466
466
|
it "does not change the foreign key" do
|
|
467
|
-
expect(evolved).to
|
|
467
|
+
expect(evolved).to eq(BSON::ObjectId.from_string(value))
|
|
468
468
|
end
|
|
469
469
|
end
|
|
470
470
|
end
|
|
@@ -500,12 +500,8 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
500
500
|
|
|
501
501
|
context "when the array is object ids" do
|
|
502
502
|
|
|
503
|
-
let(:
|
|
504
|
-
|
|
505
|
-
inverse_class_name: "Game",
|
|
506
|
-
name: :person,
|
|
507
|
-
relation: Mongoid::Relations::Referenced::In
|
|
508
|
-
)
|
|
503
|
+
let(:association) do
|
|
504
|
+
Game.relations["person"]
|
|
509
505
|
end
|
|
510
506
|
|
|
511
507
|
let(:field) do
|
|
@@ -514,7 +510,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
514
510
|
type: Array,
|
|
515
511
|
default: [],
|
|
516
512
|
identity: true,
|
|
517
|
-
|
|
513
|
+
association: association,
|
|
518
514
|
overwrite: true
|
|
519
515
|
)
|
|
520
516
|
end
|
|
@@ -589,12 +585,8 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
589
585
|
|
|
590
586
|
context "when the array is object ids" do
|
|
591
587
|
|
|
592
|
-
let(:
|
|
593
|
-
|
|
594
|
-
inverse_class_name: "Game",
|
|
595
|
-
name: :person,
|
|
596
|
-
relation: Mongoid::Relations::Referenced::In
|
|
597
|
-
)
|
|
588
|
+
let(:association) do
|
|
589
|
+
Game.relations['person']
|
|
598
590
|
end
|
|
599
591
|
|
|
600
592
|
let(:field) do
|
|
@@ -603,7 +595,7 @@ describe Mongoid::Fields::ForeignKey do
|
|
|
603
595
|
type: Object,
|
|
604
596
|
default: nil,
|
|
605
597
|
identity: true,
|
|
606
|
-
|
|
598
|
+
association: association,
|
|
607
599
|
overwrite: true
|
|
608
600
|
)
|
|
609
601
|
end
|
data/spec/mongoid/fields_spec.rb
CHANGED
|
@@ -816,7 +816,7 @@ describe Mongoid::Fields do
|
|
|
816
816
|
|
|
817
817
|
context "when the field name conflicts with mongoid's internals" do
|
|
818
818
|
|
|
819
|
-
[:
|
|
819
|
+
[:_association, :invalid].each do |meth|
|
|
820
820
|
context "when the field is named #{meth}" do
|
|
821
821
|
|
|
822
822
|
it "raises an error" do
|
|
@@ -45,7 +45,7 @@ describe Mongoid::Indexable do
|
|
|
45
45
|
end
|
|
46
46
|
end
|
|
47
47
|
|
|
48
|
-
context "when database specific options exist"
|
|
48
|
+
context "when database specific options exist" do
|
|
49
49
|
|
|
50
50
|
let(:klass) do
|
|
51
51
|
Class.new do
|
|
@@ -89,12 +89,13 @@ describe Mongoid::Indexable do
|
|
|
89
89
|
klass.create_indexes
|
|
90
90
|
end
|
|
91
91
|
|
|
92
|
-
it "creates the indexes" do
|
|
93
|
-
|
|
92
|
+
it "creates the indexes by using specified background option" do
|
|
93
|
+
index = klass.collection.indexes.get(_type: 1)
|
|
94
|
+
expect(index[:background]).to eq(true)
|
|
94
95
|
end
|
|
95
96
|
end
|
|
96
97
|
|
|
97
|
-
context "when database options are specified"
|
|
98
|
+
context "when database options are specified" do
|
|
98
99
|
|
|
99
100
|
let(:klass) do
|
|
100
101
|
Class.new do
|
|
@@ -104,12 +105,9 @@ describe Mongoid::Indexable do
|
|
|
104
105
|
end
|
|
105
106
|
end
|
|
106
107
|
|
|
107
|
-
before do
|
|
108
|
-
klass.create_indexes
|
|
109
|
-
end
|
|
110
|
-
|
|
111
108
|
after do
|
|
112
109
|
klass.remove_indexes
|
|
110
|
+
Mongoid::Config.background_indexing = false
|
|
113
111
|
end
|
|
114
112
|
|
|
115
113
|
let(:indexes) do
|
|
@@ -118,12 +116,25 @@ describe Mongoid::Indexable do
|
|
|
118
116
|
end
|
|
119
117
|
end
|
|
120
118
|
|
|
121
|
-
it "creates the indexes" do
|
|
122
|
-
|
|
119
|
+
it "creates the indexes by using default background_indexing option" do
|
|
120
|
+
klass.create_indexes
|
|
121
|
+
|
|
122
|
+
index = indexes.get(_type: 1)
|
|
123
|
+
expect(index[:background]).to eq(Mongoid::Config.background_indexing)
|
|
124
|
+
end
|
|
125
|
+
|
|
126
|
+
it "creates the indexes by using specified background_indexing option" do
|
|
127
|
+
Mongoid::Config.background_indexing = true
|
|
128
|
+
|
|
129
|
+
klass.create_indexes
|
|
130
|
+
|
|
131
|
+
index = indexes.get(_type: 1)
|
|
132
|
+
expect(index[:background]).to eq(true)
|
|
123
133
|
end
|
|
124
134
|
end
|
|
125
135
|
|
|
126
|
-
context "when a collation option is specified"
|
|
136
|
+
context "when a collation option is specified" do
|
|
137
|
+
min_server_version '3.4'
|
|
127
138
|
|
|
128
139
|
let(:klass) do
|
|
129
140
|
Class.new do
|
|
@@ -298,7 +309,8 @@ describe Mongoid::Indexable do
|
|
|
298
309
|
end
|
|
299
310
|
end
|
|
300
311
|
|
|
301
|
-
context "when providing a collation option"
|
|
312
|
+
context "when providing a collation option" do
|
|
313
|
+
min_server_version '3.4'
|
|
302
314
|
|
|
303
315
|
before do
|
|
304
316
|
klass.index({ name: 1 }, collation: { locale: 'en_US', strength: 2 })
|
|
@@ -526,6 +526,8 @@ describe Mongoid::Interceptable do
|
|
|
526
526
|
end
|
|
527
527
|
|
|
528
528
|
after(:all) do
|
|
529
|
+
# ActiveSupport may raise an error when trying to reset callbacks on all of Band's
|
|
530
|
+
# descendants, regardless of whether they have a particular callback defined.
|
|
529
531
|
begin; Band.reset_callbacks(:rearrange); rescue; end
|
|
530
532
|
end
|
|
531
533
|
|
|
@@ -597,7 +599,7 @@ describe Mongoid::Interceptable do
|
|
|
597
599
|
it "raises an error" do
|
|
598
600
|
expect {
|
|
599
601
|
Band.has_and_belongs_to_many :tags, cascade_callbacks: true
|
|
600
|
-
}.to raise_error(Mongoid::Errors::
|
|
602
|
+
}.to raise_error(Mongoid::Errors::InvalidRelationOption)
|
|
601
603
|
end
|
|
602
604
|
end
|
|
603
605
|
|
|
@@ -1181,6 +1183,25 @@ describe Mongoid::Interceptable do
|
|
|
1181
1183
|
end
|
|
1182
1184
|
end
|
|
1183
1185
|
|
|
1186
|
+
context 'when the parent is updated' do
|
|
1187
|
+
|
|
1188
|
+
let(:band) do
|
|
1189
|
+
Band.create(name: "Moderat")
|
|
1190
|
+
end
|
|
1191
|
+
|
|
1192
|
+
before do
|
|
1193
|
+
band.update(records: [ { name: 'Black on Both Sides' }])
|
|
1194
|
+
end
|
|
1195
|
+
|
|
1196
|
+
it 'executes the callback' do
|
|
1197
|
+
expect(band.records.first.before_validation_called).to be true
|
|
1198
|
+
end
|
|
1199
|
+
|
|
1200
|
+
it 'persists the change' do
|
|
1201
|
+
expect(band.reload.records.first.before_validation_called).to be true
|
|
1202
|
+
end
|
|
1203
|
+
end
|
|
1204
|
+
|
|
1184
1205
|
context "when the child is persisted" do
|
|
1185
1206
|
|
|
1186
1207
|
let(:band) do
|
|
@@ -68,7 +68,7 @@ describe Mongoid::Matchable::Default do
|
|
|
68
68
|
context "when the value is a regexp" do
|
|
69
69
|
|
|
70
70
|
it "returns true" do
|
|
71
|
-
expect(matcher._matches?(
|
|
71
|
+
expect(matcher._matches?(/\ATest[3-5]\z/)).to be true
|
|
72
72
|
end
|
|
73
73
|
end
|
|
74
74
|
end
|
|
@@ -112,14 +112,21 @@ describe Mongoid::Matchable::Default do
|
|
|
112
112
|
described_class.new(["Test1", "Test2", "Test3"])
|
|
113
113
|
end
|
|
114
114
|
|
|
115
|
-
context "when the attribute
|
|
115
|
+
context "when the attribute equals the value" do
|
|
116
116
|
|
|
117
117
|
it "returns true" do
|
|
118
118
|
expect(matcher._matches?(["Test1", "Test2", "Test3"])).to be true
|
|
119
119
|
end
|
|
120
120
|
end
|
|
121
121
|
|
|
122
|
-
context "when the attribute
|
|
122
|
+
context "when the value contains same items as attribute but in different order" do
|
|
123
|
+
|
|
124
|
+
it "returns false" do
|
|
125
|
+
expect(matcher._matches?(["Test1", "Test3", "Test2"])).to be false
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
context "when the value is a subset of attribute" do
|
|
123
130
|
|
|
124
131
|
it "returns false" do
|
|
125
132
|
expect(matcher._matches?(["Test1", "Test2"])).to be false
|
|
@@ -53,6 +53,19 @@ describe Mongoid::Matchable::ElemMatch do
|
|
|
53
53
|
expect(matcher._matches?("$elemMatch" => {"a" => {"$in" => [1]}, "b" => {"$gt" => 1}})).to be true
|
|
54
54
|
end
|
|
55
55
|
end
|
|
56
|
+
|
|
57
|
+
context "when using a $not operator that matches" do
|
|
58
|
+
|
|
59
|
+
it "returns true" do
|
|
60
|
+
expect(matcher._matches?("$elemMatch" => {"a" => {"$not" => 4}})).to be true
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
context "when using symbols and a :$not operator that matches" do
|
|
66
|
+
it "returns true" do
|
|
67
|
+
expect(matcher._matches?(:$elemMatch => {"a" => {:$not => 4}})).to be true
|
|
68
|
+
end
|
|
56
69
|
end
|
|
57
70
|
|
|
58
71
|
context "when there is not a sub document that matches the criteria" do
|
|
@@ -74,6 +87,13 @@ describe Mongoid::Matchable::ElemMatch do
|
|
|
74
87
|
expect(matcher._matches?("$elemMatch" => {"a" => {"$in" => [1]}, "b" => {"$gt" => 10}})).to be false
|
|
75
88
|
end
|
|
76
89
|
end
|
|
90
|
+
|
|
91
|
+
context "when using a $not operator that does not match" do
|
|
92
|
+
|
|
93
|
+
it "returns true" do
|
|
94
|
+
expect(matcher._matches?("$elemMatch" => {"a" => {"$not" => 1}})).to be true
|
|
95
|
+
end
|
|
96
|
+
end
|
|
77
97
|
end
|
|
78
98
|
|
|
79
99
|
context "when using a criteria that matches partially but not a single sub document" do
|