acts_as_tree 1.5.1 → 1.6.0
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 +4 -4
- data/README.md +3 -1
- data/lib/acts_as_tree.rb +22 -2
- data/lib/acts_as_tree/version.rb +1 -1
- data/test/acts_as_tree_test.rb +13 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 67e739d15a0e45a13063f0a4d18a2d4b44de1d9e
|
4
|
+
data.tar.gz: a2625316f1ff34237ecd2c131f4720e7cf47fe2c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 02a256b253af5f240d9576a3e0c50adf0c50ba8a8ed6cc502b0b1d021f9a10e21444bba6e202083e51987fa35a1ee7e19bb04e98c7b20ccef61cf34ebd67aa73
|
7
|
+
data.tar.gz: b27d9dc1cf52e55f8db87a0ff7e139b3e3770859610b0cccdd417485782b697f68e4d98d0c3d2c3d756428696568a56c81d71970a80a42adf18cad36007df181
|
data/README.md
CHANGED
@@ -48,10 +48,12 @@ We no longer support Ruby 1.8 or versions of Rails/ActiveRecord older than 3.0.
|
|
48
48
|
Moving forward we will do our best to support the latest versions of ActiveRecord and Ruby.
|
49
49
|
|
50
50
|
## Change Log
|
51
|
+
* 1.6.0 - April 21, 2014
|
52
|
+
* Added new `leaves` method. See #23 -- MichalPokorny
|
51
53
|
* 1.5.1 - March 28, 2014
|
52
54
|
* Fixing descendants modification bug. See #20 -- amerine, tmuerell
|
53
55
|
* 1.5.0 - December 16th, 2013
|
54
|
-
*
|
56
|
+
* Added new `descendants` method -- adamkleingit
|
55
57
|
* Fixed warning message -- akicho8
|
56
58
|
* 1.4.0 - June 25th, 2013
|
57
59
|
* `Presentation#tree_view` -- rainchen
|
data/lib/acts_as_tree.rb
CHANGED
@@ -94,15 +94,35 @@ module ActsAsTree
|
|
94
94
|
|
95
95
|
after_update :update_parents_counter_cache
|
96
96
|
|
97
|
-
def self.
|
97
|
+
def self.default_tree_order
|
98
98
|
order_option = %Q{#{configuration.fetch :order, "nil"}}
|
99
|
-
|
99
|
+
order(order_option)
|
100
100
|
end
|
101
101
|
|
102
102
|
def self.root
|
103
103
|
self.roots.first
|
104
104
|
end
|
105
|
+
|
106
|
+
def self.roots
|
107
|
+
where(:#{configuration[:foreign_key]} => nil).default_tree_order
|
108
|
+
end
|
105
109
|
EOV
|
110
|
+
|
111
|
+
if configuration[:counter_cache]
|
112
|
+
class_eval <<-EOV
|
113
|
+
def self.leaves
|
114
|
+
where(:children_count => 0).default_tree_order
|
115
|
+
end
|
116
|
+
EOV
|
117
|
+
else
|
118
|
+
# Fallback to less efficent ways to find leaves.
|
119
|
+
class_eval <<-EOV
|
120
|
+
def self.leaves
|
121
|
+
internal_ids = select(:#{configuration[:foreign_key]}).where(arel_table[:#{configuration[:foreign_key]}].not_eq(nil))
|
122
|
+
where("id NOT IN (\#{internal_ids.to_sql})").default_tree_order
|
123
|
+
end
|
124
|
+
EOV
|
125
|
+
end
|
106
126
|
end
|
107
127
|
|
108
128
|
end
|
data/lib/acts_as_tree/version.rb
CHANGED
data/test/acts_as_tree_test.rb
CHANGED
@@ -67,6 +67,7 @@ class TreeTest < MiniTest::Unit::TestCase
|
|
67
67
|
|
68
68
|
def setup
|
69
69
|
setup_db
|
70
|
+
|
70
71
|
@root1 = TreeMixin.create!
|
71
72
|
@root_child1 = TreeMixin.create! parent_id: @root1.id
|
72
73
|
@child1_child = TreeMixin.create! parent_id: @root_child1.id
|
@@ -139,6 +140,14 @@ class TreeTest < MiniTest::Unit::TestCase
|
|
139
140
|
assert_equal [@root1, @root2, @root3], TreeMixin.roots
|
140
141
|
end
|
141
142
|
|
143
|
+
def test_leaves
|
144
|
+
assert_equal [@child1_child_child, @root_child2, @root2, @root3], TreeMixin.leaves
|
145
|
+
end
|
146
|
+
|
147
|
+
def test_default_tree_order
|
148
|
+
assert_equal [@root1, @root_child1, @child1_child, @child1_child_child, @root_child2, @root2, @root3], TreeMixin.default_tree_order
|
149
|
+
end
|
150
|
+
|
142
151
|
def test_siblings
|
143
152
|
assert_equal [@root2, @root3], @root1.siblings
|
144
153
|
assert_equal [@root_child2], @root_child1.siblings
|
@@ -262,6 +271,7 @@ class TestDeepDescendantsPerformance < MiniTest::Unit::TestCase
|
|
262
271
|
end
|
263
272
|
|
264
273
|
def bench_descendants
|
274
|
+
skip("until I deal with the performance difference on travis")
|
265
275
|
assert_performance_linear 0.99 do |x|
|
266
276
|
obj = instance_variable_get "@root#{x}"
|
267
277
|
obj.descendants
|
@@ -407,4 +417,7 @@ class TreeTestWithCounterCache < MiniTest::Unit::TestCase
|
|
407
417
|
assert_equal 0, @child1.reload.children_count
|
408
418
|
end
|
409
419
|
|
420
|
+
def test_leaves
|
421
|
+
assert_equal [@child1_child1, @child2], TreeMixinWithCounterCache.leaves
|
422
|
+
end
|
410
423
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Erik Dahlstrand
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2014-
|
14
|
+
date: 2014-04-21 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: activerecord
|