mongoid 7.6.0 → 8.0.1
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 +2 -0
- data/README.md +3 -3
- data/Rakefile +21 -85
- data/lib/config/locales/en.yml +46 -30
- data/lib/mongoid/association/accessors.rb +32 -3
- data/lib/mongoid/association/bindable.rb +48 -0
- data/lib/mongoid/association/builders.rb +4 -2
- data/lib/mongoid/association/eager_loadable.rb +29 -7
- data/lib/mongoid/association/embedded/batchable.rb +28 -5
- data/lib/mongoid/association/embedded/embedded_in/binding.rb +24 -2
- data/lib/mongoid/association/embedded/embedded_in.rb +2 -1
- data/lib/mongoid/association/embedded/embeds_many/binding.rb +1 -0
- data/lib/mongoid/association/embedded/embeds_many/buildable.rb +1 -1
- data/lib/mongoid/association/embedded/embeds_many/proxy.rb +40 -18
- data/lib/mongoid/association/embedded/embeds_one/buildable.rb +18 -4
- data/lib/mongoid/association/embedded/embeds_one/proxy.rb +21 -2
- data/lib/mongoid/association/macros.rb +2 -1
- data/lib/mongoid/association/many.rb +5 -0
- data/lib/mongoid/association/nested/many.rb +2 -1
- data/lib/mongoid/association/proxy.rb +12 -0
- data/lib/mongoid/association/referenced/auto_save.rb +3 -2
- data/lib/mongoid/association/referenced/belongs_to/binding.rb +1 -0
- data/lib/mongoid/association/referenced/belongs_to/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/belongs_to.rb +1 -1
- data/lib/mongoid/association/referenced/counter_cache.rb +8 -8
- data/lib/mongoid/association/referenced/has_and_belongs_to_many/proxy.rb +64 -11
- data/lib/mongoid/association/referenced/has_and_belongs_to_many.rb +4 -1
- data/lib/mongoid/association/referenced/has_many/enumerable.rb +10 -18
- data/lib/mongoid/association/referenced/has_many/proxy.rb +12 -9
- data/lib/mongoid/association/referenced/has_one/buildable.rb +1 -1
- data/lib/mongoid/association/referenced/has_one/proxy.rb +8 -11
- data/lib/mongoid/association/referenced/syncable.rb +2 -2
- data/lib/mongoid/association/relatable.rb +38 -4
- data/lib/mongoid/attributes/processing.rb +9 -2
- data/lib/mongoid/attributes.rb +30 -27
- data/lib/mongoid/cacheable.rb +2 -2
- data/lib/mongoid/changeable.rb +37 -2
- data/lib/mongoid/clients/options.rb +4 -0
- data/lib/mongoid/clients/sessions.rb +2 -14
- data/lib/mongoid/config.rb +15 -11
- data/lib/mongoid/contextual/aggregable/memory.rb +23 -15
- data/lib/mongoid/contextual/aggregable/mongo.rb +1 -1
- data/lib/mongoid/contextual/map_reduce.rb +2 -2
- data/lib/mongoid/contextual/memory.rb +55 -28
- data/lib/mongoid/contextual/mongo.rb +173 -287
- data/lib/mongoid/contextual/none.rb +33 -15
- data/lib/mongoid/copyable.rb +32 -8
- data/lib/mongoid/criteria/includable.rb +24 -20
- data/lib/mongoid/criteria/marshalable.rb +10 -2
- data/lib/mongoid/criteria/queryable/extensions/array.rb +2 -15
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +25 -4
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/date.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +0 -16
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/object.rb +2 -1
- data/lib/mongoid/criteria/queryable/extensions/range.rb +13 -5
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +1 -1
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +3 -1
- data/lib/mongoid/criteria/queryable/extensions/time.rb +6 -1
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +6 -1
- data/lib/mongoid/criteria/queryable/optional.rb +3 -9
- data/lib/mongoid/criteria/queryable/options.rb +1 -1
- data/lib/mongoid/criteria/queryable/selectable.rb +2 -24
- data/lib/mongoid/criteria/queryable/selector.rb +90 -5
- data/lib/mongoid/criteria/queryable/smash.rb +39 -6
- data/lib/mongoid/criteria/queryable/storable.rb +1 -1
- data/lib/mongoid/criteria/queryable.rb +11 -6
- data/lib/mongoid/criteria.rb +1 -28
- data/lib/mongoid/deprecable.rb +36 -0
- data/lib/mongoid/deprecation.rb +25 -0
- data/lib/mongoid/document.rb +88 -33
- data/lib/mongoid/equality.rb +4 -4
- data/lib/mongoid/errors/document_not_found.rb +6 -2
- data/lib/mongoid/errors/invalid_dot_dollar_assignment.rb +23 -0
- data/lib/mongoid/errors/invalid_field.rb +5 -1
- data/lib/mongoid/errors/invalid_field_type.rb +26 -0
- data/lib/mongoid/errors/too_many_nested_attribute_records.rb +1 -1
- data/lib/mongoid/errors.rb +2 -2
- data/lib/mongoid/extensions/array.rb +8 -6
- data/lib/mongoid/extensions/big_decimal.rb +29 -10
- data/lib/mongoid/extensions/binary.rb +42 -0
- data/lib/mongoid/extensions/boolean.rb +8 -2
- data/lib/mongoid/extensions/date.rb +26 -20
- data/lib/mongoid/extensions/date_time.rb +1 -1
- data/lib/mongoid/extensions/float.rb +4 -5
- data/lib/mongoid/extensions/hash.rb +12 -5
- data/lib/mongoid/extensions/integer.rb +4 -5
- data/lib/mongoid/extensions/object.rb +2 -0
- data/lib/mongoid/extensions/range.rb +41 -10
- data/lib/mongoid/extensions/regexp.rb +11 -4
- data/lib/mongoid/extensions/set.rb +11 -4
- data/lib/mongoid/extensions/string.rb +2 -13
- data/lib/mongoid/extensions/symbol.rb +3 -14
- data/lib/mongoid/extensions/time.rb +27 -16
- data/lib/mongoid/extensions/time_with_zone.rb +1 -2
- data/lib/mongoid/extensions.rb +1 -0
- data/lib/mongoid/factory.rb +42 -7
- data/lib/mongoid/fields/foreign_key.rb +7 -0
- data/lib/mongoid/fields/validators/macro.rb +3 -9
- data/lib/mongoid/fields.rb +49 -7
- data/lib/mongoid/findable.rb +21 -16
- data/lib/mongoid/indexable/specification.rb +1 -1
- data/lib/mongoid/indexable/validators/options.rb +4 -1
- data/lib/mongoid/interceptable.rb +69 -9
- data/lib/mongoid/persistable/creatable.rb +14 -5
- data/lib/mongoid/persistable/updatable.rb +12 -5
- data/lib/mongoid/persistence_context.rb +8 -42
- data/lib/mongoid/query_cache.rb +6 -258
- data/lib/mongoid/railties/controller_runtime.rb +1 -1
- data/lib/mongoid/reloadable.rb +7 -3
- data/lib/mongoid/scopable.rb +9 -11
- data/lib/mongoid/selectable.rb +1 -2
- data/lib/mongoid/shardable.rb +11 -35
- data/lib/mongoid/stateful.rb +27 -1
- data/lib/mongoid/timestamps/created.rb +1 -1
- data/lib/mongoid/timestamps/updated.rb +1 -1
- data/lib/mongoid/touchable.rb +2 -3
- data/lib/mongoid/traversable.rb +1 -0
- data/lib/mongoid/validatable/uniqueness.rb +2 -1
- data/lib/mongoid/version.rb +1 -5
- data/lib/mongoid/warnings.rb +3 -4
- data/lib/mongoid.rb +1 -0
- data/spec/config/mongoid.yml +16 -0
- data/spec/integration/app_spec.rb +8 -12
- data/spec/integration/associations/belongs_to_spec.rb +18 -0
- data/spec/integration/associations/embedded_spec.rb +15 -0
- data/spec/integration/associations/embeds_many_spec.rb +15 -2
- data/spec/integration/associations/embeds_one_spec.rb +18 -0
- data/spec/integration/associations/foreign_key_spec.rb +9 -0
- data/spec/integration/associations/has_and_belongs_to_many_spec.rb +21 -0
- data/spec/integration/associations/has_one_spec.rb +97 -1
- data/spec/integration/associations/scope_option_spec.rb +1 -1
- data/spec/integration/callbacks_models.rb +95 -1
- data/spec/integration/callbacks_spec.rb +226 -4
- data/spec/integration/criteria/range_spec.rb +95 -1
- data/spec/integration/discriminator_key_spec.rb +115 -76
- data/spec/integration/dots_and_dollars_spec.rb +277 -0
- data/spec/integration/i18n_fallbacks_spec.rb +1 -15
- data/spec/integration/matcher_examples_spec.rb +20 -13
- data/spec/integration/matcher_operator_data/type_decimal.yml +3 -2
- data/spec/integration/matcher_operator_spec.rb +3 -5
- data/spec/integration/persistence/range_field_spec.rb +350 -0
- data/spec/mongoid/association/counter_cache_spec.rb +1 -1
- data/spec/mongoid/association/depending_spec.rb +9 -9
- data/spec/mongoid/association/eager_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/binding_spec.rb +2 -1
- data/spec/mongoid/association/embedded/embedded_in/buildable_spec.rb +54 -0
- data/spec/mongoid/association/embedded/embedded_in/proxy_spec.rb +69 -9
- data/spec/mongoid/association/embedded/embeds_many/buildable_spec.rb +112 -0
- data/spec/mongoid/association/embedded/embeds_many/proxy_spec.rb +198 -8
- data/spec/mongoid/association/embedded/embeds_many_models.rb +36 -0
- data/spec/mongoid/association/embedded/embeds_many_query_spec.rb +12 -0
- data/spec/mongoid/association/embedded/embeds_many_spec.rb +68 -0
- data/spec/mongoid/association/embedded/embeds_one/buildable_spec.rb +25 -0
- data/spec/mongoid/association/embedded/embeds_one_models.rb +19 -0
- data/spec/mongoid/association/embedded/embeds_one_spec.rb +28 -0
- data/spec/mongoid/association/referenced/belongs_to/binding_spec.rb +2 -1
- data/spec/mongoid/association/referenced/belongs_to/buildable_spec.rb +54 -0
- data/spec/mongoid/association/referenced/belongs_to/proxy_spec.rb +15 -0
- data/spec/mongoid/association/referenced/belongs_to_models.rb +11 -0
- data/spec/mongoid/association/referenced/belongs_to_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_and_belongs_to_many/proxy_spec.rb +38 -5
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_models.rb +25 -0
- data/spec/mongoid/association/referenced/has_and_belongs_to_many_spec.rb +35 -2
- data/spec/mongoid/association/referenced/has_many/buildable_spec.rb +109 -0
- data/spec/mongoid/association/referenced/has_many/enumerable_spec.rb +2 -56
- data/spec/mongoid/association/referenced/has_many/proxy_spec.rb +62 -13
- data/spec/mongoid/association/referenced/has_many_models.rb +3 -1
- data/spec/mongoid/association/referenced/has_many_spec.rb +25 -0
- data/spec/mongoid/association/referenced/has_one/buildable_spec.rb +2 -2
- data/spec/mongoid/association/referenced/has_one/proxy_spec.rb +107 -1
- data/spec/mongoid/association/referenced/has_one_models.rb +16 -0
- data/spec/mongoid/association/syncable_spec.rb +14 -0
- data/spec/mongoid/atomic/paths_spec.rb +0 -14
- data/spec/mongoid/attributes/nested_spec.rb +80 -11
- data/spec/mongoid/attributes/nested_spec_models.rb +48 -0
- data/spec/mongoid/attributes/projector_spec.rb +1 -5
- data/spec/mongoid/attributes_spec.rb +480 -27
- data/spec/mongoid/cacheable_spec.rb +3 -3
- data/spec/mongoid/changeable_spec.rb +130 -13
- data/spec/mongoid/clients/factory_spec.rb +23 -30
- data/spec/mongoid/clients/sessions_spec.rb +0 -38
- data/spec/mongoid/clients_spec.rb +2 -2
- data/spec/mongoid/config_spec.rb +52 -15
- data/spec/mongoid/contextual/aggregable/memory_spec.rb +396 -158
- data/spec/mongoid/contextual/aggregable/memory_table.yml +88 -0
- data/spec/mongoid/contextual/aggregable/memory_table_spec.rb +62 -0
- data/spec/mongoid/contextual/map_reduce_spec.rb +2 -16
- data/spec/mongoid/contextual/memory_spec.rb +521 -14
- data/spec/mongoid/contextual/mongo_spec.rb +566 -426
- data/spec/mongoid/contextual/none_spec.rb +11 -19
- data/spec/mongoid/copyable_spec.rb +451 -2
- data/spec/mongoid/criteria/findable_spec.rb +86 -210
- data/spec/mongoid/criteria/includable_spec.rb +1492 -0
- data/spec/mongoid/criteria/includable_spec_models.rb +54 -0
- data/spec/mongoid/criteria/marshalable_spec.rb +18 -1
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +7 -19
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +134 -26
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +1 -2
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +0 -15
- data/spec/mongoid/criteria/queryable/extensions/numeric_spec.rb +73 -7
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +11 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +0 -484
- data/spec/mongoid/criteria/queryable/selectable_logical_spec.rb +50 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +77 -85
- data/spec/mongoid/criteria/queryable/selector_spec.rb +16 -77
- data/spec/mongoid/criteria/queryable/storable_spec.rb +0 -72
- data/spec/mongoid/criteria_spec.rb +469 -1201
- data/spec/mongoid/document_fields_spec.rb +173 -24
- data/spec/mongoid/document_spec.rb +32 -41
- data/spec/mongoid/equality_spec.rb +12 -12
- data/spec/mongoid/errors/document_not_found_spec.rb +29 -2
- data/spec/mongoid/errors/invalid_field_spec.rb +1 -1
- data/spec/mongoid/errors/invalid_field_type_spec.rb +55 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +3 -1
- data/spec/mongoid/errors/no_environment_spec.rb +3 -3
- data/spec/mongoid/errors/too_many_nested_attribute_records_spec.rb +1 -1
- data/spec/mongoid/extensions/array_spec.rb +16 -2
- data/spec/mongoid/extensions/big_decimal_spec.rb +697 -212
- data/spec/mongoid/extensions/binary_spec.rb +44 -9
- data/spec/mongoid/extensions/boolean_spec.rb +68 -82
- data/spec/mongoid/extensions/date_class_mongoize_spec.rb +7 -3
- data/spec/mongoid/extensions/date_spec.rb +71 -1
- data/spec/mongoid/extensions/date_time_spec.rb +15 -9
- data/spec/mongoid/extensions/float_spec.rb +48 -76
- data/spec/mongoid/extensions/hash_spec.rb +30 -0
- data/spec/mongoid/extensions/integer_spec.rb +45 -66
- data/spec/mongoid/extensions/range_spec.rb +255 -54
- data/spec/mongoid/extensions/regexp_spec.rb +58 -33
- data/spec/mongoid/extensions/set_spec.rb +106 -0
- data/spec/mongoid/extensions/string_spec.rb +53 -25
- data/spec/mongoid/extensions/symbol_spec.rb +18 -25
- data/spec/mongoid/extensions/time_spec.rb +634 -66
- data/spec/mongoid/extensions/time_with_zone_spec.rb +17 -31
- data/spec/mongoid/factory_spec.rb +61 -1
- data/spec/mongoid/fields_spec.rb +321 -50
- data/spec/mongoid/findable_spec.rb +64 -29
- data/spec/mongoid/indexable/specification_spec.rb +2 -2
- data/spec/mongoid/indexable_spec.rb +16 -19
- data/spec/mongoid/interceptable_spec.rb +584 -5
- data/spec/mongoid/interceptable_spec_models.rb +235 -4
- data/spec/mongoid/matcher/extract_attribute_spec.rb +1 -5
- data/spec/mongoid/mongoizable_spec.rb +285 -0
- data/spec/mongoid/persistable/creatable_spec.rb +2 -2
- data/spec/mongoid/persistable/deletable_spec.rb +2 -2
- data/spec/mongoid/persistable/destroyable_spec.rb +2 -2
- data/spec/mongoid/persistable/upsertable_spec.rb +14 -0
- data/spec/mongoid/persistence_context_spec.rb +24 -0
- data/spec/mongoid/query_cache_middleware_spec.rb +0 -18
- data/spec/mongoid/query_cache_spec.rb +1 -156
- data/spec/mongoid/reloadable_spec.rb +35 -2
- data/spec/mongoid/scopable_spec.rb +36 -34
- data/spec/mongoid/serializable_spec.rb +14 -7
- data/spec/mongoid/shardable_models.rb +0 -14
- data/spec/mongoid/shardable_spec.rb +61 -153
- data/spec/mongoid/stateful_spec.rb +28 -0
- data/spec/mongoid/timestamps_spec.rb +390 -0
- data/spec/mongoid/timestamps_spec_models.rb +67 -0
- data/spec/mongoid/touchable_spec.rb +116 -0
- data/spec/mongoid/touchable_spec_models.rb +12 -8
- data/spec/mongoid/traversable_spec.rb +4 -11
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +60 -31
- data/spec/mongoid/warnings_spec.rb +35 -0
- data/spec/mongoid_spec.rb +1 -7
- data/spec/rails/controller_extension/controller_runtime_spec.rb +2 -2
- data/spec/rails/mongoid_spec.rb +4 -16
- data/spec/shared/lib/mrss/docker_runner.rb +1 -8
- data/spec/shared/lib/mrss/event_subscriber.rb +5 -15
- data/spec/shared/lib/mrss/lite_constraints.rb +2 -10
- data/spec/shared/lib/mrss/server_version_registry.rb +24 -17
- data/spec/shared/lib/mrss/spec_organizer.rb +3 -32
- data/spec/shared/lib/mrss/utils.rb +6 -28
- data/spec/shared/share/Dockerfile.erb +107 -33
- data/spec/shared/shlib/distro.sh +0 -10
- data/spec/shared/shlib/server.sh +33 -64
- data/spec/shared/shlib/set_env.sh +71 -12
- data/spec/support/constraints.rb +24 -0
- data/spec/support/expectations.rb +17 -20
- data/spec/support/macros.rb +30 -0
- data/spec/support/models/augmentation.rb +12 -0
- data/spec/support/models/band.rb +3 -0
- data/spec/support/models/catalog.rb +24 -0
- data/spec/support/models/circus.rb +3 -0
- data/spec/support/models/fanatic.rb +8 -0
- data/spec/support/models/implant.rb +9 -0
- data/spec/support/models/label.rb +2 -0
- data/spec/support/models/passport.rb +9 -0
- data/spec/support/models/person.rb +1 -0
- data/spec/support/models/player.rb +2 -0
- data/spec/support/models/powerup.rb +12 -0
- data/spec/support/models/registry.rb +1 -0
- data/spec/support/models/school.rb +14 -0
- data/spec/support/models/shield.rb +18 -0
- data/spec/support/models/student.rb +14 -0
- data/spec/support/models/weapon.rb +12 -0
- data.tar.gz.sig +0 -0
- metadata +695 -641
- metadata.gz.sig +0 -0
- data/lib/mongoid/errors/eager_load.rb +0 -23
- data/lib/mongoid/errors/invalid_value.rb +0 -17
- data/spec/mongoid/errors/eager_load_spec.rb +0 -31
- data/spec/shared/CANDIDATE.md +0 -28
- data/spec/shared/lib/mrss/release/candidate.rb +0 -281
- data/spec/shared/lib/mrss/release/product_data.rb +0 -144
- data/spec/shared/lib/tasks/candidate.rake +0 -64
|
@@ -4,7 +4,6 @@ require "spec_helper"
|
|
|
4
4
|
require 'mongoid/association/referenced/has_many_models'
|
|
5
5
|
|
|
6
6
|
describe Mongoid::QueryCache do
|
|
7
|
-
require_mri
|
|
8
7
|
|
|
9
8
|
around do |spec|
|
|
10
9
|
Mongoid::QueryCache.clear_cache
|
|
@@ -22,7 +21,7 @@ describe Mongoid::QueryCache do
|
|
|
22
21
|
end
|
|
23
22
|
|
|
24
23
|
after do
|
|
25
|
-
|
|
24
|
+
Mrss::SessionRegistry.instance.verify_sessions_ended!
|
|
26
25
|
end
|
|
27
26
|
|
|
28
27
|
let(:reset_legacy_qc_warning) do
|
|
@@ -35,66 +34,6 @@ describe Mongoid::QueryCache do
|
|
|
35
34
|
|
|
36
35
|
describe '#cache' do
|
|
37
36
|
context 'with driver query cache' do
|
|
38
|
-
min_driver_version '2.14'
|
|
39
|
-
|
|
40
|
-
it 'does not log a deprecation warning' do
|
|
41
|
-
reset_legacy_qc_warning
|
|
42
|
-
|
|
43
|
-
expect_any_instance_of(Logger).to_not receive(:warn).with(
|
|
44
|
-
described_class::LEGACY_WARNING
|
|
45
|
-
)
|
|
46
|
-
described_class.cache { }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context 'when query cache is not enabled' do
|
|
50
|
-
before do
|
|
51
|
-
Mongoid::QueryCache.enabled = false
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
it 'turns on the query cache within the block' do
|
|
55
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
|
56
|
-
|
|
57
|
-
Mongoid::QueryCache.cache do
|
|
58
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
context 'when query cache is enabled' do
|
|
66
|
-
before do
|
|
67
|
-
Mongoid::QueryCache.enabled = true
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
it 'keeps the query cache enabled within the block' do
|
|
71
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
|
72
|
-
|
|
73
|
-
Mongoid::QueryCache.cache do
|
|
74
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
|
75
|
-
end
|
|
76
|
-
|
|
77
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
|
78
|
-
end
|
|
79
|
-
end
|
|
80
|
-
|
|
81
|
-
context 'nested inside #uncached' do
|
|
82
|
-
it 'turns on the query cache in the block' do
|
|
83
|
-
Mongoid::QueryCache.uncached do
|
|
84
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
|
85
|
-
|
|
86
|
-
Mongoid::QueryCache.cache do
|
|
87
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
|
91
|
-
end
|
|
92
|
-
end
|
|
93
|
-
end
|
|
94
|
-
end
|
|
95
|
-
|
|
96
|
-
context 'with mongoid query cache' do
|
|
97
|
-
max_driver_version '2.13'
|
|
98
37
|
|
|
99
38
|
context 'when query cache is not enabled' do
|
|
100
39
|
before do
|
|
@@ -146,64 +85,6 @@ describe Mongoid::QueryCache do
|
|
|
146
85
|
|
|
147
86
|
describe '#uncached' do
|
|
148
87
|
context 'with driver query cache' do
|
|
149
|
-
min_driver_version '2.14'
|
|
150
|
-
|
|
151
|
-
context 'when query cache is not enabled' do
|
|
152
|
-
before do
|
|
153
|
-
Mongoid::QueryCache.enabled = false
|
|
154
|
-
end
|
|
155
|
-
|
|
156
|
-
it 'keeps the query cache turned off within the block' do
|
|
157
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
|
158
|
-
|
|
159
|
-
Mongoid::QueryCache.uncached do
|
|
160
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
|
161
|
-
end
|
|
162
|
-
|
|
163
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
|
164
|
-
end
|
|
165
|
-
end
|
|
166
|
-
|
|
167
|
-
context 'when query cache is enabled' do
|
|
168
|
-
before do
|
|
169
|
-
Mongoid::QueryCache.enabled = true
|
|
170
|
-
end
|
|
171
|
-
|
|
172
|
-
it 'turns off the query cache within the block' do
|
|
173
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
|
174
|
-
|
|
175
|
-
Mongoid::QueryCache.uncached do
|
|
176
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
|
177
|
-
end
|
|
178
|
-
|
|
179
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
|
180
|
-
end
|
|
181
|
-
end
|
|
182
|
-
|
|
183
|
-
context 'nested inside #cache' do
|
|
184
|
-
it 'turns on the query cache in the block' do
|
|
185
|
-
Mongoid::QueryCache.cache do
|
|
186
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
|
187
|
-
|
|
188
|
-
Mongoid::QueryCache.uncached do
|
|
189
|
-
expect(Mongoid::QueryCache.enabled?).to be false
|
|
190
|
-
end
|
|
191
|
-
|
|
192
|
-
expect(Mongoid::QueryCache.enabled?).to be true
|
|
193
|
-
end
|
|
194
|
-
end
|
|
195
|
-
end
|
|
196
|
-
end
|
|
197
|
-
|
|
198
|
-
context 'with mongoid query cache' do
|
|
199
|
-
max_driver_version '2.13'
|
|
200
|
-
|
|
201
|
-
it 'logs a deprecation warning' do
|
|
202
|
-
reset_legacy_qc_warning
|
|
203
|
-
|
|
204
|
-
expect_any_instance_of(Logger).to receive(:warn).with(described_class::LEGACY_WARNING)
|
|
205
|
-
described_class.cache { }
|
|
206
|
-
end
|
|
207
88
|
|
|
208
89
|
context 'when query cache is not enabled' do
|
|
209
90
|
before do
|
|
@@ -329,7 +210,6 @@ describe Mongoid::QueryCache do
|
|
|
329
210
|
end
|
|
330
211
|
|
|
331
212
|
context 'when driver query cache exists' do
|
|
332
|
-
min_driver_version '2.14'
|
|
333
213
|
|
|
334
214
|
before do
|
|
335
215
|
Band.all.to_a
|
|
@@ -425,14 +305,6 @@ describe Mongoid::QueryCache do
|
|
|
425
305
|
end
|
|
426
306
|
end
|
|
427
307
|
|
|
428
|
-
context 'when drivers query cache does not exist' do
|
|
429
|
-
max_driver_version '2.13'
|
|
430
|
-
|
|
431
|
-
it 'does not recognize the driver query cache' do
|
|
432
|
-
expect(defined?(Mongo::QueryCache)).to be_nil
|
|
433
|
-
end
|
|
434
|
-
end
|
|
435
|
-
|
|
436
308
|
context "when querying for a single document" do
|
|
437
309
|
|
|
438
310
|
[ :first, :one, :last ].each do |method|
|
|
@@ -663,12 +535,8 @@ describe Mongoid::QueryCache do
|
|
|
663
535
|
end
|
|
664
536
|
|
|
665
537
|
context "when the next query has a limit" do
|
|
666
|
-
# Server versions older than 3.2 also perform a killCursors operation,
|
|
667
|
-
# which causes this test to fail.
|
|
668
|
-
min_server_version '3.2'
|
|
669
538
|
|
|
670
539
|
context 'with driver query cache' do
|
|
671
|
-
min_driver_version '2.14'
|
|
672
540
|
|
|
673
541
|
# The driver query cache re-uses results with a larger limit
|
|
674
542
|
it 'does not query again' do
|
|
@@ -679,18 +547,6 @@ describe Mongoid::QueryCache do
|
|
|
679
547
|
end
|
|
680
548
|
end
|
|
681
549
|
end
|
|
682
|
-
|
|
683
|
-
context 'with mongoid query cache' do
|
|
684
|
-
max_driver_version '2.13'
|
|
685
|
-
|
|
686
|
-
it 'queries again' do
|
|
687
|
-
expect_query(1) do
|
|
688
|
-
result = game.ratings.where(:value.gt => 5).limit(2).asc(:id).to_a
|
|
689
|
-
expect(result.length).to eq(2)
|
|
690
|
-
expect(result.map { |r| r['value'] }).to eq([6, 7])
|
|
691
|
-
end
|
|
692
|
-
end
|
|
693
|
-
end
|
|
694
550
|
end
|
|
695
551
|
|
|
696
552
|
context "when the new query does not have a limit" do
|
|
@@ -971,7 +827,6 @@ describe Mongoid::QueryCache do
|
|
|
971
827
|
end
|
|
972
828
|
|
|
973
829
|
context 'with driver query cache' do
|
|
974
|
-
min_driver_version '2.14'
|
|
975
830
|
|
|
976
831
|
# The driver query cache caches multi-batch cursors
|
|
977
832
|
it 'does cache the result' do
|
|
@@ -980,16 +835,6 @@ describe Mongoid::QueryCache do
|
|
|
980
835
|
end
|
|
981
836
|
end
|
|
982
837
|
end
|
|
983
|
-
|
|
984
|
-
context 'with mongoid query cache' do
|
|
985
|
-
max_driver_version '2.13'
|
|
986
|
-
|
|
987
|
-
it 'does not cache the result' do
|
|
988
|
-
expect_query(1) do
|
|
989
|
-
expect(Band.all.map(&:id).size).to eq(10)
|
|
990
|
-
end
|
|
991
|
-
end
|
|
992
|
-
end
|
|
993
838
|
end
|
|
994
839
|
|
|
995
840
|
context 'when storing in system collection' do
|
|
@@ -103,7 +103,7 @@ describe Mongoid::Reloadable do
|
|
|
103
103
|
end
|
|
104
104
|
|
|
105
105
|
it "resets attributes_before_type_cast" do
|
|
106
|
-
expect(person.attributes_before_type_cast).to
|
|
106
|
+
expect(person.attributes_before_type_cast).to eq(person.attributes)
|
|
107
107
|
end
|
|
108
108
|
end
|
|
109
109
|
|
|
@@ -114,7 +114,7 @@ describe Mongoid::Reloadable do
|
|
|
114
114
|
it "raises an error" do
|
|
115
115
|
expect {
|
|
116
116
|
Person.new.reload
|
|
117
|
-
}.to raise_error(Mongoid::Errors::DocumentNotFound)
|
|
117
|
+
}.to raise_error(Mongoid::Errors::DocumentNotFound, /Document\(s\) not found for class Person with id\(s\)/)
|
|
118
118
|
end
|
|
119
119
|
end
|
|
120
120
|
|
|
@@ -628,5 +628,38 @@ describe Mongoid::Reloadable do
|
|
|
628
628
|
church.acolytes.first.name.should == 'Borg'
|
|
629
629
|
end
|
|
630
630
|
end
|
|
631
|
+
|
|
632
|
+
context 'when document has previous changes' do
|
|
633
|
+
context 'when document was updated' do
|
|
634
|
+
let(:person) do
|
|
635
|
+
Person.create!(title: 'Sir')
|
|
636
|
+
end
|
|
637
|
+
|
|
638
|
+
before do
|
|
639
|
+
person.title = 'Madam'
|
|
640
|
+
person.save!
|
|
641
|
+
person.reload
|
|
642
|
+
end
|
|
643
|
+
|
|
644
|
+
it "resets previous changes" do
|
|
645
|
+
expect(person.title_previously_was).to be_nil
|
|
646
|
+
expect(person).not_to be_previously_persisted
|
|
647
|
+
end
|
|
648
|
+
end
|
|
649
|
+
|
|
650
|
+
context 'when document was created' do
|
|
651
|
+
let(:person) do
|
|
652
|
+
Person.create!(title: 'Sir')
|
|
653
|
+
end
|
|
654
|
+
|
|
655
|
+
before do
|
|
656
|
+
person.reload
|
|
657
|
+
end
|
|
658
|
+
|
|
659
|
+
it "resets previous changes" do
|
|
660
|
+
expect(person).not_to be_previously_new_record
|
|
661
|
+
end
|
|
662
|
+
end
|
|
663
|
+
end
|
|
631
664
|
end
|
|
632
665
|
end
|
|
@@ -481,45 +481,27 @@ describe Mongoid::Scopable do
|
|
|
481
481
|
|
|
482
482
|
context "when a block is provided" do
|
|
483
483
|
|
|
484
|
-
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
})
|
|
489
|
-
end
|
|
490
|
-
|
|
491
|
-
let(:scope) do
|
|
492
|
-
Band.named_by("Emily", deleted: true)
|
|
493
|
-
end
|
|
494
|
-
|
|
495
|
-
it "sets the conditions from keyword arguments" do
|
|
496
|
-
scope.selector.should == {'name' => 'Emily', 'deleted' => true}
|
|
497
|
-
end
|
|
498
|
-
end
|
|
499
|
-
|
|
500
|
-
context "when without arguments" do
|
|
501
|
-
before do
|
|
502
|
-
Band.scope(:active, ->{ Band.where(active: true) }) do
|
|
503
|
-
def add_origin
|
|
504
|
-
tap { |c| c.selector[:origin] = "Deutschland" }
|
|
505
|
-
end
|
|
484
|
+
before do
|
|
485
|
+
Band.scope(:active, ->{ Band.where(active: true) }) do
|
|
486
|
+
def add_origin
|
|
487
|
+
tap { |c| c.selector[:origin] = "Deutschland" }
|
|
506
488
|
end
|
|
507
489
|
end
|
|
490
|
+
end
|
|
508
491
|
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
end
|
|
513
|
-
Band._declared_scopes.clear
|
|
492
|
+
after do
|
|
493
|
+
class << Band
|
|
494
|
+
undef_method :active
|
|
514
495
|
end
|
|
496
|
+
Band._declared_scopes.clear
|
|
497
|
+
end
|
|
515
498
|
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
499
|
+
let(:scope) do
|
|
500
|
+
Band.active.add_origin
|
|
501
|
+
end
|
|
519
502
|
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
end
|
|
503
|
+
it "adds the extension to the scope" do
|
|
504
|
+
expect(scope.selector).to eq({ "active" => true, "origin" => "Deutschland" })
|
|
523
505
|
end
|
|
524
506
|
end
|
|
525
507
|
|
|
@@ -801,9 +783,11 @@ describe Mongoid::Scopable do
|
|
|
801
783
|
"$or" => [
|
|
802
784
|
{ "ccc" => nil },
|
|
803
785
|
{ "ccc" => { "$gt" => 1.0 }},
|
|
786
|
+
],
|
|
787
|
+
'$and' => ['$or' => [
|
|
804
788
|
{ "aaa" => { "$gt" => 0.0 }},
|
|
805
789
|
{ "bbb" => { "$gt" => 0.0 }}
|
|
806
|
-
]
|
|
790
|
+
]],
|
|
807
791
|
})
|
|
808
792
|
end
|
|
809
793
|
end
|
|
@@ -1188,6 +1172,24 @@ describe Mongoid::Scopable do
|
|
|
1188
1172
|
end
|
|
1189
1173
|
end
|
|
1190
1174
|
end
|
|
1175
|
+
|
|
1176
|
+
context 'when nesting unsoped under with_scope' do
|
|
1177
|
+
let(:c1) { Band.where(active: true) }
|
|
1178
|
+
|
|
1179
|
+
it 'restores previous scope' do
|
|
1180
|
+
pending 'MONGOID-5214'
|
|
1181
|
+
|
|
1182
|
+
Band.with_scope(c1) do |crit|
|
|
1183
|
+
Band.unscoped do |crit2|
|
|
1184
|
+
Mongoid::Threaded.current_scope(Band).should be nil
|
|
1185
|
+
end
|
|
1186
|
+
|
|
1187
|
+
Mongoid::Threaded.current_scope(Band).selector.should == {
|
|
1188
|
+
'active' => true,
|
|
1189
|
+
}
|
|
1190
|
+
end
|
|
1191
|
+
end
|
|
1192
|
+
end
|
|
1191
1193
|
end
|
|
1192
1194
|
|
|
1193
1195
|
describe ".without_default_scope" do
|
|
@@ -528,11 +528,13 @@ describe Mongoid::Serializable do
|
|
|
528
528
|
end
|
|
529
529
|
|
|
530
530
|
it "includes the first relation" do
|
|
531
|
-
expect(relation_hash[0]).to include
|
|
531
|
+
expect(relation_hash[0]).to include
|
|
532
|
+
{ "_id" => "kudamm", "street" => "Kudamm" }
|
|
532
533
|
end
|
|
533
534
|
|
|
534
535
|
it "includes the second relation" do
|
|
535
|
-
expect(relation_hash[1]).to include
|
|
536
|
+
expect(relation_hash[1]).to include
|
|
537
|
+
{ "_id" => "tauentzienstr", "street" => "Tauentzienstr" }
|
|
536
538
|
end
|
|
537
539
|
end
|
|
538
540
|
|
|
@@ -543,11 +545,13 @@ describe Mongoid::Serializable do
|
|
|
543
545
|
end
|
|
544
546
|
|
|
545
547
|
it "includes the first relation" do
|
|
546
|
-
expect(relation_hash[0]).to include
|
|
548
|
+
expect(relation_hash[0]).to include
|
|
549
|
+
{ "_id" => "kudamm", "street" => "Kudamm" }
|
|
547
550
|
end
|
|
548
551
|
|
|
549
552
|
it "includes the second relation" do
|
|
550
|
-
expect(relation_hash[1]).to include
|
|
553
|
+
expect(relation_hash[1]).to include
|
|
554
|
+
{ "_id" => "tauentzienstr", "street" => "Tauentzienstr" }
|
|
551
555
|
end
|
|
552
556
|
end
|
|
553
557
|
|
|
@@ -666,7 +670,8 @@ describe Mongoid::Serializable do
|
|
|
666
670
|
end
|
|
667
671
|
|
|
668
672
|
it "includes the specified relation" do
|
|
669
|
-
expect(relation_hash).to include
|
|
673
|
+
expect(relation_hash).to include
|
|
674
|
+
{ "_id" => "leo-marvin", "first_name" => "Leo", "last_name" => "Marvin" }
|
|
670
675
|
end
|
|
671
676
|
end
|
|
672
677
|
|
|
@@ -677,7 +682,8 @@ describe Mongoid::Serializable do
|
|
|
677
682
|
end
|
|
678
683
|
|
|
679
684
|
it "includes the specified relation" do
|
|
680
|
-
expect(relation_hash).to include
|
|
685
|
+
expect(relation_hash).to include
|
|
686
|
+
{ "_id" => "leo-marvin", "first_name" => "Leo", "last_name" => "Marvin" }
|
|
681
687
|
end
|
|
682
688
|
end
|
|
683
689
|
|
|
@@ -688,7 +694,8 @@ describe Mongoid::Serializable do
|
|
|
688
694
|
end
|
|
689
695
|
|
|
690
696
|
it "includes the specified relation sans exceptions" do
|
|
691
|
-
expect(relation_hash).to include
|
|
697
|
+
expect(relation_hash).to include
|
|
698
|
+
{ "first_name" => "Leo", "last_name" => "Marvin" }
|
|
692
699
|
end
|
|
693
700
|
end
|
|
694
701
|
end
|
|
@@ -59,17 +59,3 @@ end
|
|
|
59
59
|
class SmNotSharded
|
|
60
60
|
include Mongoid::Document
|
|
61
61
|
end
|
|
62
|
-
|
|
63
|
-
class SmReviewAuthor
|
|
64
|
-
include Mongoid::Document
|
|
65
|
-
embedded_in :review, class_name: "SmReview", touch: false
|
|
66
|
-
field :name, type: String
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
class SmReview
|
|
70
|
-
include Mongoid::Document
|
|
71
|
-
|
|
72
|
-
embeds_one :author, class_name: "SmReviewAuthor"
|
|
73
|
-
|
|
74
|
-
shard_key "author.name" => 1
|
|
75
|
-
end
|