mongoid 5.4.1 → 6.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/lib/config/locales/en.yml +23 -16
- data/lib/mongoid.rb +4 -9
- data/lib/mongoid/atomic.rb +1 -1
- data/lib/mongoid/atomic/modifiers.rb +8 -12
- data/lib/mongoid/attributes.rb +9 -11
- data/lib/mongoid/attributes/dynamic.rb +5 -6
- data/lib/mongoid/attributes/nested.rb +1 -1
- data/lib/mongoid/attributes/processing.rb +4 -0
- data/lib/mongoid/attributes/readonly.rb +22 -0
- data/lib/mongoid/cacheable.rb +36 -0
- data/lib/mongoid/changeable.rb +37 -1
- data/lib/mongoid/clients.rb +0 -63
- data/lib/mongoid/clients/factory.rb +0 -2
- data/lib/mongoid/clients/options.rb +54 -249
- data/lib/mongoid/clients/storage_options.rb +1 -69
- data/lib/mongoid/composable.rb +26 -2
- data/lib/mongoid/config.rb +1 -1
- data/lib/mongoid/config/options.rb +1 -1
- data/lib/mongoid/contextual/aggregable/mongo.rb +1 -0
- data/lib/mongoid/contextual/atomic.rb +6 -9
- data/lib/mongoid/contextual/geo_near.rb +2 -3
- data/lib/mongoid/contextual/map_reduce.rb +97 -24
- data/lib/mongoid/contextual/memory.rb +7 -4
- data/lib/mongoid/contextual/mongo.rb +63 -54
- data/lib/mongoid/contextual/none.rb +2 -2
- data/lib/mongoid/copyable.rb +19 -19
- data/lib/mongoid/criteria.rb +5 -4
- data/lib/mongoid/criteria/findable.rb +2 -3
- data/lib/mongoid/criteria/includable.rb +63 -16
- data/lib/mongoid/criteria/marshalable.rb +2 -2
- data/lib/mongoid/criteria/modifiable.rb +17 -1
- data/lib/mongoid/criteria/options.rb +25 -0
- data/lib/mongoid/criteria/queryable.rb +86 -0
- data/lib/mongoid/criteria/queryable/aggregable.rb +120 -0
- data/lib/mongoid/criteria/queryable/extensions.rb +28 -0
- data/lib/mongoid/criteria/queryable/extensions/array.rb +185 -0
- data/lib/mongoid/criteria/queryable/extensions/big_decimal.rb +37 -0
- data/lib/mongoid/criteria/queryable/extensions/boolean.rb +34 -0
- data/lib/mongoid/criteria/queryable/extensions/date.rb +63 -0
- data/lib/mongoid/criteria/queryable/extensions/date_time.rb +53 -0
- data/lib/mongoid/criteria/queryable/extensions/hash.rb +200 -0
- data/lib/mongoid/criteria/queryable/extensions/nil_class.rb +86 -0
- data/lib/mongoid/criteria/queryable/extensions/numeric.rb +90 -0
- data/lib/mongoid/criteria/queryable/extensions/object.rb +206 -0
- data/lib/mongoid/criteria/queryable/extensions/range.rb +70 -0
- data/lib/mongoid/criteria/queryable/extensions/regexp.rb +45 -0
- data/lib/mongoid/criteria/queryable/extensions/set.rb +34 -0
- data/lib/mongoid/criteria/queryable/extensions/string.rb +137 -0
- data/lib/mongoid/criteria/queryable/extensions/symbol.rb +79 -0
- data/lib/mongoid/criteria/queryable/extensions/time.rb +60 -0
- data/lib/mongoid/criteria/queryable/extensions/time_with_zone.rb +54 -0
- data/lib/mongoid/criteria/queryable/forwardable.rb +65 -0
- data/lib/mongoid/criteria/queryable/key.rb +103 -0
- data/lib/mongoid/criteria/queryable/macroable.rb +27 -0
- data/lib/mongoid/criteria/queryable/mergeable.rb +271 -0
- data/lib/mongoid/criteria/queryable/optional.rb +411 -0
- data/lib/mongoid/criteria/queryable/options.rb +136 -0
- data/lib/mongoid/criteria/queryable/pipeline.rb +111 -0
- data/lib/mongoid/criteria/queryable/selectable.rb +662 -0
- data/lib/mongoid/criteria/queryable/selector.rb +196 -0
- data/lib/mongoid/criteria/queryable/smash.rb +103 -0
- data/lib/mongoid/document.rb +9 -23
- data/lib/mongoid/errors.rb +2 -1
- data/lib/mongoid/errors/ambiguous_relationship.rb +1 -1
- data/lib/mongoid/errors/delete_restriction.rb +2 -2
- data/lib/mongoid/errors/invalid_field.rb +2 -2
- data/lib/mongoid/errors/invalid_persistence_option.rb +29 -0
- data/lib/mongoid/errors/invalid_relation.rb +66 -0
- data/lib/mongoid/errors/inverse_not_found.rb +1 -1
- data/lib/mongoid/errors/mongoid_error.rb +1 -1
- data/lib/mongoid/evolvable.rb +1 -1
- data/lib/mongoid/extensions.rb +0 -5
- data/lib/mongoid/extensions/big_decimal.rb +17 -8
- data/lib/mongoid/extensions/date.rb +4 -1
- data/lib/mongoid/extensions/hash.rb +2 -3
- data/lib/mongoid/extensions/object.rb +2 -2
- data/lib/mongoid/extensions/string.rb +4 -3
- data/lib/mongoid/extensions/time.rb +5 -2
- data/lib/mongoid/factory.rb +1 -0
- data/lib/mongoid/fields/foreign_key.rb +2 -2
- data/lib/mongoid/fields/localized.rb +3 -8
- data/lib/mongoid/fields/validators/macro.rb +18 -0
- data/lib/mongoid/findable.rb +3 -3
- data/lib/mongoid/indexable.rb +17 -16
- data/lib/mongoid/indexable/specification.rb +1 -1
- data/lib/mongoid/indexable/validators/options.rb +1 -2
- data/lib/mongoid/interceptable.rb +6 -17
- data/lib/mongoid/loggable.rb +1 -1
- data/lib/mongoid/matchable.rb +3 -10
- data/lib/mongoid/matchable/gt.rb +2 -0
- data/lib/mongoid/matchable/gte.rb +2 -0
- data/lib/mongoid/matchable/lt.rb +2 -0
- data/lib/mongoid/matchable/lte.rb +2 -0
- data/lib/mongoid/persistable.rb +6 -5
- data/lib/mongoid/persistable/creatable.rb +2 -0
- data/lib/mongoid/persistable/deletable.rb +7 -3
- data/lib/mongoid/persistable/settable.rb +3 -16
- data/lib/mongoid/persistable/updatable.rb +10 -12
- data/lib/mongoid/persistence_context.rb +216 -0
- data/lib/mongoid/query_cache.rb +5 -30
- data/lib/mongoid/relations/accessors.rb +6 -2
- data/lib/mongoid/relations/auto_save.rb +12 -4
- data/lib/mongoid/relations/bindings/embedded/in.rb +4 -0
- data/lib/mongoid/relations/bindings/embedded/many.rb +8 -1
- data/lib/mongoid/relations/bindings/embedded/one.rb +10 -0
- data/lib/mongoid/relations/bindings/referenced/many.rb +4 -0
- data/lib/mongoid/relations/builders.rb +2 -2
- data/lib/mongoid/relations/builders/embedded/one.rb +1 -1
- data/lib/mongoid/relations/builders/nested_attributes/many.rb +1 -1
- data/lib/mongoid/relations/conversions.rb +1 -1
- data/lib/mongoid/relations/counter_cache.rb +28 -18
- data/lib/mongoid/relations/eager.rb +19 -7
- data/lib/mongoid/relations/eager/base.rb +5 -5
- data/lib/mongoid/relations/embedded/batchable.rb +9 -33
- data/lib/mongoid/relations/embedded/in.rb +16 -2
- data/lib/mongoid/relations/embedded/many.rb +23 -8
- data/lib/mongoid/relations/embedded/one.rb +17 -2
- data/lib/mongoid/relations/macros.rb +9 -2
- data/lib/mongoid/relations/metadata.rb +3 -3
- data/lib/mongoid/relations/nested_builder.rb +1 -1
- data/lib/mongoid/relations/options.rb +2 -2
- data/lib/mongoid/relations/proxy.rb +2 -33
- data/lib/mongoid/relations/referenced/in.rb +23 -11
- data/lib/mongoid/relations/referenced/many.rb +24 -16
- data/lib/mongoid/relations/referenced/many_to_many.rb +20 -13
- data/lib/mongoid/relations/referenced/one.rb +17 -1
- data/lib/mongoid/relations/reflections.rb +3 -5
- data/lib/mongoid/relations/touchable.rb +1 -1
- data/lib/mongoid/reloadable.rb +1 -1
- data/lib/mongoid/scopable.rb +3 -3
- data/lib/mongoid/serializable.rb +2 -3
- data/lib/mongoid/tasks/database.rb +1 -2
- data/lib/mongoid/threaded.rb +4 -4
- data/lib/mongoid/traversable.rb +1 -1
- data/lib/mongoid/validatable.rb +1 -1
- data/lib/mongoid/validatable/macros.rb +2 -4
- data/lib/mongoid/validatable/uniqueness.rb +1 -2
- data/lib/mongoid/version.rb +1 -1
- data/lib/rails/generators/mongoid/config/templates/mongoid.yml +4 -7
- data/spec/app/models/album.rb +5 -1
- data/spec/app/models/artist.rb +21 -0
- data/spec/app/models/band.rb +0 -1
- data/spec/app/models/church.rb +0 -2
- data/spec/app/models/ordered_post.rb +5 -0
- data/spec/app/models/oscar.rb +1 -2
- data/spec/app/models/person.rb +3 -1
- data/spec/app/models/post.rb +0 -1
- data/spec/app/models/princess.rb +2 -0
- data/spec/app/models/record.rb +1 -0
- data/spec/app/models/thing.rb +1 -1
- data/spec/config/mongoid.yml +1 -5
- 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 -14
- data/spec/mongoid/attributes/readonly_spec.rb +87 -44
- data/spec/mongoid/attributes_spec.rb +63 -0
- data/spec/mongoid/cacheable_spec.rb +112 -0
- data/spec/mongoid/changeable_spec.rb +58 -0
- data/spec/mongoid/clients/factory_spec.rb +3 -11
- data/spec/mongoid/clients/options_spec.rb +378 -96
- data/spec/mongoid/clients_spec.rb +207 -170
- data/spec/mongoid/composable_spec.rb +7 -0
- data/spec/mongoid/config_spec.rb +41 -21
- data/spec/mongoid/contextual/atomic_spec.rb +77 -343
- data/spec/mongoid/contextual/map_reduce_spec.rb +119 -111
- data/spec/mongoid/contextual/memory_spec.rb +56 -316
- data/spec/mongoid/contextual/mongo_spec.rb +104 -378
- data/spec/mongoid/copyable_spec.rb +8 -15
- data/spec/mongoid/criteria/modifiable_spec.rb +239 -7
- data/spec/mongoid/criteria/options_spec.rb +29 -0
- data/spec/mongoid/criteria/queryable/aggregable_spec.rb +370 -0
- data/spec/mongoid/criteria/queryable/extensions/array_spec.rb +523 -0
- data/spec/mongoid/criteria/queryable/extensions/big_decimal_spec.rb +59 -0
- data/spec/mongoid/criteria/queryable/extensions/bignum_spec.rb +58 -0
- data/spec/mongoid/criteria/queryable/extensions/boolean_spec.rb +213 -0
- data/spec/mongoid/criteria/queryable/extensions/date_spec.rb +330 -0
- data/spec/mongoid/criteria/queryable/extensions/date_time_spec.rb +405 -0
- data/spec/mongoid/criteria/queryable/extensions/fixnum_spec.rb +58 -0
- data/spec/mongoid/criteria/queryable/extensions/float_spec.rb +65 -0
- data/spec/mongoid/criteria/queryable/extensions/hash_spec.rb +327 -0
- data/spec/mongoid/criteria/queryable/extensions/integer_spec.rb +65 -0
- data/spec/mongoid/criteria/queryable/extensions/nil_class_spec.rb +77 -0
- data/spec/mongoid/criteria/queryable/extensions/object_spec.rb +108 -0
- data/spec/mongoid/criteria/queryable/extensions/range_spec.rb +309 -0
- data/spec/mongoid/{extensions/origin/regexp_raw_spec.rb → criteria/queryable/extensions/regexp_spec.rb} +21 -20
- data/spec/mongoid/criteria/queryable/extensions/set_spec.rb +39 -0
- data/spec/mongoid/criteria/queryable/extensions/string_spec.rb +302 -0
- data/spec/mongoid/criteria/queryable/extensions/symbol_spec.rb +167 -0
- data/spec/mongoid/criteria/queryable/extensions/time_spec.rb +376 -0
- data/spec/mongoid/criteria/queryable/extensions/time_with_zone_spec.rb +347 -0
- data/spec/mongoid/criteria/queryable/forwardable_spec.rb +87 -0
- data/spec/mongoid/criteria/queryable/key_spec.rb +52 -0
- data/spec/mongoid/criteria/queryable/mergeable_spec.rb +49 -0
- data/spec/mongoid/criteria/queryable/optional_spec.rb +1786 -0
- data/spec/mongoid/criteria/queryable/options_spec.rb +360 -0
- data/spec/mongoid/criteria/queryable/pipeline_spec.rb +200 -0
- data/spec/mongoid/criteria/queryable/queryable_spec.rb +137 -0
- data/spec/mongoid/criteria/queryable/selectable_spec.rb +4159 -0
- data/spec/mongoid/criteria/queryable/selector_spec.rb +778 -0
- data/spec/mongoid/criteria/queryable/smash_spec.rb +30 -0
- data/spec/mongoid/criteria_spec.rb +45 -63
- data/spec/mongoid/document_spec.rb +21 -88
- data/spec/mongoid/errors/invalid_relation_spec.rb +37 -0
- data/spec/mongoid/errors/mongoid_error_spec.rb +6 -3
- data/spec/mongoid/extensions/big_decimal_spec.rb +320 -18
- data/spec/mongoid/extensions/date_spec.rb +2 -6
- data/spec/mongoid/extensions/date_time_spec.rb +2 -6
- data/spec/mongoid/extensions/float_spec.rb +8 -1
- data/spec/mongoid/extensions/integer_spec.rb +8 -1
- data/spec/mongoid/extensions/object_spec.rb +11 -0
- data/spec/mongoid/extensions/string_spec.rb +21 -0
- data/spec/mongoid/extensions/time_spec.rb +4 -8
- data/spec/mongoid/extensions/time_with_zone_spec.rb +2 -6
- data/spec/mongoid/fields/localized_spec.rb +0 -91
- data/spec/mongoid/findable_spec.rb +46 -1
- data/spec/mongoid/indexable_spec.rb +6 -46
- data/spec/mongoid/interceptable_spec.rb +49 -10
- data/spec/mongoid/matchable/gt_spec.rb +11 -0
- data/spec/mongoid/matchable/gte_spec.rb +10 -0
- data/spec/mongoid/matchable/lt_spec.rb +11 -0
- data/spec/mongoid/matchable/lte_spec.rb +11 -0
- data/spec/mongoid/matchable_spec.rb +1 -51
- data/spec/mongoid/persistable/creatable_spec.rb +2 -2
- data/spec/mongoid/persistable/deletable_spec.rb +1 -1
- data/spec/mongoid/persistable/destroyable_spec.rb +6 -2
- data/spec/mongoid/persistable/savable_spec.rb +30 -30
- data/spec/mongoid/persistable/settable_spec.rb +0 -185
- data/spec/mongoid/persistable/updatable_spec.rb +166 -5
- data/spec/mongoid/persistence_context_spec.rb +654 -0
- data/spec/mongoid/positional_spec.rb +10 -10
- data/spec/mongoid/query_cache_spec.rb +89 -65
- data/spec/mongoid/relations/accessors_spec.rb +1 -1
- data/spec/mongoid/relations/auto_save_spec.rb +39 -6
- data/spec/mongoid/relations/builders_spec.rb +37 -10
- data/spec/mongoid/relations/counter_cache_spec.rb +64 -15
- data/spec/mongoid/relations/cyclic_spec.rb +0 -22
- data/spec/mongoid/relations/embedded/many_spec.rb +9 -41
- data/spec/mongoid/relations/embedded/one_spec.rb +2 -1
- data/spec/mongoid/relations/macros_spec.rb +395 -7
- data/spec/mongoid/relations/proxy_spec.rb +3 -1
- data/spec/mongoid/relations/referenced/in_spec.rb +41 -1
- data/spec/mongoid/relations/referenced/many_spec.rb +6 -29
- data/spec/mongoid/relations/referenced/many_to_many_spec.rb +6 -29
- data/spec/mongoid/relations/reflections_spec.rb +9 -9
- data/spec/mongoid/reloadable_spec.rb +51 -0
- data/spec/mongoid/scopable_spec.rb +0 -12
- data/spec/mongoid/serializable_spec.rb +0 -50
- data/spec/mongoid/validatable/presence_spec.rb +1 -1
- data/spec/mongoid/validatable/uniqueness_spec.rb +16 -9
- data/spec/mongoid/validatable_spec.rb +16 -0
- data/spec/spec_helper.rb +10 -10
- metadata +536 -479
- metadata.gz.sig +0 -0
- data/lib/mongoid/clients/thread_options.rb +0 -19
- data/lib/mongoid/errors/in_memory_collation_not_supported.rb +0 -20
- data/lib/mongoid/extensions/decimal128.rb +0 -39
- data/lib/mongoid/extensions/origin/regexp_raw.rb +0 -43
- data/lib/mongoid/matchable/regexp.rb +0 -27
- data/spec/app/models/post_genre.rb +0 -6
- data/spec/mongoid/extensions/decimal128_spec.rb +0 -44
- data/spec/mongoid/matchable/regexp_spec.rb +0 -59
@@ -6,34 +6,38 @@ describe Mongoid::Clients do
|
|
6
6
|
|
7
7
|
shared_examples_for "an overridden collection at the class level" do
|
8
8
|
|
9
|
-
let(:band) do
|
10
|
-
klass.new
|
11
|
-
end
|
12
|
-
|
13
9
|
it "returns the collection for the model" do
|
14
|
-
expect(
|
10
|
+
expect(instance_collection).to be_a(Mongo::Collection)
|
15
11
|
end
|
16
12
|
|
17
13
|
it "sets the correct collection name" do
|
18
|
-
expect(
|
14
|
+
expect(instance_collection.name).to eq("artists")
|
19
15
|
end
|
20
16
|
|
21
17
|
context "when accessing from the class level" do
|
22
18
|
|
23
19
|
it "returns the collection for the model" do
|
24
|
-
expect(
|
20
|
+
expect(class_collection).to be_a(Mongo::Collection)
|
25
21
|
end
|
26
22
|
|
27
23
|
it "sets the correct collection name" do
|
28
|
-
expect(
|
24
|
+
expect(class_collection.name).to eq("artists")
|
29
25
|
end
|
30
26
|
end
|
31
27
|
end
|
32
28
|
|
33
29
|
context "when overriding the persistence options" do
|
34
30
|
|
35
|
-
let(:
|
36
|
-
Band.with(collection: "artists")
|
31
|
+
let(:instance_collection) do
|
32
|
+
Band.with(collection: "artists") do |klass|
|
33
|
+
klass.new.collection
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
let(:class_collection) do
|
38
|
+
Band.with(collection: "artists") do |klass|
|
39
|
+
klass.collection
|
40
|
+
end
|
37
41
|
end
|
38
42
|
|
39
43
|
it_behaves_like "an overridden collection at the class level"
|
@@ -41,10 +45,6 @@ describe Mongoid::Clients do
|
|
41
45
|
|
42
46
|
context "when overriding store_in and persistence options" do
|
43
47
|
|
44
|
-
let(:klass) do
|
45
|
-
Band.with(collection: "artists")
|
46
|
-
end
|
47
|
-
|
48
48
|
before do
|
49
49
|
Band.store_in collection: "foo"
|
50
50
|
end
|
@@ -53,6 +53,18 @@ describe Mongoid::Clients do
|
|
53
53
|
Band.reset_storage_options!
|
54
54
|
end
|
55
55
|
|
56
|
+
let(:instance_collection) do
|
57
|
+
Band.with(collection: "artists") do |klass|
|
58
|
+
klass.new.collection
|
59
|
+
end
|
60
|
+
end
|
61
|
+
|
62
|
+
let(:class_collection) do
|
63
|
+
Band.with(collection: "artists") do |klass|
|
64
|
+
klass.collection
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
56
68
|
it_behaves_like "an overridden collection at the class level"
|
57
69
|
end
|
58
70
|
|
@@ -77,19 +89,23 @@ describe Mongoid::Clients do
|
|
77
89
|
|
78
90
|
context "when overriding with a proc" do
|
79
91
|
|
80
|
-
let(:klass) { Band }
|
81
|
-
|
82
92
|
before do
|
83
93
|
Band.store_in(collection: ->{ "artists" })
|
84
94
|
end
|
85
95
|
|
96
|
+
let(:instance_collection) do
|
97
|
+
Band.new.collection
|
98
|
+
end
|
99
|
+
|
100
|
+
let(:class_collection) do
|
101
|
+
Band.collection
|
102
|
+
end
|
103
|
+
|
86
104
|
it_behaves_like "an overridden collection at the class level"
|
87
105
|
end
|
88
106
|
|
89
107
|
context "when overriding with a string" do
|
90
108
|
|
91
|
-
let(:klass) { Band }
|
92
|
-
|
93
109
|
before do
|
94
110
|
Band.store_in(collection: "artists")
|
95
111
|
end
|
@@ -98,19 +114,33 @@ describe Mongoid::Clients do
|
|
98
114
|
Band.reset_storage_options!
|
99
115
|
end
|
100
116
|
|
117
|
+
let(:instance_collection) do
|
118
|
+
Band.new.collection
|
119
|
+
end
|
120
|
+
|
121
|
+
let(:class_collection) do
|
122
|
+
Band.collection
|
123
|
+
end
|
124
|
+
|
101
125
|
it_behaves_like "an overridden collection at the class level"
|
102
126
|
end
|
103
127
|
|
104
128
|
context "when overriding with a symbol" do
|
105
129
|
|
106
|
-
let(:klass) { Band }
|
107
|
-
|
108
130
|
before do
|
109
|
-
|
131
|
+
Band.store_in(collection: :artists)
|
110
132
|
end
|
111
133
|
|
112
134
|
after do
|
113
|
-
|
135
|
+
Band.reset_storage_options!
|
136
|
+
end
|
137
|
+
|
138
|
+
let(:instance_collection) do
|
139
|
+
Band.new.collection
|
140
|
+
end
|
141
|
+
|
142
|
+
let(:class_collection) do
|
143
|
+
Band.collection
|
114
144
|
end
|
115
145
|
|
116
146
|
it_behaves_like "an overridden collection at the class level"
|
@@ -148,29 +178,33 @@ describe Mongoid::Clients do
|
|
148
178
|
|
149
179
|
shared_examples_for "an overridden collection name at the class level" do
|
150
180
|
|
151
|
-
let(:band) do
|
152
|
-
klass.new
|
153
|
-
end
|
154
|
-
|
155
181
|
context "when accessing from the instance" do
|
156
182
|
|
157
183
|
it "returns the overridden value" do
|
158
|
-
expect(
|
184
|
+
expect(instance_collection_name).to eq(:artists)
|
159
185
|
end
|
160
186
|
end
|
161
187
|
|
162
188
|
context "when accessing from the class level" do
|
163
189
|
|
164
190
|
it "returns the overridden value" do
|
165
|
-
expect(
|
191
|
+
expect(class_collection_name).to eq(:artists)
|
166
192
|
end
|
167
193
|
end
|
168
194
|
end
|
169
195
|
|
170
196
|
context "when overriding the persistence options" do
|
171
197
|
|
172
|
-
let(:
|
173
|
-
Band.with(collection: "artists")
|
198
|
+
let(:instance_collection_name) do
|
199
|
+
Band.with(collection: "artists") do |klass|
|
200
|
+
klass.new.collection_name
|
201
|
+
end
|
202
|
+
end
|
203
|
+
|
204
|
+
let(:class_collection_name) do
|
205
|
+
Band.with(collection: "artists") do |klass|
|
206
|
+
klass.collection_name
|
207
|
+
end
|
174
208
|
end
|
175
209
|
|
176
210
|
it_behaves_like "an overridden collection name at the class level"
|
@@ -178,8 +212,16 @@ describe Mongoid::Clients do
|
|
178
212
|
|
179
213
|
context "when overriding store_in and persistence options" do
|
180
214
|
|
181
|
-
let(:
|
182
|
-
Band.with(collection: "artists")
|
215
|
+
let(:instance_collection_name) do
|
216
|
+
Band.with(collection: "artists") do |klass|
|
217
|
+
klass.new.collection_name
|
218
|
+
end
|
219
|
+
end
|
220
|
+
|
221
|
+
let(:class_collection_name) do
|
222
|
+
Band.with(collection: "artists") do |klass|
|
223
|
+
klass.collection_name
|
224
|
+
end
|
183
225
|
end
|
184
226
|
|
185
227
|
before do
|
@@ -195,7 +237,13 @@ describe Mongoid::Clients do
|
|
195
237
|
|
196
238
|
context "when overriding the default with store_in" do
|
197
239
|
|
198
|
-
let(:
|
240
|
+
let(:instance_collection_name) do
|
241
|
+
Band.new.collection_name
|
242
|
+
end
|
243
|
+
|
244
|
+
let(:class_collection_name) do
|
245
|
+
Band.collection_name
|
246
|
+
end
|
199
247
|
|
200
248
|
after do
|
201
249
|
Band.reset_storage_options!
|
@@ -266,38 +314,47 @@ describe Mongoid::Clients do
|
|
266
314
|
end
|
267
315
|
end
|
268
316
|
|
269
|
-
describe "#database_name"
|
317
|
+
describe "#database_name" do
|
270
318
|
|
271
319
|
shared_examples_for "an overridden database name" do
|
272
320
|
|
273
|
-
let(:band) do
|
274
|
-
klass.new
|
275
|
-
end
|
276
|
-
|
277
321
|
context "when accessing from the instance" do
|
278
322
|
|
279
323
|
it "returns the overridden value" do
|
280
|
-
|
281
|
-
# expect(band.mongo_client.options[:database].to_s).to eq(database_id_alt)
|
324
|
+
expect(instance_database.name.to_s).to eq(database_id_alt)
|
282
325
|
end
|
283
326
|
end
|
284
327
|
|
285
328
|
context "when accessing from the class level" do
|
286
329
|
|
287
330
|
it "returns the overridden value" do
|
288
|
-
expect(
|
331
|
+
expect(class_database.name.to_s).to eq(database_id_alt)
|
289
332
|
end
|
290
333
|
|
291
334
|
it "client returns the overridden value" do
|
292
|
-
expect(
|
335
|
+
expect(class_mongo_client.database.name).to eq(database_id_alt)
|
293
336
|
end
|
294
337
|
end
|
295
338
|
end
|
296
339
|
|
297
340
|
context "when overriding the persistence options" do
|
298
341
|
|
299
|
-
let(:
|
300
|
-
Band.with(database: database_id_alt)
|
342
|
+
let(:instance_database) do
|
343
|
+
Band.with(database: database_id_alt) do |klass|
|
344
|
+
klass.new.mongo_client.database
|
345
|
+
end
|
346
|
+
end
|
347
|
+
|
348
|
+
let(:class_database) do
|
349
|
+
Band.with(database: database_id_alt) do |klass|
|
350
|
+
klass.mongo_client.database
|
351
|
+
end
|
352
|
+
end
|
353
|
+
|
354
|
+
let(:class_mongo_client) do
|
355
|
+
Band.with(database: database_id_alt) do |klass|
|
356
|
+
klass.new.mongo_client
|
357
|
+
end
|
301
358
|
end
|
302
359
|
|
303
360
|
it_behaves_like "an overridden database name"
|
@@ -305,7 +362,17 @@ describe Mongoid::Clients do
|
|
305
362
|
|
306
363
|
context "when overriding with store_in" do
|
307
364
|
|
308
|
-
let(:
|
365
|
+
let(:instance_database) do
|
366
|
+
Band.new.mongo_client.database
|
367
|
+
end
|
368
|
+
|
369
|
+
let(:class_database) do
|
370
|
+
Band.mongo_client.database
|
371
|
+
end
|
372
|
+
|
373
|
+
let(:class_mongo_client) do
|
374
|
+
Band.mongo_client
|
375
|
+
end
|
309
376
|
|
310
377
|
before do
|
311
378
|
Band.store_in database: database_id_alt
|
@@ -320,8 +387,22 @@ describe Mongoid::Clients do
|
|
320
387
|
|
321
388
|
context "when overriding store_in and persistence options" do
|
322
389
|
|
323
|
-
let(:
|
324
|
-
Band.with(database: database_id_alt)
|
390
|
+
let(:instance_database) do
|
391
|
+
Band.with(database: database_id_alt) do |klass|
|
392
|
+
klass.new.mongo_client.database
|
393
|
+
end
|
394
|
+
end
|
395
|
+
|
396
|
+
let(:class_database) do
|
397
|
+
Band.with(database: database_id_alt) do |klass|
|
398
|
+
klass.mongo_client.database
|
399
|
+
end
|
400
|
+
end
|
401
|
+
|
402
|
+
let(:class_mongo_client) do
|
403
|
+
Band.with(database: database_id_alt) do |klass|
|
404
|
+
klass.new.mongo_client
|
405
|
+
end
|
325
406
|
end
|
326
407
|
|
327
408
|
before do
|
@@ -349,8 +430,22 @@ describe Mongoid::Clients do
|
|
349
430
|
|
350
431
|
context "when overriding the persistence options" do
|
351
432
|
|
352
|
-
let(:
|
353
|
-
Band.with(client:
|
433
|
+
let(:instance_database) do
|
434
|
+
Band.with(client: :alternative) do |klass|
|
435
|
+
klass.new.mongo_client.database
|
436
|
+
end
|
437
|
+
end
|
438
|
+
|
439
|
+
let(:class_database) do
|
440
|
+
Band.with(client: :alternative) do |klass|
|
441
|
+
klass.mongo_client.database
|
442
|
+
end
|
443
|
+
end
|
444
|
+
|
445
|
+
let(:class_mongo_client) do
|
446
|
+
Band.with(client: :alternative) do |klass|
|
447
|
+
klass.new.mongo_client
|
448
|
+
end
|
354
449
|
end
|
355
450
|
|
356
451
|
it_behaves_like "an overridden database name"
|
@@ -358,7 +453,17 @@ describe Mongoid::Clients do
|
|
358
453
|
|
359
454
|
context "when overriding with store_in" do
|
360
455
|
|
361
|
-
let(:
|
456
|
+
let(:instance_database) do
|
457
|
+
Band.new.mongo_client.database
|
458
|
+
end
|
459
|
+
|
460
|
+
let(:class_database) do
|
461
|
+
Band.mongo_client.database
|
462
|
+
end
|
463
|
+
|
464
|
+
let(:class_mongo_client) do
|
465
|
+
Band.mongo_client
|
466
|
+
end
|
362
467
|
|
363
468
|
before do
|
364
469
|
Band.store_in(client: client_name)
|
@@ -373,7 +478,7 @@ describe Mongoid::Clients do
|
|
373
478
|
end
|
374
479
|
end
|
375
480
|
|
376
|
-
describe "#mongo_client"
|
481
|
+
describe "#mongo_client" do
|
377
482
|
|
378
483
|
let(:file) do
|
379
484
|
File.join(File.dirname(__FILE__), "..", "config", "mongoid.yml")
|
@@ -408,14 +513,6 @@ describe Mongoid::Clients do
|
|
408
513
|
it "returns the default client" do
|
409
514
|
expect(mongo_client.options[:database].to_s).to eq(database_id)
|
410
515
|
end
|
411
|
-
|
412
|
-
it "sets the platform to Mongoid's platform constant" do
|
413
|
-
expect(mongo_client.options[:platform]).to eq(Mongoid::PLATFORM_DETAILS)
|
414
|
-
end
|
415
|
-
|
416
|
-
it "sets the app_name to the config value" do
|
417
|
-
expect(mongo_client.options[:app_name]).to eq('testing')
|
418
|
-
end
|
419
516
|
end
|
420
517
|
|
421
518
|
context "when no client exists with the key" do
|
@@ -424,10 +521,6 @@ describe Mongoid::Clients do
|
|
424
521
|
Band.store_in(client: :nonexistent)
|
425
522
|
end
|
426
523
|
|
427
|
-
after do
|
428
|
-
Band.reset_storage_options!
|
429
|
-
end
|
430
|
-
|
431
524
|
let(:band) do
|
432
525
|
Band.new
|
433
526
|
end
|
@@ -438,66 +531,9 @@ describe Mongoid::Clients do
|
|
438
531
|
}.to raise_error(Mongoid::Errors::NoClientConfig)
|
439
532
|
end
|
440
533
|
end
|
441
|
-
|
442
|
-
context "when getting a client by name", if: testing_locally? do
|
443
|
-
|
444
|
-
let(:file) do
|
445
|
-
File.join(File.dirname(__FILE__), "..", "config", "mongoid.yml")
|
446
|
-
end
|
447
|
-
|
448
|
-
before do
|
449
|
-
described_class.clear
|
450
|
-
Mongoid.load!(file, :test)
|
451
|
-
Band.store_in(client: :reports)
|
452
|
-
end
|
453
|
-
|
454
|
-
after do
|
455
|
-
mongo_client.close
|
456
|
-
Mongoid::Config.reset
|
457
|
-
Band.reset_storage_options!
|
458
|
-
end
|
459
|
-
|
460
|
-
let!(:band) do
|
461
|
-
Band.store_in(client: :reports)
|
462
|
-
end
|
463
|
-
|
464
|
-
let!(:mongo_client) do
|
465
|
-
Band.new.mongo_client
|
466
|
-
end
|
467
|
-
|
468
|
-
it "uses the reports client" do
|
469
|
-
expect(mongo_client.options[:database].to_s).to eq('reports')
|
470
|
-
end
|
471
|
-
|
472
|
-
it "sets the platform to Mongoid's platform constant" do
|
473
|
-
expect(mongo_client.options[:platform]).to eq(Mongoid::PLATFORM_DETAILS)
|
474
|
-
end
|
475
|
-
|
476
|
-
it "sets the app_name to the config value" do
|
477
|
-
expect(mongo_client.options[:app_name]).to eq('testing')
|
478
|
-
end
|
479
|
-
end
|
480
|
-
|
481
|
-
context 'when the app_name is not set in the config' do
|
482
|
-
|
483
|
-
before do
|
484
|
-
Mongoid::Config.reset
|
485
|
-
Mongoid.configure do |config|
|
486
|
-
config.load_configuration(CONFIG)
|
487
|
-
end
|
488
|
-
end
|
489
|
-
|
490
|
-
let(:mongo_client) do
|
491
|
-
Band.new.mongo_client
|
492
|
-
end
|
493
|
-
|
494
|
-
it 'does not set the Mongoid.app_name option' do
|
495
|
-
expect(mongo_client.options.has_key?(:app_name)).to be(false)
|
496
|
-
end
|
497
|
-
end
|
498
534
|
end
|
499
535
|
|
500
|
-
describe ".mongo_client"
|
536
|
+
describe ".mongo_client" do
|
501
537
|
|
502
538
|
let(:file) do
|
503
539
|
File.join(File.dirname(__FILE__), "..", "config", "mongoid.yml")
|
@@ -526,21 +562,13 @@ describe Mongoid::Clients do
|
|
526
562
|
Mongoid.clients[:default][:database] = database_id
|
527
563
|
end
|
528
564
|
|
529
|
-
let(:mongo_client) do
|
565
|
+
let!(:mongo_client) do
|
530
566
|
Band.mongo_client
|
531
567
|
end
|
532
568
|
|
533
569
|
it "returns the default client" do
|
534
570
|
expect(mongo_client.options[:database].to_s).to eq(database_id)
|
535
571
|
end
|
536
|
-
|
537
|
-
it "sets the platform to Mongoid's platform constant" do
|
538
|
-
expect(mongo_client.options[:platform]).to eq(Mongoid::PLATFORM_DETAILS)
|
539
|
-
end
|
540
|
-
|
541
|
-
it "sets the app_name to the config value" do
|
542
|
-
expect(mongo_client.options[:app_name]).to eq('testing')
|
543
|
-
end
|
544
572
|
end
|
545
573
|
|
546
574
|
context "when no client exists with the key" do
|
@@ -568,7 +596,7 @@ describe Mongoid::Clients do
|
|
568
596
|
end
|
569
597
|
end
|
570
598
|
|
571
|
-
context "when provided a class that
|
599
|
+
context "when provided a class that extends another document" do
|
572
600
|
|
573
601
|
let(:klass) do
|
574
602
|
Class.new(Band)
|
@@ -599,7 +627,9 @@ describe Mongoid::Clients do
|
|
599
627
|
context "when changing write concern options" do
|
600
628
|
|
601
629
|
let(:client_one) do
|
602
|
-
Band.with(write: { w: 2 })
|
630
|
+
Band.with(write: { w: 2 }) do |klass|
|
631
|
+
klass.mongo_client
|
632
|
+
end
|
603
633
|
end
|
604
634
|
|
605
635
|
let(:client_two) do
|
@@ -614,13 +644,17 @@ describe Mongoid::Clients do
|
|
614
644
|
context "when sending operations to a different database" do
|
615
645
|
|
616
646
|
after do
|
617
|
-
Band.with(database: database_id_alt)
|
647
|
+
Band.with(database: database_id_alt) do |klass|
|
648
|
+
klass.delete_all
|
649
|
+
end
|
618
650
|
end
|
619
651
|
|
620
652
|
describe ".create" do
|
621
653
|
|
622
654
|
let!(:band) do
|
623
|
-
Band.with(database: database_id_alt)
|
655
|
+
Band.with(database: database_id_alt) do |klass|
|
656
|
+
klass.create
|
657
|
+
end
|
624
658
|
end
|
625
659
|
|
626
660
|
it "does not persist to the default database" do
|
@@ -630,15 +664,23 @@ describe Mongoid::Clients do
|
|
630
664
|
end
|
631
665
|
|
632
666
|
let(:from_db) do
|
633
|
-
Band.with(database: database_id_alt)
|
667
|
+
Band.with(database: database_id_alt) do |klass|
|
668
|
+
klass.find(band.id)
|
669
|
+
end
|
634
670
|
end
|
635
671
|
|
636
672
|
it "persists to the specified database" do
|
637
673
|
expect(from_db).to eq(band)
|
638
674
|
end
|
639
675
|
|
676
|
+
let(:count) do
|
677
|
+
Band.with(database: database_id_alt) do |klass|
|
678
|
+
klass.count
|
679
|
+
end
|
680
|
+
end
|
681
|
+
|
640
682
|
it "persists the correct number of documents" do
|
641
|
-
expect(
|
683
|
+
expect(count).to eq(1)
|
642
684
|
end
|
643
685
|
end
|
644
686
|
end
|
@@ -648,7 +690,9 @@ describe Mongoid::Clients do
|
|
648
690
|
describe ".create" do
|
649
691
|
|
650
692
|
let!(:band) do
|
651
|
-
Band.with(collection: "artists")
|
693
|
+
Band.with(collection: "artists") do |klass|
|
694
|
+
klass.create
|
695
|
+
end
|
652
696
|
end
|
653
697
|
|
654
698
|
it "does not persist to the default database" do
|
@@ -658,15 +702,23 @@ describe Mongoid::Clients do
|
|
658
702
|
end
|
659
703
|
|
660
704
|
let(:from_db) do
|
661
|
-
Band.with(collection: "artists")
|
705
|
+
Band.with(collection: "artists") do |klass|
|
706
|
+
klass.find(band.id)
|
707
|
+
end
|
662
708
|
end
|
663
709
|
|
664
710
|
it "persists to the specified database" do
|
665
711
|
expect(from_db).to eq(band)
|
666
712
|
end
|
667
713
|
|
714
|
+
let(:count) do
|
715
|
+
Band.with(collection: "artists") do |klass|
|
716
|
+
klass.count
|
717
|
+
end
|
718
|
+
end
|
719
|
+
|
668
720
|
it "persists the correct number of documents" do
|
669
|
-
expect(
|
721
|
+
expect(count).to eq(1)
|
670
722
|
end
|
671
723
|
end
|
672
724
|
end
|
@@ -796,7 +848,7 @@ describe Mongoid::Clients do
|
|
796
848
|
end
|
797
849
|
end
|
798
850
|
|
799
|
-
context "when overriding the default database"
|
851
|
+
context "when overriding the default database" do
|
800
852
|
|
801
853
|
let(:file) do
|
802
854
|
File.join(File.dirname(__FILE__), "..", "config", "mongoid.yml")
|
@@ -808,42 +860,27 @@ describe Mongoid::Clients do
|
|
808
860
|
|
809
861
|
context "when the override is global" do
|
810
862
|
|
811
|
-
|
812
|
-
|
813
|
-
before do
|
814
|
-
Mongoid.override_database(:mongoid_optional)
|
815
|
-
end
|
816
|
-
|
817
|
-
after do
|
818
|
-
Band.delete_all
|
819
|
-
Mongoid.override_database(nil)
|
820
|
-
end
|
821
|
-
|
822
|
-
let!(:band) do
|
823
|
-
klass.create(name: "Tool")
|
824
|
-
end
|
825
|
-
|
826
|
-
it "persists to the overridden database" do
|
827
|
-
mongo_client = Band.mongo_client.with(database: :mongoid_optional)
|
828
|
-
expect(mongo_client[:bands].count(name: "Tool")).to eq(1)
|
829
|
-
end
|
830
|
-
|
831
|
-
it 'uses that database for the model mongo_client' do
|
832
|
-
expect(Band.mongo_client.database.name).to eq('mongoid_optional')
|
833
|
-
end
|
863
|
+
before do
|
864
|
+
Mongoid.override_database(:mongoid_optional)
|
834
865
|
end
|
835
866
|
|
836
|
-
|
837
|
-
|
838
|
-
|
839
|
-
it_behaves_like "a global database override"
|
867
|
+
after do
|
868
|
+
Band.delete_all
|
869
|
+
Mongoid.override_database(nil)
|
840
870
|
end
|
841
871
|
|
842
|
-
|
872
|
+
let!(:band) do
|
873
|
+
Band.create(name: "Tool")
|
874
|
+
end
|
843
875
|
|
844
|
-
|
876
|
+
it "persists to the overridden database" do
|
877
|
+
Band.mongo_client.with(database: :mongoid_optional) do |sess|
|
878
|
+
expect(sess[:bands].find(name: "Tool")).to_not be_nil
|
879
|
+
end
|
880
|
+
end
|
845
881
|
|
846
|
-
|
882
|
+
it 'uses that database for the model mongo_client' do
|
883
|
+
expect(Band.mongo_client.database.name).to eq('mongoid_optional')
|
847
884
|
end
|
848
885
|
end
|
849
886
|
end
|