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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 1c41a4e1bb7566bed286be2b6d709d809d1efab1
4
- data.tar.gz: 4c3136bd0e036383541e9b28260918c8bcabd99e
3
+ metadata.gz: 67e739d15a0e45a13063f0a4d18a2d4b44de1d9e
4
+ data.tar.gz: a2625316f1ff34237ecd2c131f4720e7cf47fe2c
5
5
  SHA512:
6
- metadata.gz: da1d685d61ea99d02e4293ccca0e48630730b972b72d391b4b8669d27ab50aebbb3b07b9d8de57d1c415f2d52f4605f79c0045c77f9c4039b29ab186d5440b6a
7
- data.tar.gz: 8a93205c2921f71a909dc6c16e651e47a4c2c4c5ab7dd9cd80f517b7413f7675c04b9e1eaff12289cd7b784c3c581056c8045cb70253380a90bacf3e3cdb648f
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
- * `Added new descendants method` -- adamkleingit
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
@@ -94,15 +94,35 @@ module ActsAsTree
94
94
 
95
95
  after_update :update_parents_counter_cache
96
96
 
97
- def self.roots
97
+ def self.default_tree_order
98
98
  order_option = %Q{#{configuration.fetch :order, "nil"}}
99
- where(:#{configuration[:foreign_key]} => nil).order(order_option)
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
@@ -1,3 +1,3 @@
1
1
  module ActsAsTree
2
- VERSION = "1.5.1"
2
+ VERSION = "1.6.0"
3
3
  end
@@ -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.5.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-03-28 00:00:00.000000000 Z
14
+ date: 2014-04-21 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activerecord