Improvements to AdjacentList.pm:
[dbsrgits/DBIx-Class-Tree.git] / t / lib / TreeTest.pm
index e77eea1..a3054cb 100644 (file)
@@ -8,7 +8,7 @@ use TreeTest::Schema;
 our $NODE_COUNT = 80;
 
 sub count_tests {
-    my $count = 13;
+    my $count = 22;
     if( TreeTest::Schema::Node->can('position_column') ){
         $count ++;
     }
@@ -38,11 +38,11 @@ sub run_tests {
     ok( ($nodes->find(22)->children->count()==2), 'node 22 has correct number of children' );
     ok( ($nodes->find(22)->siblings->count()==3), 'node 22 has correct number of siblings' );
 
-    $nodes->find(22)->attach_child( $nodes->find(3) );
+    $nodes->find(22)->add_child( $nodes->find(3) );
     ok( ($nodes->find(22)->children->count()==3), 'node 22 has correct number of children' );
     ok( ($nodes->find(22)->siblings->count()==2), 'node 22 has correct number of siblings' );
 
-    $nodes->find(22)->attach_sibling( $nodes->find(3) );
+    $nodes->find(22)->add_sibling( $nodes->find(3) );
     ok( ($nodes->find(22)->children->count()==2), 'node 22 has correct number of children' );
     ok( ($nodes->find(22)->siblings->count()==3), 'node 22 has correct number of siblings' );
 
@@ -52,6 +52,38 @@ sub run_tests {
     if( TreeTest::Schema::Node->can('position_column') ){
         ok( check_positions(scalar $root->children()), 'positions are correct' );
     }
+
+    #$nodes->delete;
+    $schema = TreeTest::Schema->connect();
+    $nodes = $schema->resultset('Node');
+    $root = $nodes->create({ name=>'root' });
+    @parents = (
+        1,1,3,2,3,3,6,6,2,5,3,5,12,1
+    );
+    foreach my $parent_id (@parents) {
+        my $node = $nodes->create({ name=>'child' });
+        $node->parent( $parent_id );
+    }
+
+    ok ($nodes->find(1)->descendents == 14, 'root node has 14 descendents');
+    ok ($nodes->find(2)->descendents == 4, 'node 2 has 4 descendents');
+    ok ($nodes->find(6)->descendents == 2, 'node 6 has 2 descendents');
+    ok ($nodes->find(10)->descendents == 0, 'node 10 has no descendents');
+    
+    $nodes->find(2)->pharaoh_delete;
+    ok ($nodes->find(1)->descendents == 9, 'root node has 9 descendents after pharaohing node 2');
+
+    ok ($nodes->find(3)->children == 4, 'node 3 has 4 children');
+    $nodes->find(6)->grandmother_delete;
+    ok ($nodes->find(3)->children == 5, 'node 3 has 5 children after node 6 dies');
+
+    $nodes->find(3)->replace_with_and_delete($nodes->find(12));
+    ok ($nodes->find(12)->children == 5, 'node 12 has 5 children after taking over from node 3');
+    ok ($nodes->find(7)->parent->id == 12, 'node 7\'s parent is node 12');
+    
+    
+    
+
 }
 
 sub check_positions {