use strict;
use Test::More tests => 5;
use Gantry qw{ -Engine=CGI -TemplateEngine=Default };
unshift @Gantry::Engine::CGI::ISA, 'Gantry';
my $cgi_engine_obj = Gantry::Engine::CGI->new(
{
config => {
useless_param => 5,
other => 12,
inherited_from => 'root',
GantryLocation => {
'/not_root' => {
other => 15,
unique => 'hello',
inherited_from => 'not_root',
},
'/not_root/child' => {
other => 25,
},
},
},
locations => {
'/' => 'NoSuchApp',
'/not_root' => 'NoSuchApp::NotRoot',
},
}
);
$cgi_engine_obj->location( '/' );
$cgi_engine_obj->{ config }->{ location } = '/';
$cgi_engine_obj->cgi_obj( $cgi_engine_obj );
#--------------------------------------------------------------------
# top level config param retrieval
#--------------------------------------------------------------------
my $useless = $cgi_engine_obj->fish_config( 'useless_param' );
is( $useless, 5, 'top level param' );
#--------------------------------------------------------------------
# overriden param at top level
#--------------------------------------------------------------------
my $other = $cgi_engine_obj->fish_config( 'other' );
is( $other, 12, 'top level param not overriden' );
#--------------------------------------------------------------------
# overriden param at controller level
#--------------------------------------------------------------------
$cgi_engine_obj->location( '/not_root' );
$cgi_engine_obj->{ config }->{ location } = '/not_root';
$other = $cgi_engine_obj->fish_config( 'other' );
is( $other, 15, 'overriden param' );
#--------------------------------------------------------------------
# twice overriden param at second nested controller level
#--------------------------------------------------------------------
$cgi_engine_obj->location( '/not_root/child' );
$cgi_engine_obj->{ config }->{ location } = '/not_root/child';
$other = $cgi_engine_obj->fish_config( 'other' );
is( $other, 25, 'twice overriden' );
#--------------------------------------------------------------------
# inherited from parent location not from root
#--------------------------------------------------------------------
$cgi_engine_obj->location( '/not_root/child' );
$cgi_engine_obj->{ config }->{ location } = '/not_root/child';
my $inherited_from = $cgi_engine_obj->fish_config( 'inherited_from' );
is( $inherited_from, 'not_root', 'twice overriden' );