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