#!/usr/bin/perl
use strict;
use warnings;
use FindBin;
use Path::Class;
use Test::More;
use Test::Exception;
use Test::Moose;
BEGIN {
use_ok('Catalyst::Plugin::Bread::Board::Container');
}
{
package Test::App::Container;
use Moose;
use Bread::Board;
extends 'Catalyst::Plugin::Bread::Board::Container';
sub BUILD {
my $self = shift;
container $self => as {
container 'Model' => as {
container 'DBIC' => as {
service 'schema_class' => 'Test::App::Schema::DB';
service 'connect_info' => (
block => sub {
my $root = (shift)->param('app_root');
'dbi:SQLite:dbname=' . $root->file(qw[ root db ])
},
dependencies => [ depends_on('/app_root') ]
);
};
};
container 'View' => as {
container 'TT' => as {
service 'TEMPLATE_EXTENSION' => '.tt';
service 'INCLUDE_PATH' => (
block => sub {
my $root = (shift)->param('app_root');
[ $root->subdir('root/templates')->stringify ]
},
dependencies => [ depends_on('/app_root') ]
);
};
};
container 'Plugin' => as {
container 'Session' => as {
service 'cookie_name' => 'test_session';
service 'expires' => 1920;
service 'namespace' => 'test';
};
};
};
}
}
my $app_root = dir( $FindBin::Bin );
my $c = Test::App::Container->new(
name => 'Test010',
app_root => $app_root,
);
isa_ok($c, 'Test::App::Container');
isa_ok($c, 'Catalyst::Plugin::Bread::Board::Container');
is_deeply(
$c->as_catalyst_config,
{
'app_root' => $app_root,
'Model::DBIC' => {
'schema_class' => 'Test::App::Schema::DB',
'connect_info' => 'dbi:SQLite:dbname=' . $app_root->file(qw[ root db ])
},
'View::TT' => {
'TEMPLATE_EXTENSION' => '.tt',
'INCLUDE_PATH' => [
$app_root->file(qw[ root templates ])->stringify
]
},
'Plugin::Session' => {
'namespace' => 'test',
'cookie_name' => 'test_session',
'expires' => 1920
}
},
'... got the config we expected for Catalyst'
);
done_testing;