add documentation for new test modules

This commit is contained in:
Graham Knop 2010-06-11 00:41:24 -05:00
parent 49be76247e
commit cc7f83a623
2 changed files with 56 additions and 18 deletions

View file

@ -20,6 +20,32 @@ Package WebGUI::Test::MailServer
Routines for testing mail sending in WebGUI
=head1 SUBROUTINES
=head2 test_smtp ( $session, $testSub )
Sets up a SMTP server and runs a test sub against it. The test sub will be called with a callback sub as a parameter. Calling that callback will return a hash ref with four keys.
=over 8
=item to
Contains an array of addresses the message was sent to.
=item from
Contains the address the message was sent from.
=item contents
Contains the raw contents of the mail message.
=item parsed
Contains the mail message as a L<MIME::Entity> object.
=back
=cut
use strict;
@ -39,6 +65,7 @@ my $smtpdPid;
my $smtpdStream;
my $smtpdSelect;
sub test_smtp {
my $session = shift;
my $testSub = shift;
@ -71,7 +98,7 @@ sub _setup_server {
my $lib_path = catdir( dirname(__FILE__), (updir) x 2 );
my @command_line = (
$^X, "-I$lib_path", '-M' . __PACKAGE__,
'-e' . __PACKAGE__ . '::run_server(@ARGV)', $host, $port,
'-e' . __PACKAGE__ . '::_run_server(@ARGV)', $host, $port,
);
$smtpdPid = open $smtpdStream, '-|', @command_line
@ -102,22 +129,7 @@ sub _shutdown_server {
}
}
=head2 getMail ( )
Read a sent mail from the prepared mail server (L<prepareMailServer>)
=cut
sub getMail {
my $json;
if ($smtpdSelect->can_read(5)) {
$json = <$smtpdStream>;
}
return from_json( $json );
}
sub run_server {
sub _run_server {
my ($host, $port) = @_;
my $server = Net::SMTP::Server->new( $host, $port );
local $| = 1;

View file

@ -18,7 +18,33 @@ Package WebGUI::Test::MockAsset
=head1 DESCRIPTION
Utility module for making testing in WebGUI easier.
Creates fake WebGUI::Asset objects and sets them up to be returned by WebGUI::Asset's normal constructors.
=head1 METHODS
=head2 new ( [ $class ], [ $id ] )
Creates a new mock asset. If not specified, the class will default to L<WebGUI::Asset>. In addition to the methods listed, it will also include all of the methods from L<Test::MockObject>. The object will automatically be cleaned up and will no longer be returned once it goes out of scope.
=head2 mock_id ( $assetId, [ $asset_or_sub ] )
As an object method, sets the asset ID for the object, and also sets the asset to be returned for that ID.
As a class method, also accepts a second parameter. If the second parameter is a sub, it will be called when the given asset ID is requested. For any other type, the given object will be returned.
=head2 unmock_id ( [ $assetId ] )
As an object method, the mocking set up for the object by mock_id will be removed.
As a class method, mocking will be removed for the given asset ID.
=head2 mock_url ( $assetUrl, [ $asset_or_sub ] )
Works the same as mock_id, except for asset URLs instead of IDs.
=head2 unmock_url ( [ $assetUrl ] )
Works the same as unmock_id, except for asset URLs instead of IDs.
=cut