first pass RT4 merge, RT#13852
[freeside.git] / rt / t / articles / queue-specific-class.t
1 #!/usr/bin/perl
2
3 use strict;
4 use warnings;
5
6 use RT::Test tests => 56;
7
8 my ( $url, $m ) = RT::Test->started_ok;
9 $m->login;
10
11 my %class = map { $_ => '' } qw/foo bar/;
12
13 diag "create classes foo and bar" if $ENV{TEST_VERBOSE};
14
15 for my $name ( keys %class ) {
16     $m->get_ok( '/Admin/Articles/Classes/Modify.html?Create=1',
17         'class create page' );
18
19     $m->submit_form(
20         form_number => 3,
21         fields      => { Name => $name, HotList => 1 },
22     );
23
24     $m->content_contains( "Modify the Class $name",
25         'created class $name' );
26     my ($id) = ( $m->content =~ /name="id" value="(\d+)"/ );
27     ok( $id, "id of $name" );
28     $class{$name} = $id;
29 }
30
31 diag "create articles in foo and bar" if $ENV{TEST_VERBOSE};
32
33 for my $name ( keys %class ) {
34     $m->get_ok( '/Articles/Article/Edit.html?Class=' . $class{$name},
35         'article create page' );
36
37     $m->submit_form(
38         form_number => 3,
39         fields      => { Name => "article $name" }
40     );
41
42     $m->content_like( qr/Article \d+ created/, "created article $name" );
43 }
44
45 diag "apply foo to queue General" if $ENV{TEST_VERBOSE};
46 {
47     $m->get_ok( '/Admin/Articles/Classes/Objects.html?id=' . $class{foo},
48         'apply page' );
49     $m->submit_form(
50         form_number => 3,
51         fields      => { 'AddClass-' . $class{foo} => 1 },
52         button      => 'UpdateObjs',
53     );
54     $m->content_contains( 'Object created', 'applied foo to General' );
55 }
56
57 my $ticket_id;
58
59 diag "create ticket in General" if $ENV{TEST_VERBOSE};
60
61 {
62     $m->get_ok( '/Ticket/Create.html?Queue=1', 'ticket create page' );
63     $m->submit_form(
64         form_number => 3,
65         fields => { 'Subject' => 'test article', Content => 'test article' },
66     );
67     ($ticket_id) = ( $m->content =~ /Ticket \d+ created/ );
68     ok( $ticket_id, "id of ticket: $ticket_id" );
69 }
70
71 diag "update ticket to see if there is article foo"
72   if $ENV{TEST_VERBOSE};
73
74 {
75     $m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket_id,
76         'ticket update page' );
77     $m->content_contains( 'article foo:', 'got article foo in hotlist' );
78     $m->content_lacks( 'article bar:', 'no article bar in hotlist' );
79
80     $m->submit_form(
81         form_number => 3,
82         fields      => { 'Articles_Content' => 'article' },
83         button      => 'Go',
84     );
85     $m->content_like( qr/article foo.*article foo/s, 'selected article foo' );
86     $m->content_lacks( 'article bar', 'no article bar' );
87
88     $m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket_id,
89         'ticket update page' );
90     $m->submit_form(
91         form_number => 3,
92         fields      => { 'Articles-Include-Article-Named' => 'article foo' },
93         button      => 'Go',
94     );
95     $m->content_like( qr/article foo.*article foo/s, 'selected article foo' );
96     $m->content_lacks( 'article bar', 'no article bar' );
97
98     $m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket_id,
99         'ticket update page' );
100     $m->submit_form(
101         form_number => 3,
102         fields      => { 'Articles-Include-Article-Named' => 'articlei bar' },
103         button      => 'Go',
104     );
105     $m->content_unlike( qr/article foo.*article foo/s, 'no article foo' );
106     $m->content_lacks( 'article bar', 'no article bar' );
107 }
108
109 diag "apply bar to globally" if $ENV{TEST_VERBOSE};
110 {
111     $m->get_ok( '/Admin/Articles/Classes/Objects.html?id=' . $class{bar},
112         'apply page' );
113     $m->submit_form(
114         form_number => 3,
115         fields      => { 'AddClass-' . $class{bar} => 0 },
116         button      => 'UpdateObjs',
117     );
118     $m->content_contains( 'Object created', 'applied bar globally' );
119 }
120
121 diag "update ticket to see if there are both article foo and bar"
122   if $ENV{TEST_VERBOSE};
123
124 {
125     $m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket_id,
126         'ticket update page' );
127     $m->content_contains( 'article foo:', 'got article foo in hotlist' );
128     $m->content_contains( 'article bar:', 'got article bar in hotlist' );
129
130     $m->submit_form(
131         form_number => 3,
132         fields      => { 'Articles_Content' => 'article' },
133         button      => 'Go',
134     );
135     $m->content_like( qr/article foo.*article foo/s, 'selected article foo' );
136     $m->content_like( qr/article bar.*article bar/s, 'selected article bar' );
137
138     $m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket_id,
139         'ticket update page' );
140     $m->submit_form(
141         form_number => 3,
142         fields      => { 'Articles-Include-Article-Named' => 'article foo' },
143         button      => 'Go',
144     );
145     $m->content_like( qr/article foo.*article foo/s, 'selected article foo' );
146     $m->content_unlike( qr/article bar.*article bar/s, 'no article bar' );
147
148     $m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket_id,
149         'ticket update page' );
150     $m->submit_form(
151         form_number => 3,
152         fields      => { 'Articles-Include-Article-Named' => 'article bar' },
153         button      => 'Go',
154     );
155     $m->content_like( qr/article bar.*article bar/s, 'selected article bar' );
156     $m->content_unlike( qr/article foo.*article foo/s, 'no article foo' );
157 }
158
159
160 diag "remove both foo and bar" if $ENV{TEST_VERBOSE};
161 {
162     $m->get_ok( '/Admin/Articles/Classes/Objects.html?id=' . $class{foo},
163         'apply page' );
164     $m->submit_form(
165         form_number => 3,
166         fields      => { 'RemoveClass-' . $class{foo} => 1 },
167         button      => 'UpdateObjs',
168     );
169     $m->content_contains( 'Object deleted', 'removed foo' );
170
171     $m->get_ok( '/Admin/Articles/Classes/Objects.html?id=' . $class{bar},
172         'apply page' );
173     $m->submit_form(
174         form_number => 3,
175         fields      => { 'RemoveClass-' . $class{bar} => 0 },
176         button      => 'UpdateObjs',
177     );
178     $m->content_contains( 'Object deleted', 'remoked bar' );
179 }
180
181 diag "update ticket to see if there are both article foo and bar"
182   if $ENV{TEST_VERBOSE};
183
184 {
185     $m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket_id,
186         'ticket update page' );
187     $m->content_lacks( 'article foo:', 'no article foo in hotlist' );
188     $m->content_lacks( 'article bar:', 'no article bar in hotlist' );
189
190     $m->submit_form(
191         form_number => 3,
192         fields      => { 'Articles_Content' => 'article' },
193         button      => 'Go',
194     );
195     $m->content_lacks( 'article foo', 'no article foo' );
196     $m->content_lacks( 'article bar', 'no article bar' );
197
198     $m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket_id,
199         'ticket update page' );
200     $m->submit_form(
201         form_number => 3,
202         fields      => { 'Articles-Include-Article-Named' => 'article foo' },
203         button      => 'Go',
204     );
205     $m->content_lacks( 'article foo', 'no article foo' );
206     $m->content_lacks( 'article bar', 'no article bar' );
207
208     $m->get_ok( '/Ticket/Update.html?Action=Comment&id=' . $ticket_id,
209         'ticket update page' );
210     $m->submit_form(
211         form_number => 3,
212         fields      => { 'Articles-Include-Article-Named' => 'article bar' },
213         button      => 'Go',
214     );
215     $m->content_lacks( 'article foo', 'no article foo' );
216     $m->content_lacks( 'article bar', 'no article bar' );
217 }
218