diff options
Diffstat (limited to 'rt/t/web/cf_date.t')
-rw-r--r-- | rt/t/web/cf_date.t | 187 |
1 files changed, 187 insertions, 0 deletions
diff --git a/rt/t/web/cf_date.t b/rt/t/web/cf_date.t new file mode 100644 index 000000000..887aa4220 --- /dev/null +++ b/rt/t/web/cf_date.t @@ -0,0 +1,187 @@ +#!/usr/bin/perl + +use strict; +use warnings; + +use RT::Test tests => 35; + +my ( $baseurl, $m ) = RT::Test->started_ok; +ok $m->login, 'logged in as root'; +my $root = RT::User->new(RT->SystemUser); +ok( $root->Load('root'), 'load root user' ); + +my $cf_name = 'test cf date'; + +my $cfid; +diag "Create a CF"; +{ + $m->follow_link( id => 'tools-config-custom-fields-create'); + $m->submit_form( + form_name => "ModifyCustomField", + fields => { + Name => $cf_name, + TypeComposite => 'Date-1', + LookupType => 'RT::Queue-RT::Ticket', + }, + ); + $m->content_contains('Object created', 'created CF sucessfully' ); + $cfid = $m->form_name('ModifyCustomField')->value('id'); + ok $cfid, "found id of the CF in the form, it's #$cfid"; +} + +diag "apply the CF to General queue"; +my $queue = RT::Test->load_or_create_queue( Name => 'General' ); +ok $queue && $queue->id, 'loaded or created queue'; + +{ + $m->follow_link( id => 'tools-config-queues-select'); + $m->title_is( q/Admin queues/, 'admin-queues screen' ); + $m->follow_link( text => 'General' ); + $m->title_is( q/Configuration for queue General/, + 'admin-queue: general' ); + $m->follow_link( text => 'Ticket Custom Fields' ); + $m->title_is( q/Custom Fields for queue General/, + 'admin-queue: general cfid' ); + + $m->form_name('EditCustomFields'); + $m->tick( "AddCustomField" => $cfid ); + $m->click('UpdateCFs'); + + $m->content_contains('Object created', 'TCF added to the queue' ); +} + +diag 'check valid inputs with various timezones in ticket create page'; +{ + my ( $ticket, $id ); + + $m->submit_form( + form_name => "CreateTicketInQueue", + fields => { Queue => 'General' }, + ); + $m->content_contains('Select date', 'has cf field' ); + + $m->submit_form( + form_name => "TicketCreate", + fields => { + Subject => 'test 2010-05-04', + Content => 'test', + "Object-RT::Ticket--CustomField-$cfid-Values" => '2010-05-04', + }, + ); + ok( ($id) = $m->content =~ /Ticket (\d+) created/, "created ticket $id" ); + + $ticket = RT::Ticket->new(RT->SystemUser); + $ticket->Load($id); + is( $ticket->CustomFieldValues($cfid)->First->Content, + '2010-05-04', 'date in db' ); + + $m->content_contains('test cf date:', 'has no cf date field on the page' ); + $m->content_contains('Tue May 04 2010', + 'has cf date value on the page' ); +} + +diag 'check search build page'; +{ + $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' ); + + $m->form_name('BuildQuery'); + my ($cf_op) = + $m->find_all_inputs( type => 'option', name_regex => qr/test cf date/ ); + is_deeply( + [ $cf_op->possible_values ], + [ '<', '=', '>' ], + 'right oprators' + ); + + my ($cf_field) = + $m->find_all_inputs( type => 'text', name_regex => qr/test cf date/ ); + $m->submit_form( + fields => { + $cf_op->name => '=', + $cf_field->name => '2010-05-04' + }, + button => 'DoSearch', + ); + + $m->content_contains( 'Found 1 ticket', 'Found 1 ticket' ); + $m->content_contains( '2010-05-04', 'got the right ticket' ); + $m->content_lacks( '2010-05-06', 'did not get the wrong ticket' ); + + $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' ); + $m->form_name('BuildQuery'); + $m->submit_form( + fields => { + $cf_op->name => '<', + $cf_field->name => '2010-05-05' + }, + button => 'DoSearch', + ); + $m->content_contains( 'Found 1 ticket', 'Found 1 ticket' ); + + $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' ); + $m->form_name('BuildQuery'); + $m->submit_form( + fields => { + $cf_op->name => '>', + $cf_field->name => '2010-05-03', + }, + button => 'DoSearch', + ); + $m->content_contains( 'Found 1 ticket', 'Found 1 ticket' ); + + $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' ); + $m->form_name('BuildQuery'); + $m->submit_form( + fields => { + $cf_op->name => '=', + $cf_field->name => '2010-05-05', + }, + button => 'DoSearch', + ); + $m->content_contains( 'Found 0 tickets', 'Found 0 tickets' ); + + $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' ); + $m->form_name('BuildQuery'); + $m->submit_form( + fields => { + $cf_op->name => '<', + $cf_field->name => '2010-05-03', + }, + button => 'DoSearch', + ); + $m->content_contains( 'Found 0 tickets', 'Found 0 tickets' ); + + $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' ); + $m->form_name('BuildQuery'); + $m->submit_form( + fields => { + $cf_op->name => '>', + $cf_field->name => '2010-05-05', + }, + button => 'DoSearch', + ); + $m->content_contains( 'Found 0 tickets', 'Found 0 tickets' ); +} + +diag 'check invalid inputs'; +{ + $m->submit_form( + form_name => "CreateTicketInQueue", + fields => { Queue => 'General' }, + ); + my $form = $m->form_name("TicketCreate"); + + $m->submit_form( + form_name => "TicketCreate", + fields => { + Subject => 'test', + Content => 'test', + "Object-RT::Ticket--CustomField-$cfid-Values" => 'foodate', + }, + ); + $m->content_like( qr/Ticket \d+ created/, + "a ticket is created succesfully" ); + + $m->content_contains('test cf date:', 'has no cf date field on the page' ); + $m->content_lacks('foodate', 'invalid dates not set' ); +} |