use strict; use warnings; use RT::Test tests => 'no_declare'; my ($base, $m) = RT::Test->started_ok; my $cf = RT::Test->load_or_create_custom_field( Name => 'Yaks', Type => 'FreeformSingle', Pattern => '(?#Digits)^\d+$', Queue => 0, LookupType => 'RT::Queue-RT::Ticket', ); ok $cf && $cf->id, "Created CF with Pattern"; my $ticket = RT::Test->create_ticket( Queue => 1, Subject => 'a test ticket', ); ok $ticket && $ticket->id, "Created ticket"; $m->login; for my $page ("/Ticket/Create.html?Queue=1", "/Ticket/Modify.html?id=".$ticket->id) { diag $page; $m->get_ok($page, "Fetched $page"); $m->content_contains("Yaks"); $m->content_contains("Input must match [Digits]"); $m->content_lacks("cfinvalidfield"); my $cfinput = RT::Interface::Web::GetCustomFieldInputName( Object => ( $page =~ /Create/ ? RT::Ticket->new( RT->SystemUser ) : $ticket ), CustomField => $cf, ); $m->submit_form_ok({ with_fields => { $cfinput => "too many", "${cfinput}-Magic" => "1", }, }); $m->content_contains("Input must match [Digits]"); $m->content_contains("cfinvalidfield"); $m->submit_form_ok({ with_fields => { $cfinput => "42", "${cfinput}-Magic" => "1", }, }); if ($page =~ /Create/) { $m->content_like(qr/Ticket \d+ created/, "Created ticket"); } else { $m->content_contains("Yaks 42 added", "Updated ticket"); $m->content_contains("Input must match [Digits]"); $m->content_lacks("cfinvalidfield"); } } diag "Quick ticket creation"; { $m->get_ok("/"); $m->submit_form_ok({ with_fields => { Subject => "test quick create", QuickCreate => 1, }, }); my $tickets = RT::Tickets->new(RT->SystemUser); $tickets->FromSQL("Subject = 'test quick create'"); is $tickets->Count, 0, "No ticket created"; like $m->uri, qr/Ticket\/Create\.html/, "Redirected to the ticket create page"; $m->content_contains("Yaks: Input must match", "Found CF validation error"); $m->content_contains("test quick create", "Found prefilled Subject"); } undef $m; done_testing;