Cache tests for getFirst- and getLastChild, hasChildren.

newByLineage tests, with cache
changed newByLineage to use placeholders
Coverage is 59/55/84
This commit is contained in:
Colin Kuskie 2007-04-15 04:30:55 +00:00
parent 450aab40a0
commit bd577a6712
2 changed files with 49 additions and 12 deletions

View file

@ -618,7 +618,7 @@ sub newByLineage {
my $id = $assetLineage->{$lineage}{id};
$class = $assetLineage->{$lineage}{class};
unless ($id && $class) {
($id,$class) = $session->db->quickArray("select assetId, className from asset where lineage=".$session->db->quote($lineage));
($id,$class) = $session->db->quickArray("select assetId, className from asset where lineage=?",[$lineage]);
$assetLineage->{$lineage}{id} = $id;
$assetLineage->{$lineage}{class} = $class;
$session->stow->set("assetLineage",$assetLineage);

View file

@ -17,7 +17,7 @@ use WebGUI::Session;
use WebGUI::User;
use WebGUI::Asset;
use Test::More tests => 59; # increment this value for each test you create
use Test::More tests => 67; # increment this value for each test you create
use Test::Deep;
# Test the methods in WebGUI::AssetLineage
@ -94,6 +94,7 @@ cmp_bag(\@snipIds, $lineageIds, 'default order returned by getLineage is lineage
####################################################
is($snippets[0]->getId, $folder->getFirstChild->getId, 'getFirstChild');
is($snippets[0]->getId, $folder->getFirstChild->getId, 'getFirstChild: cached lookup');
####################################################
#
@ -102,6 +103,7 @@ is($snippets[0]->getId, $folder->getFirstChild->getId, 'getFirstChild');
####################################################
is($snippets[-1]->getId, $folder->getLastChild->getId, 'getLastChild');
is($snippets[-1]->getId, $folder->getLastChild->getId, 'getLastChild: cached lookup');
####################################################
#
@ -145,16 +147,6 @@ is(
'getParentLineage: arbitrary lineage'
);
####################################################
#
# hasChildren
#
####################################################
ok($folder->hasChildren, 'test folder has children');
ok($root->hasChildren, 'root node has children');
ok(!$snippets[0]->hasChildren, 'test snippet has no children');
####################################################
#
# cascadeLineage
@ -332,6 +324,51 @@ is($snippets[6]->getRank(), '7', 'setRank: move the Asset back (higher rank)');
$lineageIds = $folder->getLineage(['descendants']);
cmp_bag(\@snipIds, $lineageIds, 'setRank: put them back in order');
####################################################
#
# hasChildren
#
####################################################
##Functional tests
ok($root->hasChildren, 'root node has children');
ok(!$snippets[0]->hasChildren, 'test snippet has no children');
##Coverage tests will require reaching inside the object
##to reset the caching
delete $folder->{_hasChildren};
ok($folder->hasChildren, 'test folder has children, manually built');
delete $folder->{_hasChildren};
$folder->getLastChild();
ok($folder->hasChildren, 'hasChildren: cached from getLastChild');
delete $folder->{_hasChildren};
$folder->getFirstChild();
ok($folder->hasChildren, 'hasChildren: cached from getFirstChild');
####################################################
#
# newByLineage
#
####################################################
##Clear the stowed assetLineage hash
$session->stow->delete('assetLineage');
my $snippet4 = WebGUI::Asset->newByLineage($session, $snippets[4]->get('lineage'));
is ($snippet4->getId, $snippets[4]->getId, 'newByLineage returns correct Asset');
$snippet4 = WebGUI::Asset->newByLineage($session, $snippets[4]->get('lineage'));
is ($snippet4->getId, $snippets[4]->getId, 'newByLineage: cached lookup');
my $cachedLineage = $session->stow->get('assetLineage');
delete $cachedLineage->{$snippet4->get('lineage')}->{id};
my $snippet4 = WebGUI::Asset->newByLineage($session, $snippets[4]->get('lineage'));
is ($snippet4->getId, $snippets[4]->getId, 'newByLineage: failing id cache forces lookup');
delete $cachedLineage->{$snippet4->get('lineage')}->{class};
my $snippet4 = WebGUI::Asset->newByLineage($session, $snippets[4]->get('lineage'));
is ($snippet4->getId, $snippets[4]->getId, 'newByLineage: failing class cache forces lookup');
END {
$versionTag->rollback;
foreach my $account ($editor) {