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