X-Git-Url: http://git.freeside.biz/gitweb/?a=blobdiff_plain;f=rt%2Ft%2Fcustomfields%2Fdate_search.t;h=2a8e6ce7a47f910615e5b4c5f70fb8732c99cf17;hb=679854b8bbc65d112071111bbd7f34a6a481fb30;hp=b425b9e36582a5d2498f2ba19a59a3b574e38d11;hpb=9b328d940af56b9924a342192ebb0790478fa705;p=freeside.git diff --git a/rt/t/customfields/date_search.t b/rt/t/customfields/date_search.t index b425b9e36..2a8e6ce7a 100644 --- a/rt/t/customfields/date_search.t +++ b/rt/t/customfields/date_search.t @@ -1,17 +1,29 @@ -#!/usr/bin/perl +use Test::MockTime qw(set_fixed_time restore_time); use warnings; use strict; -use RT::Test nodata => 1, tests => 13; +use RT::Test nodata => 1, tests => 21; -my $q = RT::Queue->new(RT->SystemUser); -ok( $q->Create( Name => 'DateCFTest' . $$ ), 'create queue' ); +RT::Test->set_rights( + { Principal => 'Everyone', Right => [qw( + SeeQueue ShowTicket CreateTicket SeeCustomField ModifyCustomField + )] }, +); + +my $q = RT::Test->load_or_create_queue( Name => 'General' ); +ok $q && $q->id, 'loaded or created a queue'; + +my $user_m = RT::Test->load_or_create_user( Name => 'moscow', Timezone => 'Europe/Moscow' ); +ok $user_m && $user_m->id; + +my $user_b = RT::Test->load_or_create_user( Name => 'boston', Timezone => 'America/New_York' ); +ok $user_b && $user_b->id; my $cf = RT::CustomField->new(RT->SystemUser); ok( $cf->Create( - Name => 'date-' . $$, + Name => 'TestDate', Type => 'Date', MaxValues => 1, LookupType => RT::Ticket->CustomFieldLookupType, @@ -19,6 +31,7 @@ ok( 'create cf date' ); ok( $cf->AddToObject($q), 'date cf apply to queue' ); +my $cf_name = $cf->Name; my $ticket = RT::Ticket->new(RT->SystemUser); @@ -80,6 +93,22 @@ is( $ticket->CustomFieldValues->First->Content, '2010-05-04', 'date in db is' ); } { + my $tickets = RT::Tickets->new(RT->SystemUser); + $tickets->FromSQL( "'CF.{$cf_name}' = 'May 4 2010'" ); + is( $tickets->Count, 1, 'found the ticket with = May 4 2010' ); + + $tickets->FromSQL( "'CF.{$cf_name}' < 'May 4 2010'" ); + is( $tickets->Count, 0, 'did not find the ticket with < May 4 2010' ); + + $tickets->FromSQL( "'CF.{$cf_name}' < 'May 5 2010'" ); + is( $tickets->Count, 1, 'found the ticket with < May 5 2010' ); + + $tickets->FromSQL( "'CF.{$cf_name}' > 'May 3 2010'" ); + is( $tickets->Count, 1, 'found the ticket with > May 3 2010' ); +} + + +{ my $tickets = RT::Tickets->new(RT->SystemUser); $tickets->LimitCustomField( @@ -103,17 +132,33 @@ is( $ticket->CustomFieldValues->First->Content, '2010-05-04', 'date in db is' ); is( $tickets->Count, 0, 'did not find the ticket with > 2010-05-05' ); } -$ticket = RT::Ticket->new(RT->SystemUser); - -ok( - $ticket->Create( +# relative search by users in different TZs +{ + my $ticket = RT::Ticket->new(RT->SystemUser); + my ($tid) = $ticket->Create( Queue => $q->id, Subject => 'Test', - 'CustomField-' . $cf->id => '2010-05-04 11:34:56', - ), - 'create ticket with cf set to 2010-05-04 11:34:56' -); + 'CustomField-' . $cf->id => '2013-02-12', + ); -is( $ticket->CustomFieldValues->First->Content, - '2010-05-04', 'date in db only has date' ); + set_fixed_time("2013-02-10T23:10:00Z"); + my $tickets = RT::Tickets->new($user_m); + $tickets->FromSQL("'CustomField.{$cf_name}' = 'tomorrow' AND id = $tid"); + is( $tickets->Count, 1, 'found the ticket' ); + + set_fixed_time("2013-02-10T15:10:00Z"); + $tickets = RT::Tickets->new($user_m); + $tickets->FromSQL("'CustomField.{$cf_name}' = 'tomorrow' AND id = $tid"); + is( $tickets->Count, 0, 'found no tickets' ); + + set_fixed_time("2013-02-10T23:10:00Z"); + $tickets = RT::Tickets->new($user_b); + $tickets->FromSQL("'CustomField.{$cf_name}' = 'tomorrow' AND id = $tid"); + is( $tickets->Count, 0, 'found no tickets' ); + + set_fixed_time("2013-02-11T23:10:00Z"); + $tickets = RT::Tickets->new($user_b); + $tickets->FromSQL("'CustomField.{$cf_name}' = 'tomorrow' AND id = $tid"); + is( $tickets->Count, 1, 'found the tickets' ); +}