ramdiv-mongo_mapper_acts_as_tree 0.0.1 → 0.0.2
Sign up to get free protection for your applications and to get access to all the features.
- data/README.rdoc +3 -2
- data/VERSION +1 -1
- data/lib/mongo_mapper_acts_as_tree.rb +7 -7
- data/ramdiv-mongo_mapper_acts_as_tree.gemspec +2 -2
- data/test/test_order.rb +2 -2
- data/test/test_tree.rb +16 -13
- metadata +2 -2
data/README.rdoc
CHANGED
@@ -28,9 +28,10 @@ The method accepts :parent_id_field, :path_field, :depth_field, :order as a hash
|
|
28
28
|
|
29
29
|
Check the test_tree.rb for examples.
|
30
30
|
|
31
|
-
==
|
31
|
+
== About bugs
|
32
|
+
|
33
|
+
Use it. If you find any bugs, contact me (if possible with a test case) or patch it yourself (see next section).
|
32
34
|
|
33
|
-
This is not production-ready code. Bugs are to be expected.
|
34
35
|
== Note on Patches/Pull Requests
|
35
36
|
|
36
37
|
* Fork the project.
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.0.
|
1
|
+
0.0.2
|
@@ -50,9 +50,9 @@ module MongoMapper
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def parent=(var)
|
53
|
-
var = self.find(var) if var.is_a? String
|
53
|
+
var = self.class.find(var) if var.is_a? String
|
54
54
|
|
55
|
-
if self.
|
55
|
+
if self.descendants.include? var
|
56
56
|
@_cyclic = true
|
57
57
|
else
|
58
58
|
@_parent = var
|
@@ -110,13 +110,13 @@ module MongoMapper
|
|
110
110
|
self.class.all(parent_id_field => self._id.to_s, :order => tree_order)
|
111
111
|
end
|
112
112
|
|
113
|
-
def
|
113
|
+
def descendants
|
114
114
|
return [] if new_record?
|
115
115
|
self.class.all(path_field => self._id, :order => tree_order)
|
116
116
|
end
|
117
117
|
|
118
|
-
def
|
119
|
-
[self] + self.
|
118
|
+
def self_and_descendants
|
119
|
+
[self] + self.descendants
|
120
120
|
end
|
121
121
|
|
122
122
|
def is_ancestor_of?(other)
|
@@ -155,7 +155,7 @@ module MongoMapper
|
|
155
155
|
end
|
156
156
|
|
157
157
|
def destroy_descendants
|
158
|
-
self.class.destroy(self.
|
158
|
+
self.class.destroy(self.descendants.map(&:_id))
|
159
159
|
end
|
160
160
|
end
|
161
161
|
|
@@ -178,4 +178,4 @@ module MongoMapper
|
|
178
178
|
end
|
179
179
|
end
|
180
180
|
end
|
181
|
-
end
|
181
|
+
end
|
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = %q{ramdiv-mongo_mapper_acts_as_tree}
|
8
|
-
s.version = "0.0.
|
8
|
+
s.version = "0.0.2"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Jakob Vidmar"]
|
12
|
-
s.date = %q{
|
12
|
+
s.date = %q{2010-01-09}
|
13
13
|
s.description = %q{Port of the old, venerable ActsAsTree with a bit of a twist}
|
14
14
|
s.email = %q{jakob.vidmar@gmail.com}
|
15
15
|
s.extra_rdoc_files = [
|
data/test/test_order.rb
CHANGED
@@ -17,8 +17,8 @@ class TestMongomapperActsAsTree < Test::Unit::TestCase
|
|
17
17
|
|
18
18
|
assert_equal @root_1.children, [@child_1, @child_3, @child_2]
|
19
19
|
|
20
|
-
assert_equal @root_1.
|
21
|
-
assert_equal @root_1.
|
20
|
+
assert_equal @root_1.descendants, [@child_1, @child_2_1, @child_3, @child_2]
|
21
|
+
assert_equal @root_1.self_and_descendants, [@root_1, @child_1, @child_2_1, @child_3, @child_2]
|
22
22
|
|
23
23
|
assert_equal @child_2.siblings, [@child_1, @child_3]
|
24
24
|
assert_equal @child_2.self_and_siblings, [@child_1, @child_3, @child_2]
|
data/test/test_tree.rb
CHANGED
@@ -12,7 +12,10 @@ class TestMongomapperActsAsTree < Test::Unit::TestCase
|
|
12
12
|
@root_2 = Category.create(:name => "Root 2")
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
should "create node from id " do
|
16
|
+
assert Category.create(:name => "Child 2.2", :parent => @root_1.id.to_s).parent == @root_1
|
17
|
+
end
|
18
|
+
|
16
19
|
should "have roots" do
|
17
20
|
assert eql_arrays?(Category.roots, [@root_1, @root_2])
|
18
21
|
end
|
@@ -51,13 +54,13 @@ class TestMongomapperActsAsTree < Test::Unit::TestCase
|
|
51
54
|
assert eql_arrays?(@root_1.children, [@child_1, @child_2, @child_3])
|
52
55
|
end
|
53
56
|
|
54
|
-
should "have
|
55
|
-
assert eql_arrays?(@root_1.
|
56
|
-
assert eql_arrays?(@child_2.
|
57
|
-
assert @child_2_1.
|
58
|
-
assert eql_arrays?(@root_1.
|
59
|
-
assert eql_arrays?(@child_2.
|
60
|
-
assert eql_arrays?(@child_2_1.
|
57
|
+
should "have descendants" do
|
58
|
+
assert eql_arrays?(@root_1.descendants, [@child_1, @child_2, @child_3, @child_2_1])
|
59
|
+
assert eql_arrays?(@child_2.descendants, [@child_2_1])
|
60
|
+
assert @child_2_1.descendants.empty?
|
61
|
+
assert eql_arrays?(@root_1.self_and_descendants, [@root_1, @child_1, @child_2, @child_3, @child_2_1])
|
62
|
+
assert eql_arrays?(@child_2.self_and_descendants, [@child_2, @child_2_1])
|
63
|
+
assert eql_arrays?(@child_2_1.self_and_descendants, [@child_2_1])
|
61
64
|
end
|
62
65
|
|
63
66
|
should "be able to tell if ancestor" do
|
@@ -70,7 +73,7 @@ class TestMongomapperActsAsTree < Test::Unit::TestCase
|
|
70
73
|
assert @child_2.is_or_is_ancestor_of?(@child_2)
|
71
74
|
end
|
72
75
|
|
73
|
-
should "be able to tell if
|
76
|
+
should "be able to tell if descendant" do
|
74
77
|
assert !@root_1.is_descendant_of?(@child_1)
|
75
78
|
assert @child_1.is_descendant_of?(@root_1)
|
76
79
|
assert !@child_2.is_descendant_of?(@child_2)
|
@@ -98,7 +101,7 @@ class TestMongomapperActsAsTree < Test::Unit::TestCase
|
|
98
101
|
assert @child_2.is_or_is_ancestor_of?(@child_3)
|
99
102
|
assert @child_3.is_or_is_descendant_of?(@child_2)
|
100
103
|
assert @child_2.children.include?(@child_3)
|
101
|
-
assert @child_2.
|
104
|
+
assert @child_2.descendants.include?(@child_3)
|
102
105
|
assert @child_2_1.is_or_is_sibling_of?(@child_3)
|
103
106
|
assert_equal 2, @child_3.depth
|
104
107
|
end
|
@@ -108,14 +111,14 @@ class TestMongomapperActsAsTree < Test::Unit::TestCase
|
|
108
111
|
|
109
112
|
assert !@root_2.is_or_is_ancestor_of?(@child_2_1)
|
110
113
|
assert !@child_2_1.is_or_is_descendant_of?(@root_2)
|
111
|
-
assert !@root_2.
|
114
|
+
assert !@root_2.descendants.include?(@child_2_1)
|
112
115
|
|
113
116
|
@child_2.save
|
114
117
|
@child_2_1.reload
|
115
118
|
|
116
119
|
assert @root_2.is_or_is_ancestor_of?(@child_2_1)
|
117
120
|
assert @child_2_1.is_or_is_descendant_of?(@root_2)
|
118
|
-
assert @root_2.
|
121
|
+
assert @root_2.descendants.include?(@child_2_1)
|
119
122
|
end
|
120
123
|
|
121
124
|
should "check agains cyclic graph" do
|
@@ -124,7 +127,7 @@ class TestMongomapperActsAsTree < Test::Unit::TestCase
|
|
124
127
|
end
|
125
128
|
end
|
126
129
|
|
127
|
-
should "destroy
|
130
|
+
should "destroy descendants when destroyed" do
|
128
131
|
@child_2.destroy
|
129
132
|
assert_nil Category.find(@child_2_1._id)
|
130
133
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ramdiv-mongo_mapper_acts_as_tree
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jakob Vidmar
|
@@ -9,7 +9,7 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2010-01-09 00:00:00 +01:00
|
13
13
|
default_executable:
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|