#!/usr/bin/perl -w
package main;
use strict;
use vars qw($TESTING);
$TESTING = 1;
use Test::More tests => 12;
use constant DEBUG => 0;
use File::Glob;
# force the output to return for testing
$ENV{CGI_APP_RETURN_ONLY} = 1;
# make explicit the query string
$ENV{REQUEST_METHOD} = 'GET';
BEGIN {
use_ok('CGI::Application');
use_ok('CGI');
use_ok('CGI::FormBuilder');
use_ok('Handout');
use_ok('File::Slurp');
}
{
my $param = shift || "";
my $redo = ( $param =~ /-r/ ) || 0;
my $ho = CGI::Application->new();
isa_ok($ho, 'CGI::Application');
ok(ref($ho),"Check for valid CGI::Application reference");
$ho = Handout->new( QUERY => CGI->new() );
isa_ok($ho, 'CGI::Application');
isa_ok($ho, 'Handout');
ok(ref($ho),"Check for valid Handout reference");
my @methods = (
'select_handout',
'select_topics',
'select_info',
'show_handout',
'import_handout',
'splash',
);
can_ok($ho, @methods);
my $source = "";
my @lines = ();
my @items = ();
my $okay = 0;
# login output
$ENV{QUERY_STRING} = ''; # 1st call
print "QS: $ENV{QUERY_STRING}\n" if DEBUG;
$source = "t/login.out";
$ho = Handout->new( QUERY => CGI->new( {} ));
$okay = run( $source, $ho, \@lines, \@items );
ok($okay, "Test Handout App login screen");
# run_command($command,$host,$init_timeout,$timeout);
sub run {
my ($source, $ca, $lines, $items) = @_;
my $target = $source;
$target =~ s/out$/run/;
unlink $target;
@$lines = $ca->run();
File::Slurp::write_file($target, @$lines);
@$lines = File::Slurp::read_file($target);
if ( ! -e $source || $redo ) {
@$items = $ca->run();
File::Slurp::write_file($source, @$items);
@$items = File::Slurp::read_file($source);
} else {
@$items = File::Slurp::read_file($source);
}
my $okay = eq_array($lines,$items);
if ( $okay ) {
unlink $target;
} else {
diag("Check $target file for differences");
}
}
}
__END__
=head1 NAME
Handout test notes
=head1 SYNOPSIS
perl t/builder.t [-redo]
/output.pl
=head1 DESCRIPTION
Use the word "verify" to introduce each test section
typically "verify ...
Use the Test::More so each test is clear
typically give verb ... for action
check, recheck, open, ...
Add all methods to the methods array
To see all output run the "output.pl" from the web
and it will show them. It also turns on the GET
REQUEST_METHOD so screens may be debugged.
All screen output should produce a file named by
the ".out". Create each test with a
unique ".cgi which uses a uniuqe
QUERY_STRING.
=head1 BUGS
=head1 AUTHOR
David Scott E
=cut