import rt 3.8.7
[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 => 28;
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_number => 3,
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 # test DependsOn, MemberOf and RefersTo
81 $m->submit_form(
82     form_number => 3,
83     fields      => {
84         'Ticket-DependsOn' => $link_tickets[0],
85         'Ticket-MemberOf'  => $link_tickets[1],
86         'Ticket-RefersTo'  => $link_tickets[2],
87     },
88 );
89
90 $m->content_contains(
91     "DeleteLink--DependsOn-fsck.com-rt://$rtname/ticket/$link_tickets[0]",
92     'found depends on link' );
93 $m->content_contains(
94     "DeleteLink--MemberOf-fsck.com-rt://$rtname/ticket/$link_tickets[1]",
95     'found member of link' );
96 $m->content_contains(
97     "DeleteLink--RefersTo-fsck.com-rt://$rtname/ticket/$link_tickets[2]",
98     'found refers to link' );
99
100 $m->submit_form(
101     form_number => 3,
102     fields      => {
103         "DeleteLink--DependsOn-fsck.com-rt://$rtname/ticket/$link_tickets[0]" =>
104           1,
105         "DeleteLink--MemberOf-fsck.com-rt://$rtname/ticket/$link_tickets[1]" =>
106           1,
107         "DeleteLink--RefersTo-fsck.com-rt://$rtname/ticket/$link_tickets[2]" =>
108           1,
109     },
110 );
111
112 $m->content_lacks( 'DeleteLink--', 'links are all deleted' );
113
114 # test DependedOnBy, Members and ReferredToBy
115
116 $m->submit_form(
117     form_number => 3,
118     fields      => {
119         'DependsOn-Ticket' => $link_tickets[0],
120         'MemberOf-Ticket'  => $link_tickets[1],
121         'RefersTo-Ticket'  => $link_tickets[2],
122     },
123 );
124
125 $m->content_contains(
126     "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[0]-DependsOn-",
127     'found depended on link' );
128 $m->content_contains(
129     "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[1]-MemberOf-",
130     'found members link' );
131 $m->content_contains(
132     "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[2]-RefersTo-",
133     'found referrd to link' );
134
135 $m->submit_form(
136     form_number => 3,
137     fields      => {
138         "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[0]-DependsOn-" =>
139           1,
140         "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[1]-MemberOf-" =>
141           1,
142         "DeleteLink-fsck.com-rt://$rtname/ticket/$link_tickets[2]-RefersTo-" =>
143           1,
144     },
145 );
146 $m->content_lacks( 'DeleteLink--', 'links are all deleted' );
147