[Rt-commit] rt branch, cf-date, updated. rt-3.8.8-187-g3f8e512
? sunnavy
sunnavy at bestpractical.com
Mon Jul 26 07:23:24 EDT 2010
The branch, cf-date has been updated
via 3f8e512c4bbda28958261541f88fc77042f3f7ea (commit)
via 91bf43b6eb397e8ef321614c2377f724ba881e48 (commit)
from d1f00feb27cd256d65b140a2068b2b2369b7dee2 (commit)
Summary of changes:
t/api/cf_date_search.t | 141 +++++++++++++++++++++++++++++++++++++++++++++
t/web/cf_date.t | 149 ++++++++++++++++++++++++++++++++++++------------
2 files changed, 254 insertions(+), 36 deletions(-)
create mode 100644 t/api/cf_date_search.t
- Log -----------------------------------------------------------------
commit 91bf43b6eb397e8ef321614c2377f724ba881e48
Author: sunnavy <sunnavy at bestpractical.com>
Date: Mon Jul 26 19:23:45 2010 +0800
more tests for search
diff --git a/t/web/cf_date.t b/t/web/cf_date.t
index 2b3cc58..1560ded 100644
--- a/t/web/cf_date.t
+++ b/t/web/cf_date.t
@@ -3,8 +3,9 @@
use strict;
use warnings;
-use RT::Test tests => 35;
-RT->Config->Set( 'Timezone' => 'US/Eastern' );
+use RT::Test tests => 46;
+RT->Config->Set( 'Timezone' => 'EST5EDT' ); # -04:00
+
my ($baseurl, $m) = RT::Test->started_ok;
ok $m->login, 'logged in as root';
my $root = RT::User->new( $RT::SystemUser );
@@ -67,9 +68,9 @@ diag 'check valid inputs with various timezones in ticket create page' if $ENV{'
$m->submit_form(
form_name => "TicketCreate",
fields => {
- Subject => 'test 2010-05-04 08:00:00',
+ Subject => 'test 2010-05-04 13:00:01',
Content => 'test',
- "Object-RT::Ticket--CustomField-$cfid-Values" => '2010-05-04 08:00:00',
+ "Object-RT::Ticket--CustomField-$cfid-Values" => '2010-05-04 13:00:01',
},
);
ok( ($id) = $m->content =~ /Ticket (\d+) created/,
@@ -79,17 +80,17 @@ diag 'check valid inputs with various timezones in ticket create page' if $ENV{'
$ticket->Load($id);
is(
$ticket->CustomFieldValues($cfid)->First->Content,
- '2010-05-04 12:00:00',
+ '2010-05-04 17:00:01',
'date in db is in UTC'
);
$m->content_like(qr/test cf date:/, 'has no cf date field on the page');
- $m->content_like(qr/Tue May 04 08:00:00 2010/, 'has cf date value on the page');
+ $m->content_like(qr/Tue May 04 13:00:01 2010/, 'has cf date value on the page');
- $root->SetTimezone( 'Asia/Shanghai' ); # +08:00
+ $root->SetTimezone( 'Asia/Shanghai' );
# interesting that $m->reload doesn't work
$m->get_ok( $m->uri );
- $m->content_like(qr/Tue May 04 20:00:00 2010/, 'cf date value respects user timezone');
+ $m->content_like(qr/Wed May 05 01:00:01 2010/, 'cf date value respects user timezone');
$m->submit_form(
form_name => "CreateTicketInQueue",
@@ -98,9 +99,9 @@ diag 'check valid inputs with various timezones in ticket create page' if $ENV{'
$m->submit_form(
form_name => "TicketCreate",
fields => {
- Subject => 'test 2010-05-06 08:00:00',
+ Subject => 'test 2010-05-06 07:00:01',
Content => 'test',
- "Object-RT::Ticket--CustomField-$cfid-Values" => '2010-05-06 08:00:00',
+ "Object-RT::Ticket--CustomField-$cfid-Values" => '2010-05-06 07:00:01',
},
);
ok( ($id) = $m->content =~ /Ticket (\d+) created/,
@@ -109,20 +110,117 @@ diag 'check valid inputs with various timezones in ticket create page' if $ENV{'
$ticket->Load($id);
is(
$ticket->CustomFieldValues($cfid)->First->Content,
- '2010-05-06 00:00:00',
+ '2010-05-05 23:00:01',
'date in db is in UTC'
);
$m->content_like(qr/test cf date:/, 'has no cf date field on the page');
- $m->content_like(qr/Thu May 06 08:00:00 2010/, 'cf date input respects user timezone');
- $root->SetTimezone( 'US/Eastern' ); # back to -04:00
+ $m->content_like(qr/Thu May 06 07:00:01 2010/, 'cf date input respects user timezone');
+ $root->SetTimezone( 'EST5EDT' ); # back to -04:00
$m->get_ok( $m->uri );
- $m->content_like(qr/Wed May 05 20:00:00 2010/, 'cf date value respects user timezone');
+ $m->content_like(qr/Wed May 05 19:00:01 2010/, 'cf date value respects user timezone');
}
-
diag 'check invalid inputs' if $ENV{'TEST_VERBOSE'};
+
+diag 'check search build page' if $ENV{'TEST_VERBOSE'};
+{
+ $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
+
+ # make sure there are at least 2 Calendar links
+ $m->content_like( qr/createCalendar.*createCalendar/s,
+ 'have at least 2 Calendar links' );
+ $m->form_number(3);
+ 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' );
+
+ my $shanghai = RT::Test->load_or_create_user(
+ Name => 'shanghai',
+ Password => 'password',
+ Timezone => 'Asia/Shanghai',
+ );
+ ok( $shanghai->PrincipalObj->GrantRight(
+ Right => 'SuperUser',
+ Object => $RT::System,
+ ));
+ $m->login( 'shanghai', 'password' );
+
+ $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
+ $m->form_number(3);
+ $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_number(3);
+ $m->submit_form(
+ fields => {
+ $cf_op->name => '<',
+ $cf_field->name => '2010-05-06'
+ },
+ button => 'DoSearch',
+ );
+ $m->content_contains( 'Found 2 ticket', 'Found 2 ticket' );
+
+ $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
+ $m->form_number(3);
+ $m->submit_form(
+ fields => {
+ $cf_op->name => '>',
+ $cf_field->name => '2010-05-03',
+ },
+ button => 'DoSearch',
+ );
+ $m->content_contains( 'Found 2 tickets', 'Found 2 tickets' );
+
+ $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
+ $m->form_number(3);
+ $m->submit_form(
+ fields => {
+ $cf_op->name => '=',
+ $cf_field->name => '2010-05-04 16:00:01',
+ },
+ button => 'DoSearch',
+ );
+ $m->content_contains( 'Found 1 ticket', 'Found 1 ticket' );
+
+ $m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
+ $m->form_number(3);
+ $m->submit_form(
+ fields => {
+ $cf_op->name => '=',
+ $cf_field->name => '2010-05-05 01:00:01',
+ },
+ button => 'DoSearch',
+ );
+ $m->content_contains( 'Found 1 ticket', 'Found 1 ticket' );
+}
+
{
$m->submit_form(
form_name => "CreateTicketInQueue",
@@ -143,24 +241,3 @@ diag 'check invalid inputs' if $ENV{'TEST_VERBOSE'};
$m->content_like(qr/test cf date:/, 'has no cf date field on the page');
$m->content_unlike(qr/foodate/, 'invalid dates not set');
}
-
-diag 'check search build page' if $ENV{'TEST_VERBOSE'};
-$m->get_ok( $baseurl . '/Search/Build.html?Query=Queue=1' );
-
-# make sure there are at least 2 Calendar links
-$m->content_like( qr/createCalendar.*createCalendar/s, 'have at least 2 Calendar links' );
-$m->form_number(3);
-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' );
commit 3f8e512c4bbda28958261541f88fc77042f3f7ea
Author: sunnavy <sunnavy at bestpractical.com>
Date: Mon Jul 26 19:24:08 2010 +0800
add t/api/cf_date_search.t
diff --git a/t/api/cf_date_search.t b/t/api/cf_date_search.t
new file mode 100644
index 0000000..fd45e2d
--- /dev/null
+++ b/t/api/cf_date_search.t
@@ -0,0 +1,141 @@
+#!/usr/bin/perl
+
+use warnings;
+use strict;
+
+use RT::Test tests => 14;
+RT->Config->Set( 'Timezone' => 'EST5EDT' ); # -04:00
+
+my $q = RT::Queue->new($RT::SystemUser);
+ok( $q->Create( Name => 'DateCFTest' . $$ ), 'create queue' );
+
+my $cf = RT::CustomField->new($RT::SystemUser);
+ok(
+ $cf->Create(
+ Name => 'date-' . $$,
+ Type => 'Date',
+ MaxValues => 1,
+ LookupType => RT::Ticket->CustomFieldLookupType,
+ ),
+ 'create cf date'
+);
+ok( $cf->AddToObject($q), 'date cf apply to queue' );
+
+my $ticket = RT::Ticket->new($RT::SystemUser);
+
+ok(
+ $ticket->Create(
+ Queue => $q->id,
+ Subject => 'Test',
+ 'CustomField-' . $cf->id => '2010-05-04 08:00:00',
+ ),
+ 'create ticket with cf set to 2010-05-04 08:00:00( 2010-05-04 12:00:00 with UTC )'
+);
+
+is(
+ $ticket->CustomFieldValues->First->Content,
+ '2010-05-04 12:00:00',
+ 'date in db is in timezone UTC'
+);
+
+{
+
+ my $tickets = RT::Tickets->new($RT::SystemUser);
+ $tickets->LimitCustomField(
+ CUSTOMFIELD => $cf->id,
+ OPERATOR => '=',
+ VALUE => '2010-05-04 12:00:00', # this timezone is UTC
+ );
+
+ is( $tickets->Count, 1, 'found the ticket with exact date: 2010-05-04 12:00:00' );
+}
+
+{
+
+ # TODO according to the code, if OPERATOR is '=', it means on that day
+ # this will test this behavior
+ my $tickets = RT::Tickets->new($RT::SystemUser);
+ $tickets->LimitCustomField(
+ CUSTOMFIELD => $cf->id,
+ OPERATOR => '=',
+ VALUE => '2010-05-04',
+ );
+
+ is( $tickets->Count, 1, 'found the ticket with rough date: 2010-05-04' );
+}
+
+{
+
+ # TODO according to the code, if OPERATOR is '=', it means on that day
+ # this will test this behavior
+ my $tickets = RT::Tickets->new($RT::SystemUser);
+ $tickets->LimitCustomField(
+ CUSTOMFIELD => $cf->id,
+ OPERATOR => '=',
+ VALUE => '2010-05-05',
+ );
+
+ is( $tickets->Count, 0, 'did not find the ticket with wrong date: 2010-05-05' );
+}
+
+my $tickets = RT::Tickets->new( $RT::SystemUser );
+$tickets->UnLimit;
+while( my $ticket = $tickets->Next ) {
+ $ticket->Delete();
+}
+
+{
+ ok(
+ $ticket->Create(
+ Queue => $q->id,
+ Subject => 'Test',
+ 'CustomField-' . $cf->id => '2010-06-21 17:00:01',
+ ),
+'create ticket with cf set to 2010-06-21 17:00:01( 2010-06-21 21:00:01 with UTC )'
+ );
+
+ my $shanghai = RT::Test->load_or_create_user(
+ Name => 'shanghai',
+ Timezone => 'Asia/Shanghai',
+ );
+
+ ok(
+ $shanghai->PrincipalObj->GrantRight(
+ Right => 'SuperUser',
+ Object => $RT::System,
+ )
+ );
+
+ my $current_user = RT::CurrentUser->new($shanghai);
+ my $tickets = RT::Tickets->new($current_user);
+ $tickets->LimitCustomField(
+ CUSTOMFIELD => $cf->id,
+ OPERATOR => '=',
+ VALUE => '2010-06-22',
+ );
+ is( $tickets->Count, 1, 'found the ticket with rough date: 2010-06-22' );
+
+ $tickets->UnLimit;
+ $tickets->LimitCustomField(
+ CUSTOMFIELD => $cf->id,
+ OPERATOR => '>',
+ VALUE => '2010-06-21',
+ );
+ is( $tickets->Count, 1, 'found the ticket with > 2010-06-21' );
+
+ $tickets->UnLimit;
+ $tickets->LimitCustomField(
+ CUSTOMFIELD => $cf->id,
+ OPERATOR => '<',
+ VALUE => '2010-06-23',
+ );
+ is( $tickets->Count, 1, 'found the ticket with < 2010-06-23' );
+
+ $tickets->UnLimit;
+ $tickets->LimitCustomField(
+ CUSTOMFIELD => $cf->id,
+ OPERATOR => '=',
+ VALUE => '2010-06-22 05:00:01',
+ );
+ is( $tickets->Count, 1, 'found the ticket with = 2010-06-22 01:00:01' );
+}
-----------------------------------------------------------------------
More information about the Rt-commit
mailing list