RT 4.2.11, ticket#13852
[freeside.git] / rt / t / shredder / 01ticket.t
index 0a9da41..57179bc 100644 (file)
@@ -3,19 +3,10 @@ use strict;
 use warnings;
 
 use Test::Deep;
-use File::Spec;
-use Test::More tests => 15 + 1; # plus one for warnings check
-use RT::Test ();
+use RT::Test::Shredder tests => 20;
+my $test = "RT::Test::Shredder";
 
-
-BEGIN {
-    my $shredder_utils = RT::Test::get_relocatable_file('utils.pl',
-        File::Spec->curdir());
-    require $shredder_utils;
-}
-
-init_db();
-create_savepoint('clean');
+$test->create_savepoint('clean');
 
 use RT::Ticket;
 use RT::Tickets;
@@ -26,23 +17,25 @@ use RT::Tickets;
     ok( $id, "created new ticket" );
     $ticket->Delete;
     is( $ticket->Status, 'deleted', "successfuly changed status" );
+    $ticket->ApplyTransactionBatch;
 
     my $tickets = RT::Tickets->new( RT->SystemUser );
     $tickets->{'allow_deleted_search'} = 1;
     $tickets->LimitStatus( VALUE => 'deleted' );
     is( $tickets->Count, 1, "found one deleted ticket" );
 
-    my $shredder = shredder_new();
+    my $shredder = $test->shredder_new();
     $shredder->PutObjects( Objects => $tickets );
     $shredder->WipeoutAll;
+    $test->db_is_valid;
 }
-cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint");
+cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
 
 {
     my $parent = RT::Ticket->new( RT->SystemUser );
     my ($pid) = $parent->Create( Subject => 'test', Queue => 1 );
     ok( $pid, "created new ticket" );
-    create_savepoint('parent_ticket');
+    $test->create_savepoint('parent_ticket');
 
     my $child = RT::Ticket->new( RT->SystemUser );
     my ($cid) = $child->Create( Subject => 'test', Queue => 1 );
@@ -50,15 +43,21 @@ cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint"
 
     my ($status, $msg) = $parent->AddLink( Type => 'MemberOf', Target => $cid );
     ok( $status, "Added link between tickets") or diag("error: $msg");
-    my $shredder = shredder_new();
+
+    $parent->ApplyTransactionBatch;
+    $child->ApplyTransactionBatch;
+
+    my $shredder = $test->shredder_new();
     $shredder->PutObjects( Objects => $child );
     $shredder->WipeoutAll;
-    cmp_deeply( dump_current_and_savepoint('parent_ticket'), "current DB equal to savepoint");
+    $test->db_is_valid;
+    cmp_deeply( $test->dump_current_and_savepoint('parent_ticket'), "current DB equal to savepoint");
 
     $shredder->PutObjects( Objects => $parent );
     $shredder->WipeoutAll;
+    $test->db_is_valid;
 }
-cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint");
+cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");
 
 {
     my $parent = RT::Ticket->new( RT->SystemUser );
@@ -66,24 +65,26 @@ cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint"
     ok( $pid, "created new ticket" );
     my ($status, $msg) = $parent->Delete;
     ok( $status, 'deleted parent ticket');
-    create_savepoint('parent_ticket');
+    $test->create_savepoint('parent_ticket');
 
     my $child = RT::Ticket->new( RT->SystemUser );
     my ($cid) = $child->Create( Subject => 'test', Queue => 1 );
-    ok( $cid, "created new ticket" );
+    ok( $cid, "created new ticket #$cid" );
 
     ($status, $msg) = $parent->AddLink( Type => 'DependsOn', Target => $cid );
     ok( $status, "Added link between tickets") or diag("error: $msg");
-    my $shredder = shredder_new();
+
+    $parent->ApplyTransactionBatch;
+    $child->ApplyTransactionBatch;
+
+    my $shredder = $test->shredder_new();
     $shredder->PutObjects( Objects => $child );
     $shredder->WipeoutAll;
-
-  TODO: {
-        local $TODO = "Shredder doesn't delete all links and transactions";
-        cmp_deeply( dump_current_and_savepoint('parent_ticket'), "current DB equal to savepoint");
-    }
+    $test->db_is_valid;
+    cmp_deeply( $test->dump_current_and_savepoint('parent_ticket'), "current DB equal to savepoint");
 
     $shredder->PutObjects( Objects => $parent );
     $shredder->WipeoutAll;
+    $test->db_is_valid;
 }
-cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint");
+cmp_deeply( $test->dump_current_and_savepoint('clean'), "current DB equal to savepoint");