sortifiable 0.2.5 → 0.2.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/CHANGELOG CHANGED
@@ -1,3 +1,8 @@
1
+ *0.2.6 (March 5th, 2012)
2
+
3
+ * Ensure that the default scope is ignored when performing list updates
4
+
5
+
1
6
  *0.2.5 (September 11th, 2011)
2
7
 
3
8
  * Don't rely on the current position attribute as it may be stale
data/lib/sortifiable.rb CHANGED
@@ -476,7 +476,7 @@ module Sortifiable
476
476
  end
477
477
 
478
478
  def update_position(new_position) #:nodoc:
479
- list_class.update_all({ position_column => new_position }, { list_class.primary_key => id })
479
+ base_scope.update_all({ position_column => new_position }, { list_class.primary_key => id })
480
480
  set_position new_position
481
481
  end
482
482
  end
@@ -1,3 +1,3 @@
1
1
  module Sortifiable
2
- VERSION = "0.2.5"
2
+ VERSION = "0.2.6"
3
3
  end
@@ -827,3 +827,54 @@ class AssociationScopeListTest < ActiveSupport::TestCase
827
827
  end
828
828
 
829
829
  end
830
+
831
+ class DefaultScopeListTest < ActiveSupport::TestCase
832
+
833
+ def setup
834
+ [5, 6].each do |parent_id|
835
+ (1..4).each do |i|
836
+ ParanoidMixin.create! :pos => i, :parent_id => parent_id
837
+ end
838
+ end
839
+ end
840
+
841
+ def relation
842
+ ParanoidMixin.where(:parent_id => 5).where('pos IS NOT NULL')
843
+ end
844
+
845
+ def test_default_scope_is_ignored_when_updating_position
846
+
847
+ assert_equal [1, 2, 3, 4], relation.map(&:id)
848
+
849
+ ParanoidMixin.find(3).destroy
850
+ assert_equal [1, 2, 4], relation.map(&:id)
851
+
852
+ ParanoidMixin.find(4).move_to_top
853
+ assert_equal [4, 1, 2], relation.map(&:id)
854
+
855
+ ParanoidMixin.find(2).move_to_bottom
856
+ assert_equal [4, 1, 2], relation.map(&:id)
857
+
858
+ ParanoidMixin.find(1).remove_from_list
859
+ assert_equal false, ParanoidMixin.find(1).in_list?
860
+ assert_equal [4, 2], relation.map(&:id)
861
+
862
+ ParanoidMixin.find(1).add_to_list
863
+ assert_equal true, ParanoidMixin.find(1).in_list?
864
+ assert_equal [4, 2, 1], relation.map(&:id)
865
+
866
+ ParanoidMixin.deleted.find(3).remove_from_list
867
+ assert_equal false, ParanoidMixin.deleted.find(3).in_list?
868
+ assert_equal [4, 2, 1], relation.map(&:id)
869
+
870
+ ParanoidMixin.deleted.find(3).add_to_list
871
+ assert_equal true, ParanoidMixin.deleted.find(3).in_list?
872
+ assert_equal [4, 2, 1], relation.map(&:id)
873
+
874
+ ParanoidMixin.deleted.find(3).restore
875
+ assert_equal [4, 2, 1, 3], relation.map(&:id)
876
+ assert_equal [1, 2, 3, 4], relation.map(&:pos)
877
+
878
+ end
879
+
880
+ end
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.5
4
+ version: 0.2.6
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,12 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2011-09-11 00:00:00.000000000 +01:00
13
- default_executable:
12
+ date: 2012-03-05 00:00:00.000000000 Z
14
13
  dependencies:
15
14
  - !ruby/object:Gem::Dependency
16
15
  name: activesupport
17
- requirement: &2161594080 !ruby/object:Gem::Requirement
16
+ requirement: &2151822120 !ruby/object:Gem::Requirement
18
17
  none: false
19
18
  requirements:
20
19
  - - ! '>='
@@ -22,10 +21,10 @@ dependencies:
22
21
  version: '3.0'
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *2161594080
24
+ version_requirements: *2151822120
26
25
  - !ruby/object:Gem::Dependency
27
26
  name: activerecord
28
- requirement: &2161593620 !ruby/object:Gem::Requirement
27
+ requirement: &2151821600 !ruby/object:Gem::Requirement
29
28
  none: false
30
29
  requirements:
31
30
  - - ! '>='
@@ -33,10 +32,10 @@ dependencies:
33
32
  version: '3.0'
34
33
  type: :runtime
35
34
  prerelease: false
36
- version_requirements: *2161593620
35
+ version_requirements: *2151821600
37
36
  - !ruby/object:Gem::Dependency
38
37
  name: bundler
39
- requirement: &2161593160 !ruby/object:Gem::Requirement
38
+ requirement: &2151820980 !ruby/object:Gem::Requirement
40
39
  none: false
41
40
  requirements:
42
41
  - - ! '>='
@@ -44,10 +43,10 @@ dependencies:
44
43
  version: 1.0.18
45
44
  type: :development
46
45
  prerelease: false
47
- version_requirements: *2161593160
46
+ version_requirements: *2151820980
48
47
  - !ruby/object:Gem::Dependency
49
48
  name: mysql
50
- requirement: &2161592700 !ruby/object:Gem::Requirement
49
+ requirement: &2151820440 !ruby/object:Gem::Requirement
51
50
  none: false
52
51
  requirements:
53
52
  - - ~>
@@ -55,10 +54,10 @@ dependencies:
55
54
  version: 2.8.1
56
55
  type: :development
57
56
  prerelease: false
58
- version_requirements: *2161592700
57
+ version_requirements: *2151820440
59
58
  - !ruby/object:Gem::Dependency
60
59
  name: mysql2
61
- requirement: &2161592240 !ruby/object:Gem::Requirement
60
+ requirement: &2151819900 !ruby/object:Gem::Requirement
62
61
  none: false
63
62
  requirements:
64
63
  - - ! '>='
@@ -66,10 +65,10 @@ dependencies:
66
65
  version: 0.2.7
67
66
  type: :development
68
67
  prerelease: false
69
- version_requirements: *2161592240
68
+ version_requirements: *2151819900
70
69
  - !ruby/object:Gem::Dependency
71
70
  name: pg
72
- requirement: &2161591780 !ruby/object:Gem::Requirement
71
+ requirement: &2151819240 !ruby/object:Gem::Requirement
73
72
  none: false
74
73
  requirements:
75
74
  - - ! '>='
@@ -77,10 +76,10 @@ dependencies:
77
76
  version: 0.9.0
78
77
  type: :development
79
78
  prerelease: false
80
- version_requirements: *2161591780
79
+ version_requirements: *2151819240
81
80
  - !ruby/object:Gem::Dependency
82
81
  name: sqlite3
83
- requirement: &2161591320 !ruby/object:Gem::Requirement
82
+ requirement: &2151818640 !ruby/object:Gem::Requirement
84
83
  none: false
85
84
  requirements:
86
85
  - - ! '>='
@@ -88,7 +87,7 @@ dependencies:
88
87
  version: 1.3.3
89
88
  type: :development
90
89
  prerelease: false
91
- version_requirements: *2161591320
90
+ version_requirements: *2151818640
92
91
  description: ! 'This gem provides an acts_as_list compatible capability for sorting
93
92
 
94
93
  and reordering a number of objects in a list. The class that has this
@@ -118,7 +117,6 @@ files:
118
117
  - lib/sortifiable/version.rb
119
118
  - sortifiable.gemspec
120
119
  - test/sortifiable_test.rb
121
- has_rdoc: true
122
120
  homepage: http://github.com/pixeltrix/sortifiable/
123
121
  licenses: []
124
122
  post_install_message:
@@ -139,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
137
  version: '0'
140
138
  requirements: []
141
139
  rubyforge_project:
142
- rubygems_version: 1.6.2
140
+ rubygems_version: 1.8.10
143
141
  signing_key:
144
142
  specification_version: 3
145
143
  summary: Sort your models