RT# 80488 Ensure WA distrct taxes are properly applied
[freeside.git] / rt / t / shredder / 03plugin_tickets.t
index 3d742ff..dd2b120 100644 (file)
@@ -1,42 +1,35 @@
-#!/usr/bin/perl -w
 
 use strict;
 use warnings;
 
 use Test::Deep;
-use File::Spec;
-use Test::More tests => 44;
-use RT::Test ();
-BEGIN {
-    my $shredder_utils = RT::Test::get_relocatable_file('utils.pl',
-        File::Spec->curdir());
-    require $shredder_utils;
-}
+use RT::Test::Shredder tests => 49;
+my $test = "RT::Test::Shredder";
 
+use_ok('RT::Shredder');
 
 use_ok('RT::Shredder::Plugin::Tickets');
 {
-    my $plugin = new RT::Shredder::Plugin::Tickets;
+    my $plugin = RT::Shredder::Plugin::Tickets->new;
     isa_ok($plugin, 'RT::Shredder::Plugin::Tickets');
 
     is(lc $plugin->Type, 'search', 'correct type');
 }
 
-init_db();
-create_savepoint('clean');
+$test->create_savepoint('clean');
 use_ok('RT::Ticket');
 use_ok('RT::Tickets');
 
 { # create parent and child and check functionality of 'with_linked' arg
-    my $parent = RT::Ticket->new( $RT::SystemUser );
+    my $parent = RT::Ticket->new( RT->SystemUser );
     my ($pid) = $parent->Create( Subject => 'parent', Queue => 1 );
     ok( $pid, "created new ticket" );
-
-    my $child = RT::Ticket->new( $RT::SystemUser );
+    my $child = RT::Ticket->new( RT->SystemUser );
     my ($cid) = $child->Create( Subject => 'child', Queue => 1, MemberOf => $pid );
     ok( $cid, "created new ticket" );
+    $_->ApplyTransactionBatch for $parent, $child;
 
-    my $plugin = new RT::Shredder::Plugin::Tickets;
+    my $plugin = RT::Shredder::Plugin::Tickets->new;
     isa_ok($plugin, 'RT::Shredder::Plugin::Tickets');
 
     my ($status, $msg, @objs);
@@ -60,25 +53,28 @@ use_ok('RT::Tickets');
     ok($has{$pid}, "parent is in the result set");
     ok($has{$cid}, "child is in the result set");
 
-    my $shredder = shredder_new();
+    my $shredder = $test->shredder_new();
     $shredder->PutObjects( Objects => \@objs );
     $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");
 
 { # create parent and child and link them reqursively to check that we don't hang
-    my $parent = RT::Ticket->new( $RT::SystemUser );
+    my $parent = RT::Ticket->new( RT->SystemUser );
     my ($pid) = $parent->Create( Subject => 'parent', Queue => 1 );
     ok( $pid, "created new ticket" );
 
-    my $child = RT::Ticket->new( $RT::SystemUser );
+    my $child = RT::Ticket->new( RT->SystemUser );
     my ($cid) = $child->Create( Subject => 'child', Queue => 1, MemberOf => $pid );
     ok( $cid, "created new ticket" );
 
     my ($status, $msg) = $child->AddLink( Target => $pid, Type => 'DependsOn' );
     ok($status, "added reqursive link") or diag "error: $msg";
 
-    my $plugin = new RT::Shredder::Plugin::Tickets;
+    $_->ApplyTransactionBatch for $parent, $child;
+
+    my $plugin = RT::Shredder::Plugin::Tickets->new;
     isa_ok($plugin, 'RT::Shredder::Plugin::Tickets');
 
     my (@objs);
@@ -102,25 +98,30 @@ cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint"
     ok($has{$pid}, "parent is in the result set");
     ok($has{$cid}, "child is in the result set");
 
-    my $shredder = shredder_new();
+    my $shredder = $test->shredder_new();
     $shredder->PutObjects( Objects => \@objs );
     $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");
 
 { # create parent and child and check functionality of 'apply_query_to_linked' arg
-    my $parent = RT::Ticket->new( $RT::SystemUser );
-    my ($pid) = $parent->Create( Subject => 'parent', Queue => 1, Status => 'resolved' );
+    my $parent = RT::Ticket->new( RT->SystemUser );
+    my ($pid) = $parent->Create( Subject => 'parent', Queue => 1 );
     ok( $pid, "created new ticket" );
+    $parent->SetStatus('resolved');
 
-    my $child1 = RT::Ticket->new( $RT::SystemUser );
+    my $child1 = RT::Ticket->new( RT->SystemUser );
     my ($cid1) = $child1->Create( Subject => 'child', Queue => 1, MemberOf => $pid );
     ok( $cid1, "created new ticket" );
-    my $child2 = RT::Ticket->new( $RT::SystemUser );
-    my ($cid2) = $child2->Create( Subject => 'child', Queue => 1, MemberOf => $pid, Status => 'resolved' );
+    my $child2 = RT::Ticket->new( RT->SystemUser );
+    my ($cid2) = $child2->Create( Subject => 'child', Queue => 1, MemberOf => $pid);
     ok( $cid2, "created new ticket" );
+    $child2->SetStatus('resolved');
+
+    $_->ApplyTransactionBatch for $parent, $child1, $child2;
 
-    my $plugin = new RT::Shredder::Plugin::Tickets;
+    my $plugin = RT::Shredder::Plugin::Tickets->new;
     isa_ok($plugin, 'RT::Shredder::Plugin::Tickets');
 
     my ($status, $msg) = $plugin->TestArgs( query => 'Status = "resolved"', apply_query_to_linked => 1 );
@@ -136,15 +137,17 @@ cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint"
     ok(!$has{$cid1}, "first child is in the result set");
     ok($has{$cid2}, "second child is in the result set");
 
-    my $shredder = shredder_new();
+    my $shredder = $test->shredder_new();
     $shredder->PutObjects( Objects => \@objs );
     $shredder->WipeoutAll;
+    $test->db_is_valid;
 
-    my $ticket = RT::Ticket->new( $RT::SystemUser );
+    my $ticket = RT::Ticket->new( RT->SystemUser );
     $ticket->Load( $cid1 );
     is($ticket->id, $cid1, 'loaded ticket');
 
     $shredder->PutObjects( Objects => $ticket );
     $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");