fix bad import of help template variables. Loops are now handled correctly. Added a test with supporting collateral to make sure this does not happen again

This commit is contained in:
Colin Kuskie 2007-11-08 05:34:48 +00:00
parent 9db0430032
commit 0c2f9f5ec7
4 changed files with 316 additions and 7 deletions

179
t/Help/isa.t Normal file
View file

@ -0,0 +1,179 @@
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2007 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 WebGUI::Test;
use WebGUI::Session;
use WebGUI::Operation::Help;
use File::Copy;
use File::Spec;
#The goal of this test is to verify Help inheritance, via the isa key field.
#isa should bring in related items, form entries and template variables,
#recursively.
use Test::More;
use Test::Deep;
my $session = WebGUI::Test->session;
plan tests => 4;
installCollateral();
my $allHelp = WebGUI::Operation::Help::_load($session, 'HelpTest');
cmp_deeply(
$allHelp->{'base one'},
{
title => 'base one title',
body => 'base one body',
variables => [
{ name => 'base one var1', },
{ name => 'base one var2', },
{ name => 'base one var3', },
],
related => [],
fields => [],
isa => [],
__PROCESSED => 1,
},
'fetching help with no isa relationships'
);
cmp_deeply(
$allHelp->{'isa one'},
{
title => 'isa one title',
body => 'isa one body',
variables => [
{ name => 'isa one var1', },
{ name => 'isa one var2', },
{ name => 'isa one var3', },
{ name => 'base one var1',
description => undef,
namespace => 'HelpTest'
},
{ name => 'base one var2',
description => undef,
namespace => 'HelpTest'
},
{ name => 'base one var3',
description => undef,
namespace => 'HelpTest'
},
],
related => [],
fields => [],
isa => [
{ namespace => "HelpTest",
tag => "base one"
},
],
__PROCESSED => 1,
},
'isa imports variables. Imported variables have explicit description and namespaces'
);
cmp_deeply(
$allHelp->{'isa loop one'},
{
title => 'isa loop one title',
body => 'isa loop one body',
variables => [
{ name => 'isa loop one var1', },
{ name => 'loop one var1',
description => undef,
namespace => 'HelpTest',
variables => [
{ name => 'loop one loop1',
description => undef,
namespace => 'HelpTest',
},
{ name => 'loop one loop2',
description => undef,
namespace => 'HelpTest',
},
],
},
{ name => 'loop one var2',
description => undef,
namespace => 'HelpTest',
},
],
related => [],
fields => [],
isa => [
{ namespace => "HelpTest",
tag => "loop one"
},
],
__PROCESSED => 1,
},
'isa imports variables with loops'
);
cmp_deeply(
$allHelp->{'isa deep loop'},
{
title => 'isa deep loop title',
body => 'isa deep loop body',
variables => [
{ name => 'isa deep loop var1', },
{ name => 'deep loop var1',
description => undef,
namespace => 'HelpTest',
variables => [
{ name => 'deep loop loop2',
description => undef,
namespace => 'HelpTest',
variables => [
{ name => 'deep loop loop3',
description => undef,
namespace => 'HelpTest',
variables => [
{ name => 'deep loop loop4',
description => undef,
namespace => 'HelpTest',
},
],
},
],
},
],
},
],
related => [],
fields => [],
isa => [
{ namespace => "HelpTest",
tag => "deep loop"
},
],
__PROCESSED => 1,
},
'isa imports variables with nested loops'
);
sub installCollateral {
copy(
File::Spec->catfile( WebGUI::Test->getTestCollateralPath, qw/Help HelpTest.pm/),
File::Spec->catfile( WebGUI::Test->lib, qw/WebGUI Help/)
);
}
END: {
unlink File::Spec->catfile(WebGUI::Test->lib, qw/WebGUI Help HelpTest.pm/);
}