Add tests for InOutBoard. documents bug#11024.
Also, add a purge method to clean-up the collateral tables for this asset.
This commit is contained in:
parent
04e44a156d
commit
65f1377081
3 changed files with 163 additions and 3 deletions
|
|
@ -1,5 +1,6 @@
|
|||
7.8.1
|
||||
- fixed: Wikis broken by 7.8.0 upgrade
|
||||
- fixed #11024: In/Out Board Busted
|
||||
|
||||
7.8.0
|
||||
- upgraded YUI to 2.8.0r4
|
||||
|
|
|
|||
|
|
@ -137,6 +137,23 @@ sub prepareView {
|
|||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 purge ( )
|
||||
|
||||
Extend the base method to cleanup the status and statusLog tables.
|
||||
|
||||
=cut
|
||||
|
||||
sub purge {
|
||||
my $self = shift;
|
||||
my $session = $self->session;
|
||||
$session->db->write('delete from InOutBoard_status where assetId=?', [$self->getId]);
|
||||
$session->db->write('delete from InOutBoard_statusLog where assetId=?', [$self->getId]);
|
||||
$self->SUPER::purge(@_);
|
||||
}
|
||||
|
||||
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
=head2 view
|
||||
|
|
@ -393,17 +410,18 @@ sub www_setStatus {
|
|||
$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');
|
||||
$db->write(
|
||||
"insert into InOutBoard_status (assetId,userId,status,dateStamp,message) values (?,?,?,?,?)",
|
||||
[$self->getId, $sessionUserId, $session->form->process("status"), $session->datetime->time(), $message ],
|
||||
[$self->getId, $sessionUserId, $status, $session->datetime->time(), $message ],
|
||||
);
|
||||
$db->write(
|
||||
"insert into InOutBoard_statusLog (assetId,userId,createdBy,status,dateStamp,message) values (?,?,?,?,?,?)",
|
||||
[$self->getId, $sessionUserId, $session->user->userId, $session->form->process("status"), $session->datetime->time(), $message ],
|
||||
[$self->getId, $sessionUserId, $session->user->userId, $status, $session->datetime->time(), $message ],
|
||||
);
|
||||
}
|
||||
else {
|
||||
$session->scratch->set("userId",$session->form->process("delegate"));
|
||||
$session->scratch->set("userId",$delegate);
|
||||
}
|
||||
return $self->www_view;
|
||||
}
|
||||
|
|
|
|||
141
t/Asset/Wobject/InOutBoard.t
Normal file
141
t/Asset/Wobject/InOutBoard.t
Normal file
|
|
@ -0,0 +1,141 @@
|
|||
#-------------------------------------------------------------------
|
||||
# WebGUI is Copyright 2001-2009 Plain Black Corporation.
|
||||
#-------------------------------------------------------------------
|
||||
# Please read the legal notices (docs/legal.txt) and the license
|
||||
# (docs/license.txt) that came with this distribution before using
|
||||
# this software.
|
||||
#-------------------------------------------------------------------
|
||||
# http://www.plainblack.com info@plainblack.com
|
||||
#-------------------------------------------------------------------
|
||||
|
||||
use FindBin;
|
||||
use strict;
|
||||
use lib "$FindBin::Bin/../../lib";
|
||||
use Test::MockObject;
|
||||
use Test::MockObject::Extends;
|
||||
|
||||
##The goal of this test is to test the creation of Article Wobjects.
|
||||
|
||||
use WebGUI::Test;
|
||||
use WebGUI::Session;
|
||||
use Test::More tests => 6; # increment this value for each test you create
|
||||
use Test::Deep;
|
||||
use Data::Dumper;
|
||||
|
||||
my $templateId = 'INOUTBOARD_TEMPLATE___';
|
||||
my $templateMock = Test::MockObject->new({});
|
||||
$templateMock->set_isa('WebGUI::Asset::Template');
|
||||
$templateMock->set_always('getId', $templateId);
|
||||
my $templateVars;
|
||||
$templateMock->mock('process', sub { $templateVars = $_[1]; } );
|
||||
|
||||
use WebGUI::Asset::Wobject::InOutBoard;
|
||||
|
||||
my $session = WebGUI::Test->session;
|
||||
|
||||
#Build a bunch of users
|
||||
my @names = qw/red andy hadley boggs/;
|
||||
|
||||
my @users = ();
|
||||
foreach my $name (@names) {
|
||||
my $user = WebGUI::User->create($session);
|
||||
$user->username($name);
|
||||
push @users, $user;
|
||||
}
|
||||
WebGUI::Test->usersToDelete(@users);
|
||||
|
||||
# Do our work in the import node
|
||||
my $node = WebGUI::Asset->getImportNode($session);
|
||||
|
||||
my $versionTag = WebGUI::VersionTag->getWorking($session);
|
||||
$versionTag->set({name=>"InOutBoard Test"});
|
||||
WebGUI::Test->tagsToRollback($versionTag);
|
||||
my $board = $node->addChild({
|
||||
className => 'WebGUI::Asset::Wobject::InOutBoard',
|
||||
inOutTemplateId => $templateId,
|
||||
});
|
||||
|
||||
WebGUI::Test->mockAssetId($templateId, $templateMock);
|
||||
$board->prepareView();
|
||||
|
||||
# Test for a sane object type
|
||||
isa_ok($board, 'WebGUI::Asset::Wobject::InOutBoard');
|
||||
|
||||
################################################################
|
||||
#
|
||||
# www_setStatus
|
||||
#
|
||||
################################################################
|
||||
|
||||
$session->request->setup_body({
|
||||
delegate => $users[0]->userId,
|
||||
status => 'In',
|
||||
message => 'work time',
|
||||
});
|
||||
$session->scratch->set('userId', $users[0]->userId);
|
||||
$board->www_setStatus;
|
||||
my $status;
|
||||
$status = $session->db->quickHashRef('select * from InOutBoard_status where assetId=? and userId=?',[$board->getId, $users[0]->userId]);
|
||||
cmp_deeply(
|
||||
$status,
|
||||
{
|
||||
assetId => $board->getId,
|
||||
userId => $users[0]->getId,
|
||||
status => 'In',
|
||||
message => 'work time',
|
||||
dateStamp => re('^\d+$'),
|
||||
},
|
||||
'www_setStatus: set status for a user'
|
||||
);
|
||||
my $statusLog;
|
||||
$statusLog = $session->db->quickHashRef('select * from InOutBoard_statusLog where assetId=? and userId=?',[$board->getId, $users[0]->userId]);
|
||||
cmp_deeply(
|
||||
$statusLog,
|
||||
{
|
||||
assetId => $board->getId,
|
||||
userId => $users[0]->getId,
|
||||
status => 'In',
|
||||
message => 'work time',
|
||||
dateStamp => re('^\d+$'),
|
||||
createdBy => 1,
|
||||
},
|
||||
'... set statusLog for a user'
|
||||
);
|
||||
$session->request->setup_body({ });
|
||||
$session->scratch->delete('userId');
|
||||
|
||||
################################################################
|
||||
#
|
||||
# view
|
||||
#
|
||||
################################################################
|
||||
|
||||
$board->view;
|
||||
cmp_bag(
|
||||
$templateVars->{rows_loop},
|
||||
[
|
||||
{
|
||||
deptHasChanged => ignore(),
|
||||
status => 'In',
|
||||
dateStamp => ignore(),
|
||||
message => 'work time',
|
||||
username => 'red',
|
||||
},
|
||||
ignore(), ignore(), ignore(), ignore(),
|
||||
]
|
||||
);
|
||||
|
||||
WebGUI::Test->unmockAssetId($templateId);
|
||||
################################################################
|
||||
#
|
||||
# purge
|
||||
#
|
||||
################################################################
|
||||
|
||||
my $boardId = $board->getId;
|
||||
$board->purge;
|
||||
my $count;
|
||||
$count = $session->db->quickScalar('select count(*) from InOutBoard_status where assetId=?',[$boardId]);
|
||||
is ($count, 0, 'purge: cleans up status table');
|
||||
$count = $session->db->quickScalar('select count(*) from InOutBoard_statusLog where assetId=?',[$boardId]);
|
||||
is ($count, 0, '... cleans up statusLog table');
|
||||
Loading…
Add table
Add a link
Reference in a new issue