mongoid_monkey 0.2.0 → 0.2.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
- data/lib/patches/only_pluck_localized.rb +0 -1
- data/lib/version.rb +1 -1
- data/spec/unit/atomic/mongoid3_style/atomic/add_to_set_spec.rb +266 -266
- data/spec/unit/atomic/mongoid3_style/atomic/bit_spec.rb +92 -92
- data/spec/unit/atomic/mongoid3_style/atomic/inc_spec.rb +137 -137
- data/spec/unit/atomic/mongoid3_style/atomic/pop_spec.rb +115 -115
- data/spec/unit/atomic/mongoid3_style/atomic/pull_all_spec.rb +81 -81
- data/spec/unit/atomic/mongoid3_style/atomic/pull_spec.rb +84 -84
- data/spec/unit/atomic/mongoid3_style/atomic/push_all_spec.rb +81 -81
- data/spec/unit/atomic/mongoid3_style/atomic/push_spec.rb +81 -81
- data/spec/unit/atomic/mongoid3_style/atomic/rename_spec.rb +46 -46
- data/spec/unit/atomic/mongoid3_style/atomic/sets_spec.rb +158 -158
- data/spec/unit/atomic/mongoid3_style/atomic/unset_spec.rb +69 -69
- data/spec/unit/atomic/mongoid3_style/atomic_spec.rb +220 -220
- data/spec/unit/atomic/mongoid4_style/incrementable_spec.rb +232 -232
- data/spec/unit/atomic/mongoid4_style/logical_spec.rb +262 -262
- data/spec/unit/atomic/mongoid4_style/poppable_spec.rb +139 -139
- data/spec/unit/atomic/mongoid4_style/pullable_spec.rb +172 -172
- data/spec/unit/atomic/mongoid4_style/pushable_spec.rb +159 -159
- data/spec/unit/atomic/mongoid4_style/renamable_spec.rb +139 -139
- data/spec/unit/atomic/mongoid4_style/unsettable_spec.rb +28 -28
- metadata +2 -2
@@ -1,262 +1,262 @@
|
|
1
|
-
require "spec_helper"
|
2
|
-
|
3
|
-
if Mongoid::VERSION =~ /\A3\./
|
4
|
-
|
5
|
-
describe 'Mongoid::Persistable::Pushable' do
|
6
|
-
|
7
|
-
describe "#add_to_set" do
|
8
|
-
|
9
|
-
context "when the document is a root document" do
|
10
|
-
|
11
|
-
shared_examples_for "a unique pushable root document" do
|
12
|
-
|
13
|
-
it "adds single values" do
|
14
|
-
expect(person.aliases).to eq([ 1, 2, 4 ])
|
15
|
-
end
|
16
|
-
|
17
|
-
it "does not add duplicate values" do
|
18
|
-
expect(person.array).to eq([ 4, 5 ])
|
19
|
-
end
|
20
|
-
|
21
|
-
it "sets absent values" do
|
22
|
-
expect(person.test_array).to eq([ 1 ])
|
23
|
-
end
|
24
|
-
|
25
|
-
it "returns self objet" do
|
26
|
-
expect(add).to eq(person)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "resets the dirty changes" do
|
30
|
-
expect(person).to_not be_changed
|
31
|
-
end
|
32
|
-
|
33
|
-
it "persists single adds" do
|
34
|
-
expect(person.reload.aliases).to eq([ 1, 2, 4 ])
|
35
|
-
end
|
36
|
-
|
37
|
-
it "persists absent values" do
|
38
|
-
expect(person.reload.test_array).to eq([ 1 ])
|
39
|
-
end
|
40
|
-
|
41
|
-
it "flattens only 1 level" do
|
42
|
-
expect(person.reload.arrays).to eq([[ 7, 8 ]])
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
let(:person) do
|
47
|
-
Person.create(aliases: [ 1, 2 ], array: [ 4, 5 ])
|
48
|
-
end
|
49
|
-
|
50
|
-
context "when provided string fields" do
|
51
|
-
|
52
|
-
let!(:add) do
|
53
|
-
person.add_to_set("aliases" => 4, "array" => [4, 5], "test_array" => 1, "arrays" => [[ 7, 8 ]])
|
54
|
-
end
|
55
|
-
|
56
|
-
it_behaves_like "a unique pushable root document"
|
57
|
-
end
|
58
|
-
|
59
|
-
context "when provided symbol fields" do
|
60
|
-
|
61
|
-
let!(:add) do
|
62
|
-
person.add_to_set(aliases: 4, array: [4, 5], test_array: 1, arrays: [[ 7, 8 ]])
|
63
|
-
end
|
64
|
-
|
65
|
-
it_behaves_like "a unique pushable root document"
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
context "when the document is embedded" do
|
70
|
-
|
71
|
-
shared_examples_for "a unique pushable embedded document" do
|
72
|
-
|
73
|
-
it "adds single values" do
|
74
|
-
expect(address.services).to eq([ 1, 4 ])
|
75
|
-
end
|
76
|
-
|
77
|
-
it "does not add duplicate values" do
|
78
|
-
expect(address.a).to eq([ 4, 5 ])
|
79
|
-
end
|
80
|
-
|
81
|
-
it "sets absent values" do
|
82
|
-
expect(address.test).to eq([ 1 ])
|
83
|
-
end
|
84
|
-
|
85
|
-
it "returns self object" do
|
86
|
-
expect(add).to eq(address)
|
87
|
-
end
|
88
|
-
|
89
|
-
it "resets the dirty changes" do
|
90
|
-
expect(address).to_not be_changed
|
91
|
-
end
|
92
|
-
|
93
|
-
it "persists single adds" do
|
94
|
-
expect(address.reload.services).to eq([ 1, 4 ])
|
95
|
-
end
|
96
|
-
|
97
|
-
it "persists absent values" do
|
98
|
-
expect(address.reload.test).to eq([ 1 ])
|
99
|
-
end
|
100
|
-
end
|
101
|
-
|
102
|
-
let(:person) do
|
103
|
-
Person.create
|
104
|
-
end
|
105
|
-
|
106
|
-
let(:address) do
|
107
|
-
person.addresses.create(street: "t", services: [ 1 ], a: [ 4, 5 ])
|
108
|
-
end
|
109
|
-
|
110
|
-
context "when provided string fields" do
|
111
|
-
|
112
|
-
let!(:add) do
|
113
|
-
address.add_to_set("services" => 4, "a" => 5, "test" => 1)
|
114
|
-
end
|
115
|
-
|
116
|
-
it_behaves_like "a unique pushable embedded document"
|
117
|
-
end
|
118
|
-
|
119
|
-
context "when provided symbol fields" do
|
120
|
-
|
121
|
-
let!(:add) do
|
122
|
-
address.add_to_set(services: 4, a: 5, test: 1)
|
123
|
-
end
|
124
|
-
|
125
|
-
it_behaves_like "a unique pushable embedded document"
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe "#push" do
|
131
|
-
|
132
|
-
context "when the document is a root document" do
|
133
|
-
|
134
|
-
shared_examples_for "a pushable root document" do
|
135
|
-
|
136
|
-
it "pushes single values" do
|
137
|
-
expect(person.aliases).to eq([ 1, 2, 3, 4 ])
|
138
|
-
end
|
139
|
-
|
140
|
-
it "pushes multiple values" do
|
141
|
-
expect(person.array).to eq([ 4, 5, 6, 7, 8 ])
|
142
|
-
end
|
143
|
-
|
144
|
-
it "sets absent values" do
|
145
|
-
expect(person.test_array).to eq([ 1 ])
|
146
|
-
end
|
147
|
-
|
148
|
-
it "returns self object" do
|
149
|
-
expect(push).to eq(person)
|
150
|
-
end
|
151
|
-
|
152
|
-
it "resets the dirty changes" do
|
153
|
-
expect(person).to_not be_changed
|
154
|
-
end
|
155
|
-
|
156
|
-
it "persists single pushes" do
|
157
|
-
expect(person.reload.aliases).to eq([ 1, 2, 3, 4 ])
|
158
|
-
end
|
159
|
-
|
160
|
-
it "persists multiple pushes" do
|
161
|
-
expect(person.reload.array).to eq([ 4, 5, 6, 7, 8 ])
|
162
|
-
end
|
163
|
-
|
164
|
-
it "persists absent values" do
|
165
|
-
expect(person.reload.test_array).to eq([ 1 ])
|
166
|
-
end
|
167
|
-
|
168
|
-
it "flattens only 1 level" do
|
169
|
-
expect(person.reload.arrays).to eq([[ 7, 8 ]])
|
170
|
-
end
|
171
|
-
end
|
172
|
-
|
173
|
-
let(:person) do
|
174
|
-
Person.create(aliases: [ 1, 2, 3 ], array: [ 4, 5, 6 ])
|
175
|
-
end
|
176
|
-
|
177
|
-
context "when provided string fields" do
|
178
|
-
|
179
|
-
let!(:push) do
|
180
|
-
person.push("aliases" => 4, "array" => [ 7, 8 ], "test_array" => 1, "arrays" => [[ 7, 8 ]])
|
181
|
-
end
|
182
|
-
|
183
|
-
it_behaves_like "a pushable root document"
|
184
|
-
end
|
185
|
-
|
186
|
-
context "when provided symbol fields" do
|
187
|
-
|
188
|
-
let!(:push) do
|
189
|
-
person.push(aliases: 4, array: [ 7, 8 ], test_array: 1, arrays: [[ 7, 8 ]])
|
190
|
-
end
|
191
|
-
|
192
|
-
it_behaves_like "a pushable root document"
|
193
|
-
end
|
194
|
-
end
|
195
|
-
|
196
|
-
context "when the document is embedded" do
|
197
|
-
|
198
|
-
shared_examples_for "a pushable embedded document" do
|
199
|
-
|
200
|
-
it "pushes single values" do
|
201
|
-
expect(address.services).to eq([ 1, 4 ])
|
202
|
-
end
|
203
|
-
|
204
|
-
it "pushes multiple values" do
|
205
|
-
expect(address.a).to eq([ 4, 5, 6, 7 ])
|
206
|
-
end
|
207
|
-
|
208
|
-
it "sets absent values" do
|
209
|
-
expect(address.test).to eq([ 1 ])
|
210
|
-
end
|
211
|
-
|
212
|
-
it "returns self object" do
|
213
|
-
expect(push).to eq(address)
|
214
|
-
end
|
215
|
-
|
216
|
-
it "resets the dirty changes" do
|
217
|
-
expect(address).to_not be_changed
|
218
|
-
end
|
219
|
-
|
220
|
-
it "persists single pushes" do
|
221
|
-
expect(address.reload.services).to eq([ 1, 4 ])
|
222
|
-
end
|
223
|
-
|
224
|
-
it "persists multiple pushes" do
|
225
|
-
expect(address.reload.a).to eq([ 4, 5, 6, 7 ])
|
226
|
-
end
|
227
|
-
|
228
|
-
it "persists absent values" do
|
229
|
-
expect(address.reload.test).to eq([ 1 ])
|
230
|
-
end
|
231
|
-
end
|
232
|
-
|
233
|
-
let(:person) do
|
234
|
-
Person.create
|
235
|
-
end
|
236
|
-
|
237
|
-
let(:address) do
|
238
|
-
person.addresses.create(street: "t", services: [ 1 ], a: [ 4, 5 ])
|
239
|
-
end
|
240
|
-
|
241
|
-
context "when provided string fields" do
|
242
|
-
|
243
|
-
let!(:push) do
|
244
|
-
address.push("services" => 4, "a" => [ 6, 7 ], "test" => 1)
|
245
|
-
end
|
246
|
-
|
247
|
-
it_behaves_like "a pushable embedded document"
|
248
|
-
end
|
249
|
-
|
250
|
-
context "when provided symbol fields" do
|
251
|
-
|
252
|
-
let!(:push) do
|
253
|
-
address.push(services: 4, a: [ 6, 7 ], test: 1)
|
254
|
-
end
|
255
|
-
|
256
|
-
it_behaves_like "a pushable embedded document"
|
257
|
-
end
|
258
|
-
end
|
259
|
-
end
|
260
|
-
end
|
261
|
-
|
262
|
-
end
|
1
|
+
require "spec_helper"
|
2
|
+
|
3
|
+
if Mongoid::VERSION =~ /\A3\./
|
4
|
+
|
5
|
+
describe 'Mongoid::Persistable::Pushable' do
|
6
|
+
|
7
|
+
describe "#add_to_set" do
|
8
|
+
|
9
|
+
context "when the document is a root document" do
|
10
|
+
|
11
|
+
shared_examples_for "a unique pushable root document" do
|
12
|
+
|
13
|
+
it "adds single values" do
|
14
|
+
expect(person.aliases).to eq([ 1, 2, 4 ])
|
15
|
+
end
|
16
|
+
|
17
|
+
it "does not add duplicate values" do
|
18
|
+
expect(person.array).to eq([ 4, 5 ])
|
19
|
+
end
|
20
|
+
|
21
|
+
it "sets absent values" do
|
22
|
+
expect(person.test_array).to eq([ 1 ])
|
23
|
+
end
|
24
|
+
|
25
|
+
it "returns self objet" do
|
26
|
+
expect(add).to eq(person)
|
27
|
+
end
|
28
|
+
|
29
|
+
it "resets the dirty changes" do
|
30
|
+
expect(person).to_not be_changed
|
31
|
+
end
|
32
|
+
|
33
|
+
it "persists single adds" do
|
34
|
+
expect(person.reload.aliases).to eq([ 1, 2, 4 ])
|
35
|
+
end
|
36
|
+
|
37
|
+
it "persists absent values" do
|
38
|
+
expect(person.reload.test_array).to eq([ 1 ])
|
39
|
+
end
|
40
|
+
|
41
|
+
it "flattens only 1 level" do
|
42
|
+
expect(person.reload.arrays).to eq([[ 7, 8 ]])
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
46
|
+
let(:person) do
|
47
|
+
Person.create(aliases: [ 1, 2 ], array: [ 4, 5 ])
|
48
|
+
end
|
49
|
+
|
50
|
+
context "when provided string fields" do
|
51
|
+
|
52
|
+
let!(:add) do
|
53
|
+
person.add_to_set("aliases" => 4, "array" => [4, 5], "test_array" => 1, "arrays" => [[ 7, 8 ]])
|
54
|
+
end
|
55
|
+
|
56
|
+
it_behaves_like "a unique pushable root document"
|
57
|
+
end
|
58
|
+
|
59
|
+
context "when provided symbol fields" do
|
60
|
+
|
61
|
+
let!(:add) do
|
62
|
+
person.add_to_set(aliases: 4, array: [4, 5], test_array: 1, arrays: [[ 7, 8 ]])
|
63
|
+
end
|
64
|
+
|
65
|
+
it_behaves_like "a unique pushable root document"
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
context "when the document is embedded" do
|
70
|
+
|
71
|
+
shared_examples_for "a unique pushable embedded document" do
|
72
|
+
|
73
|
+
it "adds single values" do
|
74
|
+
expect(address.services).to eq([ 1, 4 ])
|
75
|
+
end
|
76
|
+
|
77
|
+
it "does not add duplicate values" do
|
78
|
+
expect(address.a).to eq([ 4, 5 ])
|
79
|
+
end
|
80
|
+
|
81
|
+
it "sets absent values" do
|
82
|
+
expect(address.test).to eq([ 1 ])
|
83
|
+
end
|
84
|
+
|
85
|
+
it "returns self object" do
|
86
|
+
expect(add).to eq(address)
|
87
|
+
end
|
88
|
+
|
89
|
+
it "resets the dirty changes" do
|
90
|
+
expect(address).to_not be_changed
|
91
|
+
end
|
92
|
+
|
93
|
+
it "persists single adds" do
|
94
|
+
expect(address.reload.services).to eq([ 1, 4 ])
|
95
|
+
end
|
96
|
+
|
97
|
+
it "persists absent values" do
|
98
|
+
expect(address.reload.test).to eq([ 1 ])
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
let(:person) do
|
103
|
+
Person.create
|
104
|
+
end
|
105
|
+
|
106
|
+
let(:address) do
|
107
|
+
person.addresses.create(street: "t", services: [ 1 ], a: [ 4, 5 ])
|
108
|
+
end
|
109
|
+
|
110
|
+
context "when provided string fields" do
|
111
|
+
|
112
|
+
let!(:add) do
|
113
|
+
address.add_to_set("services" => 4, "a" => 5, "test" => 1)
|
114
|
+
end
|
115
|
+
|
116
|
+
it_behaves_like "a unique pushable embedded document"
|
117
|
+
end
|
118
|
+
|
119
|
+
context "when provided symbol fields" do
|
120
|
+
|
121
|
+
let!(:add) do
|
122
|
+
address.add_to_set(services: 4, a: 5, test: 1)
|
123
|
+
end
|
124
|
+
|
125
|
+
it_behaves_like "a unique pushable embedded document"
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
129
|
+
|
130
|
+
describe "#push" do
|
131
|
+
|
132
|
+
context "when the document is a root document" do
|
133
|
+
|
134
|
+
shared_examples_for "a pushable root document" do
|
135
|
+
|
136
|
+
it "pushes single values" do
|
137
|
+
expect(person.aliases).to eq([ 1, 2, 3, 4 ])
|
138
|
+
end
|
139
|
+
|
140
|
+
it "pushes multiple values" do
|
141
|
+
expect(person.array).to eq([ 4, 5, 6, 7, 8 ])
|
142
|
+
end
|
143
|
+
|
144
|
+
it "sets absent values" do
|
145
|
+
expect(person.test_array).to eq([ 1 ])
|
146
|
+
end
|
147
|
+
|
148
|
+
it "returns self object" do
|
149
|
+
expect(push).to eq(person)
|
150
|
+
end
|
151
|
+
|
152
|
+
it "resets the dirty changes" do
|
153
|
+
expect(person).to_not be_changed
|
154
|
+
end
|
155
|
+
|
156
|
+
it "persists single pushes" do
|
157
|
+
expect(person.reload.aliases).to eq([ 1, 2, 3, 4 ])
|
158
|
+
end
|
159
|
+
|
160
|
+
it "persists multiple pushes" do
|
161
|
+
expect(person.reload.array).to eq([ 4, 5, 6, 7, 8 ])
|
162
|
+
end
|
163
|
+
|
164
|
+
it "persists absent values" do
|
165
|
+
expect(person.reload.test_array).to eq([ 1 ])
|
166
|
+
end
|
167
|
+
|
168
|
+
it "flattens only 1 level" do
|
169
|
+
expect(person.reload.arrays).to eq([[ 7, 8 ]])
|
170
|
+
end
|
171
|
+
end
|
172
|
+
|
173
|
+
let(:person) do
|
174
|
+
Person.create(aliases: [ 1, 2, 3 ], array: [ 4, 5, 6 ])
|
175
|
+
end
|
176
|
+
|
177
|
+
context "when provided string fields" do
|
178
|
+
|
179
|
+
let!(:push) do
|
180
|
+
person.push("aliases" => 4, "array" => [ 7, 8 ], "test_array" => 1, "arrays" => [[ 7, 8 ]])
|
181
|
+
end
|
182
|
+
|
183
|
+
it_behaves_like "a pushable root document"
|
184
|
+
end
|
185
|
+
|
186
|
+
context "when provided symbol fields" do
|
187
|
+
|
188
|
+
let!(:push) do
|
189
|
+
person.push(aliases: 4, array: [ 7, 8 ], test_array: 1, arrays: [[ 7, 8 ]])
|
190
|
+
end
|
191
|
+
|
192
|
+
it_behaves_like "a pushable root document"
|
193
|
+
end
|
194
|
+
end
|
195
|
+
|
196
|
+
context "when the document is embedded" do
|
197
|
+
|
198
|
+
shared_examples_for "a pushable embedded document" do
|
199
|
+
|
200
|
+
it "pushes single values" do
|
201
|
+
expect(address.services).to eq([ 1, 4 ])
|
202
|
+
end
|
203
|
+
|
204
|
+
it "pushes multiple values" do
|
205
|
+
expect(address.a).to eq([ 4, 5, 6, 7 ])
|
206
|
+
end
|
207
|
+
|
208
|
+
it "sets absent values" do
|
209
|
+
expect(address.test).to eq([ 1 ])
|
210
|
+
end
|
211
|
+
|
212
|
+
it "returns self object" do
|
213
|
+
expect(push).to eq(address)
|
214
|
+
end
|
215
|
+
|
216
|
+
it "resets the dirty changes" do
|
217
|
+
expect(address).to_not be_changed
|
218
|
+
end
|
219
|
+
|
220
|
+
it "persists single pushes" do
|
221
|
+
expect(address.reload.services).to eq([ 1, 4 ])
|
222
|
+
end
|
223
|
+
|
224
|
+
it "persists multiple pushes" do
|
225
|
+
expect(address.reload.a).to eq([ 4, 5, 6, 7 ])
|
226
|
+
end
|
227
|
+
|
228
|
+
it "persists absent values" do
|
229
|
+
expect(address.reload.test).to eq([ 1 ])
|
230
|
+
end
|
231
|
+
end
|
232
|
+
|
233
|
+
let(:person) do
|
234
|
+
Person.create
|
235
|
+
end
|
236
|
+
|
237
|
+
let(:address) do
|
238
|
+
person.addresses.create(street: "t", services: [ 1 ], a: [ 4, 5 ])
|
239
|
+
end
|
240
|
+
|
241
|
+
context "when provided string fields" do
|
242
|
+
|
243
|
+
let!(:push) do
|
244
|
+
address.push("services" => 4, "a" => [ 6, 7 ], "test" => 1)
|
245
|
+
end
|
246
|
+
|
247
|
+
it_behaves_like "a pushable embedded document"
|
248
|
+
end
|
249
|
+
|
250
|
+
context "when provided symbol fields" do
|
251
|
+
|
252
|
+
let!(:push) do
|
253
|
+
address.push(services: 4, a: [ 6, 7 ], test: 1)
|
254
|
+
end
|
255
|
+
|
256
|
+
it_behaves_like "a pushable embedded document"
|
257
|
+
end
|
258
|
+
end
|
259
|
+
end
|
260
|
+
end
|
261
|
+
|
262
|
+
end
|