aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test
diff options
context:
space:
mode:
authorDavid Heinemeier Hansson <david@loudthinking.com>2007-09-11 03:09:37 +0000
committerDavid Heinemeier Hansson <david@loudthinking.com>2007-09-11 03:09:37 +0000
commit11f4d28344e2b10de08a3dafdf1b0c5de34325c7 (patch)
treea35a3ada9b69d1c1ba5e71bf881143e4c1a8769f /activerecord/test
parentbc290c083c6a8d8ec1b30de423c751f451f51d6f (diff)
downloadrails-11f4d28344e2b10de08a3dafdf1b0c5de34325c7.tar.gz
rails-11f4d28344e2b10de08a3dafdf1b0c5de34325c7.tar.bz2
rails-11f4d28344e2b10de08a3dafdf1b0c5de34325c7.zip
Moved acts_as_nested_set into a plugin of the same name on the official Rails svn (closed #9516) [josh]
git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7453 5ecf4fe2-1ee6-0310-87b1-e25e094e27de
Diffstat (limited to 'activerecord/test')
-rw-r--r--activerecord/test/fixtures/mixin.rb28
-rw-r--r--activerecord/test/fixtures/mixins.yml18
-rw-r--r--activerecord/test/mixin_nested_set_test.rb197
3 files changed, 28 insertions, 215 deletions
diff --git a/activerecord/test/fixtures/mixin.rb b/activerecord/test/fixtures/mixin.rb
index 5e40c397c0..358dde1ae1 100644
--- a/activerecord/test/fixtures/mixin.rb
+++ b/activerecord/test/fixtures/mixin.rb
@@ -43,3 +43,31 @@ end
class NestedSetSubclass < NestedSetSuperclass
end
+
+class NestedSet < Mixin
+ acts_as_nested_set :scope => "root_id IS NULL"
+
+ def self.table_name() "mixins" end
+end
+
+class NestedSetWithStringScope < Mixin
+ acts_as_nested_set :scope => 'root_id = #{root_id}'
+
+ def self.table_name() "mixins" end
+end
+
+class NestedSetWithSymbolScope < Mixin
+ acts_as_nested_set :scope => :root
+
+ def self.table_name() "mixins" end
+end
+
+class NestedSetSuperclass < Mixin
+ acts_as_nested_set :scope => :root
+
+ def self.table_name() "mixins" end
+end
+
+class NestedSetSubclass < NestedSetSuperclass
+
+end
diff --git a/activerecord/test/fixtures/mixins.yml b/activerecord/test/fixtures/mixins.yml
index 6c66eb559c..c79ff41070 100644
--- a/activerecord/test/fixtures/mixins.yml
+++ b/activerecord/test/fixtures/mixins.yml
@@ -68,24 +68,6 @@ set_<%= counter %>:
type: NestedSet
<% end %>
-# Nested set with STI
-<%
-[ [3100, 0, 1, 10, "NestedSetSuperclass"],
- [3101, 3100, 2, 5, "NestedSetSubclass"],
- [3102, 3101, 3, 4, "NestedSetSuperclass"],
- [3103, 3100, 6, 9, "NestedSetSuperclass"],
- [3104, 3103, 7, 8, "NestedSetSubclass"]
-].each do |sti| %>
-sti_set_<%= sti[0] %>:
- id: <%= sti[0] %>
- parent_id: <%= sti[1] %>
- lft: <%= sti[2] %>
- rgt: <%= sti[3] %>
- type: <%= sti[4] %>
- root_id: 3100
-
-<% end %>
-
# Big old set
<%
[[4001, 0, 1, 20],
diff --git a/activerecord/test/mixin_nested_set_test.rb b/activerecord/test/mixin_nested_set_test.rb
index 87fa140dc9..e69de29bb2 100644
--- a/activerecord/test/mixin_nested_set_test.rb
+++ b/activerecord/test/mixin_nested_set_test.rb
@@ -1,197 +0,0 @@
-require 'abstract_unit'
-require 'active_record/acts/nested_set'
-require 'fixtures/mixin'
-require 'pp'
-
-class MixinNestedSetTest < Test::Unit::TestCase
- fixtures :mixins
-
- def test_mixing_in_methods
- ns = NestedSet.new
- assert( ns.respond_to?( :all_children ) )
- assert_equal( ns.scope_condition, "root_id IS NULL" )
-
- check_method_mixins ns
- end
-
- def test_string_scope
- ns = NestedSetWithStringScope.new
-
- ns.root_id = 1
- assert_equal( ns.scope_condition, "root_id = 1" )
- ns.root_id = 42
- assert_equal( ns.scope_condition, "root_id = 42" )
- check_method_mixins ns
- end
-
- def test_symbol_scope
- ns = NestedSetWithSymbolScope.new
- ns.root_id = 1
- assert_equal( ns.scope_condition, "root_id = 1" )
- ns.root_id = 42
- assert_equal( ns.scope_condition, "root_id = 42" )
- check_method_mixins ns
- end
-
- def check_method_mixins( obj )
- [:scope_condition, :left_col_name, :right_col_name, :parent_column, :root?, :add_child,
- :children_count, :full_set, :all_children, :direct_children].each { |symbol| assert( obj.respond_to?(symbol)) }
- end
-
- def set( id )
- NestedSet.find( 3000 + id )
- end
-
- def test_adding_children
- assert( set(1).unknown? )
- assert( set(2).unknown? )
- set(1).add_child set(2)
-
- # Did we maintain adding the parent_ids?
- assert( set(1).root? )
- assert( set(2).child? )
- assert( set(2).parent_id == set(1).id )
-
- # Check boundies
- assert_equal( set(1).lft, 1 )
- assert_equal( set(2).lft, 2 )
- assert_equal( set(2).rgt, 3 )
- assert_equal( set(1).rgt, 4 )
-
- # Check children cound
- assert_equal( set(1).children_count, 1 )
-
- set(1).add_child set(3)
-
- #check boundries
- assert_equal( set(1).lft, 1 )
- assert_equal( set(2).lft, 2 )
- assert_equal( set(2).rgt, 3 )
- assert_equal( set(3).lft, 4 )
- assert_equal( set(3).rgt, 5 )
- assert_equal( set(1).rgt, 6 )
-
- # How is the count looking?
- assert_equal( set(1).children_count, 2 )
-
- set(2).add_child set(4)
-
- # boundries
- assert_equal( set(1).lft, 1 )
- assert_equal( set(2).lft, 2 )
- assert_equal( set(4).lft, 3 )
- assert_equal( set(4).rgt, 4 )
- assert_equal( set(2).rgt, 5 )
- assert_equal( set(3).lft, 6 )
- assert_equal( set(3).rgt, 7 )
- assert_equal( set(1).rgt, 8 )
-
- # Children count
- assert_equal( set(1).children_count, 3 )
- assert_equal( set(2).children_count, 1 )
- assert_equal( set(3).children_count, 0 )
- assert_equal( set(4).children_count, 0 )
-
- set(2).add_child set(5)
- set(4).add_child set(6)
-
- assert_equal( set(2).children_count, 3 )
-
-
- # Children accessors
- assert_equal( set(1).full_set.length, 6 )
- assert_equal( set(2).full_set.length, 4 )
- assert_equal( set(4).full_set.length, 2 )
-
- assert_equal( set(1).all_children.length, 5 )
- assert_equal( set(6).all_children.length, 0 )
-
- assert_equal( set(1).direct_children.length, 2 )
-
- end
-
- def test_snipping_tree
- big_tree = NestedSetWithStringScope.find( 4001 )
-
- # Make sure we have the right one
- assert_equal( 3, big_tree.direct_children.length )
- assert_equal( 10, big_tree.full_set.length )
- assert_equal [4002, 4008, 4005], big_tree.direct_children.map(&:id)
-
- NestedSetWithStringScope.find( 4005 ).destroy
-
- big_tree = NestedSetWithStringScope.find( 4001 )
-
- assert_equal( 9, big_tree.full_set.length )
- assert_equal( 2, big_tree.direct_children.length )
-
- assert_equal( 1, NestedSetWithStringScope.find(4001).lft )
- assert_equal( 2, NestedSetWithStringScope.find(4002).lft )
- assert_equal( 3, NestedSetWithStringScope.find(4003).lft )
- assert_equal( 4, NestedSetWithStringScope.find(4003).rgt )
- assert_equal( 5, NestedSetWithStringScope.find(4004).lft )
- assert_equal( 6, NestedSetWithStringScope.find(4004).rgt )
- assert_equal( 7, NestedSetWithStringScope.find(4002).rgt )
- assert_equal( 8, NestedSetWithStringScope.find(4008).lft )
- assert_equal(15, NestedSetWithStringScope.find(4009).lft )
- assert_equal(16, NestedSetWithStringScope.find(4009).rgt )
- assert_equal(17, NestedSetWithStringScope.find(4010).lft )
- assert_equal(18, NestedSetWithStringScope.find(4010).rgt )
- assert_equal(19, NestedSetWithStringScope.find(4008).rgt )
- assert_equal(20, NestedSetWithStringScope.find(4001).rgt )
- end
-
- def test_deleting_root
- NestedSetWithStringScope.find(4001).destroy
-
- assert( NestedSetWithStringScope.count == 0 )
- end
-
- def test_common_usage
- mixins(:set_1).add_child( mixins(:set_2) )
- assert_equal( 1, mixins(:set_1).direct_children.length )
-
- mixins(:set_2).add_child( mixins(:set_3) )
- assert_equal( 1, mixins(:set_1).direct_children.length )
-
- # Local cache is now out of date!
- # Problem: the update_alls update all objects up the tree
- mixins(:set_1).reload
- assert_equal( 2, mixins(:set_1).all_children.length )
-
- assert_equal( 1, mixins(:set_1).lft )
- assert_equal( 2, mixins(:set_2).lft )
- assert_equal( 3, mixins(:set_3).lft )
- assert_equal( 4, mixins(:set_3).rgt )
- assert_equal( 5, mixins(:set_2).rgt )
- assert_equal( 6, mixins(:set_1).rgt )
-
- assert( mixins(:set_1).root? )
-
- begin
- mixins(:set_4).add_child( mixins(:set_1) )
- fail
- rescue
- end
-
- assert_equal( 2, mixins(:set_1).all_children.length )
-
- mixins(:set_1).add_child mixins(:set_4)
-
- assert_equal( 3, mixins(:set_1).all_children.length )
- end
-
- def test_inheritance
- parent = mixins(:sti_set_3100)
- child = mixins(:sti_set_3101)
- grandchild = mixins(:sti_set_3102)
- assert_equal 5, parent.full_set.size
- assert_equal 2, child.full_set.size
- assert_equal 4, parent.all_children.size
- assert_equal 1, child.all_children.size
- assert_equal 2, parent.direct_children.size
- assert_equal 1, child.direct_children.size
- child.destroy
- assert_equal 3, parent.full_set.size
- end
-end