diff options
Diffstat (limited to 'rt/t/shredder/02queue.t')
-rw-r--r-- | rt/t/shredder/02queue.t | 125 |
1 files changed, 125 insertions, 0 deletions
diff --git a/rt/t/shredder/02queue.t b/rt/t/shredder/02queue.t new file mode 100644 index 0000000..197cf63 --- /dev/null +++ b/rt/t/shredder/02queue.t @@ -0,0 +1,125 @@ +#!/usr/bin/perl -w + +use strict; +use warnings; + +use Test::Deep; +use File::Spec; +use Test::More tests => 16; +use RT::Test (); +BEGIN { + my $shredder_utils = RT::Test::get_relocatable_file('utils.pl', + File::Spec->curdir()); + require $shredder_utils; +} +init_db(); + + +diag 'simple queue' if $ENV{'TEST_VERBOSE'}; +{ + create_savepoint('clean'); + my $queue = RT::Queue->new( $RT::SystemUser ); + my ($id, $msg) = $queue->Create( Name => 'my queue' ); + ok($id, 'created queue') or diag "error: $msg"; + + my $shredder = shredder_new(); + $shredder->PutObjects( Objects => $queue ); + $shredder->WipeoutAll; + cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint"); +} + +diag 'queue with scrip' if $ENV{'TEST_VERBOSE'}; +{ + create_savepoint('clean'); + my $queue = RT::Queue->new( $RT::SystemUser ); + my ($id, $msg) = $queue->Create( Name => 'my queue' ); + ok($id, 'created queue') or diag "error: $msg"; + + my $scrip = RT::Scrip->new( $RT::SystemUser ); + ($id, $msg) = $scrip->Create( + Description => 'my scrip', + Queue => $queue->id, + ScripCondition => 'On Create', + ScripAction => 'Open Tickets', + Template => 'Blank', + ); + ok($id, 'created scrip') or diag "error: $msg"; + + my $shredder = shredder_new(); + $shredder->PutObjects( Objects => $queue ); + $shredder->WipeoutAll; + cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint"); +} + +diag 'queue with template' if $ENV{'TEST_VERBOSE'}; +{ + create_savepoint('clean'); + my $queue = RT::Queue->new( $RT::SystemUser ); + my ($id, $msg) = $queue->Create( Name => 'my queue' ); + ok($id, 'created queue') or diag "error: $msg"; + + my $template = RT::Template->new( $RT::SystemUser ); + ($id, $msg) = $template->Create( + Name => 'my template', + Queue => $queue->id, + Content => "\nsome content", + ); + ok($id, 'created template') or diag "error: $msg"; + + my $shredder = shredder_new(); + $shredder->PutObjects( Objects => $queue ); + $shredder->WipeoutAll; + cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint"); +} + +diag 'queue with a right granted' if $ENV{'TEST_VERBOSE'}; +{ + create_savepoint('clean'); + my $queue = RT::Queue->new( $RT::SystemUser ); + my ($id, $msg) = $queue->Create( Name => 'my queue' ); + ok($id, 'created queue') or diag "error: $msg"; + + my $group = RT::Group->new( $RT::SystemUser ); + $group->LoadSystemInternalGroup('Everyone'); + ok($group->id, 'loaded group'); + + ($id, $msg) = $group->PrincipalObj->GrantRight( + Right => 'CreateTicket', + Object => $queue, + ); + ok($id, 'granted right') or diag "error: $msg"; + + my $shredder = shredder_new(); + $shredder->PutObjects( Objects => $queue ); + $shredder->WipeoutAll; + cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint"); +} + +diag 'queue with a watcher' if $ENV{'TEST_VERBOSE'}; +{ +# XXX, FIXME: if uncomment these lines then we'll get 'Bizarre...' +# create_savepoint('clean'); + my $group = RT::Group->new( $RT::SystemUser ); + my ($id, $msg) = $group->CreateUserDefinedGroup(Name => 'my group'); + ok($id, 'created group') or diag "error: $msg"; + + create_savepoint('bqcreate'); + my $queue = RT::Queue->new( $RT::SystemUser ); + ($id, $msg) = $queue->Create( Name => 'my queue' ); + ok($id, 'created queue') or diag "error: $msg"; + + ($id, $msg) = $queue->AddWatcher( + Type => 'Cc', + PrincipalId => $group->id, + ); + ok($id, 'added watcher') or diag "error: $msg"; + + my $shredder = shredder_new(); + $shredder->PutObjects( Objects => $queue ); + $shredder->WipeoutAll; + cmp_deeply( dump_current_and_savepoint('bqcreate'), "current DB equal to savepoint"); + +# $shredder->PutObjects( Objects => $group ); +# $shredder->WipeoutAll; +# cmp_deeply( dump_current_and_savepoint('clean'), "current DB equal to savepoint"); +} |