diff --git a/docs/changelog/7.x.x.txt b/docs/changelog/7.x.x.txt index 7ac5f2e2e..8a65d6196 100644 --- a/docs/changelog/7.x.x.txt +++ b/docs/changelog/7.x.x.txt @@ -4,6 +4,7 @@ - fixed #11025: Yo dudely in Wiki Keyword Search Template - fixed #11027: trash warning but no trash-limbo warning - fixed #11031: AssetProxy refering to trash-limbo asset + - fixed #11028: IOB: Not choosing status causes Problem With Request 7.8.0 - upgraded YUI to 2.8.0r4 diff --git a/lib/WebGUI/Asset/Wobject/InOutBoard.pm b/lib/WebGUI/Asset/Wobject/InOutBoard.pm index 6fc43f790..b58daab24 100644 --- a/lib/WebGUI/Asset/Wobject/InOutBoard.pm +++ b/lib/WebGUI/Asset/Wobject/InOutBoard.pm @@ -407,10 +407,11 @@ sub www_setStatus { my $delegate = $session->form->process('delegate'); if ($delegate eq $self->session->scratch->get("userId")) { my $sessionUserId = $session->scratch->get("userId") || $session->user->userId; - $session->scratch->delete("userId"); - $db->write("delete from InOutBoard_status where userId=? and assetId=?", [ $sessionUserId, $self->getId ]); - my $message = $session->form->process('message'); my $status = $session->form->process('status'); + return $self->www_view if $status eq ''; + $session->scratch->delete("userId"); + my $message = $session->form->process('message'); + $db->write("delete from InOutBoard_status where userId=? and assetId=?", [ $sessionUserId, $self->getId ]); $db->write( "insert into InOutBoard_status (assetId,userId,status,dateStamp,message) values (?,?,?,?,?)", [$self->getId, $sessionUserId, $status, $session->datetime->time(), $message ], diff --git a/t/Asset/Wobject/InOutBoard.t b/t/Asset/Wobject/InOutBoard.t index 14a3aae8b..4a0873283 100644 --- a/t/Asset/Wobject/InOutBoard.t +++ b/t/Asset/Wobject/InOutBoard.t @@ -18,7 +18,7 @@ use Test::MockObject::Extends; use WebGUI::Test; use WebGUI::Session; -use Test::More tests => 6; # increment this value for each test you create +use Test::More tests => 8; # increment this value for each test you create use Test::Deep; use Data::Dumper; @@ -27,6 +27,7 @@ my $templateMock = Test::MockObject->new({}); $templateMock->set_isa('WebGUI::Asset::Template'); $templateMock->set_always('getId', $templateId); my $templateVars; +$templateMock->mock('prepare', sub { } ); $templateMock->mock('process', sub { $templateVars = $_[1]; } ); $templateMock->set_true('prepare'); @@ -102,6 +103,29 @@ cmp_deeply( }, '... set statusLog for a user' ); + +$session->scratch->set('userId', $users[1]->userId); +$session->request->setup_body({ + delegate => $users[1]->userId, + status => undef, + message => 'work time', +}); +$board->www_setStatus; +$status = $session->db->quickHashRef('select * from InOutBoard_status where assetId=? and userId=?',[$board->getId, $users[1]->userId]); +cmp_deeply( + $status, + { }, + "... no status table entry made when the users's status is blank" +); +my $statusLog; +$statusLog = $session->db->quickHashRef('select * from InOutBoard_statusLog where assetId=? and userId=?',[$board->getId, $users[1]->userId]); +cmp_deeply( + $statusLog, + { }, + '... no statusLog set when status is blank' +); + + $session->request->setup_body({ }); $session->scratch->delete('userId'); @@ -123,7 +147,8 @@ cmp_bag( username => 'red', }, ignore(), ignore(), ignore(), ignore(), - ] + ], + 'view: returns one entry for each user, entry is correct for user with status' ); WebGUI::Test->unmockAssetId($templateId);