mongoid 6.4.8 → 7.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/Rakefile +0 -26
- 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 +116 -0
- data/lib/mongoid/{relations/eager.rb → association/eager_loadable.rb} +11 -11
- data/lib/mongoid/{relations → association}/embedded/batchable.rb +21 -21
- 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 +529 -0
- data/lib/mongoid/association/embedded/embeds_many.rb +210 -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 +173 -0
- data/lib/mongoid/association/embedded.rb +4 -0
- data/lib/mongoid/association/macros.rb +204 -0
- data/lib/mongoid/{relations → association}/many.rb +20 -50
- 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 +31 -58
- 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 +159 -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_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 +415 -0
- data/lib/mongoid/association/touchable.rb +97 -0
- data/lib/mongoid/association.rb +150 -0
- data/lib/mongoid/atomic/paths/embedded/many.rb +1 -1
- data/lib/mongoid/atomic/paths/embedded/one.rb +1 -1
- data/lib/mongoid/atomic.rb +4 -4
- data/lib/mongoid/attributes/dynamic.rb +2 -2
- 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/attributes.rb +22 -13
- data/lib/mongoid/changeable.rb +1 -1
- data/lib/mongoid/clients/options.rb +1 -1
- data/lib/mongoid/clients/sessions.rb +2 -2
- data/lib/mongoid/composable.rb +4 -4
- data/lib/mongoid/config.rb +1 -0
- data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
- data/lib/mongoid/contextual/atomic.rb +1 -1
- data/lib/mongoid/contextual/geo_near.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +4 -4
- data/lib/mongoid/contextual/memory.rb +25 -7
- data/lib/mongoid/contextual/mongo.rb +13 -11
- data/lib/mongoid/copyable.rb +6 -6
- data/lib/mongoid/criteria/includable.rb +14 -14
- data/lib/mongoid/criteria/modifiable.rb +8 -14
- data/lib/mongoid/criteria/queryable/extensions/string.rb +1 -1
- data/lib/mongoid/criteria/queryable/pipeline.rb +10 -5
- data/lib/mongoid/criteria/queryable/selectable.rb +10 -34
- data/lib/mongoid/criteria.rb +2 -2
- data/lib/mongoid/document.rb +6 -6
- 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/big_decimal.rb +1 -1
- data/lib/mongoid/extensions/hash.rb +5 -2
- 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/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 +3 -3
- data/lib/mongoid/indexable.rb +8 -5
- data/lib/mongoid/interceptable.rb +5 -5
- data/lib/mongoid/matchable/and.rb +1 -1
- data/lib/mongoid/matchable/elem_match.rb +9 -3
- data/lib/mongoid/matchable.rb +0 -3
- data/lib/mongoid/persistable/creatable.rb +2 -2
- data/lib/mongoid/persistable/deletable.rb +9 -8
- 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 -1
- data/lib/mongoid/persistable.rb +5 -6
- data/lib/mongoid/persistence_context.rb +1 -5
- data/lib/mongoid/query_cache.rb +19 -64
- 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 +4 -4
- data/lib/mongoid/shardable.rb +1 -1
- data/lib/mongoid/tasks/database.rb +2 -2
- data/lib/mongoid/threaded.rb +0 -36
- data/lib/mongoid/traversable.rb +3 -3
- data/lib/mongoid/validatable/presence.rb +2 -2
- data/lib/mongoid/validatable/uniqueness.rb +4 -4
- data/lib/mongoid/validatable.rb +8 -8
- data/lib/mongoid/version.rb +1 -1
- data/lib/mongoid.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +3 -0
- data/spec/app/models/animal.rb +2 -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/shipment_address.rb +1 -0
- 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/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 -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 +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} +26 -11
- data/spec/mongoid/{relations/targets → association/referenced/has_many}/enumerable_spec.rb +122 -1
- 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 +2 -2
- data/spec/mongoid/atomic_spec.rb +4 -4
- data/spec/mongoid/attributes/nested_spec.rb +14 -12
- data/spec/mongoid/attributes/readonly_spec.rb +80 -125
- data/spec/mongoid/attributes_spec.rb +38 -2
- data/spec/mongoid/clients/factory_spec.rb +28 -52
- data/spec/mongoid/clients/options_spec.rb +65 -69
- data/spec/mongoid/clients/sessions_spec.rb +4 -13
- data/spec/mongoid/config_spec.rb +24 -0
- data/spec/mongoid/contextual/geo_near_spec.rb +0 -1
- data/spec/mongoid/contextual/memory_spec.rb +19 -0
- data/spec/mongoid/contextual/mongo_spec.rb +30 -5
- data/spec/mongoid/copyable_spec.rb +34 -0
- 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/extensions/string_spec.rb +43 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +12 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +3 -42
- 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/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/extensions/regexp_spec.rb +0 -23
- data/spec/mongoid/extensions/string_spec.rb +7 -35
- data/spec/mongoid/factory_spec.rb +19 -1
- 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 +22 -1
- data/spec/mongoid/matchable/elem_match_spec.rb +20 -0
- data/spec/mongoid/matchable_spec.rb +1 -26
- data/spec/mongoid/persistable/incrementable_spec.rb +6 -6
- data/spec/mongoid/persistable/savable_spec.rb +2 -2
- data/spec/mongoid/persistable/settable_spec.rb +1 -35
- data/spec/mongoid/persistable_spec.rb +21 -6
- data/spec/mongoid/query_cache_spec.rb +16 -99
- data/spec/mongoid/relations/proxy_spec.rb +124 -124
- data/spec/mongoid/scopable_spec.rb +0 -13
- data/spec/mongoid/shardable_spec.rb +32 -12
- 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 +12 -14
- data.tar.gz.sig +1 -1
- metadata +192 -207
- metadata.gz.sig +0 -0
- data/lib/mongoid/matchable/nor.rb +0 -37
- data/lib/mongoid/railties/controller_runtime.rb +0 -86
- 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/lib/mongoid/relations.rb +0 -148
- 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/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/{relations → association}/embedded/dirty_spec.rb +0 -0
|
@@ -451,7 +451,7 @@ describe Mongoid::Contextual::Mongo do
|
|
|
451
451
|
end
|
|
452
452
|
|
|
453
453
|
it "returns the distinct field values" do
|
|
454
|
-
expect(context.distinct(:years)
|
|
454
|
+
expect(context.distinct(:years)).to eq([ 30, 25 ])
|
|
455
455
|
end
|
|
456
456
|
end
|
|
457
457
|
|
|
@@ -577,6 +577,31 @@ describe Mongoid::Contextual::Mongo do
|
|
|
577
577
|
end
|
|
578
578
|
end
|
|
579
579
|
end
|
|
580
|
+
|
|
581
|
+
context 'when the criteria has a parent document' do
|
|
582
|
+
|
|
583
|
+
before do
|
|
584
|
+
Post.create(person: person)
|
|
585
|
+
Post.create(person: person)
|
|
586
|
+
Post.create(person: person)
|
|
587
|
+
end
|
|
588
|
+
|
|
589
|
+
let(:person) do
|
|
590
|
+
Person.new
|
|
591
|
+
end
|
|
592
|
+
|
|
593
|
+
let(:criteria) do
|
|
594
|
+
person.posts.all
|
|
595
|
+
end
|
|
596
|
+
|
|
597
|
+
let(:persons) do
|
|
598
|
+
criteria.collect(&:person)
|
|
599
|
+
end
|
|
600
|
+
|
|
601
|
+
it 'sets the same parent object on each related object' do
|
|
602
|
+
expect(persons.uniq.size).to eq(1)
|
|
603
|
+
end
|
|
604
|
+
end
|
|
580
605
|
end
|
|
581
606
|
|
|
582
607
|
describe "#eager_load" do
|
|
@@ -591,12 +616,12 @@ describe Mongoid::Contextual::Mongo do
|
|
|
591
616
|
|
|
592
617
|
context "when no documents are returned" do
|
|
593
618
|
|
|
594
|
-
let(:
|
|
619
|
+
let(:game_association) do
|
|
595
620
|
Person.reflect_on_association(:game)
|
|
596
621
|
end
|
|
597
622
|
|
|
598
623
|
it "does not make any additional database queries" do
|
|
599
|
-
expect(
|
|
624
|
+
expect(game_association).to receive(:eager_load).never
|
|
600
625
|
context.send(:eager_load, [])
|
|
601
626
|
end
|
|
602
627
|
end
|
|
@@ -2328,7 +2353,7 @@ describe Mongoid::Contextual::Mongo do
|
|
|
2328
2353
|
|
|
2329
2354
|
let!(:update) do
|
|
2330
2355
|
context.update_all({ '$set' => { 'labels.$[i].name' => 'Sony' } },
|
|
2331
|
-
|
|
2356
|
+
array_filters: [{ 'i.name' => 'Cbs' }])
|
|
2332
2357
|
end
|
|
2333
2358
|
|
|
2334
2359
|
it 'applies the array filters' do
|
|
@@ -2363,7 +2388,7 @@ describe Mongoid::Contextual::Mongo do
|
|
|
2363
2388
|
end
|
|
2364
2389
|
|
|
2365
2390
|
it 'creates a pipeline with the selector as one of the $match criteria' do
|
|
2366
|
-
expect(pipeline_match).to include({ '$text' => { '$search' => "New Order" } })
|
|
2391
|
+
expect(pipeline_match).to include({ :'$text' => { :'$search' => "New Order" } })
|
|
2367
2392
|
end
|
|
2368
2393
|
|
|
2369
2394
|
it 'creates a pipeline with the $exists operator as one of the $match criteria' do
|
|
@@ -144,6 +144,40 @@ describe Mongoid::Copyable do
|
|
|
144
144
|
end
|
|
145
145
|
end
|
|
146
146
|
|
|
147
|
+
context "when cloning a document with polymorphic embedded documents with multiple language field" do
|
|
148
|
+
|
|
149
|
+
let!(:shipment_address) do
|
|
150
|
+
person.addresses.build({ shipping_name: "Title" }, ShipmentAddress)
|
|
151
|
+
end
|
|
152
|
+
|
|
153
|
+
before do
|
|
154
|
+
I18n.enforce_available_locales = false
|
|
155
|
+
I18n.locale = 'pt_BR'
|
|
156
|
+
person.addresses.type(ShipmentAddress).each { |address| address.shipping_name = "Título" }
|
|
157
|
+
person.save
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
after do
|
|
161
|
+
I18n.locale = :en
|
|
162
|
+
end
|
|
163
|
+
|
|
164
|
+
let!(:from_db) do
|
|
165
|
+
Person.find(person.id)
|
|
166
|
+
end
|
|
167
|
+
|
|
168
|
+
let(:copy) do
|
|
169
|
+
from_db.send(method)
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
it 'sets embedded translations' do
|
|
173
|
+
I18n.locale = 'pt_BR'
|
|
174
|
+
copy.addresses.type(ShipmentAddress).each do |address|
|
|
175
|
+
expect(address.shipping_name).to eq("Título")
|
|
176
|
+
end
|
|
177
|
+
end
|
|
178
|
+
|
|
179
|
+
end
|
|
180
|
+
|
|
147
181
|
context "when cloning a loaded document" do
|
|
148
182
|
|
|
149
183
|
before 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
|
|
@@ -7,7 +7,7 @@ describe BigDecimal do
|
|
|
7
7
|
context "when provided a big decimal" do
|
|
8
8
|
|
|
9
9
|
let(:big_decimal) do
|
|
10
|
-
BigDecimal("123456.789")
|
|
10
|
+
BigDecimal.new("123456.789")
|
|
11
11
|
end
|
|
12
12
|
|
|
13
13
|
it "returns the decimal as a string" do
|
|
@@ -25,11 +25,11 @@ describe BigDecimal do
|
|
|
25
25
|
context "when provided an array of big decimals" do
|
|
26
26
|
|
|
27
27
|
let(:bd_one) do
|
|
28
|
-
BigDecimal("123456.789")
|
|
28
|
+
BigDecimal.new("123456.789")
|
|
29
29
|
end
|
|
30
30
|
|
|
31
31
|
let(:bd_two) do
|
|
32
|
-
BigDecimal("123333.789")
|
|
32
|
+
BigDecimal.new("123333.789")
|
|
33
33
|
end
|
|
34
34
|
|
|
35
35
|
let(:array) do
|
|
@@ -66,6 +66,49 @@ describe String do
|
|
|
66
66
|
expect(evolved).to eq(Time.new(2010, 1, 1, 11, 0, 0, 0).utc)
|
|
67
67
|
end
|
|
68
68
|
end
|
|
69
|
+
|
|
70
|
+
context "when the string without timezone" do
|
|
71
|
+
|
|
72
|
+
context "when using active support's time zone" do
|
|
73
|
+
|
|
74
|
+
before do
|
|
75
|
+
Mongoid.use_activesupport_time_zone = true
|
|
76
|
+
::Time.zone = "Tokyo"
|
|
77
|
+
end
|
|
78
|
+
|
|
79
|
+
let(:date) do
|
|
80
|
+
"2010-01-01 5:00:00"
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
let(:evolved) do
|
|
84
|
+
date.__evolve_time__
|
|
85
|
+
end
|
|
86
|
+
|
|
87
|
+
it "parses string using active support's time zone" do
|
|
88
|
+
expect(evolved).to eq(Time.zone.parse(date).utc)
|
|
89
|
+
end
|
|
90
|
+
end
|
|
91
|
+
|
|
92
|
+
context "when not using active support's time zone" do
|
|
93
|
+
|
|
94
|
+
before do
|
|
95
|
+
Mongoid.use_activesupport_time_zone = false
|
|
96
|
+
::Time.zone = nil
|
|
97
|
+
end
|
|
98
|
+
|
|
99
|
+
let(:date) do
|
|
100
|
+
"2010-01-01 5:00:00"
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
let(:evolved) do
|
|
104
|
+
date.__evolve_time__
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it "parses string using system time zone" do
|
|
108
|
+
expect(evolved).to eq(Time.parse(date).utc)
|
|
109
|
+
end
|
|
110
|
+
end
|
|
111
|
+
end
|
|
69
112
|
end
|
|
70
113
|
|
|
71
114
|
describe "#__sort_option__" do
|
|
@@ -196,5 +196,17 @@ describe Mongoid::Criteria::Queryable::Pipeline do
|
|
|
196
196
|
end
|
|
197
197
|
end
|
|
198
198
|
end
|
|
199
|
+
|
|
200
|
+
context "when provided a hash" do
|
|
201
|
+
before do
|
|
202
|
+
pipeline.unwind(path: "$author", "includeArrayIndex" => "author_index", preserveNullAndEmptyArrays: true)
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
it "sets the hash" do
|
|
206
|
+
expect(pipeline).to eq([
|
|
207
|
+
{ "$unwind" => { path: "$author", "includeArrayIndex" => "author_index", preserveNullAndEmptyArrays: true } }
|
|
208
|
+
])
|
|
209
|
+
end
|
|
210
|
+
end
|
|
199
211
|
end
|
|
200
212
|
end
|
|
@@ -1073,26 +1073,6 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
|
1073
1073
|
})
|
|
1074
1074
|
end
|
|
1075
1075
|
|
|
1076
|
-
context "when used with the $box operator ($geoWithin query) " do
|
|
1077
|
-
let(:selection) do
|
|
1078
|
-
query.geo_spacial(
|
|
1079
|
-
:location.within_box => [[ 1, 10 ], [ 2, 10 ]]
|
|
1080
|
-
)
|
|
1081
|
-
end
|
|
1082
|
-
|
|
1083
|
-
it "adds the $geoIntersects expression" do
|
|
1084
|
-
expect(selection.selector).to eq({
|
|
1085
|
-
"location" => {
|
|
1086
|
-
"$geoWithin" => {
|
|
1087
|
-
"$box" => [
|
|
1088
|
-
[ 1, 10 ], [ 2, 10 ]
|
|
1089
|
-
]
|
|
1090
|
-
}
|
|
1091
|
-
}
|
|
1092
|
-
})
|
|
1093
|
-
end
|
|
1094
|
-
end
|
|
1095
|
-
|
|
1096
1076
|
it_behaves_like "a cloning selection"
|
|
1097
1077
|
end
|
|
1098
1078
|
end
|
|
@@ -3389,7 +3369,7 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
|
3389
3369
|
end
|
|
3390
3370
|
|
|
3391
3371
|
it "constructs a text search document" do
|
|
3392
|
-
expect(selection.selector).to eq({
|
|
3372
|
+
expect(selection.selector).to eq({ :$text => { :$search => "testing" }})
|
|
3393
3373
|
end
|
|
3394
3374
|
|
|
3395
3375
|
it "returns the cloned selectable" do
|
|
@@ -3403,35 +3383,16 @@ describe Mongoid::Criteria::Queryable::Selectable do
|
|
|
3403
3383
|
end
|
|
3404
3384
|
|
|
3405
3385
|
it "constructs a text search document" do
|
|
3406
|
-
expect(selection.selector[
|
|
3386
|
+
expect(selection.selector[:$text][:$search]).to eq("essais")
|
|
3407
3387
|
end
|
|
3408
3388
|
|
|
3409
3389
|
it "add the options to the text search document" do
|
|
3410
|
-
expect(selection.selector[
|
|
3390
|
+
expect(selection.selector[:$text][:$language]).to eq("fr")
|
|
3411
3391
|
end
|
|
3412
3392
|
|
|
3413
3393
|
it_behaves_like "a cloning selection"
|
|
3414
3394
|
end
|
|
3415
3395
|
end
|
|
3416
|
-
|
|
3417
|
-
context 'when given more than once' do
|
|
3418
|
-
let(:selection) do
|
|
3419
|
-
query.text_search("one").text_search('two')
|
|
3420
|
-
end
|
|
3421
|
-
|
|
3422
|
-
# MongoDB server can only handle one text expression at a time,
|
|
3423
|
-
# per https://docs.mongodb.com/manual/reference/operator/query/text/.
|
|
3424
|
-
# Nonetheless we test that the query is built correctly when
|
|
3425
|
-
# a user supplies more than one text condition.
|
|
3426
|
-
it 'merges conditions' do
|
|
3427
|
-
expect(Mongoid.logger).to receive(:warn)
|
|
3428
|
-
expect(selection.selector).to eq('$and' => [
|
|
3429
|
-
{'$text' => {'$search' => 'one'}}
|
|
3430
|
-
],
|
|
3431
|
-
'$text' => {'$search' => 'two'},
|
|
3432
|
-
)
|
|
3433
|
-
end
|
|
3434
|
-
end
|
|
3435
3396
|
end
|
|
3436
3397
|
|
|
3437
3398
|
describe "#where" do
|
|
@@ -370,11 +370,11 @@ describe Mongoid::Criteria::Queryable::Selector do
|
|
|
370
370
|
context "when providing an array" do
|
|
371
371
|
|
|
372
372
|
let(:big_one) do
|
|
373
|
-
BigDecimal("1.2321")
|
|
373
|
+
BigDecimal.new("1.2321")
|
|
374
374
|
end
|
|
375
375
|
|
|
376
376
|
let(:big_two) do
|
|
377
|
-
BigDecimal("4.2222")
|
|
377
|
+
BigDecimal.new("4.2222")
|
|
378
378
|
end
|
|
379
379
|
|
|
380
380
|
let(:array) do
|