mongoid 6.4.8 → 7.0.0.beta
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 +5 -5
- checksums.yaml.gz.sig +0 -0
- data.tar.gz.sig +0 -0
- data/Rakefile +0 -26
- data/lib/config/locales/en.yml +17 -21
- data/lib/mongoid.rb +2 -2
- data/lib/mongoid/association.rb +150 -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 +116 -0
- data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
- data/lib/mongoid/association/embedded.rb +4 -0
- data/lib/mongoid/{relations → association}/embedded/batchable.rb +27 -53
- data/lib/mongoid/association/embedded/cyclic.rb +109 -0
- data/lib/mongoid/association/embedded/embedded_in.rb +154 -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/embeds_many.rb +210 -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 +529 -0
- data/lib/mongoid/association/embedded/embeds_one.rb +173 -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/macros.rb +204 -0
- data/lib/mongoid/{relations → association}/many.rb +18 -52
- data/lib/mongoid/{relations → association}/marshalable.rb +6 -4
- data/lib/mongoid/association/nested.rb +15 -0
- 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/{relations → association}/one.rb +6 -6
- data/lib/mongoid/association/options.rb +152 -0
- data/lib/mongoid/{relations → association}/proxy.rb +31 -58
- data/lib/mongoid/association/referenced.rb +7 -0
- data/lib/mongoid/association/referenced/auto_save.rb +79 -0
- data/lib/mongoid/association/referenced/belongs_to.rb +248 -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/counter_cache.rb +163 -0
- data/lib/mongoid/association/referenced/eager.rb +159 -0
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +290 -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 +310 -0
- data/lib/mongoid/association/referenced/has_many.rb +273 -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 +479 -0
- data/lib/mongoid/association/referenced/has_many/proxy.rb +577 -0
- data/lib/mongoid/association/referenced/has_one.rb +204 -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/syncable.rb +170 -0
- data/lib/mongoid/{relations → association}/reflections.rb +21 -17
- data/lib/mongoid/association/relatable.rb +415 -0
- data/lib/mongoid/association/touchable.rb +97 -0
- data/lib/mongoid/atomic.rb +6 -6
- data/lib/mongoid/atomic/modifiers.rb +8 -12
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/attributes.rb +2 -1
- data/lib/mongoid/attributes/nested.rb +10 -10
- data/lib/mongoid/attributes/processing.rb +2 -2
- data/lib/mongoid/attributes/readonly.rb +2 -4
- data/lib/mongoid/clients.rb +0 -2
- data/lib/mongoid/clients/options.rb +1 -1
- data/lib/mongoid/clients/storage_options.rb +0 -1
- data/lib/mongoid/composable.rb +3 -4
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +3 -6
- data/lib/mongoid/contextual/map_reduce.rb +3 -7
- data/lib/mongoid/contextual/memory.rb +5 -10
- data/lib/mongoid/contextual/mongo.rb +10 -27
- data/lib/mongoid/copyable.rb +6 -6
- data/lib/mongoid/criteria.rb +1 -2
- data/lib/mongoid/criteria/includable.rb +14 -14
- data/lib/mongoid/criteria/modifiable.rb +8 -14
- data/lib/mongoid/criteria/queryable/mergeable.rb +1 -3
- data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
- data/lib/mongoid/criteria/queryable/selectable.rb +10 -34
- data/lib/mongoid/document.rb +6 -6
- data/lib/mongoid/errors.rb +3 -1
- 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/extensions/array.rb +5 -5
- data/lib/mongoid/extensions/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/object.rb +4 -4
- data/lib/mongoid/extensions/range.rb +1 -0
- data/lib/mongoid/extensions/regexp.rb +0 -1
- data/lib/mongoid/extensions/string.rb +1 -3
- data/lib/mongoid/factory.rb +4 -3
- data/lib/mongoid/fields.rb +1 -1
- 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/indexable.rb +8 -5
- data/lib/mongoid/interceptable.rb +5 -5
- data/lib/mongoid/matchable.rb +0 -3
- data/lib/mongoid/persistable.rb +4 -5
- data/lib/mongoid/persistable/creatable.rb +2 -4
- data/lib/mongoid/persistable/deletable.rb +9 -10
- data/lib/mongoid/persistable/destroyable.rb +5 -1
- data/lib/mongoid/persistable/incrementable.rb +1 -1
- data/lib/mongoid/persistable/logical.rb +1 -1
- data/lib/mongoid/persistable/settable.rb +5 -5
- data/lib/mongoid/persistable/updatable.rb +2 -2
- data/lib/mongoid/persistable/upsertable.rb +1 -2
- data/lib/mongoid/persistence_context.rb +4 -9
- data/lib/mongoid/query_cache.rb +18 -65
- data/lib/mongoid/railtie.rb +0 -17
- data/lib/mongoid/reloadable.rb +1 -1
- data/lib/mongoid/scopable.rb +3 -3
- data/lib/mongoid/serializable.rb +3 -3
- data/lib/mongoid/tasks/database.rb +2 -3
- data/lib/mongoid/threaded.rb +0 -74
- data/lib/mongoid/traversable.rb +2 -2
- data/lib/mongoid/validatable.rb +8 -8
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +4 -4
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -4
- data/spec/app/models/animal.rb +2 -1
- data/spec/app/models/band.rb +0 -1
- data/spec/app/models/bomb.rb +1 -1
- data/spec/app/models/message.rb +1 -1
- data/spec/app/models/person.rb +5 -2
- data/spec/app/models/vertex.rb +6 -0
- data/spec/app/models/wiki_page.rb +1 -1
- data/spec/config/mongoid.yml +1 -0
- data/spec/mongoid/{relations → association}/accessors_spec.rb +1 -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 +613 -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} +5 -77
- data/spec/mongoid/association/embedded/embedded_in_spec.rb +843 -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} +140 -428
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +852 -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_spec.rb +908 -0
- data/spec/mongoid/{relations → association}/macros_spec.rb +148 -93
- 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 +7 -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} +9 -9
- 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 +1963 -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} +5 -5
- data/spec/mongoid/{relations/referenced/many_to_many_spec.rb → association/referenced/has_and_belongs_to_many/proxy_spec.rb} +107 -98
- 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} +11 -11
- data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +1 -109
- data/spec/mongoid/{relations/referenced/many_spec.rb → association/referenced/has_many/proxy_spec.rb} +28 -93
- 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_spec.rb +1244 -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 → association}/touchable_spec.rb +19 -1
- data/spec/mongoid/{relations_spec.rb → association_spec.rb} +1 -1
- data/spec/mongoid/atomic/modifiers_spec.rb +17 -17
- data/spec/mongoid/atomic_spec.rb +17 -17
- data/spec/mongoid/attributes/nested_spec.rb +14 -12
- data/spec/mongoid/attributes/readonly_spec.rb +80 -125
- data/spec/mongoid/clients/factory_spec.rb +28 -52
- data/spec/mongoid/clients/options_spec.rb +65 -69
- data/spec/mongoid/config_spec.rb +24 -0
- data/spec/mongoid/contextual/geo_near_spec.rb +0 -1
- data/spec/mongoid/contextual/mongo_spec.rb +4 -112
- data/spec/mongoid/criteria/modifiable_spec.rb +183 -60
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +3 -3
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +12 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +6 -74
- data/spec/mongoid/criteria/queryable/selector_spec.rb +2 -2
- data/spec/mongoid/criteria/scopable_spec.rb +0 -81
- data/spec/mongoid/criteria_spec.rb +16 -19
- data/spec/mongoid/document_spec.rb +2 -56
- data/spec/mongoid/extensions/array_spec.rb +11 -15
- data/spec/mongoid/extensions/big_decimal_spec.rb +9 -9
- data/spec/mongoid/extensions/object_spec.rb +7 -11
- data/spec/mongoid/extensions/range_spec.rb +7 -0
- data/spec/mongoid/extensions/regexp_spec.rb +0 -23
- data/spec/mongoid/extensions/string_spec.rb +7 -35
- data/spec/mongoid/factory_spec.rb +18 -11
- data/spec/mongoid/fields/foreign_key_spec.rb +24 -32
- data/spec/mongoid/fields_spec.rb +2 -2
- data/spec/mongoid/findable_spec.rb +1 -1
- data/spec/mongoid/indexable_spec.rb +18 -8
- data/spec/mongoid/interceptable_spec.rb +21 -2
- data/spec/mongoid/matchable_spec.rb +1 -26
- data/spec/mongoid/persistable/deletable_spec.rb +0 -19
- data/spec/mongoid/persistable/destroyable_spec.rb +0 -19
- data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
- data/spec/mongoid/persistable/savable_spec.rb +3 -3
- data/spec/mongoid/persistable/settable_spec.rb +1 -35
- data/spec/mongoid/persistable/updatable_spec.rb +2 -2
- data/spec/mongoid/persistable_spec.rb +16 -16
- data/spec/mongoid/persistence_context_spec.rb +0 -14
- data/spec/mongoid/positional_spec.rb +10 -10
- data/spec/mongoid/query_cache_spec.rb +18 -87
- data/spec/mongoid/relations/proxy_spec.rb +124 -124
- data/spec/mongoid/scopable_spec.rb +0 -13
- data/spec/mongoid/threaded_spec.rb +0 -68
- data/spec/mongoid/validatable/associated_spec.rb +1 -1
- data/spec/mongoid/validatable/presence_spec.rb +7 -6
- data/spec/mongoid/validatable_spec.rb +1 -1
- data/spec/spec_helper.rb +7 -83
- metadata +586 -611
- metadata.gz.sig +2 -5
- data/lib/mongoid/clients/sessions.rb +0 -113
- data/lib/mongoid/errors/invalid_session_use.rb +0 -24
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/railties/controller_runtime.rb +0 -86
- data/lib/mongoid/relations.rb +0 -148
- data/lib/mongoid/relations/accessors.rb +0 -267
- data/lib/mongoid/relations/auto_save.rb +0 -94
- data/lib/mongoid/relations/bindings.rb +0 -9
- 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/builder.rb +0 -57
- data/lib/mongoid/relations/builders.rb +0 -106
- 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/cascading.rb +0 -56
- 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/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.rb +0 -2
- data/lib/mongoid/relations/targets/enumerable.rb +0 -493
- data/lib/mongoid/relations/touchable.rb +0 -97
- data/spec/app/models/array_field.rb +0 -7
- data/spec/app/models/delegating_patient.rb +0 -16
- data/spec/integration/document_spec.rb +0 -22
- data/spec/mongoid/clients/sessions_spec.rb +0 -334
- 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/matchable/nor_spec.rb +0 -209
- 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
- data/spec/rails/controller_extension/controller_runtime_spec.rb +0 -110
- data/spec/support/cluster_config.rb +0 -158
- data/spec/support/constraints.rb +0 -101
- data/spec/support/macros.rb +0 -20
- data/spec/support/session_registry.rb +0 -50
- data/spec/support/spec_config.rb +0 -42
data/spec/mongoid/config_spec.rb
CHANGED
|
@@ -88,6 +88,30 @@ describe Mongoid::Config do
|
|
|
88
88
|
end
|
|
89
89
|
end
|
|
90
90
|
|
|
91
|
+
context 'when background_indexing option' do
|
|
92
|
+
context 'is not set in the config' do
|
|
93
|
+
it 'sets the value to false by default' do
|
|
94
|
+
Mongoid::Config.reset
|
|
95
|
+
configuration = CONFIG.merge(options: {})
|
|
96
|
+
|
|
97
|
+
Mongoid.configure { |config| config.load_configuration(configuration) }
|
|
98
|
+
|
|
99
|
+
expect(Mongoid::Config.background_indexing).to be(false)
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
context 'is set in the config' do
|
|
104
|
+
it 'sets the value' do
|
|
105
|
+
Mongoid::Config.reset
|
|
106
|
+
configuration = CONFIG.merge(options: {background_indexing: true})
|
|
107
|
+
|
|
108
|
+
Mongoid.configure { |config| config.load_configuration(configuration) }
|
|
109
|
+
|
|
110
|
+
expect(Mongoid::Config.background_indexing).to be(true)
|
|
111
|
+
end
|
|
112
|
+
end
|
|
113
|
+
end
|
|
114
|
+
|
|
91
115
|
context 'when the belongs_to_required_by_default option is not set in the config' do
|
|
92
116
|
|
|
93
117
|
before do
|
|
@@ -275,23 +275,6 @@ describe Mongoid::Contextual::Mongo do
|
|
|
275
275
|
expect(Band.count).to eq(0)
|
|
276
276
|
end
|
|
277
277
|
end
|
|
278
|
-
|
|
279
|
-
context 'when the write concern is unacknowledged' do
|
|
280
|
-
|
|
281
|
-
let(:criteria) do
|
|
282
|
-
Band.all
|
|
283
|
-
end
|
|
284
|
-
|
|
285
|
-
let!(:deleted) do
|
|
286
|
-
criteria.with(write: { w: 0 }) do |crit|
|
|
287
|
-
crit.send(method)
|
|
288
|
-
end
|
|
289
|
-
end
|
|
290
|
-
|
|
291
|
-
it 'returns 0' do
|
|
292
|
-
expect(deleted).to eq(0)
|
|
293
|
-
end
|
|
294
|
-
end
|
|
295
278
|
end
|
|
296
279
|
end
|
|
297
280
|
|
|
@@ -380,27 +363,6 @@ describe Mongoid::Contextual::Mongo do
|
|
|
380
363
|
end
|
|
381
364
|
end
|
|
382
365
|
end
|
|
383
|
-
|
|
384
|
-
context 'when the write concern is unacknowledged' do
|
|
385
|
-
|
|
386
|
-
before do
|
|
387
|
-
2.times { Band.create }
|
|
388
|
-
end
|
|
389
|
-
|
|
390
|
-
let(:criteria) do
|
|
391
|
-
Band.all
|
|
392
|
-
end
|
|
393
|
-
|
|
394
|
-
let!(:deleted) do
|
|
395
|
-
criteria.with(write: { w: 0 }) do |crit|
|
|
396
|
-
crit.send(method)
|
|
397
|
-
end
|
|
398
|
-
end
|
|
399
|
-
|
|
400
|
-
it 'returns 0' do
|
|
401
|
-
expect(deleted).to eq(0)
|
|
402
|
-
end
|
|
403
|
-
end
|
|
404
366
|
end
|
|
405
367
|
|
|
406
368
|
describe "#distinct" do
|
|
@@ -451,7 +413,7 @@ describe Mongoid::Contextual::Mongo do
|
|
|
451
413
|
end
|
|
452
414
|
|
|
453
415
|
it "returns the distinct field values" do
|
|
454
|
-
expect(context.distinct(:years)
|
|
416
|
+
expect(context.distinct(:years)).to eq([ 30, 25 ])
|
|
455
417
|
end
|
|
456
418
|
end
|
|
457
419
|
|
|
@@ -591,12 +553,12 @@ describe Mongoid::Contextual::Mongo do
|
|
|
591
553
|
|
|
592
554
|
context "when no documents are returned" do
|
|
593
555
|
|
|
594
|
-
let(:
|
|
556
|
+
let(:game_association) do
|
|
595
557
|
Person.reflect_on_association(:game)
|
|
596
558
|
end
|
|
597
559
|
|
|
598
560
|
it "does not make any additional database queries" do
|
|
599
|
-
expect(
|
|
561
|
+
expect(game_association).to receive(:eager_load).never
|
|
600
562
|
context.send(:eager_load, [])
|
|
601
563
|
end
|
|
602
564
|
end
|
|
@@ -2132,41 +2094,6 @@ describe Mongoid::Contextual::Mongo do
|
|
|
2132
2094
|
expect(context.update).to be false
|
|
2133
2095
|
end
|
|
2134
2096
|
end
|
|
2135
|
-
|
|
2136
|
-
context 'when provided array filters', if: array_filters_supported? do
|
|
2137
|
-
|
|
2138
|
-
before do
|
|
2139
|
-
Band.delete_all
|
|
2140
|
-
b = Band.new(name: 'Depeche Mode')
|
|
2141
|
-
b.labels << Label.new(name: 'Warner')
|
|
2142
|
-
b.labels << Label.new(name: 'Sony')
|
|
2143
|
-
b.labels << Label.new(name: 'Cbs')
|
|
2144
|
-
b.save
|
|
2145
|
-
|
|
2146
|
-
b = Band.new(name: 'FKA Twigs')
|
|
2147
|
-
b.labels << Label.new(name: 'Warner')
|
|
2148
|
-
b.labels << Label.new(name: 'Cbs')
|
|
2149
|
-
b.save
|
|
2150
|
-
end
|
|
2151
|
-
|
|
2152
|
-
|
|
2153
|
-
let(:criteria) do
|
|
2154
|
-
Band.where(name: 'Depeche Mode')
|
|
2155
|
-
end
|
|
2156
|
-
|
|
2157
|
-
let!(:update) do
|
|
2158
|
-
context.update({ '$set' => { 'labels.$[i].name' => 'Sony' } },
|
|
2159
|
-
array_filters: [{ 'i.name' => 'Cbs' }])
|
|
2160
|
-
end
|
|
2161
|
-
|
|
2162
|
-
it 'applies the array filters' do
|
|
2163
|
-
expect(Band.where(name: 'Depeche Mode').first.labels.collect(&:name)).to match_array(['Warner', 'Sony', 'Sony'])
|
|
2164
|
-
end
|
|
2165
|
-
|
|
2166
|
-
it 'does not affect other documents' do
|
|
2167
|
-
expect(Band.where(name: 'FKA Twigs').first.labels.collect(&:name)).to match_array(['Warner', 'Cbs'])
|
|
2168
|
-
end
|
|
2169
|
-
end
|
|
2170
2097
|
end
|
|
2171
2098
|
|
|
2172
2099
|
describe "#update_all" do
|
|
@@ -2304,41 +2231,6 @@ describe Mongoid::Contextual::Mongo do
|
|
|
2304
2231
|
expect(context.update_all).to be false
|
|
2305
2232
|
end
|
|
2306
2233
|
end
|
|
2307
|
-
|
|
2308
|
-
context 'when provided array filters', if: array_filters_supported? do
|
|
2309
|
-
|
|
2310
|
-
before do
|
|
2311
|
-
Band.delete_all
|
|
2312
|
-
b = Band.new(name: 'Depeche Mode')
|
|
2313
|
-
b.labels << Label.new(name: 'Warner')
|
|
2314
|
-
b.labels << Label.new(name: 'Sony')
|
|
2315
|
-
b.labels << Label.new(name: 'Cbs')
|
|
2316
|
-
b.save
|
|
2317
|
-
|
|
2318
|
-
b = Band.new(name: 'FKA Twigs')
|
|
2319
|
-
b.labels << Label.new(name: 'Warner')
|
|
2320
|
-
b.labels << Label.new(name: 'Cbs')
|
|
2321
|
-
b.save
|
|
2322
|
-
end
|
|
2323
|
-
|
|
2324
|
-
|
|
2325
|
-
let(:criteria) do
|
|
2326
|
-
Band.all
|
|
2327
|
-
end
|
|
2328
|
-
|
|
2329
|
-
let!(:update) do
|
|
2330
|
-
context.update_all({ '$set' => { 'labels.$[i].name' => 'Sony' } },
|
|
2331
|
-
array_filters: [{ 'i.name' => 'Cbs' }])
|
|
2332
|
-
end
|
|
2333
|
-
|
|
2334
|
-
it 'applies the array filters' do
|
|
2335
|
-
expect(Band.where(name: 'Depeche Mode').first.labels.collect(&:name)).to match_array(['Warner', 'Sony', 'Sony'])
|
|
2336
|
-
end
|
|
2337
|
-
|
|
2338
|
-
it 'updates all documents' do
|
|
2339
|
-
expect(Band.where(name: 'FKA Twigs').first.labels.collect(&:name)).to match_array(['Warner', 'Sony'])
|
|
2340
|
-
end
|
|
2341
|
-
end
|
|
2342
2234
|
end
|
|
2343
2235
|
|
|
2344
2236
|
describe '#pipeline' do
|
|
@@ -2363,7 +2255,7 @@ describe Mongoid::Contextual::Mongo do
|
|
|
2363
2255
|
end
|
|
2364
2256
|
|
|
2365
2257
|
it 'creates a pipeline with the selector as one of the $match criteria' do
|
|
2366
|
-
expect(pipeline_match).to include({ '$text' => { '$search' => "New Order" } })
|
|
2258
|
+
expect(pipeline_match).to include({ :'$text' => { :'$search' => "New Order" } })
|
|
2367
2259
|
end
|
|
2368
2260
|
|
|
2369
2261
|
it 'creates a pipeline with the $exists operator as one of the $match criteria' do
|
|
@@ -49,6 +49,29 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
49
49
|
end
|
|
50
50
|
end
|
|
51
51
|
end
|
|
52
|
+
|
|
53
|
+
context 'when the object is polymorphic' do
|
|
54
|
+
|
|
55
|
+
let(:movie) do
|
|
56
|
+
Movie.new
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
let(:criteria) do
|
|
60
|
+
Rating.where(ratable: movie)
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
let(:document) do
|
|
64
|
+
criteria.create
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
it 'sets the polymorphic id' do
|
|
68
|
+
expect(document.ratable_id).to eq(movie.id)
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
it 'sets the type field' do
|
|
72
|
+
expect(document.ratable_type).to eq('Movie')
|
|
73
|
+
end
|
|
74
|
+
end
|
|
52
75
|
end
|
|
53
76
|
|
|
54
77
|
describe "#create!" do
|
|
@@ -65,6 +88,29 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
65
88
|
}.to raise_error(Mongoid::Errors::Validations)
|
|
66
89
|
end
|
|
67
90
|
end
|
|
91
|
+
|
|
92
|
+
context 'when the object is polymorphic' do
|
|
93
|
+
|
|
94
|
+
let(:movie) do
|
|
95
|
+
Movie.new
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
let(:criteria) do
|
|
99
|
+
Rating.where(ratable: movie)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
let(:document) do
|
|
103
|
+
criteria.create!
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
it 'sets the polymorphic id' do
|
|
107
|
+
expect(document.ratable_id).to eq(movie.id)
|
|
108
|
+
end
|
|
109
|
+
|
|
110
|
+
it 'sets the type field' do
|
|
111
|
+
expect(document.ratable_type).to eq('Movie')
|
|
112
|
+
end
|
|
113
|
+
end
|
|
68
114
|
end
|
|
69
115
|
|
|
70
116
|
[ :delete, :delete_all, :destroy, :destroy_all ].each do |method|
|
|
@@ -295,6 +341,25 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
295
341
|
expect(person.pets).to be true
|
|
296
342
|
end
|
|
297
343
|
end
|
|
344
|
+
|
|
345
|
+
context 'when the object is polymorphic' do
|
|
346
|
+
|
|
347
|
+
let(:movie) do
|
|
348
|
+
Movie.new
|
|
349
|
+
end
|
|
350
|
+
|
|
351
|
+
let(:document) do
|
|
352
|
+
Rating.find_or_create_by(ratable: movie)
|
|
353
|
+
end
|
|
354
|
+
|
|
355
|
+
it 'sets the polymorphic id' do
|
|
356
|
+
expect(document.ratable_id).to eq(movie.id)
|
|
357
|
+
end
|
|
358
|
+
|
|
359
|
+
it 'sets the type field' do
|
|
360
|
+
expect(document.ratable_type).to eq('Movie')
|
|
361
|
+
end
|
|
362
|
+
end
|
|
298
363
|
end
|
|
299
364
|
end
|
|
300
365
|
|
|
@@ -447,6 +512,25 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
447
512
|
end
|
|
448
513
|
end
|
|
449
514
|
end
|
|
515
|
+
|
|
516
|
+
context 'when the object is polymorphic' do
|
|
517
|
+
|
|
518
|
+
let(:movie) do
|
|
519
|
+
Movie.new
|
|
520
|
+
end
|
|
521
|
+
|
|
522
|
+
let(:document) do
|
|
523
|
+
Rating.find_or_create_by!(ratable: movie)
|
|
524
|
+
end
|
|
525
|
+
|
|
526
|
+
it 'sets the polymorphic id' do
|
|
527
|
+
expect(document.ratable_id).to eq(movie.id)
|
|
528
|
+
end
|
|
529
|
+
|
|
530
|
+
it 'sets the type field' do
|
|
531
|
+
expect(document.ratable_type).to eq('Movie')
|
|
532
|
+
end
|
|
533
|
+
end
|
|
450
534
|
end
|
|
451
535
|
|
|
452
536
|
describe ".find_or_initialize_by" do
|
|
@@ -500,6 +584,25 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
500
584
|
end
|
|
501
585
|
end
|
|
502
586
|
end
|
|
587
|
+
|
|
588
|
+
context 'when the object is polymorphic' do
|
|
589
|
+
|
|
590
|
+
let(:movie) do
|
|
591
|
+
Movie.new
|
|
592
|
+
end
|
|
593
|
+
|
|
594
|
+
let(:document) do
|
|
595
|
+
Rating.find_or_initialize_by(ratable: movie)
|
|
596
|
+
end
|
|
597
|
+
|
|
598
|
+
it 'sets the polymorphic id' do
|
|
599
|
+
expect(document.ratable_id).to eq(movie.id)
|
|
600
|
+
end
|
|
601
|
+
|
|
602
|
+
it 'sets the type field' do
|
|
603
|
+
expect(document.ratable_type).to eq('Movie')
|
|
604
|
+
end
|
|
605
|
+
end
|
|
503
606
|
end
|
|
504
607
|
|
|
505
608
|
describe "first_or_create" do
|
|
@@ -649,7 +752,7 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
649
752
|
band = Band.create
|
|
650
753
|
Mongoid::Criteria.new(Record) do |criteria|
|
|
651
754
|
criteria.embedded = true
|
|
652
|
-
criteria.
|
|
755
|
+
criteria.association = Band.reflect_on_association(:records)
|
|
653
756
|
criteria.parent_document = band
|
|
654
757
|
criteria.selector = { "records" => { "producers"=>{"$in"=>["nonexistent"] } } }
|
|
655
758
|
end
|
|
@@ -703,6 +806,29 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
703
806
|
end
|
|
704
807
|
end
|
|
705
808
|
|
|
809
|
+
context 'when the object is polymorphic' do
|
|
810
|
+
|
|
811
|
+
let(:movie) do
|
|
812
|
+
Movie.new
|
|
813
|
+
end
|
|
814
|
+
|
|
815
|
+
let(:criteria) do
|
|
816
|
+
Rating.where(ratable: movie)
|
|
817
|
+
end
|
|
818
|
+
|
|
819
|
+
let(:document) do
|
|
820
|
+
criteria.first_or_create
|
|
821
|
+
end
|
|
822
|
+
|
|
823
|
+
it 'sets the polymorphic id' do
|
|
824
|
+
expect(document.ratable_id).to eq(movie.id)
|
|
825
|
+
end
|
|
826
|
+
|
|
827
|
+
it 'sets the type field' do
|
|
828
|
+
expect(document.ratable_type).to eq('Movie')
|
|
829
|
+
end
|
|
830
|
+
end
|
|
831
|
+
|
|
706
832
|
context "when a block is provided" do
|
|
707
833
|
|
|
708
834
|
let(:document) do
|
|
@@ -919,6 +1045,29 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
919
1045
|
end
|
|
920
1046
|
end
|
|
921
1047
|
end
|
|
1048
|
+
|
|
1049
|
+
context 'when the object is polymorphic' do
|
|
1050
|
+
|
|
1051
|
+
let(:movie) do
|
|
1052
|
+
Movie.new
|
|
1053
|
+
end
|
|
1054
|
+
|
|
1055
|
+
let(:criteria) do
|
|
1056
|
+
Rating.where(ratable: movie)
|
|
1057
|
+
end
|
|
1058
|
+
|
|
1059
|
+
let(:document) do
|
|
1060
|
+
criteria.first_or_create!
|
|
1061
|
+
end
|
|
1062
|
+
|
|
1063
|
+
it 'sets the polymorphic id' do
|
|
1064
|
+
expect(document.ratable_id).to eq(movie.id)
|
|
1065
|
+
end
|
|
1066
|
+
|
|
1067
|
+
it 'sets the type field' do
|
|
1068
|
+
expect(document.ratable_type).to eq('Movie')
|
|
1069
|
+
end
|
|
1070
|
+
end
|
|
922
1071
|
end
|
|
923
1072
|
|
|
924
1073
|
describe "first_or_initialize" do
|
|
@@ -938,6 +1087,29 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
938
1087
|
end
|
|
939
1088
|
end
|
|
940
1089
|
|
|
1090
|
+
context 'when the object is polymorphic' do
|
|
1091
|
+
|
|
1092
|
+
let(:movie) do
|
|
1093
|
+
Movie.new
|
|
1094
|
+
end
|
|
1095
|
+
|
|
1096
|
+
let(:criteria) do
|
|
1097
|
+
Rating.where(ratable: movie)
|
|
1098
|
+
end
|
|
1099
|
+
|
|
1100
|
+
let(:document) do
|
|
1101
|
+
criteria.first_or_initialize
|
|
1102
|
+
end
|
|
1103
|
+
|
|
1104
|
+
it 'sets the polymorphic id' do
|
|
1105
|
+
expect(document.ratable_id).to eq(movie.id)
|
|
1106
|
+
end
|
|
1107
|
+
|
|
1108
|
+
it 'sets the type field' do
|
|
1109
|
+
expect(document.ratable_type).to eq('Movie')
|
|
1110
|
+
end
|
|
1111
|
+
end
|
|
1112
|
+
|
|
941
1113
|
context "when the document is not found" do
|
|
942
1114
|
|
|
943
1115
|
context "when attributes are provided" do
|
|
@@ -1471,15 +1643,11 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
1471
1643
|
{ 'username' => 'Turnip' }
|
|
1472
1644
|
end
|
|
1473
1645
|
|
|
1474
|
-
it '
|
|
1475
|
-
expect(Person.create_with(attrs).selector
|
|
1476
|
-
end
|
|
1477
|
-
|
|
1478
|
-
it 'create_attrs is modified' do
|
|
1479
|
-
expect(Person.create_with(attrs).create_attrs).to eq(attrs)
|
|
1646
|
+
it 'returns a criteria with the defined attributes' do
|
|
1647
|
+
expect(Person.create_with(attrs).selector).to eq(attrs)
|
|
1480
1648
|
end
|
|
1481
1649
|
|
|
1482
|
-
context 'when a
|
|
1650
|
+
context 'when a method is chained' do
|
|
1483
1651
|
|
|
1484
1652
|
context 'when a write method is chained' do
|
|
1485
1653
|
|
|
@@ -1503,25 +1671,6 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
1503
1671
|
expect(new_person.age).to eq(50)
|
|
1504
1672
|
end
|
|
1505
1673
|
|
|
1506
|
-
context 'when a matching document is already in the collection' do
|
|
1507
|
-
let(:query) do
|
|
1508
|
-
{ 'username' => 'foo', 'age' => 12 }
|
|
1509
|
-
end
|
|
1510
|
-
|
|
1511
|
-
let(:person) do
|
|
1512
|
-
Person.create!(query)
|
|
1513
|
-
end
|
|
1514
|
-
|
|
1515
|
-
let(:found_person) do
|
|
1516
|
-
Person.create_with(attrs).find_or_create_by(query)
|
|
1517
|
-
end
|
|
1518
|
-
|
|
1519
|
-
it 'finds the matching document' do
|
|
1520
|
-
person
|
|
1521
|
-
expect(found_person.id).to eq(person.id)
|
|
1522
|
-
end
|
|
1523
|
-
end
|
|
1524
|
-
|
|
1525
1674
|
context 'when the attributes are shared with the write method args' do
|
|
1526
1675
|
|
|
1527
1676
|
let(:query) do
|
|
@@ -1532,7 +1681,7 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
1532
1681
|
Person.create_with(attrs).find_or_create_by(query)
|
|
1533
1682
|
end
|
|
1534
1683
|
|
|
1535
|
-
it 'gives the
|
|
1684
|
+
it 'gives the write method args precedence' do
|
|
1536
1685
|
expect(new_person.username).to eq('Beet')
|
|
1537
1686
|
expect(new_person.age).to eq(50)
|
|
1538
1687
|
end
|
|
@@ -1559,12 +1708,8 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
1559
1708
|
{ 'username' => 'Beet', 'age' => 50 }
|
|
1560
1709
|
end
|
|
1561
1710
|
|
|
1562
|
-
it 'does not modify the selector' do
|
|
1563
|
-
expect(criteria.create_with(attrs).selector).to eq(criteria_selector)
|
|
1564
|
-
end
|
|
1565
|
-
|
|
1566
1711
|
it 'overwrites all the original attributes' do
|
|
1567
|
-
expect(criteria.create_with(attrs).
|
|
1712
|
+
expect(criteria.create_with(attrs).selector).to eq(attrs)
|
|
1568
1713
|
end
|
|
1569
1714
|
end
|
|
1570
1715
|
end
|
|
@@ -1575,12 +1720,8 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
1575
1720
|
{ 'username' => 'Beet' }
|
|
1576
1721
|
end
|
|
1577
1722
|
|
|
1578
|
-
it 'does not modify the selector' do
|
|
1579
|
-
expect(criteria.create_with(attrs).selector).to eq(criteria_selector)
|
|
1580
|
-
end
|
|
1581
|
-
|
|
1582
1723
|
it 'only overwrites the shared attributes' do
|
|
1583
|
-
expect(criteria.create_with(attrs).
|
|
1724
|
+
expect(criteria.create_with(attrs).selector).to eq(criteria_selector.merge!(attrs))
|
|
1584
1725
|
end
|
|
1585
1726
|
end
|
|
1586
1727
|
|
|
@@ -1589,11 +1730,12 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
1589
1730
|
let(:attrs) do
|
|
1590
1731
|
{ 'username' => 'Turnip' }
|
|
1591
1732
|
end
|
|
1733
|
+
|
|
1592
1734
|
let(:query) do
|
|
1593
1735
|
{ 'username' => 'Beet', 'age' => 50 }
|
|
1594
1736
|
end
|
|
1595
1737
|
|
|
1596
|
-
context 'when a
|
|
1738
|
+
context 'when a write method is chained' do
|
|
1597
1739
|
|
|
1598
1740
|
it 'executes the method' do
|
|
1599
1741
|
expect(criteria.create_with(attrs).new.username).to eq('Turnip')
|
|
@@ -1607,28 +1749,9 @@ describe Mongoid::Criteria::Modifiable do
|
|
|
1607
1749
|
criteria.create_with(attrs).find_or_create_by(query)
|
|
1608
1750
|
end
|
|
1609
1751
|
|
|
1610
|
-
it '
|
|
1752
|
+
it 'executes the query' do
|
|
1611
1753
|
expect(new_person.username).to eq('Beet')
|
|
1612
|
-
expect(new_person.age).to
|
|
1613
|
-
end
|
|
1614
|
-
|
|
1615
|
-
context 'when a matching document is already in the collection' do
|
|
1616
|
-
let(:query) do
|
|
1617
|
-
{ 'username' => 'foo', 'age' => 12 }
|
|
1618
|
-
end
|
|
1619
|
-
|
|
1620
|
-
let(:person) do
|
|
1621
|
-
Person.create!(query)
|
|
1622
|
-
end
|
|
1623
|
-
|
|
1624
|
-
let(:found_person) do
|
|
1625
|
-
criteria.create_with(attrs).find_or_create_by(query)
|
|
1626
|
-
end
|
|
1627
|
-
|
|
1628
|
-
it 'finds the matching document' do
|
|
1629
|
-
person
|
|
1630
|
-
expect(found_person.id).to eq(person.id)
|
|
1631
|
-
end
|
|
1754
|
+
expect(new_person.age).to eq(50)
|
|
1632
1755
|
end
|
|
1633
1756
|
end
|
|
1634
1757
|
end
|