X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Ft%2Fapi%2Fscrip.t;h=d6019a082e38054af696d2f55d52d68ed2920960;hb=01721976fa3324f41a3093cda68bc38a7eec5ff5;hp=eb543476b2be967692b0638150ff155b74762566;hpb=a6fe07e49e3fc12169e801b1ed6874c3a5bd8500;p=freeside.git diff --git a/rt/t/api/scrip.t b/rt/t/api/scrip.t index eb543476b..d6019a082 100644 --- a/rt/t/api/scrip.t +++ b/rt/t/api/scrip.t @@ -1,52 +1,44 @@ use strict; use warnings; -use RT; -use RT::Test tests => 25; +use RT::Test; +my $queue = RT::Test->load_or_create_queue( Name => 'General' ); +ok $queue && $queue->id, 'loaded or created queue'; +note 'basic scrips functionality test: create+execute'; { - -ok (require RT::Scrip); - - -my $q = RT::Queue->new(RT->SystemUser); -$q->Create(Name => 'ScripTest'); -ok($q->Id, "Created a scriptest queue"); - -my $s1 = RT::Scrip->new(RT->SystemUser); -my ($val, $msg) =$s1->Create( Queue => $q->Id, - ScripAction => 'User Defined', - ScripCondition => 'User Defined', - CustomIsApplicableCode => 'if ($self->TicketObj->Subject =~ /fire/) { return (1);} else { return(0)}', - CustomPrepareCode => 'return 1', - CustomCommitCode => '$self->TicketObj->SetPriority("87");', - Template => 'Blank' + my $s1 = RT::Scrip->new(RT->SystemUser); + my ($val, $msg) = $s1->Create( + Queue => $queue->Id, + ScripAction => 'User Defined', + ScripCondition => 'User Defined', + CustomIsApplicableCode => '$self->TicketObj->Subject =~ /fire/? 1 : 0', + CustomPrepareCode => 'return 1', + CustomCommitCode => '$self->TicketObj->SetPriority("87");', + Template => 'Blank' ); -ok($val,$msg); - -my $ticket = RT::Ticket->new(RT->SystemUser); -my ($tv,$ttv,$tm) = $ticket->Create(Queue => $q->Id, - Subject => "hair on fire", - ); -ok($tv, $tm); - -is ($ticket->Priority , '87', "Ticket priority is set right"); - - -my $ticket2 = RT::Ticket->new(RT->SystemUser); -my ($t2v,$t2tv,$t2m) = $ticket2->Create(Queue => $q->Id, - Subject => "hair in water", - ); -ok($t2v, $t2m); - -isnt ($ticket2->Priority , '87', "Ticket priority is set right"); + ok($val,$msg); + my $ticket = RT::Ticket->new(RT->SystemUser); + my ($tv,$ttv,$tm) = $ticket->Create( + Queue => $queue->Id, + Subject => "hair on fire", + ); + ok($tv, $tm); + is ($ticket->Priority , '87', "Ticket priority is set right"); + my $ticket2 = RT::Ticket->new(RT->SystemUser); + my ($t2v,$t2tv,$t2m) = $ticket2->Create( + Queue => $queue->Id, + Subject => "hair in water", + ); + ok($t2v, $t2m); + isnt ($ticket2->Priority , '87', "Ticket priority is set right"); } - +note 'modify properties of a scrip'; { my $scrip = RT::Scrip->new($RT::SystemUser); my ( $val, $msg ) = $scrip->Create( @@ -117,3 +109,158 @@ isnt ($ticket2->Priority , '87', "Ticket priority is set right"); ok( $scrip->Delete, 'delete the scrip' ); } + +my $queue_B = RT::Test->load_or_create_queue( Name => 'B' ); +ok $queue_B && $queue_B->id, 'loaded or created queue'; + +note 'check creation errors vs. templates'; +{ + my $scrip = RT::Scrip->new(RT->SystemUser); + my ($status, $msg) = $scrip->Create( + Queue => $queue->id, + ScripAction => 'User Defined', + ScripCondition => 'User Defined', + Template => 'not exist', + ); + ok(!$status, "couldn't create scrip, not existing template"); + + ($status, $msg) = $scrip->Create( + ScripAction => 'User Defined', + ScripCondition => 'User Defined', + Template => 'not exist', + ); + ok(!$status, "couldn't create scrip, not existing template"); + + ($status, $msg) = $scrip->Create( + Queue => $queue->id, + ScripAction => 'User Defined', + ScripCondition => 'User Defined', + Template => 54321, + ); + ok(!$status, "couldn't create scrip, not existing template"); + + ($status, $msg) = $scrip->Create( + ScripAction => 'User Defined', + ScripCondition => 'User Defined', + Template => 54321, + ); + ok(!$status, "couldn't create scrip, not existing template"); + + my $template = RT::Template->new( RT->SystemUser ); + ($status, $msg) = $template->Create( Queue => $queue->id, Name => 'bar' ); + ok $status, 'created a template'; + + ($status, $msg) = $scrip->Create( + ScripAction => 'User Defined', + ScripCondition => 'User Defined', + Template => $template->id, + ); + ok(!$status, "couldn't create scrip, wrong template"); + + ($status, $msg) = $scrip->Create( + Queue => $queue_B->id, + ScripAction => 'User Defined', + ScripCondition => 'User Defined', + Template => $template->id, + ); + ok(!$status, "couldn't create scrip, wrong template"); +} + +note 'check applications vs. templates'; +{ + my $template = RT::Template->new( RT->SystemUser ); + my ($status, $msg) = $template->Create( Queue => $queue->id, Name => 'foo' ); + ok $status, 'created a template'; + + my $scrip = RT::Scrip->new(RT->SystemUser); + ($status, $msg) = $scrip->Create( + Queue => $queue->Id, + ScripAction => 'User Defined', + ScripCondition => 'User Defined', + Template => 'foo', + CustomIsApplicableCode => "1;", + CustomPrepareCode => "1;", + CustomCommitCode => "1;", + ); + ok($status, 'created a scrip') or diag "error: $msg"; + RT::Test->object_scrips_are($scrip, [$queue], [0, $queue_B]); + + ($status, $msg) = $scrip->AddToObject( $queue_B->id ); + ok(!$status, $msg); + RT::Test->object_scrips_are($scrip, [$queue], [0, $queue_B]); + my $obj_scrip = RT::ObjectScrip->new( RT->SystemUser ); + ok($obj_scrip->LoadByCols( Scrip => $scrip->id, ObjectId => $queue->id )); + is($obj_scrip->Stage, 'TransactionCreate'); + is($obj_scrip->FriendlyStage, 'Normal'); + + $template = RT::Template->new( RT->SystemUser ); + ($status, $msg) = $template->Create( Queue => $queue_B->id, Name => 'foo' ); + ok $status, 'created a template'; + + ($status, $msg) = $scrip->AddToObject( $queue_B->id ); + ok($status, 'added scrip to another queue'); + RT::Test->object_scrips_are($scrip, [$queue, $queue_B], [0]); + + ($status, $msg) = $scrip->RemoveFromObject( $queue_B->id ); + ok($status, 'removed scrip from queue'); + + ($status, $msg) = $template->Delete; + ok $status, 'deleted template foo in queue B'; + + ($status, $msg) = $scrip->AddToObject( $queue_B->id ); + ok(!$status, $msg); + RT::Test->object_scrips_are($scrip, [$queue], [0, $queue_B]); + + ($status, $msg) = $template->Create( Queue => 0, Name => 'foo' ); + ok $status, 'created a global template'; + + ($status, $msg) = $scrip->AddToObject( $queue_B->id ); + ok($status, 'added scrip'); + RT::Test->object_scrips_are($scrip, [$queue, $queue_B], [0]); +} + +note 'basic check for disabling scrips'; +{ + my $scrip = RT::Scrip->new(RT->SystemUser); + my ($status, $msg) = $scrip->Create( + Queue => $queue->id, + ScripCondition => 'On Create', + ScripAction => 'User Defined', + CustomPrepareCode => 'return 1', + CustomCommitCode => '$self->TicketObj->SetPriority("87"); return 1', + Template => 'Blank' + ); + ok($status, "created scrip"); + is($scrip->Disabled, 0, "not disabled"); + + { + my $ticket = RT::Ticket->new(RT->SystemUser); + my ($tid, undef, $msg) = $ticket->Create( + Queue => $queue->id, + Subject => "test", + ); + ok($tid, "created ticket") or diag "error: $msg"; + is ($ticket->Priority , '87', "Ticket priority is set right"); + } + + ($status,$msg) = $scrip->SetDisabled(1); + is($scrip->Disabled, 1, "disabled"); + + { + my $ticket = RT::Ticket->new(RT->SystemUser); + my ($tid, undef, $msg) = $ticket->Create( + Queue => $queue->id, + Subject => "test", + ); + ok($tid, "created ticket") or diag "error: $msg"; + isnt ($ticket->Priority , '87', "Ticket priority is set right"); + } + + is($scrip->FriendlyStage('TransactionCreate'), 'Normal', + 'Correct stage wording for TransactionCreate'); + is($scrip->FriendlyStage('TransactionBatch'), 'Batch', + 'Correct stage wording for TransactionBatch'); + RT->Config->Set('UseTransactionBatch', 0); + is($scrip->FriendlyStage('TransactionBatch'), 'Batch (disabled by config)', + 'Correct stage wording for TransactionBatch with UseTransactionBatch disabled'); +}