separate reason classes for voiding different transaction types, #38532
[freeside.git] / rt / t / web / search_bulk_update_links.t
1 use strict;
2 use warnings;
3
4 use RT::Test tests => 46;
5 my ( $url, $m ) = RT::Test->started_ok;
6 ok( $m->login, 'logged in' );
7
8 my $rtname = RT->Config->Get('rtname');
9
10 # create tickets
11 use RT::Ticket;
12
13 my ( @link_tickets, @search_tickets );
14 for ( 1 .. 3 ) {
15     my $link_ticket = RT::Ticket->new(RT->SystemUser);
16     my ( $ret, $msg ) = $link_ticket->Create(
17         Subject   => "link ticket $_",
18         Queue     => 'general',
19         Owner     => 'root',
20         Requestor => 'root@localhost',
21     );
22     ok( $ret, "link ticket created: $msg" );
23     push @link_tickets, $ret;
24 }
25
26 for ( 1 .. 3 ) {
27     my $ticket = RT::Ticket->new(RT->SystemUser);
28     my ( $ret, $msg ) = $ticket->Create(
29         Subject   => "search ticket $_",
30         Queue     => 'general',
31         Owner     => 'root',
32         Requestor => 'root@localhost',
33     );
34     ok( $ret, "search ticket created: $msg" );
35     push @search_tickets, $ret;
36 }
37
38 # let's add link to 1 search ticket first
39 $m->get_ok( $url . "/Search/Bulk.html?Query=id=$search_tickets[0]&Rows=10" );
40 $m->content_contains( 'Current Links', 'has current links part' );
41 $m->content_lacks( 'DeleteLink--', 'no delete link stuff' );
42 $m->submit_form(
43     form_name => 'BulkUpdate',
44     fields      => {
45         'Ticket-DependsOn' => $link_tickets[0],
46         'Ticket-MemberOf'  => $link_tickets[1],
47         'Ticket-RefersTo'  => $link_tickets[2],
48     },
49 );
50 $m->content_contains(
51     "Ticket $search_tickets[0] depends on Ticket $link_tickets[0]",
52     'depends on msg',
53 );
54 $m->content_contains(
55     "Ticket $search_tickets[0] member of Ticket $link_tickets[1]",
56     'member of msg',
57 );
58 $m->content_contains(
59     "Ticket $search_tickets[0] refers to Ticket $link_tickets[2]",
60     'refers to msg',
61 );
62
63 $m->content_contains(
64     "DeleteLink--DependsOn-fsck.com-rt://$rtname/ticket/$link_tickets[0]",
65     'found depends on link' );
66 $m->content_contains(
67     "DeleteLink--MemberOf-fsck.com-rt://$rtname/ticket/$link_tickets[1]",
68     'found member of link' );
69 $m->content_contains(
70     "DeleteLink--RefersTo-fsck.com-rt://$rtname/ticket/$link_tickets[2]",
71     'found refers to link' );
72
73 # here we check the *real* bulk update
74 my $query = join ' OR ', map { "id=$_" } @search_tickets;
75 $m->get_ok( $url . "/Search/Bulk.html?Query=$query&Rows=10" );
76 $m->content_contains( 'Current Links', 'has current links part' );
77 $m->content_lacks( 'DeleteLink--', 'no delete link stuff' );
78
79 $m->form_name('BulkUpdate');
80 my @fields = qw/Owner AddRequestor DeleteRequestor AddCc DeleteCc AddAdminCc
81 DeleteAdminCc Subject Priority Queue Status Starts_Date Told_Date Due_Date
82 UpdateSubject UpdateContent/;
83 for my $field ( @fields ) {
84     is( $m->value($field), '', "default $field is empty" );
85 }
86
87 # test DependsOn, MemberOf and RefersTo
88 $m->submit_form(
89     form_name => 'BulkUpdate',
90     fields      => {
91         'Ticket-DependsOn' => $link_tickets[0],
92         'Ticket-MemberOf'  => $link_tickets[1],
93         'Ticket-RefersTo'  => $link_tickets[2],
94     },
95 );
96
97 $m->content_contains(
98     "DeleteLink--DependsOn-fsck.com-rt://$rtname/ticket/$link_tickets[0]",
99     'found depends on link' );
100 $m->content_contains(
101     "DeleteLink--MemberOf-fsck.com-rt://$rtname/ticket/$link_tickets[1]",
102     'found member of link' );
103 $m->content_contains(
104     "DeleteLink--RefersTo-fsck.com-rt://$rtname/ticket/$link_tickets[2]",
105     'found refers to link' );
106
107 $m->submit_form(
108     form_name => 'BulkUpdate',
109     fields      => {
110         "DeleteLink--DependsOn-fsck.com-rt://$rtname/ticket/$link_tickets[0]" =>
111           1,
112         "DeleteLink--MemberOf-fsck.com-rt://$rtname/ticket/$link_tickets[1]" =>
113           1,
114         "DeleteLink--RefersTo-fsck.com-rt://$rtname/ticket/$link_tickets[2]" =>
115           1,
116     },
117 );
118
119 $m->content_lacks( 'DeleteLink--', 'links are all deleted' );
120
121 # test DependedOnBy, Members and ReferredToBy
122
123 $m->submit_form(
124     form_name => 'BulkUpdate',
125     fields      => {
126         'DependsOn-Ticket' => $link_tickets[0],
127         'MemberOf-Ticket'  => $link_tickets[1],
128         'RefersTo-Ticket'  => $link_tickets[2],
129     },
130 );
131
132 $m->content_contains(
133     "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[0]-DependsOn-",
134     'found depended on link' );
135 $m->content_contains(
136     "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[1]-MemberOf-",
137     'found members link' );
138 $m->content_contains(
139     "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[2]-RefersTo-",
140     'found referrd to link' );
141
142 $m->submit_form(
143     form_name => 'BulkUpdate',
144     fields      => {
145         "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[0]-DependsOn-" =>
146           1,
147         "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[1]-MemberOf-" =>
148           1,
149         "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[2]-RefersTo-" =>
150           1,
151     },
152 );
153 $m->content_lacks( 'DeleteLink--', 'links are all deleted' );
154