diff --git a/lib/WebGUI/AssetLineage.pm b/lib/WebGUI/AssetLineage.pm index 1a1b9bfcc..cbbc64965 100644 --- a/lib/WebGUI/AssetLineage.pm +++ b/lib/WebGUI/AssetLineage.pm @@ -540,7 +540,9 @@ Optional lineage of another Asset. sub getParentLineage { my $self = shift; my $lineage = shift || $self->get("lineage"); - my ($parentLineage) = $lineage =~ m/^(.).{6}$/; + my $lineageLength = length($lineage) - 6; + return $lineage unless $lineageLength; + my $parentLineage = substr($lineage, 0, $lineageLength); return $parentLineage; } diff --git a/t/Asset/AssetLineage.t b/t/Asset/AssetLineage.t index 2c9d8e279..48c1a1996 100644 --- a/t/Asset/AssetLineage.t +++ b/t/Asset/AssetLineage.t @@ -16,7 +16,7 @@ use WebGUI::Test; use WebGUI::Session; use WebGUI::Asset; -use Test::More tests => 17; # increment this value for each test you create +use Test::More tests => 22; # increment this value for each test you create use Test::Deep; # Test the methods in WebGUI::AssetLineage @@ -97,6 +97,29 @@ is($snippets[-1]->getId, $folder->getLastChild->getId, 'getLastChild'); is(scalar @snippets, $folder->getChildCount, 'getChildCount'); +#################################################### +# +# getParent +# +#################################################### + +is($snippets[0]->getParent->getId, $folder->getId, 'getParent'); +is($root->getParent->getId, $root->getId, "getParent: root's parent is itself"); + +#################################################### +# +# getParentLineage +# +#################################################### + +is($snippets[0]->getParentLineage, $folder->get('lineage'), 'getParentLineage: self'); +is($root->getParentLineage, '000001', 'getParentLineage: root'); +is( + $root->getParentLineage('000001000002'), + '000001', + 'getParentLineage: arbitrary lineage' +); + #################################################### # # hasChildren