acts_as_tree 1.5.0 → 1.5.1

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: f4b7ecba20760317473e4fe15ae47804ad57ff68
4
- data.tar.gz: cface22965a3e581aded8ba0976226c11bcbcece
3
+ metadata.gz: 1c41a4e1bb7566bed286be2b6d709d809d1efab1
4
+ data.tar.gz: 4c3136bd0e036383541e9b28260918c8bcabd99e
5
5
  SHA512:
6
- metadata.gz: 10c6e09214046e11b68883211e46ddc1c8879771bb80ddd534eeba0466620f0d5c827f52378514af1db77add3464ca2c32b1207ab5b333a5062b015bd33e706f
7
- data.tar.gz: 9cbf66c8158e7037a77167c9279d91c6978129b93c7ff47e65a67e01bd771e2973a50ebf3434e7bfb83fe9cdfde4ed0edce5d2b9c29ce7b01b5cfc0d7bf68298
6
+ metadata.gz: da1d685d61ea99d02e4293ccca0e48630730b972b72d391b4b8669d27ab50aebbb3b07b9d8de57d1c415f2d52f4605f79c0045c77f9c4039b29ab186d5440b6a
7
+ data.tar.gz: 8a93205c2921f71a909dc6c16e651e47a4c2c4c5ab7dd9cd80f517b7413f7675c04b9e1eaff12289cd7b784c3c581056c8045cb70253380a90bacf3e3cdb648f
data/README.md CHANGED
@@ -8,8 +8,6 @@ ActsAsTree extends ActiveRecord to add simple support for organizing items into
8
8
 
9
9
  ```ruby
10
10
  class Category < ActiveRecord::Base
11
- include ActsAsTree
12
-
13
11
  acts_as_tree order: "name"
14
12
  end
15
13
 
@@ -27,7 +25,6 @@ We also have a convenient `Presentation` module you can mixin if you want a litt
27
25
 
28
26
  ```ruby
29
27
  class Category < ActiveRecord::Base
30
- include ActsAsTree
31
28
  extend ActsAsTree::Presentation
32
29
 
33
30
  acts_as_tree order: "name"
@@ -51,6 +48,8 @@ We no longer support Ruby 1.8 or versions of Rails/ActiveRecord older than 3.0.
51
48
  Moving forward we will do our best to support the latest versions of ActiveRecord and Ruby.
52
49
 
53
50
  ## Change Log
51
+ * 1.5.1 - March 28, 2014
52
+ * Fixing descendants modification bug. See #20 -- amerine, tmuerell
54
53
  * 1.5.0 - December 16th, 2013
55
54
  * `Added new descendants method` -- adamkleingit
56
55
  * Fixed warning message -- akicho8
@@ -86,6 +85,9 @@ Moving forward we will do our best to support the latest versions of ActiveRecor
86
85
  your own version, that is fine but bump version in a commit by itself so we can
87
86
  ignore when we pull)
88
87
  5. Send us a pull request. Bonus points for topic branches.
88
+ 6. All contributors to this project, after their first accepted patch, are given push
89
+ access to the repository and are welcome as full contributors to ActsAsTree. All
90
+ we ask is that all changes go through CI and a Pull Request before merging.
89
91
 
90
92
  ## License (MIT)
91
93
 
@@ -22,4 +22,5 @@ Gem::Specification.new do |s|
22
22
  # Dependencies (installed via 'bundle install')...
23
23
  s.add_development_dependency "sqlite3"
24
24
  s.add_development_dependency "rdoc"
25
+ s.add_development_dependency "minitest", "~> 4.7.5"
25
26
  end
@@ -152,7 +152,7 @@ module ActsAsTree
152
152
  #
153
153
  # root.descendants # => [child1, child2, subchild1, subchild2, subchild3, subchild4]
154
154
  def descendants
155
- children.each_with_object(children) {|child, arr|
155
+ children.each_with_object(children.to_a) {|child, arr|
156
156
  arr.concat child.descendants
157
157
  }.uniq
158
158
  end
@@ -1,3 +1,3 @@
1
1
  module ActsAsTree
2
- VERSION = "1.5.0"
2
+ VERSION = "1.5.1"
3
3
  end
@@ -1,8 +1,9 @@
1
- require 'test/unit'
1
+ require 'minitest/autorun'
2
+ require 'minitest/benchmark'
2
3
  require 'active_record'
3
4
  require 'acts_as_tree'
4
5
 
5
- class Test::Unit::TestCase
6
+ class MiniTest::Unit::TestCase
6
7
  def assert_queries(num = 1)
7
8
  $query_count = 0
8
9
  yield
@@ -62,7 +63,7 @@ class RecursivelyCascadedTreeMixin < Mixin
62
63
  has_one :first_child, class_name: 'RecursivelyCascadedTreeMixin', foreign_key: :parent_id
63
64
  end
64
65
 
65
- class TreeTest < Test::Unit::TestCase
66
+ class TreeTest < MiniTest::Unit::TestCase
66
67
 
67
68
  def setup
68
69
  setup_db
@@ -230,10 +231,58 @@ class TreeTest < Test::Unit::TestCase
230
231
  TreeMixin.tree_view(:id)
231
232
  assert_equal tree_view_outputs, $stdout.string
232
233
  end
234
+ end
235
+
236
+ class TestDeepDescendantsPerformance < MiniTest::Unit::TestCase
237
+ def setup
238
+ teardown_db
239
+ setup_db
240
+ @root1 = TreeMixin.create!
241
+ create_cascade_children @root1, "root1", 10
242
+
243
+ @root2 = TreeMixin.create!
244
+ create_cascade_children @root2, "root2", 20
245
+
246
+ @root3 = TreeMixin.create!
247
+ create_cascade_children @root3, "root3", 30
248
+
249
+ @root4 = TreeMixin.create!
250
+ create_cascade_children @root4, "root4", 40
251
+
252
+ @root5 = TreeMixin.create!
253
+ create_cascade_children @root5, "root5", 50
254
+ end
233
255
 
256
+ def teardown
257
+ teardown_db
258
+ end
259
+
260
+ def self.bench_range
261
+ [1, 2, 3, 4, 5]
262
+ end
263
+
264
+ def bench_descendants
265
+ assert_performance_linear 0.99 do |x|
266
+ obj = instance_variable_get "@root#{x}"
267
+ obj.descendants
268
+ end
269
+ end
270
+
271
+ def create_cascade_children parent, parent_name, count
272
+ first_child_name = "@#{parent_name}_child1"
273
+ first_record = TreeMixin.create! parent_id: parent.id
274
+ instance_variable_set first_child_name, first_record
275
+
276
+ (2...count).each do |child_count|
277
+ name = "@#{parent_name}_child#{child_count}"
278
+ prev = instance_variable_get "@#{parent_name}_child#{child_count - 1}"
279
+ new_record = TreeMixin.create! parent_id: prev.id
280
+ instance_variable_set name, new_record
281
+ end
282
+ end
234
283
  end
235
284
 
236
- class TreeTestWithEagerLoading < Test::Unit::TestCase
285
+ class TreeTestWithEagerLoading < MiniTest::Unit::TestCase
237
286
 
238
287
  def setup
239
288
  teardown_db
@@ -294,7 +343,7 @@ class TreeTestWithEagerLoading < Test::Unit::TestCase
294
343
  end
295
344
  end
296
345
 
297
- class TreeTestWithoutOrder < Test::Unit::TestCase
346
+ class TreeTestWithoutOrder < MiniTest::Unit::TestCase
298
347
 
299
348
  def setup
300
349
  setup_db
@@ -315,7 +364,7 @@ class TreeTestWithoutOrder < Test::Unit::TestCase
315
364
  end
316
365
  end
317
366
 
318
- class UnsavedTreeTest < Test::Unit::TestCase
367
+ class UnsavedTreeTest < MiniTest::Unit::TestCase
319
368
  def setup
320
369
  setup_db
321
370
  @root = TreeMixin.new
@@ -333,7 +382,7 @@ class UnsavedTreeTest < Test::Unit::TestCase
333
382
  end
334
383
 
335
384
 
336
- class TreeTestWithCounterCache < Test::Unit::TestCase
385
+ class TreeTestWithCounterCache < MiniTest::Unit::TestCase
337
386
  def setup
338
387
  teardown_db
339
388
  setup_db
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.0
4
+ version: 1.5.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Erik Dahlstrand
@@ -11,50 +11,64 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2013-12-16 00:00:00.000000000 Z
14
+ date: 2014-03-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: activerecord
18
18
  requirement: !ruby/object:Gem::Requirement
19
19
  requirements:
20
- - - '>='
20
+ - - ">="
21
21
  - !ruby/object:Gem::Version
22
22
  version: 3.0.0
23
23
  type: :runtime
24
24
  prerelease: false
25
25
  version_requirements: !ruby/object:Gem::Requirement
26
26
  requirements:
27
- - - '>='
27
+ - - ">="
28
28
  - !ruby/object:Gem::Version
29
29
  version: 3.0.0
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: sqlite3
32
32
  requirement: !ruby/object:Gem::Requirement
33
33
  requirements:
34
- - - '>='
34
+ - - ">="
35
35
  - !ruby/object:Gem::Version
36
36
  version: '0'
37
37
  type: :development
38
38
  prerelease: false
39
39
  version_requirements: !ruby/object:Gem::Requirement
40
40
  requirements:
41
- - - '>='
41
+ - - ">="
42
42
  - !ruby/object:Gem::Version
43
43
  version: '0'
44
44
  - !ruby/object:Gem::Dependency
45
45
  name: rdoc
46
46
  requirement: !ruby/object:Gem::Requirement
47
47
  requirements:
48
- - - '>='
48
+ - - ">="
49
49
  - !ruby/object:Gem::Version
50
50
  version: '0'
51
51
  type: :development
52
52
  prerelease: false
53
53
  version_requirements: !ruby/object:Gem::Requirement
54
54
  requirements:
55
- - - '>='
55
+ - - ">="
56
56
  - !ruby/object:Gem::Version
57
57
  version: '0'
58
+ - !ruby/object:Gem::Dependency
59
+ name: minitest
60
+ requirement: !ruby/object:Gem::Requirement
61
+ requirements:
62
+ - - "~>"
63
+ - !ruby/object:Gem::Version
64
+ version: 4.7.5
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - "~>"
70
+ - !ruby/object:Gem::Version
71
+ version: 4.7.5
58
72
  description: A gem that adds simple support for organizing ActiveRecord models into
59
73
  parent–children relationships.
60
74
  email:
@@ -65,8 +79,8 @@ executables: []
65
79
  extensions: []
66
80
  extra_rdoc_files: []
67
81
  files:
68
- - .gitignore
69
- - .travis.yml
82
+ - ".gitignore"
83
+ - ".travis.yml"
70
84
  - Gemfile
71
85
  - README.md
72
86
  - Rakefile
@@ -85,22 +99,22 @@ licenses: []
85
99
  metadata: {}
86
100
  post_install_message:
87
101
  rdoc_options:
88
- - --charset=UTF-8
102
+ - "--charset=UTF-8"
89
103
  require_paths:
90
104
  - lib
91
105
  required_ruby_version: !ruby/object:Gem::Requirement
92
106
  requirements:
93
- - - '>='
107
+ - - ">="
94
108
  - !ruby/object:Gem::Version
95
109
  version: '0'
96
110
  required_rubygems_version: !ruby/object:Gem::Requirement
97
111
  requirements:
98
- - - '>='
112
+ - - ">="
99
113
  - !ruby/object:Gem::Version
100
114
  version: '0'
101
115
  requirements: []
102
116
  rubyforge_project:
103
- rubygems_version: 2.1.10
117
+ rubygems_version: 2.2.2
104
118
  signing_key:
105
119
  specification_version: 4
106
120
  summary: Provides a simple tree behaviour to active_record models.