fix ticketing system error on bootstrap of new install
[freeside.git] / rt / t / web / cf_pattern.t
1 use strict;
2 use warnings;
3
4 use RT::Test tests => 'no_declare';
5
6 my ($base, $m) = RT::Test->started_ok;
7
8 my $cf = RT::Test->load_or_create_custom_field(
9     Name        => 'Yaks',
10     Type        => 'FreeformSingle',
11     Pattern     => '(?#Digits)^\d+$',
12     Queue       => 0,
13     LookupType  => 'RT::Queue-RT::Ticket',
14 );
15 ok $cf && $cf->id, "Created CF with Pattern";
16
17 my $ticket = RT::Test->create_ticket(
18     Queue   => 1,
19     Subject => 'a test ticket',
20 );
21 ok $ticket && $ticket->id, "Created ticket";
22
23 $m->login;
24
25 for my $page ("/Ticket/Create.html?Queue=1", "/Ticket/Modify.html?id=".$ticket->id) {
26     diag $page;
27     $m->get_ok($page, "Fetched $page");
28     $m->content_contains("Yaks");
29     $m->content_contains("Input must match [Digits]");
30     $m->content_lacks("cfinvalidfield");
31
32     my $cfinput = RT::Interface::Web::GetCustomFieldInputName(
33         Object => ( $page =~ /Create/ ? RT::Ticket->new( RT->SystemUser ) : $ticket ),
34         CustomField => $cf,
35     );
36     $m->submit_form_ok({
37         with_fields => {
38             $cfinput            => "too many",
39             "${cfinput}-Magic" => "1",
40         },
41     });
42     $m->content_contains("Input must match [Digits]");
43     $m->content_contains("cfinvalidfield");
44
45     $m->submit_form_ok({
46         with_fields => {
47             $cfinput            => "42",
48             "${cfinput}-Magic" => "1",
49         },
50     });
51
52     if ($page =~ /Create/) {
53         $m->content_like(qr/Ticket \d+ created/, "Created ticket");
54     } else {
55         $m->content_contains("Yaks 42 added", "Updated ticket");
56         $m->content_contains("Input must match [Digits]");
57         $m->content_lacks("cfinvalidfield");
58     }
59 }
60
61 diag "Quick ticket creation";
62 {
63     $m->get_ok("/");
64     $m->submit_form_ok({
65         with_fields => {
66             Subject     => "test quick create",
67             QuickCreate => 1,
68         },
69     });
70     my $tickets = RT::Tickets->new(RT->SystemUser);
71     $tickets->FromSQL("Subject = 'test quick create'");
72     is $tickets->Count, 0, "No ticket created";
73
74     like $m->uri, qr/Ticket\/Create\.html/, "Redirected to the ticket create page";
75     $m->content_contains("Yaks: Input must match", "Found CF validation error");
76     $m->content_contains("test quick create", "Found prefilled Subject");
77 }
78
79 undef $m;
80 done_testing;