collectiveidea-awesome_nested_set 1.3.0 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/awesome_nested_set.gemspec +2 -2
- data/lib/awesome_nested_set.rb +5 -21
- data/test/awesome_nested_set_test.rb +23 -13
- data/test/test_helper.rb +0 -1
- metadata +3 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
1.
|
1
|
+
1.4.0
|
data/awesome_nested_set.gemspec
CHANGED
@@ -2,11 +2,11 @@
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = %q{awesome_nested_set}
|
5
|
-
s.version = "1.
|
5
|
+
s.version = "1.4.0"
|
6
6
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
8
8
|
s.authors = ["Brandon Keepers", "Daniel Morrison"]
|
9
|
-
s.date = %q{2009-
|
9
|
+
s.date = %q{2009-09-03}
|
10
10
|
s.description = %q{An awesome nested set implementation for Active Record}
|
11
11
|
s.email = %q{info@collectiveidea.com}
|
12
12
|
s.extra_rdoc_files = [
|
data/lib/awesome_nested_set.rb
CHANGED
@@ -15,24 +15,11 @@ module CollectiveIdea #:nodoc:
|
|
15
15
|
#
|
16
16
|
# == API
|
17
17
|
#
|
18
|
-
# Methods names are aligned with acts_as_tree as much as possible
|
19
|
-
# by another easier
|
18
|
+
# Methods names are aligned with acts_as_tree as much as possible to make replacment from one
|
19
|
+
# by another easier.
|
20
20
|
#
|
21
|
-
# in acts_as_tree:
|
22
21
|
# item.children.create(:name => "child1")
|
23
22
|
#
|
24
|
-
# in acts_as_nested_set:
|
25
|
-
# # adds a new item at the "end" of the tree, i.e. with child.left = max(tree.right)+1
|
26
|
-
# child = MyClass.new(:name => "child1")
|
27
|
-
# child.save
|
28
|
-
# # now move the item to its right place
|
29
|
-
# child.move_to_child_of my_item
|
30
|
-
#
|
31
|
-
# You can pass an id or an object to:
|
32
|
-
# * <tt>#move_to_child_of</tt>
|
33
|
-
# * <tt>#move_to_right_of</tt>
|
34
|
-
# * <tt>#move_to_left_of</tt>
|
35
|
-
#
|
36
23
|
module SingletonMethods
|
37
24
|
# Configuration options are:
|
38
25
|
#
|
@@ -75,6 +62,8 @@ module CollectiveIdea #:nodoc:
|
|
75
62
|
|
76
63
|
belongs_to :parent, :class_name => self.base_class.class_name,
|
77
64
|
:foreign_key => parent_column_name
|
65
|
+
has_many :children, :class_name => self.base_class.class_name,
|
66
|
+
:foreign_key => parent_column_name
|
78
67
|
|
79
68
|
attr_accessor :skip_before_destroy
|
80
69
|
|
@@ -261,7 +250,7 @@ module CollectiveIdea #:nodoc:
|
|
261
250
|
end
|
262
251
|
|
263
252
|
def leaf?
|
264
|
-
right - left == 1
|
253
|
+
!new_record? && right - left == 1
|
265
254
|
end
|
266
255
|
|
267
256
|
# Returns true is this is a child node
|
@@ -332,11 +321,6 @@ module CollectiveIdea #:nodoc:
|
|
332
321
|
without_self self_and_descendants
|
333
322
|
end
|
334
323
|
|
335
|
-
# Returns a set of only this entry's immediate children
|
336
|
-
def children
|
337
|
-
nested_set_scope.scoped :conditions => {parent_column_name => self}
|
338
|
-
end
|
339
|
-
|
340
324
|
def is_descendant_of?(other)
|
341
325
|
other.left < self.left && self.left < other.right && same_scope?(other)
|
342
326
|
end
|
@@ -3,18 +3,17 @@ require 'test_helper'
|
|
3
3
|
class Note < ActiveRecord::Base
|
4
4
|
acts_as_nested_set :scope => [:notable_id, :notable_type]
|
5
5
|
end
|
6
|
+
class Default < ActiveRecord::Base
|
7
|
+
acts_as_nested_set
|
8
|
+
set_table_name 'categories'
|
9
|
+
end
|
10
|
+
class ScopedCategory < ActiveRecord::Base
|
11
|
+
acts_as_nested_set :scope => :organization
|
12
|
+
set_table_name 'categories'
|
13
|
+
end
|
6
14
|
|
7
15
|
class AwesomeNestedSetTest < TestCaseClass
|
8
16
|
|
9
|
-
class Default < ActiveRecord::Base
|
10
|
-
acts_as_nested_set
|
11
|
-
set_table_name 'categories'
|
12
|
-
end
|
13
|
-
class Scoped < ActiveRecord::Base
|
14
|
-
acts_as_nested_set :scope => :organization
|
15
|
-
set_table_name 'categories'
|
16
|
-
end
|
17
|
-
|
18
17
|
def test_left_column_default
|
19
18
|
assert_equal 'lft', Default.acts_as_nested_set_options[:left_column]
|
20
19
|
end
|
@@ -73,7 +72,7 @@ class AwesomeNestedSetTest < TestCaseClass
|
|
73
72
|
end
|
74
73
|
|
75
74
|
def test_scoped_appends_id
|
76
|
-
assert_equal :organization_id,
|
75
|
+
assert_equal :organization_id, ScopedCategory.acts_as_nested_set_options[:scope]
|
77
76
|
end
|
78
77
|
|
79
78
|
def test_roots_class_method
|
@@ -110,7 +109,9 @@ class AwesomeNestedSetTest < TestCaseClass
|
|
110
109
|
|
111
110
|
assert !categories(:top_level).leaf?
|
112
111
|
assert !categories(:child_2).leaf?
|
112
|
+
assert !Category.new.leaf?
|
113
113
|
end
|
114
|
+
|
114
115
|
|
115
116
|
def test_parent
|
116
117
|
assert_equal categories(:child_2), categories(:child_2_1).parent
|
@@ -213,7 +214,7 @@ class AwesomeNestedSetTest < TestCaseClass
|
|
213
214
|
end
|
214
215
|
|
215
216
|
def test_is_or_is_ancestor_of_with_scope
|
216
|
-
root =
|
217
|
+
root = ScopedCategory.root
|
217
218
|
child = root.children.first
|
218
219
|
assert root.is_or_is_ancestor_of?(child)
|
219
220
|
child.update_attribute :organization_id, 'different'
|
@@ -239,7 +240,7 @@ class AwesomeNestedSetTest < TestCaseClass
|
|
239
240
|
end
|
240
241
|
|
241
242
|
def test_is_or_is_descendant_of_with_scope
|
242
|
-
root =
|
243
|
+
root = ScopedCategory.root
|
243
244
|
child = root.children.first
|
244
245
|
assert child.is_or_is_descendant_of?(root)
|
245
246
|
child.update_attribute :organization_id, 'different'
|
@@ -247,7 +248,7 @@ class AwesomeNestedSetTest < TestCaseClass
|
|
247
248
|
end
|
248
249
|
|
249
250
|
def test_same_scope?
|
250
|
-
root =
|
251
|
+
root = ScopedCategory.root
|
251
252
|
child = root.children.first
|
252
253
|
assert child.same_scope?(root)
|
253
254
|
child.update_attribute :organization_id, 'different'
|
@@ -668,4 +669,13 @@ class AwesomeNestedSetTest < TestCaseClass
|
|
668
669
|
assert Category.valid?
|
669
670
|
end
|
670
671
|
|
672
|
+
def test_creating_child_from_parent
|
673
|
+
category = categories(:child_2).children.create!(:name => "Child")
|
674
|
+
assert_equal categories(:child_2), category.parent
|
675
|
+
assert_equal categories(:child_2).id, category.parent_id
|
676
|
+
assert_not_nil category.left
|
677
|
+
assert_not_nil category.right
|
678
|
+
assert Category.valid?
|
679
|
+
end
|
680
|
+
|
671
681
|
end
|
data/test/test_helper.rb
CHANGED
@@ -20,7 +20,6 @@ load(File.join(plugin_test_dir, "db", "schema.rb"))
|
|
20
20
|
|
21
21
|
Dir["#{plugin_test_dir}/fixtures/*.rb"].each {|file| require file }
|
22
22
|
|
23
|
-
|
24
23
|
class TestCaseClass #:nodoc:
|
25
24
|
self.fixture_path = File.dirname(__FILE__) + "/fixtures/"
|
26
25
|
self.use_transactional_fixtures = true
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: collectiveidea-awesome_nested_set
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Brandon Keepers
|
@@ -10,7 +10,7 @@ autorequire:
|
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
12
|
|
13
|
-
date: 2009-
|
13
|
+
date: 2009-09-03 00:00:00 -07:00
|
14
14
|
default_executable:
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
@@ -55,7 +55,6 @@ files:
|
|
55
55
|
- test/test_helper.rb
|
56
56
|
has_rdoc: false
|
57
57
|
homepage: http://github.com/collectiveidea/awesome_nested_set
|
58
|
-
licenses:
|
59
58
|
post_install_message:
|
60
59
|
rdoc_options:
|
61
60
|
- --main
|
@@ -79,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
79
78
|
requirements: []
|
80
79
|
|
81
80
|
rubyforge_project:
|
82
|
-
rubygems_version: 1.
|
81
|
+
rubygems_version: 1.2.0
|
83
82
|
signing_key:
|
84
83
|
specification_version: 3
|
85
84
|
summary: An awesome nested set implementation for Active Record
|