mongoid-list 0.1.5 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/.rvmrc CHANGED
@@ -1 +1 @@
1
- rvm 1.9.2@mongoid-list
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._parent.class.collection.update(criteria, updates)
35
+ item._root.class.collection.update(criteria, updates)
36
36
  end
37
37
  end
38
38
 
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module List
3
- VERSION = "0.1.5"
3
+ VERSION = "0.1.6"
4
4
  end
5
5
  end
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.0.0' ])
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.7.0' ])
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.9.0.rc' ])
22
- s.add_development_dependency('spork-testunit', [ '>= 0.0.6' ])
23
- s.add_development_dependency('guard-minitest', [ '>= 0.4.0' ])
24
- s.add_development_dependency('guard-spork', [ '>= 0.3.1' ])
25
- s.add_development_dependency('turn', [ '>= 0.8.3' ])
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")
@@ -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 "Removing an Item from a List" do
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 "Removing an Item from an Embedded List" do
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.5
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.000000000Z
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: &2153462200 !ruby/object:Gem::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.0.0
21
+ version: 2.4.0
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2153462200
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: &2153461780 !ruby/object:Gem::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: *2153461780
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: &2153461200 !ruby/object:Gem::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.7.0
53
+ version: 2.11.0
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *2153461200
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: &2153460680 !ruby/object:Gem::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: *2153460680
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: &2153460200 !ruby/object:Gem::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.9.0.rc
85
+ version: 1.0.0.rc
66
86
  type: :development
67
87
  prerelease: false
68
- version_requirements: *2153460200
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: &2153459720 !ruby/object:Gem::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.6
101
+ version: 0.0.8
77
102
  type: :development
78
103
  prerelease: false
79
- version_requirements: *2153459720
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: &2153459240 !ruby/object:Gem::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.4.0
117
+ version: 0.5.0
88
118
  type: :development
89
119
  prerelease: false
90
- version_requirements: *2153459240
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: &2153458760 !ruby/object:Gem::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.3.1
133
+ version: 0.5.2
99
134
  type: :development
100
135
  prerelease: false
101
- version_requirements: *2153458760
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: &2153458280 !ruby/object:Gem::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.8.3
149
+ version: 0.9.4
110
150
  type: :development
111
151
  prerelease: false
112
- version_requirements: *2153458280
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.10
209
+ rubygems_version: 1.8.24
165
210
  signing_key:
166
211
  specification_version: 3
167
212
  summary: Simple list behavior for Mongoid