mongoid-list 0.1.5 → 0.1.6
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.
- data/.rvmrc +1 -1
- data/lib/mongoid/list.rb +1 -3
- data/lib/mongoid/list/embedded.rb +1 -1
- data/lib/mongoid/list/version.rb +1 -1
- data/mongoid-list.gemspec +7 -7
- data/test/mongoid/list_test.rb +72 -4
- metadata +73 -28
data/.rvmrc
CHANGED
@@ -1 +1 @@
|
|
1
|
-
rvm 1.9.
|
1
|
+
rvm 1.9.3@mongoid-list
|
data/lib/mongoid/list.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Mongoid
|
2
2
|
|
3
|
-
|
4
3
|
module List
|
4
|
+
|
5
5
|
extend ActiveSupport::Concern
|
6
6
|
|
7
7
|
autoload :Collection, 'mongoid/list/collection'
|
@@ -12,8 +12,6 @@ module Mongoid
|
|
12
12
|
|
13
13
|
validates :position, numericality: true, on: :update
|
14
14
|
|
15
|
-
index [ include?(Mongoid::Paranoia) ? [ :deleted_at, 1 ] : nil, [ :position, -1 ] ].compact # TODO: MONGOID: Apply a patch
|
16
|
-
|
17
15
|
before_create :set_initial_position_in_list
|
18
16
|
before_update :mark_for_update_processing_of_list, if: :position_changed?
|
19
17
|
after_update :update_positions_in_list!, if: :_process_list_change
|
@@ -32,7 +32,7 @@ module Mongoid
|
|
32
32
|
next unless should_operate_on_item?(item)
|
33
33
|
criteria = item.atomic_selector
|
34
34
|
updates = { '$inc' => { "#{item.atomic_path}.$.position" => changes[:by] } }
|
35
|
-
item.
|
35
|
+
item._root.class.collection.update(criteria, updates)
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
data/lib/mongoid/list/version.rb
CHANGED
data/mongoid-list.gemspec
CHANGED
@@ -13,16 +13,16 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.summary = 'Simple list behavior for Mongoid'
|
14
14
|
s.homepage = 'https://github.com/davekrupinski/mongoid-list'
|
15
15
|
|
16
|
-
s.add_dependency('mongoid', [ '>= 2.
|
16
|
+
s.add_dependency('mongoid', [ '>= 2.4.0' ])
|
17
17
|
|
18
18
|
s.add_development_dependency('bson_ext')
|
19
|
-
s.add_development_dependency('minitest', [ '>= 2.
|
19
|
+
s.add_development_dependency('minitest', [ '>= 2.11.0' ])
|
20
20
|
s.add_development_dependency('mini_shoulda', [ '>= 0.4.0' ])
|
21
|
-
s.add_development_dependency('spork', [ '>= 0.
|
22
|
-
s.add_development_dependency('spork-testunit', [ '>= 0.0.
|
23
|
-
s.add_development_dependency('guard-minitest', [ '>= 0.
|
24
|
-
s.add_development_dependency('guard-spork', [ '>= 0.
|
25
|
-
s.add_development_dependency('turn', [ '>= 0.
|
21
|
+
s.add_development_dependency('spork', [ '>= 1.0.0.rc' ])
|
22
|
+
s.add_development_dependency('spork-testunit', [ '>= 0.0.8' ])
|
23
|
+
s.add_development_dependency('guard-minitest', [ '>= 0.5.0' ])
|
24
|
+
s.add_development_dependency('guard-spork', [ '>= 0.5.2' ])
|
25
|
+
s.add_development_dependency('turn', [ '>= 0.9.4' ])
|
26
26
|
|
27
27
|
s.files = `git ls-files`.split("\n")
|
28
28
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/test/mongoid/list_test.rb
CHANGED
@@ -3,7 +3,6 @@ require 'test_helper'
|
|
3
3
|
|
4
4
|
describe Mongoid::List do
|
5
5
|
|
6
|
-
|
7
6
|
context "Setting Initial Position" do
|
8
7
|
setup do
|
9
8
|
@list1 = Simple.create
|
@@ -49,6 +48,7 @@ describe Mongoid::List do
|
|
49
48
|
|
50
49
|
|
51
50
|
context "Updating List Position" do
|
51
|
+
|
52
52
|
setup do
|
53
53
|
@list1 = Simple.create
|
54
54
|
@list2 = Simple.create
|
@@ -64,6 +64,7 @@ describe Mongoid::List do
|
|
64
64
|
end
|
65
65
|
|
66
66
|
context "for @list2 going to position of 1" do
|
67
|
+
|
67
68
|
setup do
|
68
69
|
@list2.update_attributes(:position => 1)
|
69
70
|
@list1.reload; @list2.reload; @list3.reload; @list4.reload
|
@@ -78,6 +79,7 @@ describe Mongoid::List do
|
|
78
79
|
end
|
79
80
|
|
80
81
|
context "for @list3 going to position of 1" do
|
82
|
+
|
81
83
|
setup do
|
82
84
|
@list3.update_attributes(:position => 1)
|
83
85
|
@list1.reload; @list2.reload; @list3.reload; @list4.reload
|
@@ -89,9 +91,11 @@ describe Mongoid::List do
|
|
89
91
|
assert_equal 1, @list3.position
|
90
92
|
assert_equal 4, @list4.position
|
91
93
|
end
|
94
|
+
|
92
95
|
end
|
93
96
|
|
94
97
|
context "for @list1 going to position of 2" do
|
98
|
+
|
95
99
|
setup do
|
96
100
|
@list1.update_attributes(:position => 2)
|
97
101
|
@list1.reload; @list2.reload; @list3.reload; @list4.reload
|
@@ -103,9 +107,11 @@ describe Mongoid::List do
|
|
103
107
|
assert_equal 3, @list3.position
|
104
108
|
assert_equal 4, @list4.position
|
105
109
|
end
|
110
|
+
|
106
111
|
end
|
107
112
|
|
108
113
|
context "for @list1 going to position of 3" do
|
114
|
+
|
109
115
|
setup do
|
110
116
|
@list1.update_attributes(:position => 3)
|
111
117
|
@list1.reload; @list2.reload; @list3.reload; @list4.reload
|
@@ -117,12 +123,15 @@ describe Mongoid::List do
|
|
117
123
|
assert_equal 2, @list3.position
|
118
124
|
assert_equal 4, @list4.position
|
119
125
|
end
|
126
|
+
|
120
127
|
end
|
128
|
+
|
121
129
|
end
|
122
130
|
|
123
131
|
|
124
132
|
|
125
133
|
context "Updating List Position in Embedded Collection" do
|
134
|
+
|
126
135
|
setup do
|
127
136
|
@container = Container.create
|
128
137
|
@list1 = @container.items.create
|
@@ -139,6 +148,7 @@ describe Mongoid::List do
|
|
139
148
|
end
|
140
149
|
|
141
150
|
context "for @list2 going to position of 1" do
|
151
|
+
|
142
152
|
setup do
|
143
153
|
@list2.update_attributes(:position => 1)
|
144
154
|
@container.reload
|
@@ -150,9 +160,11 @@ describe Mongoid::List do
|
|
150
160
|
assert_equal 3, @container.items.find(@list3.id).position
|
151
161
|
assert_equal 4, @container.items.find(@list4.id).position
|
152
162
|
end
|
163
|
+
|
153
164
|
end
|
154
165
|
|
155
166
|
context "for @list3 going to position of 1" do
|
167
|
+
|
156
168
|
setup do
|
157
169
|
@list3.update_attributes(:position => 1)
|
158
170
|
@container.reload
|
@@ -164,9 +176,11 @@ describe Mongoid::List do
|
|
164
176
|
assert_equal 1, @container.items.find(@list3.id).position
|
165
177
|
assert_equal 4, @container.items.find(@list4.id).position
|
166
178
|
end
|
179
|
+
|
167
180
|
end
|
168
181
|
|
169
182
|
context "for @list1 going to position of 2" do
|
183
|
+
|
170
184
|
setup do
|
171
185
|
@list1.update_attributes(:position => 2)
|
172
186
|
@container.reload
|
@@ -178,9 +192,11 @@ describe Mongoid::List do
|
|
178
192
|
assert_equal 3, @container.items.find(@list3.id).position
|
179
193
|
assert_equal 4, @container.items.find(@list4.id).position
|
180
194
|
end
|
195
|
+
|
181
196
|
end
|
182
197
|
|
183
198
|
context "for @list1 going to position of 3" do
|
199
|
+
|
184
200
|
setup do
|
185
201
|
@list1.update_attributes(:position => 3)
|
186
202
|
@container.reload
|
@@ -192,12 +208,15 @@ describe Mongoid::List do
|
|
192
208
|
assert_equal 2, @container.items.find(@list3.id).position
|
193
209
|
assert_equal 4, @container.items.find(@list4.id).position
|
194
210
|
end
|
211
|
+
|
195
212
|
end
|
213
|
+
|
196
214
|
end
|
197
215
|
|
198
216
|
|
199
217
|
|
200
|
-
context "
|
218
|
+
context "#destroy" do
|
219
|
+
|
201
220
|
setup do
|
202
221
|
@list1 = Simple.create
|
203
222
|
@list2 = Simple.create
|
@@ -232,9 +251,11 @@ describe Mongoid::List do
|
|
232
251
|
assert_equal 2, @list3.position
|
233
252
|
assert_equal 3, @list4.position
|
234
253
|
end
|
254
|
+
|
235
255
|
end
|
236
256
|
|
237
257
|
context "removing from the 4th and last position" do
|
258
|
+
|
238
259
|
setup do
|
239
260
|
@list4.destroy
|
240
261
|
@list1.reload; @list2.reload; @list3.reload
|
@@ -245,12 +266,14 @@ describe Mongoid::List do
|
|
245
266
|
assert_equal 2, @list2.position
|
246
267
|
assert_equal 3, @list3.position
|
247
268
|
end
|
269
|
+
|
248
270
|
end
|
249
271
|
end
|
250
272
|
|
251
273
|
|
252
274
|
|
253
|
-
context "
|
275
|
+
context "#destroy Item from an Embedded List" do
|
276
|
+
|
254
277
|
setup do
|
255
278
|
@container = Container.create
|
256
279
|
@list1 = @container.items.create
|
@@ -260,6 +283,7 @@ describe Mongoid::List do
|
|
260
283
|
end
|
261
284
|
|
262
285
|
context "from the first position" do
|
286
|
+
|
263
287
|
setup do
|
264
288
|
@list1.destroy
|
265
289
|
@container.reload
|
@@ -270,9 +294,11 @@ describe Mongoid::List do
|
|
270
294
|
assert_equal 2, @container.items.find(@list3.id).position
|
271
295
|
assert_equal 3, @container.items.find(@list4.id).position
|
272
296
|
end
|
297
|
+
|
273
298
|
end
|
274
299
|
|
275
300
|
context "removing from the 2nd position" do
|
301
|
+
|
276
302
|
setup do
|
277
303
|
@list2.destroy
|
278
304
|
@container.reload
|
@@ -293,6 +319,7 @@ describe Mongoid::List do
|
|
293
319
|
end
|
294
320
|
|
295
321
|
context "removing from the 4th and last position" do
|
322
|
+
|
296
323
|
setup do
|
297
324
|
@list4.destroy
|
298
325
|
@container.reload
|
@@ -303,10 +330,52 @@ describe Mongoid::List do
|
|
303
330
|
assert_equal 2, @container.items.find(@list2.id).position
|
304
331
|
assert_equal 3, @container.items.find(@list3.id).position
|
305
332
|
end
|
333
|
+
|
306
334
|
end
|
335
|
+
|
307
336
|
end
|
308
337
|
|
309
338
|
|
339
|
+
context "#destroy Item from Deeply Embedded List" do
|
340
|
+
|
341
|
+
setup do
|
342
|
+
@container = Container.create
|
343
|
+
@list = @container.items.create
|
344
|
+
@item1 = @list.items.create
|
345
|
+
@item2 = @list.items.create
|
346
|
+
@item3 = @list.items.create
|
347
|
+
end
|
348
|
+
|
349
|
+
context "from 1st position" do
|
350
|
+
|
351
|
+
setup do
|
352
|
+
@item1.destroy
|
353
|
+
@container.reload
|
354
|
+
end
|
355
|
+
|
356
|
+
should "have moved all other items up" do
|
357
|
+
assert_equal 1, @container.items.first.items.find(@item2.id).position
|
358
|
+
assert_equal 2, @container.items.first.items.find(@item3.id).position
|
359
|
+
end
|
360
|
+
|
361
|
+
end
|
362
|
+
|
363
|
+
context "from middle position" do
|
364
|
+
|
365
|
+
setup do
|
366
|
+
@item2.destroy
|
367
|
+
@container.reload
|
368
|
+
end
|
369
|
+
|
370
|
+
should "have moved last items up" do
|
371
|
+
assert_equal 1, @container.items.first.items.find(@item1.id).position
|
372
|
+
assert_equal 2, @container.items.first.items.find(@item3.id).position
|
373
|
+
end
|
374
|
+
|
375
|
+
end
|
376
|
+
|
377
|
+
end
|
378
|
+
|
310
379
|
|
311
380
|
context "#list_scoped?" do
|
312
381
|
|
@@ -797,5 +866,4 @@ describe Mongoid::List do
|
|
797
866
|
|
798
867
|
end
|
799
868
|
|
800
|
-
|
801
869
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: mongoid-list
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,22 +9,27 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-10-28 00:00:00.
|
12
|
+
date: 2011-10-28 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mongoid
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version: 2.
|
21
|
+
version: 2.4.0
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: 2.4.0
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: bson_ext
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,21 +37,31 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :development
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: minitest
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
42
52
|
- !ruby/object:Gem::Version
|
43
|
-
version: 2.
|
53
|
+
version: 2.11.0
|
44
54
|
type: :development
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 2.11.0
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: mini_shoulda
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,62 +69,92 @@ dependencies:
|
|
54
69
|
version: 0.4.0
|
55
70
|
type: :development
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: 0.4.0
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: spork
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
64
84
|
- !ruby/object:Gem::Version
|
65
|
-
version: 0.
|
85
|
+
version: 1.0.0.rc
|
66
86
|
type: :development
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: 1.0.0.rc
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: spork-testunit
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
75
100
|
- !ruby/object:Gem::Version
|
76
|
-
version: 0.0.
|
101
|
+
version: 0.0.8
|
77
102
|
type: :development
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: 0.0.8
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: guard-minitest
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ! '>='
|
86
116
|
- !ruby/object:Gem::Version
|
87
|
-
version: 0.
|
117
|
+
version: 0.5.0
|
88
118
|
type: :development
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: 0.5.0
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: guard-spork
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ! '>='
|
97
132
|
- !ruby/object:Gem::Version
|
98
|
-
version: 0.
|
133
|
+
version: 0.5.2
|
99
134
|
type: :development
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 0.5.2
|
102
142
|
- !ruby/object:Gem::Dependency
|
103
143
|
name: turn
|
104
|
-
requirement:
|
144
|
+
requirement: !ruby/object:Gem::Requirement
|
105
145
|
none: false
|
106
146
|
requirements:
|
107
147
|
- - ! '>='
|
108
148
|
- !ruby/object:Gem::Version
|
109
|
-
version: 0.
|
149
|
+
version: 0.9.4
|
110
150
|
type: :development
|
111
151
|
prerelease: false
|
112
|
-
version_requirements:
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
153
|
+
none: false
|
154
|
+
requirements:
|
155
|
+
- - ! '>='
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: 0.9.4
|
113
158
|
description:
|
114
159
|
email: dave@davekrupinski.com
|
115
160
|
executables: []
|
@@ -161,7 +206,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
161
206
|
version: '0'
|
162
207
|
requirements: []
|
163
208
|
rubyforge_project:
|
164
|
-
rubygems_version: 1.8.
|
209
|
+
rubygems_version: 1.8.24
|
165
210
|
signing_key:
|
166
211
|
specification_version: 3
|
167
212
|
summary: Simple list behavior for Mongoid
|