NAME
Egg::Helper::VirtualTest - The virtual test environment for Egg project.
SYNOPSIS
use Egg::Helper::VirtualTest;
my $vr= Egg::Helper::VirtualTest->new;
$vr->prepare(
controller => { egg_includes => [qw/ AnyPlugin /] },
create_files => \@files,
config => {
hoo => '.....',
hoge => '...',
},
);
my $e= $vr->egg_context;
my $mech= $vr->mech_get('/request_uri');
print $mech->content;
DESCRIPTION
An executable virtual environment is constructed for the test of the Egg project.
A virtual environment can control the composition by HASH passed to the prepare method.
Moreover, the result to a virtual request and the operation of the script are verifiable it according to WWW::Mechanize::CGI.
METHODS
new ( [OPTION_HASH] )
Constructor.
It comes to be able to access given OPTION_HASH by the option method.
Suitable following initialize is done, and the object is returned.
project_name
If project_name of OPTION_HASH is undefined, 'VirtualTest' is set.
start_dir
Current directory of execution.
project_root
If temp_dir of OPTION_HASH is undefined, the work directory is acquired temporarily and set from File::Temp.
project_already
When project_root already exists when 'already_ok' of OPTION_HASH is undefined, the exception is generated.
prepare
It passes it to the prepare method if there is prepare in OPTION_HASH.
prepare ( [PREPAR_HASH] )
A virtual project is constructed according to PREPAR_HASH.
When PREPAR_HASH is omitted, all virtual projects are constructed with Defolt.
The item evaluated with PREPAR_HASH is as follows.
controller => [CONTROLLER_HASH]
Setting concerning controller.
The content evaluates the following items with HASH without fail.
egg => [PLUGIN_OR_FLAG_ARRAY]
The plugin and the flag that makes it load are specified with ARRAY.
Default is [qw/Dispatch::Standard Debugging Log/]
controller => { egg => [qw/ Dispatch::Fast Debugging Log /] },
egg_includes => [PLUGIN_OR_FLAG_ARRAY]
List of plugin and flag added to value of egg.
controller => { egg_includes => [qw/ AnyPlugin /] },
egg_debug => [BOOL]
'-Debug' is added to the list of the plugin and the flag.
controller => { egg_debug => 1 },
default_mode => [DEFAULT_MODEL]
Name of default_mode defined in default_mode.
controller => { default_mode => 'default' },
egg_dispatch_map => [DISPATCH_MAP_TEXT]
The setting of dispatch_map is set as it is in the text.
my $dispatch_map= <<'END_MODE'; _default => sub {}, hoo => sub { my($self, $e)= @_; $e->template('document/hoo.tt'); }, hoge => sub {}, END_MODE controller => { dispatch_map => $dispatch_map },
egg_mode_param => [PARAM_NAME]
Name of mode_param defined in mode_param.
controller => { mode_param => 'mode' },
first_code = [CODE_TEXT]
Script code that wants to be included in controller's first half.
my $first_code= <<'END_CODE'; use MyApp::Tools; END_CODE controller => { first_code => $first_code },
last_code => [CODE_TEXT]
Script code that wants to be included in controller's latter half.
my $last_code = <<'END_CODE'; sub last_code { my($self, $e)= @_; ......... ..... .. } END_CODE controller => { last_code => $last_code },
version => [VERSION_NUMBER]
Version of controller who generates it.
controller => { version => '1.00' },
config => [CONFIG_HASH]
title => [TITLE_TEXT]
Default is $vr->project_name.
root => [PROJECT_ROOT_PATH]
Default is $vr->project_root.
template_path => [PATH_ARRAY]
Default is ["$vr->project_root/root", "$vr->project_root/comp"]
VIEW => [VIEW_CONFIG_ARRAY]
Default is a setting of Template (HTML::Template).
default_view_mason => [BOOL]
Mason is set to VIEW if this value is effective when the setting of VIEW is undefined.
... etc.
Additionally, please refer to the document of Egg for details for the configuration.
create_files => [FILE_DATA_ARRAY]
A new file is generated according to FILE_DATA_ARRAY.
Each item of ARRAY is HASH passed to Egg::Helper->save_file.
* Because generation does project_root to the starting point, filename can be specified by relativity PATH. create_files => [ { filename => "etc/hoge.txt", value => "<\$e.project_name> \n OK \n", }, { filename => "bin/hoge.pl", filetype => "script", value => "print 'OK';", }, ],
create_dirs => [DIR_LIST_ARRAY]
An empty directory is made according to DIR_LIST_ARRAY.
create_dirs => [qw{ tmp/myapp cache/content/myapp }],
disable_warn
$SIG{__WARN__}= sub {}.
disable_stdout
STDOUT is output temporary.
disable_stderr
STDERR is output temporary.
disable_allstd
All 'disable_warn' and 'disable_stdout' and 'disable_stderr' is done at a time.
egg_context
The object of a virtual project is returned.
my $e= $vr->egg_context;
egg_pcomp_context
The object of a virtual project of the '_prepare_model' and '_prepare_view' and '_prepare' execution is returned.
my $e= $vr->egg_pcomp_context;
egg_handler
‰¼‘zƒvƒ�ƒWƒFƒNƒg‚Ì handler ƒ�ƒ\ƒbƒh‚ðƒR�[ƒ‹‚µ‚Ü‚·�B
$vr->egg_handler;
helper_run ( [MODE], [ANY_NAME], [OPTION] )
The helper script is operated on a virtual project.
MODE is not omissible.
$vr->helper_run('Plugin:Helper', 'NewName', { ... options });
mech_ok
If the include of WWW::Mechanize::CGI succeeds, true is returned.
mechanize ( [OPTION_HASH] )
The object of WWW::Mechanize::CGI is returned.
OPTION_HASH is an option to pass to WWW::Mechanize::CGI.
mech_get ( [VR_REQUEST_URI], [OPTION] )
Virtual GET is requested to VR_REQUEST_URI.
OPTION is an option to pass to 'mechanize' method.
When the return value is received with ARRAY, the object of the project after CGI is executed can be received.
my($mech, $e)= $vr->mech_get('/get_request');
print $mech->content;
if ($e->param('check_param')) { print "OK" }
mech_post ( [VR_REQUEST_URI], [QUERY_DATA_HASH], [OPTION] )
Virtual POST is requested to VR_REQUEST_URI.
QUERY_DATA_HASH is a parameter passed to CGI.
OPTION is an option to pass to 'mechanize' method.
my $mech= $vr->mech_post('/post_request', { foo => 'test', hoge=> 'OK' });
print $mech->content;
* When upload is tested, it is L as for QUERY_DATA_HASH. <HTTP::Request::Common> Please give it by the form that passes.
my $proot= $vr->project_root;
my($mech, $e)= $vr->mech_post('/post_request', {
Content_Type => 'form-data',
Content => [
upload1 => ["$proot/data/upload.txt" ],
upload2 => ["$proot/data/upload.html"],
param1 => 'test',
],
});
my $upload= $e->request->upload('upload1');
if ($upload->filename) { print "OK" }
* It is necessary to load the 'Upload' plugin into the test of upload.
SEE ALSO
File::Temp, WWW::Mechanize::CGI, HTTP::Request::Common, Egg::Helper, Egg::Release,
AUTHOR
Masatoshi Mizuno <lushe@cpan.org>
COPYRIGHT
Copyright (C) 2007 by Bee Flag, Corp. <http://egg.bomcity.com/>, All Rights Reserved.
This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.6 or, at your option, any later version of Perl 5 you may have available.
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 394:
Non-ASCII character seen before =encoding in '‰¼‘zƒvƒ�ƒWƒFƒNƒg‚Ì'. Assuming CP1252