RT 4.0.13
[freeside.git] / rt / t / web / scrips.t
1 use strict;
2 use warnings;
3
4 use RT::Test tests => 14;
5
6 # TODO:
7 # Test the rest of the conditions.
8 # Test actions.
9 # Test templates?
10 # Test cleanup scripts.
11
12 my ($baseurl, $m) = RT::Test->started_ok;
13 ok $m->login, "logged in";
14
15 $m->follow_link_ok({id => 'tools-config-global-scrips-create'});
16
17 sub prepare_code_with_value {
18     my $value = shift;
19
20     # changing the ticket is an easy scrip check for a test
21     return
22         '$self->TicketObj->SetSubject(' .
23         '$self->TicketObj->Subject . ' .
24         '"|" . ' . $value .
25         ')';
26 }
27
28 {
29     # preserve order for checking the subject string later
30     my @values_for_actions;
31
32     my $conds = RT::ScripConditions->new(RT->SystemUser);
33     foreach my $cond_value ('On Forward', 'On Forward Ticket', 'On Forward Transaction') {
34         $conds->Limit(
35             FIELD           => 'name',
36             VALUE           => $cond_value,
37             ENTRYAGGREGATOR => 'OR',
38         );
39     }
40
41     while (my $rec = $conds->Next) {
42         push @values_for_actions, [$rec->Id, '"' . $rec->Name . '"'];
43     }
44
45     @values_for_actions = sort { $a->[0] cmp $b->[0] } @values_for_actions;
46
47     foreach my $data (@values_for_actions) {
48         my ($condition, $prepare_code_value) = @$data;
49         diag "Create Scrip (Cond #$condition)" if $ENV{TEST_VERBOSE};
50         $m->follow_link_ok({id => 'tools-config-global-scrips-create'});
51         my $prepare_code = prepare_code_with_value($prepare_code_value);
52         $m->form_name('ModifyScrip');
53         $m->set_fields(
54             'Scrip-new-ScripCondition'    => $condition,
55             'Scrip-new-ScripAction'       => 15, # User Defined
56             'Scrip-new-Template'          => 1,  # Blank
57             'Scrip-new-CustomPrepareCode' => $prepare_code,
58         );
59         $m->submit;
60     }
61
62     my $ticket_obj = RT::Test->create_ticket(
63         Subject => 'subject',
64         Content => 'stuff',
65         Queue   => 1,
66     );
67     my $ticket = $ticket_obj->id;
68     $m->goto_ticket($ticket);
69
70     $m->follow_link_ok(
71         { id => 'page-actions-forward' },
72         'follow 1st Forward to forward ticket'
73     );
74
75     diag "Forward Ticket" if $ENV{TEST_VERBOSE};
76     $m->submit_form(
77         form_name => 'ForwardMessage',
78         fields    => {
79             To => 'rt-test, rt-to@example.com',
80         },
81         button => 'ForwardAndReturn'
82     );
83
84     $m->text_contains("#${ticket}: subject|On Forward|On Forward Ticket");
85
86     diag "Forward Transaction" if $ENV{TEST_VERBOSE};
87     # get the first transaction on the ticket
88     my ($transaction) = $ticket_obj->Transactions->First->id;
89     $m->get(
90         "$baseurl/Ticket/Forward.html?id=1&QuoteTransaction=$transaction"
91     );
92     $m->submit_form(
93         form_name => 'ForwardMessage',
94         fields    => {
95             To => 'rt-test, rt-to@example.com',
96         },
97         button => 'ForwardAndReturn'
98     );
99
100     $m->text_contains("#${ticket}: subject|On Forward|On Forward Ticket|On Forward|On Forward Transaction");
101
102     RT::Test->clean_caught_mails;
103 }