[Rt-commit] r5254 - in RT-Extension-CommandByEmail: t

ruz at bestpractical.com ruz at bestpractical.com
Thu May 18 19:41:43 EDT 2006


Author: ruz
Date: Thu May 18 19:41:43 2006
New Revision: 5254

Modified:
   RT-Extension-CommandByEmail/lib/RT/Interface/Email/Filter/TakeAction.pm
   RT-Extension-CommandByEmail/t/03.update.t

Log:
* TimeWorked should be additive on comment/correspond

Modified: RT-Extension-CommandByEmail/lib/RT/Interface/Email/Filter/TakeAction.pm
==============================================================================
--- RT-Extension-CommandByEmail/lib/RT/Interface/Email/Filter/TakeAction.pm	(original)
+++ RT-Extension-CommandByEmail/lib/RT/Interface/Email/Filter/TakeAction.pm	Thu May 18 19:41:43 2006
@@ -144,7 +144,7 @@
         $ticket_as_user->Load( $args{'Ticket'}->id );
 
         # we set status later as correspond can reopen ticket
-        foreach my $attribute (grep $_ ne 'Status', @REGULAR_ATTRIBUTES, @TIME_ATTRIBUTES) {
+        foreach my $attribute (grep !/^(Status|TimeWorked)/, @REGULAR_ATTRIBUTES, @TIME_ATTRIBUTES) {
             next unless defined $cmds{ lc $attribute };
             next if $ticket_as_user->$attribute() eq $cmds{ lc $attribute };
 
@@ -202,8 +202,15 @@
         }
 
         {
+            my $time_taken = 0;
+            $time_taken = $cmds{'timeworked'} || 0
+                if grep $_ eq 'TimeWorked', @TIME_ATTRIBUTES;
+
             my $method = ucfirst $args{'Action'};
-            my ($status, $msg) = $ticket_as_user->$method( MIMEObj => $args{'Message'} );
+            my ($status, $msg) = $ticket_as_user->$method(
+                TimeTaken => $time_taken,
+                MIMEObj   => $args{'Message'},
+            );
             unless ( $status ) {
                 $RT::Logger->warning(
                     "Couldn't write $args{'Action'}."

Modified: RT-Extension-CommandByEmail/t/03.update.t
==============================================================================
--- RT-Extension-CommandByEmail/t/03.update.t	(original)
+++ RT-Extension-CommandByEmail/t/03.update.t	Thu May 18 19:41:43 2006
@@ -87,7 +87,7 @@
 
 diag("set time on update") if $ENV{'TEST_VERBOSE'};
 foreach my $field ( qw(TimeWorked TimeEstimated TimeLeft) ) {
-    my $value = int rand 10;
+    my $value = 1 + int rand 10;
     my $text = <<END;
 Subject: [$RT::rtname #$test_ticket_id] test
 From: root\@localhost
@@ -105,6 +105,31 @@
 }
 
 
+diag("check time worked additivness") if $ENV{'TEST_VERBOSE'};
+{
+    my $obj = RT::Ticket->new( $RT::SystemUser );
+    $obj->Load( $test_ticket_id );
+    is($obj->id, $test_ticket_id, "loaded ticket");
+    my $current = $obj->TimeWorked;
+    ok($current, "time worked is greater than zero");
+
+    my $text = <<END;
+Subject: [$RT::rtname #$test_ticket_id] test
+From: root\@localhost
+
+TimeWorked: 10
+
+test
+END
+    my $id = create_ticket_via_gate( $text );
+    is($id, $test_ticket_id, "updated ticket");
+    $obj = RT::Ticket->new( $RT::SystemUser );
+    $obj->Load( $id );
+    is($obj->id, $id, "loaded ticket");
+    is($obj->TimeWorked, $current + 10, 'set time' );
+}
+
+
 diag("set watchers on update") if $ENV{'TEST_VERBOSE'};
 foreach my $field ( qw(Requestor Cc AdminCc) ) {
     my $value = 'test at localhost';


More information about the Rt-commit mailing list