summaryrefslogtreecommitdiff
path: root/rt/t/web/cf_date.t
diff options
context:
space:
mode:
Diffstat (limited to 'rt/t/web/cf_date.t')
-rw-r--r--rt/t/web/cf_date.t187
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' );
+}