acts_as_list 0.8.1 → 0.8.2

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a58bb02b59b9251aa9959060342f81fe5aa83467
4
- data.tar.gz: 6b8f6ba9c5f16cbe5a93cacb754b721b3dd40b56
3
+ metadata.gz: 5b311fb3c5f9b0839f22ff361020142db9c63045
4
+ data.tar.gz: 7600388596e829712e8936f9a31b70008ee7d18b
5
5
  SHA512:
6
- metadata.gz: 5c25e5a32b9def627747a36a7fe4e232ae946b3cde83039c4a893dfc4e8469808fc6ceefac353b4f6bd5e251eb6b0d28df3b00a0d8c69b7b2b1c96ce81eafb42
7
- data.tar.gz: 1494350922d065eab1cf1bd0309b56a9a0246055a0eb61f45401682f3f7fa21060ac8367b138a2e29644ba24de838864061a176d2e89711a676c76469d6e897a
6
+ metadata.gz: dc169373691b7a79c44393a368f4f589b04462c341f8f423f7eeedf846f29346dd3c6821f618287244a24ceafe04ebe416b4c6b6704f0be8470e69a1cd098a76
7
+ data.tar.gz: 748929065353ef8d675953d0469a4bd26ec8aee6921edfe6710b97186b25f75abc4a57bd648a2b076923cf5283e6dafb225ba0e6596efd21b23734897adc2f66
@@ -1,5 +1,17 @@
1
1
  # Change Log
2
2
 
3
+ ## [v0.8.1](https://github.com/swanandp/acts_as_list/tree/v0.8.1) (2016-09-06)
4
+ [Full Changelog](https://github.com/swanandp/acts_as_list/compare/v0.8.0...v0.8.1)
5
+
6
+ **Closed issues:**
7
+
8
+ - Rubinius Intermittent testing error [\#218](https://github.com/swanandp/acts_as_list/issues/218)
9
+ - ActiveRecord dependency causes rake assets:compile to fail without access to a database [\#84](https://github.com/swanandp/acts_as_list/issues/84)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - Refactor class\_eval with string into class\_eval with block [\#215](https://github.com/swanandp/acts_as_list/pull/215) ([rdvdijk](https://github.com/rdvdijk))
14
+
3
15
  ## [v0.8.0](https://github.com/swanandp/acts_as_list/tree/v0.8.0) (2016-08-23)
4
16
  [Full Changelog](https://github.com/swanandp/acts_as_list/compare/v0.7.7...v0.8.0)
5
17
 
@@ -75,7 +87,6 @@
75
87
  - Creating an item with a nil scope should not add it to the list [\#92](https://github.com/swanandp/acts_as_list/issues/92)
76
88
  - Performance Improvements [\#88](https://github.com/swanandp/acts_as_list/issues/88)
77
89
  - has\_many :through or has\_many\_and\_belongs\_to\_many support [\#86](https://github.com/swanandp/acts_as_list/issues/86)
78
- - ActiveRecord dependency causes rake assets:compile to fail without access to a database [\#84](https://github.com/swanandp/acts_as_list/issues/84)
79
90
  - move\_higher/move\_lower vs move\_to\_top/move\_to\_bottom act differently when item is already at top or bottom [\#77](https://github.com/swanandp/acts_as_list/issues/77)
80
91
  - Limiting the list size [\#61](https://github.com/swanandp/acts_as_list/issues/61)
81
92
  - Adding multiple creates strange ordering [\#55](https://github.com/swanandp/acts_as_list/issues/55)
@@ -266,7 +266,8 @@ module ActiveRecord
266
266
  limit ||= acts_as_list_list.count
267
267
  position_value = send(position_column)
268
268
  acts_as_list_list.
269
- where("#{quoted_position_column_with_table_name} < ?", position_value).
269
+ where("#{quoted_position_column_with_table_name} <= ?", position_value).
270
+ where("#{quoted_table_name}.#{self.class.primary_key} != ?", self.send(self.class.primary_key)).
270
271
  order("#{quoted_position_column_with_table_name} DESC").
271
272
  limit(limit)
272
273
  end
@@ -283,7 +284,8 @@ module ActiveRecord
283
284
  limit ||= acts_as_list_list.count
284
285
  position_value = send(position_column)
285
286
  acts_as_list_list.
286
- where("#{quoted_position_column_with_table_name} > ?", position_value).
287
+ where("#{quoted_position_column_with_table_name} >= ?", position_value).
288
+ where("#{quoted_table_name}.#{self.class.primary_key} != ?", self.send(self.class.primary_key)).
287
289
  order("#{quoted_position_column_with_table_name} ASC").
288
290
  limit(limit)
289
291
  end
@@ -468,7 +470,7 @@ module ActiveRecord
468
470
  end
469
471
 
470
472
  def update_positions
471
- old_position = send("#{position_column}_was").to_i
473
+ old_position = send("#{position_column}_was") || bottom_position_in_list + 1
472
474
  new_position = send(position_column).to_i
473
475
 
474
476
  return unless acts_as_list_list.where(
@@ -523,4 +525,4 @@ module ActiveRecord
523
525
  end
524
526
  end
525
527
  end
526
- end
528
+ end
@@ -1,7 +1,7 @@
1
1
  module ActiveRecord
2
2
  module Acts
3
3
  module List
4
- VERSION = '0.8.1'
4
+ VERSION = '0.8.2'
5
5
  end
6
6
  end
7
7
  end
@@ -85,6 +85,23 @@ module Shared
85
85
  assert_equal [], li1.higher_items
86
86
  end
87
87
 
88
+ def test_next_prev_groups_with_same_position
89
+ li1 = ListMixin.where(id: 1).first
90
+ li2 = ListMixin.where(id: 2).first
91
+ li3 = ListMixin.where(id: 3).first
92
+ li4 = ListMixin.where(id: 4).first
93
+
94
+ li3.update_column(:pos, 2) # Make the same position as li2
95
+
96
+ assert_equal [1, 2, 2, 4], ListMixin.pluck(:pos)
97
+
98
+ assert_equal [li3, li4], li2.lower_items
99
+ assert_equal [li2, li4], li3.lower_items
100
+
101
+ assert_equal [li3, li1], li2.higher_items
102
+ assert_equal [li2, li1], li3.higher_items
103
+ end
104
+
88
105
  def test_injection
89
106
  item = ListMixin.new("parent_id"=>1)
90
107
  assert_equal({ parent_id: 1 }, item.scope_condition)
@@ -748,3 +748,33 @@ class ActsAsListTopTest < ActsAsListTestCase
748
748
  assert_equal 0, ZeroBasedMixin.acts_as_list_top
749
749
  end
750
750
  end
751
+
752
+ class NilPositionTest < ActsAsListTestCase
753
+ def setup
754
+ setup_db
755
+ end
756
+
757
+ def test_nil_position_ordering
758
+ new1 = DefaultScopedMixin.create pos: nil
759
+ new2 = DefaultScopedMixin.create pos: nil
760
+ new3 = DefaultScopedMixin.create pos: nil
761
+ DefaultScopedMixin.update_all(pos: nil)
762
+
763
+ assert_equal [nil, nil, nil], DefaultScopedMixin.all.map(&:pos)
764
+
765
+ new1.reload.pos = 1
766
+ new1.save
767
+
768
+ new3.reload.pos = 1
769
+ new3.save
770
+
771
+ assert_equal [nil, 1, 2], DefaultScopedMixin.all.map(&:pos)
772
+ assert_equal [2, 3, 1], DefaultScopedMixin.all.map(&:id)
773
+
774
+ new2.reload.pos = 1
775
+ new2.save
776
+
777
+ assert_equal [1, 2, 3], DefaultScopedMixin.all.map(&:pos)
778
+ assert_equal [2, 3, 1], DefaultScopedMixin.all.map(&:id)
779
+ end
780
+ end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: acts_as_list
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.1
4
+ version: 0.8.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - David Heinemeier Hansson
@@ -10,7 +10,7 @@ authors:
10
10
  autorequire:
11
11
  bindir: bin
12
12
  cert_chain: []
13
- date: 2016-09-06 00:00:00.000000000 Z
13
+ date: 2016-09-23 00:00:00.000000000 Z
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
16
16
  name: activerecord