[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