NAME

Egg::Helper::O::Test::Prepare - A virtual project for the test is constructed.

SYNOPSIS

use Egg::Helper;

my $test= Egg::Helper->run('O::Test');

my $run_modes= <<END_OF_RUNMODES;
 _default=> sub {},
 foo=> {
   qr/a(\d+)/=> sub { .... },
   { hoge=> 'POST' }=> \\\&MYPROJECT::D::Foo::hoge,
   },
END_OF_RUNMODES

$test->prepare(
  project_name => 'MyProject',
  config=> {
    title=> 'test project.',
    },
  include_path=> [qw( /path/perl-lib /path/lib )],
  controller => {
    egg=> [qw/-Debug PluginName/],
    },
  dispatch=> {
    extend_codes_first=> "use MYPROJECT::D::Foo;\n",
    run_modes=> $run_modes,
    },
  );

DESCRIPTION

The virtual project file is generated and this module is constructed.

The main method is 'prepare', and other 'prepare_*' is called according to the option to usually pass to 'prepare'.

METHODS

The methods other than 'prepare' need not be individually called usually.

prepare ([OPTION])

The work directory is temporarily made, the virtual project file is generated there, and the project environment for the test is constructed.

The following files are generated in default.

/tmp/... /EggVirtual/lib/EggVirtual.pm
/tmp/... /EggVirtual/lib/EggVirtual/config.pm
/tmp/... /EggVirtual/lib/EggVirtual/D.pm
/tmp/... /EggVirtual/bin/trigger.cgi
/tmp/... /EggVirtual/bin/eggvirtual_helper.pl
/tmp/... /EggVirtual/Makefile.PL
/tmp/... /EggVirtual/Build.PL
/tmp/... /EggVirtual/htdocs
/tmp/... /EggVirtual/root
/tmp/... /EggVirtual/comp
/tmp/... /EggVirtual/tmp/uploads
/tmp/... /EggVirtual/cache

It is possible to customize it by passing the option composed of HASH.

List of option.

  • project_name

    The project name is specified.

    Default becomes a name obtained with $test->project_name.

  • include_path

    The include passing can be set by the ARRAY reference.

    * It uses it to specify the include passing besides the project root.

  • config

    The configuration can be set by the HASH reference.

    * Necessary minimum configuration is set by default.

  • mason_ok

    Mason is used to set VIEW. Default is Template.

    If VIEW is set to config, this option doesn't have the meaning.

    * However, it stays in both cases in a rudimentary setting.

  • controller

    The setting to customize the controller file can be set by the HASH reference.

    • egg

      The module option to pass to Egg is set by the ARRAY reference. Please set the debugging flag and the plugin, etc.

      controller=> {
        egg=> [qw{ -Debug Filter Encode }],
        },
    • version

      It is a version of the controller file. Default is '0.01'.

    • extend_codes_first

      The script code of the first stage of the controller file is given by the text. I think that it becomes a code for the module to want to read and the module to want to succeed to usually.

      my $ctl_code_first= <<END_OF_CODE;
      use Unicode::Japanise;
      use base qw/MYPROJECT::BASE/;
      END_OF_CODE
      
      controller=> {
        extend_codes_first=> $ctl_code_first,
        },
    • extend_codes

      The script code in the latter half of the controller file is given by the text.

      my $ctl_code= <<END_OF_CODE;
      sub create_encode {
      	my(\$e)= \@_;
      	Unicode::Japanise->new;
      }
      END_OF_CODE
      
      controller=> {
        extend_codes=> $ctl_code,
        },
  • dispatch

    The setting to customize dispatch can be set by the HASH reference.

    • run_modes

      The setting of __PACKAGE__->run_modes can be set in the text. Please note that it is not HASH. Moreover, please describe the part in parentheses of __PACKAGE__->run_modes( );.

      my $run_modes= <<END_OF_RUNMODE;
        _default=> sub {},
        foge=> {
          { foo=> 'GET'  }=> \\\&foo,
          { boo=> 'POST' }=> \\\&MYPROJECT::D::CUSTOM::boo,
          },
      END_OF_RUNMODE
      
      dispatch=> {
        run_modes=> $run_modes,
        },
    • default_mode

      The value given to __PACKAGE__->default_mode can be set.

      dispatch=> {
        default_mode=> '_index',
        },
    • mode_param

      The value given to __PACKAGE__->mode_param can be set.

      dispatch=> {
        mode_param=> 'mode',
        },
    • extend_codes_first

      The script code of the first stage of dispatch is given by the text.

      my $dispat_code_first= <<END_OF_CODE;
      use MYPROJECT::D::CUSTOM;
      END_OF_CODE
      
      dispatch=> {
        extend_codes_first=> $dispat_code_first,
        },
    • extend_codes

      The script code in the latter half of dispatch is given by the text.

      my $dispat_code= <<END_OF_CODE;
      sub foo {
      	my(\$dispat, \$e)= \@_;
      	\$e->response->body('is foo page.');
      }
      END_OF_CODE
  • create_files

    To make a file besides the file made from default, data is given by the ARRAY reference. Please set each value of ARRAY by the form given to $test->save_file.

    After it moves to project_root, the file is made. Therefore, filename can be specified by the relative path. Moreover, $test->conv is substituted.

    my $file_value= <<END_OF_VALUE;
    package <# project_name #>::D::CUSTOM;
    use strict;
    sub boo {
    	my(\$dispat, \$e)= \@_;
    	\$e->response->body('is boo.');
    }
    END_OF_VALUE
    
    create_files=> [
      {
        filename=> 'lib/<# project_name #>/D/CUSTOM.pm',
        value=> $file_value,
        },
      ],

prepare_controller

It sets it concerning the controller.

prepare_include_path

The ink route passing is set.

prepare_egg

The module option of Egg is set.

prepare_dispatch

It sets it concerning dispatch.

prepare_config

It sets it concerning the configuration.

SEE ALSO

Egg::Helper::O::Test, Egg::Release,

AUTHOR

Masatoshi Mizuno, <lushe@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2007 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.