sortifiable 0.2.6 → 0.2.7

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/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ *0.2.7 (February 23rd, 2013)
2
+
3
+ * Fix a bug when using insert_at to move an existing item down the list [Arthur Holstvoogd]
4
+
5
+
1
6
  *0.2.6 (March 5th, 2012)
2
7
 
3
8
  * Ensure that the default scope is ignored when performing list updates
data/README.md CHANGED
@@ -1,6 +1,8 @@
1
1
  Sortifiable
2
2
  ===========
3
3
 
4
+ [![Build Status][build]][travis] [![Dependency Status][depends]][gemnasium]
5
+
4
6
  This gem provides an acts_as_list compatible capability for sorting
5
7
  and reordering a number of objects in a list. The class that has this
6
8
  specified needs to have a +position+ column defined as an integer on
@@ -41,3 +43,8 @@ Thanks to the following people for their contributions:
41
43
  * Reinier de Lange
42
44
 
43
45
  Copyright (c) 2011 Andrew White, released under the MIT license
46
+
47
+ [build]: https://secure.travis-ci.org/pixeltrix/sortifiable.png
48
+ [travis]: http://travis-ci.org/pixeltrix/sortifiable
49
+ [depends]: https://gemnasium.com/pixeltrix/sortifiable.png?travis
50
+ [gemnasium]: https://gemnasium.com/pixeltrix/sortifiable
data/Rakefile CHANGED
@@ -3,7 +3,7 @@ require 'rdoc/task'
3
3
  require "bundler/gem_tasks"
4
4
 
5
5
  desc 'Default: run sortifiable unit tests.'
6
- task :default => :test
6
+ task :default => "test:all"
7
7
 
8
8
  desc 'Test the sortifiable gem.'
9
9
  Rake::TestTask.new(:test) do |t|
@@ -178,7 +178,7 @@ module Sortifiable
178
178
  #{quoted_position_column} = CASE
179
179
  WHEN #{quoted_position_column} = #{current_position} THEN #{position}
180
180
  WHEN #{quoted_position_column} > #{current_position}
181
- AND #{quoted_position_column} < #{position} THEN #{quoted_position_column} - 1
181
+ AND #{quoted_position_column} <= #{position} THEN #{quoted_position_column} - 1
182
182
  WHEN #{quoted_position_column} < #{current_position}
183
183
  AND #{quoted_position_column} >= #{position} THEN #{quoted_position_column} + 1
184
184
  ELSE #{quoted_position_column}
@@ -242,7 +242,7 @@ module Sortifiable
242
242
  if in_list?
243
243
  list_class.transaction do
244
244
  ids = lock_list!
245
- current_position, last_position = ids.index(id) + 1, ids.size
245
+ current_position = ids.index(id) + 1
246
246
 
247
247
  if current_position > 1
248
248
  sql = <<-SQL
@@ -327,7 +327,7 @@ module Sortifiable
327
327
  if in_list?
328
328
  list_class.transaction do
329
329
  ids = lock_list!
330
- current_position, last_position = ids.index(id) + 1, ids.size
330
+ current_position = ids.index(id) + 1
331
331
 
332
332
  if current_position > 1
333
333
  sql = <<-SQL
@@ -354,7 +354,7 @@ module Sortifiable
354
354
  if in_list?
355
355
  list_class.transaction do
356
356
  ids = lock_list!
357
- current_position, last_position = ids.index(id) + 1, ids.size
357
+ current_position = ids.index(id) + 1
358
358
 
359
359
  sql = <<-SQL
360
360
  #{quoted_position_column} = CASE
@@ -1,3 +1,3 @@
1
1
  module Sortifiable
2
- VERSION = "0.2.6"
2
+ VERSION = "0.2.7"
3
3
  end
@@ -37,8 +37,7 @@ EOF
37
37
 
38
38
  s.add_dependency "activesupport", ">= 3.0"
39
39
  s.add_dependency "activerecord", ">= 3.0"
40
- s.add_development_dependency "bundler", ">= 1.0.18"
41
- s.add_development_dependency "mysql", "~> 2.8.1"
40
+ s.add_development_dependency "mysql", ">= 2.8.1"
42
41
  s.add_development_dependency "mysql2", ">= 0.2.7"
43
42
  s.add_development_dependency "pg", ">= 0.9.0"
44
43
  s.add_development_dependency "sqlite3", ">= 1.3.3"
@@ -104,36 +104,55 @@ class ListTest < ActiveSupport::TestCase
104
104
  def test_insert_at
105
105
  new = ListMixin.create(:parent_id => 20)
106
106
  assert_equal 1, new.pos
107
+ assert_equal [1], ListMixin.where(:parent_id => 20).map(&:pos)
107
108
 
108
109
  new = ListMixin.create(:parent_id => 20)
109
110
  assert_equal 2, new.pos
111
+ assert_equal [1, 2], ListMixin.where(:parent_id => 20).map(&:pos)
110
112
 
111
113
  new = ListMixin.create(:parent_id => 20)
112
114
  assert_equal 3, new.pos
115
+ assert_equal [1, 2, 3], ListMixin.where(:parent_id => 20).map(&:pos)
113
116
 
114
117
  new4 = ListMixin.create(:parent_id => 20)
115
118
  assert_equal 4, new4.pos
119
+ assert_equal [1, 2, 3, 4], ListMixin.where(:parent_id => 20).map(&:pos)
116
120
 
117
121
  new4.insert_at(3)
118
122
  assert_equal 3, new4.pos
123
+ assert_equal [1, 2, 3, 4], ListMixin.where(:parent_id => 20).map(&:pos)
119
124
 
120
125
  new.reload
121
126
  assert_equal 4, new.pos
127
+ assert_equal [1, 2, 3, 4], ListMixin.where(:parent_id => 20).map(&:pos)
122
128
 
123
129
  new.insert_at(2)
124
130
  assert_equal 2, new.pos
131
+ assert_equal [1, 2, 3, 4], ListMixin.where(:parent_id => 20).map(&:pos)
125
132
 
126
133
  new4.reload
127
134
  assert_equal 4, new4.pos
135
+ assert_equal [1, 2, 3, 4], ListMixin.where(:parent_id => 20).map(&:pos)
128
136
 
129
137
  new5 = ListMixin.create(:parent_id => 20)
130
138
  assert_equal 5, new5.pos
139
+ assert_equal [1, 2, 3, 4, 5], ListMixin.where(:parent_id => 20).map(&:pos)
131
140
 
132
141
  new5.insert_at(1)
133
142
  assert_equal 1, new5.pos
143
+ assert_equal [1, 2, 3, 4, 5], ListMixin.where(:parent_id => 20).map(&:pos)
134
144
 
135
145
  new4.reload
136
146
  assert_equal 5, new4.pos
147
+ assert_equal [1, 2, 3, 4, 5], ListMixin.where(:parent_id => 20).map(&:pos)
148
+
149
+ new.reload
150
+ assert_equal 3, new.pos
151
+ assert_equal [1, 2, 3, 4, 5], ListMixin.where(:parent_id => 20).map(&:pos)
152
+
153
+ new.insert_at(5)
154
+ assert_equal 5, new.pos
155
+ assert_equal [1, 2, 3, 4, 5], ListMixin.where(:parent_id => 20).map(&:pos)
137
156
  end
138
157
 
139
158
  def test_delete_middle
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sortifiable
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.6
4
+ version: 0.2.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-03-05 00:00:00.000000000 Z
12
+ date: 2013-02-23 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
16
- requirement: &2151822120 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *2151822120
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: activerecord
27
- requirement: &2151821600 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,32 +37,31 @@ dependencies:
32
37
  version: '3.0'
33
38
  type: :runtime
34
39
  prerelease: false
35
- version_requirements: *2151821600
36
- - !ruby/object:Gem::Dependency
37
- name: bundler
38
- requirement: &2151820980 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
39
41
  none: false
40
42
  requirements:
41
43
  - - ! '>='
42
44
  - !ruby/object:Gem::Version
43
- version: 1.0.18
44
- type: :development
45
- prerelease: false
46
- version_requirements: *2151820980
45
+ version: '3.0'
47
46
  - !ruby/object:Gem::Dependency
48
47
  name: mysql
49
- requirement: &2151820440 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
50
49
  none: false
51
50
  requirements:
52
- - - ~>
51
+ - - ! '>='
53
52
  - !ruby/object:Gem::Version
54
53
  version: 2.8.1
55
54
  type: :development
56
55
  prerelease: false
57
- version_requirements: *2151820440
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: 2.8.1
58
62
  - !ruby/object:Gem::Dependency
59
63
  name: mysql2
60
- requirement: &2151819900 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
61
65
  none: false
62
66
  requirements:
63
67
  - - ! '>='
@@ -65,10 +69,15 @@ dependencies:
65
69
  version: 0.2.7
66
70
  type: :development
67
71
  prerelease: false
68
- version_requirements: *2151819900
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: 0.2.7
69
78
  - !ruby/object:Gem::Dependency
70
79
  name: pg
71
- requirement: &2151819240 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
72
81
  none: false
73
82
  requirements:
74
83
  - - ! '>='
@@ -76,10 +85,15 @@ dependencies:
76
85
  version: 0.9.0
77
86
  type: :development
78
87
  prerelease: false
79
- version_requirements: *2151819240
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: 0.9.0
80
94
  - !ruby/object:Gem::Dependency
81
95
  name: sqlite3
82
- requirement: &2151818640 !ruby/object:Gem::Requirement
96
+ requirement: !ruby/object:Gem::Requirement
83
97
  none: false
84
98
  requirements:
85
99
  - - ! '>='
@@ -87,7 +101,12 @@ dependencies:
87
101
  version: 1.3.3
88
102
  type: :development
89
103
  prerelease: false
90
- version_requirements: *2151818640
104
+ version_requirements: !ruby/object:Gem::Requirement
105
+ none: false
106
+ requirements:
107
+ - - ! '>='
108
+ - !ruby/object:Gem::Version
109
+ version: 1.3.3
91
110
  description: ! 'This gem provides an acts_as_list compatible capability for sorting
92
111
 
93
112
  and reordering a number of objects in a list. The class that has this
@@ -129,15 +148,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
129
148
  - - ! '>='
130
149
  - !ruby/object:Gem::Version
131
150
  version: '0'
151
+ segments:
152
+ - 0
153
+ hash: -1709003177613176418
132
154
  required_rubygems_version: !ruby/object:Gem::Requirement
133
155
  none: false
134
156
  requirements:
135
157
  - - ! '>='
136
158
  - !ruby/object:Gem::Version
137
159
  version: '0'
160
+ segments:
161
+ - 0
162
+ hash: -1709003177613176418
138
163
  requirements: []
139
164
  rubyforge_project:
140
- rubygems_version: 1.8.10
165
+ rubygems_version: 1.8.25
141
166
  signing_key:
142
167
  specification_version: 3
143
168
  summary: Sort your models