tweak Operation/Help to support Help system tests

This commit is contained in:
Colin Kuskie 2005-11-16 22:47:17 +00:00
parent f92c81603c
commit b8c22c9308
3 changed files with 164 additions and 14 deletions

View file

@ -61,9 +61,15 @@ sub _linkTOC {
#-------------------------------------------------------------------
sub _getHelpFilesList {
my $dir = $session{config}{webguiRoot}.$session{os}{slash}."lib".$session{os}{slash}."WebGUI".$session{os}{slash}."Help";
my $dir = join $session{os}{slash}, $session{config}{webguiRoot},"lib","WebGUI","Help";
opendir (DIR,$dir) or WebGUI::ErrorHandler::fatal("Can't open Help directory!");
my @files = grep { /^_Help/ } grep { /\.pm$/} readdir(DIR);
my @files;
foreach my $file (readdir DIR) {
next unless $file =~ /.pm$/;
my $modName;
($modName = $file) =~ s/\.pm$//;
push @files, [ $file, $modName ];
}
closedir(DIR);
return @files;
}
@ -118,16 +124,14 @@ sub www_viewHelpIndex {
my @helpIndex;
my $i;
my @files = _getHelpFilesList();
foreach my $file (@files) {
if ($file =~ /(.*?)\.pm$/) {
my $namespace = $1;
my $help = _load($namespace);
foreach my $key (keys %{$help}) {
push @helpIndex, [$namespace, $key,
WebGUI::International::get($help->{$key}{title},$namespace)];
$i++;
}
}
foreach my $fileSet (@files) {
my $namespace = $fileSet->[1];
my $help = _load($namespace);
foreach my $key (keys %{$help}) {
push @helpIndex, [$namespace, $key,
WebGUI::International::get($help->{$key}{title},$namespace)];
$i++;
}
}
my $output = '<table width="100%" class="content"><tr><td valign="top">';
my $halfway = round($i/2);
@ -155,8 +159,8 @@ sub www_viewHelpTOC {
my @files = _getHelpFilesList();
my $third = round(@files/3 + 0.50);
my @entries;
foreach my $file (@files) {
$file =~ s/\.pm$//;
foreach my $fileSet (@files) {
my $file = $fileSet->[1];
push @entries, [_getHelpName($file), $file];
}
$i = 0;

64
t/help_compiled.t Normal file
View file

@ -0,0 +1,64 @@
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2005 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
#-------------------------------------------------------------------
# ---- BEGIN DO NOT EDIT ----
use strict;
use lib '../lib';
use Getopt::Long;
use WebGUI::Session;
use WebGUI::Operation::Help;
use File::Find;
# ---- END DO NOT EDIT ----
#The goal of this test is to verify that all entries in the lib/WebGUI/Help
#directory compile. This test is necessary because WebGUI::Operation::Help
#will return an empty hash if it won't compile, and the help will simply
#disappear.
use Test::More;
my $numTests = 0;
initialize(); # this line is required
my @helpFileSet = WebGUI::Operation::Help::_getHelpFilesList();
$numTests = scalar @helpFileSet; #One for each help compile
diag("Planning on running $numTests tests\n");
plan tests => $numTests;
foreach my $helpSet (@helpFileSet) {
my $helpName = $helpSet->[1];
my $help = WebGUI::Operation::Help::_load($helpName);
ok(keys %{ $help }, "$helpName compiled");
}
# put your tests here
cleanup(); # this line is required
# ---- DO NOT EDIT BELOW THIS LINE -----
sub initialize {
$|=1; # disable output buffering
my $configFile;
GetOptions(
'configFile=s'=>\$configFile
);
exit 1 unless ($configFile);
WebGUI::Session::open("..",$configFile);
}
sub cleanup {
WebGUI::Session::close();
}

82
t/help_related.t Normal file
View file

@ -0,0 +1,82 @@
#-------------------------------------------------------------------
# WebGUI is Copyright 2001-2005 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
#-------------------------------------------------------------------
# ---- BEGIN DO NOT EDIT ----
use strict;
use lib '../lib';
use Getopt::Long;
use WebGUI::Session;
use WebGUI::Operation::Help;
use File::Find;
# ---- END DO NOT EDIT ----
#The goal of this test is to verify that all entries in the lib/WebGUI/Help
#directory correctly resolve to other Help entries. The total number of
#tests will be dynamic, based on how many "related" entries are set up
#in the Help files. Calling Test::plan will be delayed.
use Test::More;
my $numTests = 0;
initialize(); # this line is required
my @helpFileSet = WebGUI::Operation::Help::_getHelpFilesList();
my %helpTable;
foreach my $helpSet (@helpFileSet) {
my $helpName = $helpSet->[1];
my $help = WebGUI::Operation::Help::_load($helpName);
$helpTable{ $helpName } = $help;
}
##Scan #1, how many tests do we expect?
my @relatedHelp = ();
foreach my $topic ( keys %helpTable ) {
foreach my $entry ( keys %{ $helpTable{$topic} }) {
my @related = @{ $helpTable{$topic}{$entry}{related} };
push @relatedHelp, @related;
$numTests += scalar @related;
}
}
diag("Planning on running $numTests tests\n");
plan tests => $numTests;
##Each array element is a hash with two keys, tag (entry) and namespace (topic).
foreach my $related (@relatedHelp) {
my ($topic, $entry) = @{ $related }{'namespace', 'tag'};
ok( exists $helpTable{$topic}{$entry}, "Help entry: $topic -> $entry");
}
# put your tests here
cleanup(); # this line is required
# ---- DO NOT EDIT BELOW THIS LINE -----
sub initialize {
$|=1; # disable output buffering
my $configFile;
GetOptions(
'configFile=s'=>\$configFile
);
exit 1 unless ($configFile);
WebGUI::Session::open("..",$configFile);
}
sub cleanup {
WebGUI::Session::close();
}