acts_as_better_tree 0.9.3 → 0.9.4
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/.DS_Store +0 -0
- data/Gemfile.lock +106 -0
- data/acts_as_better_tree-0.0.1.gem +0 -0
- data/acts_as_better_tree-0.9.3.gem +0 -0
- data/acts_as_better_tree.gemspec +1 -1
- data/gemtest +0 -0
- data/lib/acts_as_better_tree/version.rb +1 -1
- data/spec/acts_as_better_tree_spec.rb +72 -0
- data/spec/factories/categories.rb +10 -0
- data/spec/spec_helper.rb +12 -0
- metadata +14 -4
- data/.gitignore +0 -17
data/.DS_Store
ADDED
Binary file
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,106 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
acts_as_better_tree (0.0.1)
|
5
|
+
|
6
|
+
GEM
|
7
|
+
remote: https://rubygems.org/
|
8
|
+
specs:
|
9
|
+
actionmailer (3.2.7)
|
10
|
+
actionpack (= 3.2.7)
|
11
|
+
mail (~> 2.4.4)
|
12
|
+
actionpack (3.2.7)
|
13
|
+
activemodel (= 3.2.7)
|
14
|
+
activesupport (= 3.2.7)
|
15
|
+
builder (~> 3.0.0)
|
16
|
+
erubis (~> 2.7.0)
|
17
|
+
journey (~> 1.0.4)
|
18
|
+
rack (~> 1.4.0)
|
19
|
+
rack-cache (~> 1.2)
|
20
|
+
rack-test (~> 0.6.1)
|
21
|
+
sprockets (~> 2.1.3)
|
22
|
+
activemodel (3.2.7)
|
23
|
+
activesupport (= 3.2.7)
|
24
|
+
builder (~> 3.0.0)
|
25
|
+
activerecord (3.2.7)
|
26
|
+
activemodel (= 3.2.7)
|
27
|
+
activesupport (= 3.2.7)
|
28
|
+
arel (~> 3.0.2)
|
29
|
+
tzinfo (~> 0.3.29)
|
30
|
+
activeresource (3.2.7)
|
31
|
+
activemodel (= 3.2.7)
|
32
|
+
activesupport (= 3.2.7)
|
33
|
+
activesupport (3.2.7)
|
34
|
+
i18n (~> 0.6)
|
35
|
+
multi_json (~> 1.0)
|
36
|
+
arel (3.0.2)
|
37
|
+
builder (3.0.0)
|
38
|
+
diff-lcs (1.1.3)
|
39
|
+
erubis (2.7.0)
|
40
|
+
factory_girl (3.6.1)
|
41
|
+
activesupport (>= 3.0.0)
|
42
|
+
hike (1.2.1)
|
43
|
+
i18n (0.6.0)
|
44
|
+
journey (1.0.4)
|
45
|
+
json (1.7.4)
|
46
|
+
mail (2.4.4)
|
47
|
+
i18n (>= 0.4.0)
|
48
|
+
mime-types (~> 1.16)
|
49
|
+
treetop (~> 1.4.8)
|
50
|
+
mime-types (1.19)
|
51
|
+
multi_json (1.3.6)
|
52
|
+
polyglot (0.3.3)
|
53
|
+
rack (1.4.1)
|
54
|
+
rack-cache (1.2)
|
55
|
+
rack (>= 0.4)
|
56
|
+
rack-ssl (1.3.2)
|
57
|
+
rack
|
58
|
+
rack-test (0.6.1)
|
59
|
+
rack (>= 1.0)
|
60
|
+
rails (3.2.7)
|
61
|
+
actionmailer (= 3.2.7)
|
62
|
+
actionpack (= 3.2.7)
|
63
|
+
activerecord (= 3.2.7)
|
64
|
+
activeresource (= 3.2.7)
|
65
|
+
activesupport (= 3.2.7)
|
66
|
+
bundler (~> 1.0)
|
67
|
+
railties (= 3.2.7)
|
68
|
+
railties (3.2.7)
|
69
|
+
actionpack (= 3.2.7)
|
70
|
+
activesupport (= 3.2.7)
|
71
|
+
rack-ssl (~> 1.3.2)
|
72
|
+
rake (>= 0.8.7)
|
73
|
+
rdoc (~> 3.4)
|
74
|
+
thor (>= 0.14.6, < 2.0)
|
75
|
+
rake (0.9.2.2)
|
76
|
+
rdoc (3.12)
|
77
|
+
json (~> 1.4)
|
78
|
+
rspec (2.11.0)
|
79
|
+
rspec-core (~> 2.11.0)
|
80
|
+
rspec-expectations (~> 2.11.0)
|
81
|
+
rspec-mocks (~> 2.11.0)
|
82
|
+
rspec-core (2.11.1)
|
83
|
+
rspec-expectations (2.11.2)
|
84
|
+
diff-lcs (~> 1.1.3)
|
85
|
+
rspec-mocks (2.11.1)
|
86
|
+
sprockets (2.1.3)
|
87
|
+
hike (~> 1.2)
|
88
|
+
rack (~> 1.0)
|
89
|
+
tilt (~> 1.1, != 1.3.0)
|
90
|
+
sqlite3 (1.3.6)
|
91
|
+
thor (0.15.4)
|
92
|
+
tilt (1.3.3)
|
93
|
+
treetop (1.4.10)
|
94
|
+
polyglot
|
95
|
+
polyglot (>= 0.3.1)
|
96
|
+
tzinfo (0.3.33)
|
97
|
+
|
98
|
+
PLATFORMS
|
99
|
+
ruby
|
100
|
+
|
101
|
+
DEPENDENCIES
|
102
|
+
acts_as_better_tree!
|
103
|
+
factory_girl
|
104
|
+
rails (>= 3.2.5)
|
105
|
+
rspec
|
106
|
+
sqlite3
|
Binary file
|
Binary file
|
data/acts_as_better_tree.gemspec
CHANGED
@@ -6,7 +6,7 @@ Gem::Specification.new do |gem|
|
|
6
6
|
gem.email = ["isaac@isaacsloan.com"]
|
7
7
|
gem.description = %q{acts_as_better_tree is great for anyone who needs a fast tree capable of handling millions of nodes without slowing down on writes like nestedset or on reads like a standard tree.}
|
8
8
|
gem.summary = %q{acts_as_better_tree is backwards compatible with acts_as_tree and remains fast with large datasets by storing the ancestry of every node in the field csv_ids.}
|
9
|
-
gem.homepage = ""
|
9
|
+
gem.homepage = "https://github.com/isaacsloan/acts_as_better_tree"
|
10
10
|
|
11
11
|
gem.files = `git ls-files`.split($\)
|
12
12
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
data/gemtest
ADDED
Binary file
|
@@ -0,0 +1,72 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
ActiveRecord::Base::establish_connection(:adapter => "sqlite3", :dbfile => ":memory:", :database => "gemtest")
|
4
|
+
$stdout = StringIO.new
|
5
|
+
|
6
|
+
def setup_db
|
7
|
+
ActiveRecord::Base.logger
|
8
|
+
ActiveRecord::Schema.define(:version => 1) do
|
9
|
+
create_table :categories do |t|
|
10
|
+
t.column :root_id, :integer
|
11
|
+
t.column :parent_id, :integer
|
12
|
+
t.column :csv_ids, :string
|
13
|
+
t.column :name, :string
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
def teardown_db
|
19
|
+
ActiveRecord::Base.connection.tables.each do |table|
|
20
|
+
ActiveRecord::Base.connection.drop_table(table)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
class Category < ActiveRecord::Base
|
25
|
+
acts_as_better_tree
|
26
|
+
end
|
27
|
+
|
28
|
+
describe "ActsAsBetterTree" do
|
29
|
+
before :all do
|
30
|
+
teardown_db
|
31
|
+
setup_db
|
32
|
+
Category.create(name: "Animals")
|
33
|
+
end
|
34
|
+
|
35
|
+
describe "#roots" do
|
36
|
+
it "should find at least one root" do
|
37
|
+
Category.roots.size.should >= 1
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
it "should make node child of parent" do
|
42
|
+
cat = Category.create(:name => "Cats", :parent_id => Category.roots.first.id)
|
43
|
+
lion = Category.create(:name => "Lions")
|
44
|
+
lion.move_to_child_of(cat)
|
45
|
+
lion.parent.should eql cat
|
46
|
+
end
|
47
|
+
|
48
|
+
it "returns children of node" do
|
49
|
+
cats = Category.find_by_name("Cats")
|
50
|
+
Category.create(:name => "Tiger", :parent => cats)
|
51
|
+
Category.create(:name => "House Cat", :parent => cats)
|
52
|
+
Category.create(:name => "Panther", :parent => cats)
|
53
|
+
cats.children.count.should eql 4
|
54
|
+
end
|
55
|
+
|
56
|
+
it "returns self and ancestors" do
|
57
|
+
tiger = Category.find_by_name("Tiger")
|
58
|
+
tiger.self_and_ancestors.map(&:name).should eql ["Animals", "Cats", "Tiger"]
|
59
|
+
end
|
60
|
+
|
61
|
+
it "returns self and siblings" do
|
62
|
+
tiger = Category.find_by_name("Tiger")
|
63
|
+
tiger.self_and_siblings.map(&:name).should eql ["Lions", "Tiger", "House Cat", "Panther"]
|
64
|
+
end
|
65
|
+
|
66
|
+
it "creates a node as child of parent" do
|
67
|
+
cats = Category.find_by_name("Cats")
|
68
|
+
bobcats = cats.children.create(:name => "Bobcats")
|
69
|
+
bobcats.parent.name.should eql "Cats"
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'active_record'
|
3
|
+
require 'factory_girl'
|
4
|
+
require 'acts_as_better_tree'
|
5
|
+
|
6
|
+
# Requires supporting files with custom matchers and macros, etc,
|
7
|
+
# in ./support/ and its subdirectories.
|
8
|
+
Dir["#{File.dirname(__FILE__)}/support/**/*.rb"].each {|f| require f}
|
9
|
+
|
10
|
+
RSpec.configure do |config|
|
11
|
+
|
12
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: acts_as_better_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -20,15 +20,22 @@ executables: []
|
|
20
20
|
extensions: []
|
21
21
|
extra_rdoc_files: []
|
22
22
|
files:
|
23
|
-
- .
|
23
|
+
- .DS_Store
|
24
24
|
- Gemfile
|
25
|
+
- Gemfile.lock
|
25
26
|
- LICENSE
|
26
27
|
- README.md
|
27
28
|
- Rakefile
|
29
|
+
- acts_as_better_tree-0.0.1.gem
|
30
|
+
- acts_as_better_tree-0.9.3.gem
|
28
31
|
- acts_as_better_tree.gemspec
|
32
|
+
- gemtest
|
29
33
|
- lib/acts_as_better_tree.rb
|
30
34
|
- lib/acts_as_better_tree/version.rb
|
31
|
-
|
35
|
+
- spec/acts_as_better_tree_spec.rb
|
36
|
+
- spec/factories/categories.rb
|
37
|
+
- spec/spec_helper.rb
|
38
|
+
homepage: https://github.com/isaacsloan/acts_as_better_tree
|
32
39
|
licenses: []
|
33
40
|
post_install_message:
|
34
41
|
rdoc_options: []
|
@@ -53,4 +60,7 @@ signing_key:
|
|
53
60
|
specification_version: 3
|
54
61
|
summary: acts_as_better_tree is backwards compatible with acts_as_tree and remains
|
55
62
|
fast with large datasets by storing the ancestry of every node in the field csv_ids.
|
56
|
-
test_files:
|
63
|
+
test_files:
|
64
|
+
- spec/acts_as_better_tree_spec.rb
|
65
|
+
- spec/factories/categories.rb
|
66
|
+
- spec/spec_helper.rb
|