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(
ok( $scrip->Delete, 'delete the scrip' );
}
-1;
+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');
+}