[Rt-commit] rt branch, 4.4/spurious-timeworked-message, created. rt-4.4.1-215-gbe85a7a

Shawn Moore shawn at bestpractical.com
Fri Dec 30 17:08:11 EST 2016


The branch, 4.4/spurious-timeworked-message has been created
        at  be85a7aef6e55346e681964ac281776a347e6a35 (commit)

- Log -----------------------------------------------------------------
commit be85a7aef6e55346e681964ac281776a347e6a35
Author: Shawn M Moore <shawn at bestpractical.com>
Date:   Fri Dec 30 21:42:34 2016 +0000

    Avoid spurious "That is already the current value" for time worked
    
    The mere presence of the argument (which can happen when you submit
    Modify.html after having logged time to a ticket) means RT
    unconditionally updates the TimeWorked field, which means it
    unconditionally adds "That is already the current value" to the results
    array.
    
    Instead, only update time worked if the value submitted is not the same
    as the current value of TimeWorked on the ticket.
    
    Special consideration is given to setting time worked to the value "0",
    which should adjust the time worked on the ticket to 0 rather than being
    silently ignored.
    
    This regression was introduced in
    1bb578722e7d0a7c57134db82b7ed801cf9d79e8; TimeWorked being an ordinary
    field in @attribs means that RT::Record::Update would skip updating that
    field because the existing value was the same as the submitted value.
    But since TimeWorked no longer uses the Update codepath, there was no
    provision to skip it when it's submitted unchanged.

diff --git a/lib/RT/Interface/Web.pm b/lib/RT/Interface/Web.pm
index add8432..0f16257 100644
--- a/lib/RT/Interface/Web.pm
+++ b/lib/RT/Interface/Web.pm
@@ -2960,7 +2960,7 @@ sub ProcessTicketBasics {
         ARGSRef       => $ARGSRef,
     );
 
-    if ( $ARGSRef->{'TimeWorked'} ) {
+    if ( defined($ARGSRef->{'TimeWorked'}) && ($ARGSRef->{'TimeWorked'} || 0) != $TicketObj->TimeWorked ) {
         my ( $val, $msg, $txn ) = $TicketObj->SetTimeWorked( $ARGSRef->{'TimeWorked'} );
         push( @results, $msg );
         $txn->UpdateCustomFields( %$ARGSRef) if $txn;
diff --git a/t/web/ticket_modify_all.t b/t/web/ticket_modify_all.t
index 2f6e92d..22470df 100644
--- a/t/web/ticket_modify_all.t
+++ b/t/web/ticket_modify_all.t
@@ -31,10 +31,15 @@ $m->get_ok($url . '/Ticket/ModifyAll.html?id=' . $ticket->id);
 
 $m->form_name('TicketModifyAll');
 $m->field(Owner => 'root');
+$m->field(TimeWorked => 120);
 $m->click('SubmitTicket');
 
+$m->text_contains('Owner changed from Nobody to root');
+$m->text_contains('Worked 2 hours (120 minutes)');
+
 $m->form_name('TicketModifyAll');
 is($m->value('Owner'), 'root', 'owner was successfully changed to root');
+is($m->value('TimeWorked'), 120, 'logged 2 hours');
 
 $m->get_ok($url . "/Ticket/ModifyAll.html?id=" . $ticket->id);
 
@@ -97,5 +102,17 @@ $m->text_contains(
     'no duplicate watchers',
 );
 
+$m->get( $url . '/Ticket/ModifyAll.html?id=' . $ticket->id );
+$m->form_name('TicketModifyAll');
+$m->click('SubmitTicket');
+$m->content_lacks("That is already the current value", 'no spurious messages');
+
+$m->form_name('TicketModifyAll');
+$m->field(TimeWorked => 0);
+$m->click('SubmitTicket');
+$m->text_contains('Adjusted time worked by -120 minutes');
+$m->form_name('TicketModifyAll');
+is($m->value('TimeWorked'), "", 'no time worked');
+
 undef $m;
 done_testing;

-----------------------------------------------------------------------


More information about the rt-commit mailing list