summaryrefslogtreecommitdiff
path: root/rt/t/web/scrips.t
diff options
context:
space:
mode:
Diffstat (limited to 'rt/t/web/scrips.t')
-rw-r--r--rt/t/web/scrips.t105
1 files changed, 105 insertions, 0 deletions
diff --git a/rt/t/web/scrips.t b/rt/t/web/scrips.t
new file mode 100644
index 0000000..def20ec
--- /dev/null
+++ b/rt/t/web/scrips.t
@@ -0,0 +1,105 @@
+#!/usr/bin/perl
+
+use strict;
+use warnings;
+
+use RT::Test tests => 14;
+
+# TODO:
+# Test the rest of the conditions.
+# Test actions.
+# Test templates?
+# Test cleanup scripts.
+
+my ($baseurl, $m) = RT::Test->started_ok;
+ok $m->login, "logged in";
+
+$m->follow_link_ok({id => 'tools-config-global-scrips-create'});
+
+sub prepare_code_with_value {
+ my $value = shift;
+
+ # changing the ticket is an easy scrip check for a test
+ return
+ '$self->TicketObj->SetSubject(' .
+ '$self->TicketObj->Subject . ' .
+ '"|" . ' . $value .
+ ')';
+}
+
+{
+ # preserve order for checking the subject string later
+ my @values_for_actions;
+
+ my $conds = RT::ScripConditions->new(RT->SystemUser);
+ foreach my $cond_value ('On Forward', 'On Forward Ticket', 'On Forward Transaction') {
+ $conds->Limit(
+ FIELD => 'name',
+ VALUE => $cond_value,
+ ENTRYAGGREGATOR => 'OR',
+ );
+ }
+
+ while (my $rec = $conds->Next) {
+ push @values_for_actions, [$rec->Id, '"' . $rec->Name . '"'];
+ }
+
+ @values_for_actions = sort { $a->[0] cmp $b->[0] } @values_for_actions;
+
+ foreach my $data (@values_for_actions) {
+ my ($condition, $prepare_code_value) = @$data;
+ diag "Create Scrip (Cond #$condition)" if $ENV{TEST_VERBOSE};
+ $m->follow_link_ok({id => 'tools-config-global-scrips-create'});
+ my $prepare_code = prepare_code_with_value($prepare_code_value);
+ $m->form_name('ModifyScrip');
+ $m->set_fields(
+ 'Scrip-new-ScripCondition' => $condition,
+ 'Scrip-new-ScripAction' => 15, # User Defined
+ 'Scrip-new-Template' => 1, # Blank
+ 'Scrip-new-CustomPrepareCode' => $prepare_code,
+ );
+ $m->submit;
+ }
+
+ my $ticket_obj = RT::Test->create_ticket(
+ Subject => 'subject',
+ Content => 'stuff',
+ Queue => 1,
+ );
+ my $ticket = $ticket_obj->id;
+ $m->goto_ticket($ticket);
+
+ $m->follow_link_ok(
+ { id => 'page-actions-forward' },
+ 'follow 1st Forward to forward ticket'
+ );
+
+ diag "Forward Ticket" if $ENV{TEST_VERBOSE};
+ $m->submit_form(
+ form_name => 'ForwardMessage',
+ fields => {
+ To => 'rt-test, rt-to@example.com',
+ },
+ button => 'ForwardAndReturn'
+ );
+
+ $m->text_contains("#${ticket}: subject|On Forward|On Forward Ticket");
+
+ diag "Forward Transaction" if $ENV{TEST_VERBOSE};
+ # get the first transaction on the ticket
+ my ($transaction) = $ticket_obj->Transactions->First->id;
+ $m->get(
+ "$baseurl/Ticket/Forward.html?id=1&QuoteTransaction=$transaction"
+ );
+ $m->submit_form(
+ form_name => 'ForwardMessage',
+ fields => {
+ To => 'rt-test, rt-to@example.com',
+ },
+ button => 'ForwardAndReturn'
+ );
+
+ $m->text_contains("#${ticket}: subject|On Forward|On Forward Ticket|On Forward|On Forward Transaction");
+
+ RT::Test->clean_caught_mails;
+}