mongoid_listable 0.2.5 → 0.2.6

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ OGRmODIzNGZkMzFlYmQyM2M2NDBlZDRkYmE0NDNmMWFjNjE1ZTA2Yg==
5
+ data.tar.gz: !binary |-
6
+ YzlkMTZhNDRkOTczNmU2MDlhMmRjNmY5ZTRiYjY3NTc0NzEwNDljOQ==
7
+ SHA512:
8
+ metadata.gz: !binary |-
9
+ N2NjZTgxZjAyOWQwMWU3M2M3OGQ4OWNiZmU1YTI2ZGVmNjVmNTMzNmNjYThk
10
+ NzhhNjJjM2Y4NDAxNWEyODA2YTEyYTg3NWIwYjJmMWMyYjUwZDhmMjY1MTgx
11
+ NTBiYjVjZDc5M2Y4OGUwZTk4YzdmYWUyMDRkN2Q2MTc0NGI3MDY=
12
+ data.tar.gz: !binary |-
13
+ YmYzMWEwZDJjMmQzNDAxNjM0YTUwMWUxYmQ1Zjk0NWRmODNhZTZjNTE4ZGJm
14
+ OTZiYjdlYTI0Mjg2YmM1Zjg0Nzg2ZDU5ZjZkMDI5NzJkYmM5NmU2YmJiY2Vi
15
+ YmJhZTBjMGRlNGVhNDdjZDdiZThiNGFlM2NkN2Q3ZDEwODgxYTE=
@@ -48,7 +48,7 @@ module Mongoid
48
48
  else
49
49
  self.class
50
50
  end
51
- klass.where(field.exists => true).ne id: id
51
+ klass.where(field.exists => true).ne(id: id)
52
52
  end
53
53
 
54
54
  def embedded_one?
@@ -68,7 +68,7 @@ module Mongoid
68
68
  # @param [ Integer ] start The starting position
69
69
  #
70
70
  # @since 0.1.0
71
- def reposition objects, field, start
71
+ def reposition objects, field, start
72
72
  objects.each_with_index do |object, index|
73
73
  object.set field, start + index
74
74
  end
@@ -154,7 +154,8 @@ module Mongoid
154
154
  # @since 0.1.0
155
155
  def change_on name
156
156
  from, to = send "#{name}_change"
157
- from ||= 0
157
+ from ||= siblings(name).count
158
+ to ||= siblings(name).count + 1
158
159
  to = if to > siblings(name).count + 1
159
160
  siblings(name).count + 1
160
161
  elsif to < 1
@@ -1,5 +1,5 @@
1
1
  module Mongoid
2
2
  module Listable
3
- VERSION = '0.2.5'
3
+ VERSION = '0.2.6'
4
4
  end
5
5
  end
@@ -81,6 +81,15 @@ describe Mongoid::Listable do
81
81
  expect(Item.send(SCOPE).where(FIELD => 4).first).to eq(item)
82
82
  end
83
83
 
84
+ it 'should maintain order when moving two objects\' positions' do
85
+ item_1 = Item.send(SCOPE).where(FIELD => 8).first
86
+ item_2 = Item.send(SCOPE).where(FIELD => 9).first
87
+ item_1.update_attribute FIELD, 2
88
+ item_2.update_attribute FIELD, 6
89
+ expect(Item.send(SCOPE).where(FIELD => 2).first).to eq(item_1)
90
+ expect(Item.send(SCOPE).where(FIELD => 6).first).to eq(item_2)
91
+ end
92
+
84
93
  it 'should do nothing when assigning object to same position' do
85
94
  item = Item.send(SCOPE).where(FIELD => 5).first
86
95
  item.update_attribute FIELD, 5
@@ -95,10 +104,15 @@ describe Mongoid::Listable do
95
104
 
96
105
  it 'should compensate for updated positions that are lower than bounds' do
97
106
  item = Item.send(SCOPE).where(FIELD => 5).first
98
- item.update_attribute FIELD, -100
107
+ item.update_attribute FIELD, 0
99
108
  expect(Item.send(SCOPE).first).to eq(item)
100
109
  end
101
110
 
111
+ it 'should compensate for updated positions that are nil' do
112
+ item = Item.send(SCOPE).where(FIELD => 5).first
113
+ item.update_attribute FIELD, nil
114
+ expect(Item.send(SCOPE).last).to eq(item)
115
+ end
102
116
  end
103
117
 
104
118
  describe 'lists' do
@@ -202,6 +216,12 @@ describe Mongoid::Listable do
202
216
  section.update_attribute :article_position, -100
203
217
  expect(Article.first.sections.first).to eq(section)
204
218
  end
219
+
220
+ it 'should compensate for updated positions that are nil' do
221
+ section = Article.first.sections.where(article_position: 5).first
222
+ section.update_attribute :article_position, nil
223
+ expect(Article.first.sections.last).to eq(section)
224
+ end
205
225
 
206
226
  end
207
227
 
@@ -321,6 +341,12 @@ describe Mongoid::Listable do
321
341
  expect(User.first.photos.first).to eq(photo)
322
342
  end
323
343
 
344
+ it 'should compensate for updated positions that are nil' do
345
+ photo = User.first.photos.where(user_position: 5).first
346
+ photo.update_attribute :user_position, nil
347
+ expect(User.first.photos.last).to eq(photo)
348
+ end
349
+
324
350
  end
325
351
 
326
352
  end
metadata CHANGED
@@ -1,20 +1,18 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mongoid_listable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.5
5
- prerelease:
4
+ version: 0.2.6
6
5
  platform: ruby
7
6
  authors:
8
7
  - richardcalahan
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-12-09 00:00:00.000000000 Z
11
+ date: 2013-12-13 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: mongoid
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - ! '>='
20
18
  - !ruby/object:Gem::Version
@@ -22,7 +20,6 @@ dependencies:
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - ! '>='
28
25
  - !ruby/object:Gem::Version
@@ -30,7 +27,6 @@ dependencies:
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: bundler
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - ~>
36
32
  - !ruby/object:Gem::Version
@@ -38,7 +34,6 @@ dependencies:
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - ~>
44
39
  - !ruby/object:Gem::Version
@@ -46,7 +41,6 @@ dependencies:
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: rake
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
45
  - - ! '>='
52
46
  - !ruby/object:Gem::Version
@@ -54,7 +48,6 @@ dependencies:
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
52
  - - ! '>='
60
53
  - !ruby/object:Gem::Version
@@ -95,27 +88,26 @@ files:
95
88
  homepage: ''
96
89
  licenses:
97
90
  - MIT
91
+ metadata: {}
98
92
  post_install_message:
99
93
  rdoc_options: []
100
94
  require_paths:
101
95
  - lib
102
96
  required_ruby_version: !ruby/object:Gem::Requirement
103
- none: false
104
97
  requirements:
105
98
  - - ! '>='
106
99
  - !ruby/object:Gem::Version
107
100
  version: '0'
108
101
  required_rubygems_version: !ruby/object:Gem::Requirement
109
- none: false
110
102
  requirements:
111
103
  - - ! '>='
112
104
  - !ruby/object:Gem::Version
113
105
  version: '0'
114
106
  requirements: []
115
107
  rubyforge_project:
116
- rubygems_version: 1.8.24
108
+ rubygems_version: 2.1.11
117
109
  signing_key:
118
- specification_version: 3
110
+ specification_version: 4
119
111
  summary: ''
120
112
  test_files:
121
113
  - spec/models/article.rb