use Mojo::Base -strict;
use Test::More;
use Mojolicious::Lite;
use Test::Mojo;
use Test::Exception;
use Data::Dumper;
my $cfg;
my $ini = 't/conf.d/config.ini';
throws_ok
{ $cfg = plugin ( 'ConfigSimple' => { config_file => [ $ini ], } ) }
qr/config_file key requires a SCALAR/,
'config_file key properly sanity checked';
throws_ok
{ $cfg = plugin ( 'ConfigSimple' => { config_files => $ini, } ) }
qr/config_files key requires an ARRAYREF/,
'config_files key properly sanity checked';
$cfg = plugin ( 'ConfigSimple' => { config_files => [ $ini ], } );
isa_ok( $cfg, 'Config::Simple' );
can_ok( $cfg, 'param' );
can_ok( $cfg, 'vars' );
can_ok( $cfg, 'get_block' );
is_deeply(\%{$cfg->vars},
&cfg_vars,
'->vars returns expected data structure' );
is_deeply(\%{$cfg->get_block('db')},
&cfg_get_block,
'->get_block returns expected data structure' );
is_deeply( Config::Simple::Extended::get_stanzas( $cfg ),
&cfg_get_stanzas,
'Config::Simple::Extended::get_stanzas returns expected data structure' );
# print Dumper \%{$cfg->get_block('db')};
note &Mojolicious::Plugin::ConfigSimple::version;
done_testing();
sub cfg_get_stanzas {
return [ qw( db default ) ];
}
sub cfg_get_block {
return {
'db_name' => 'foo_db',
'db_user' => 'foo_user',
'db_pw' => 'secret',
'db_ssl' => '1',
'db_host' => '127.0.0.1',
'db_engine' => 'Pg'
};
}
sub cfg_vars {
my $expected = {
'db.db_engine' => 'Pg',
'default.foo' => 'bar',
'db.db_host' => '127.0.0.1',
'db.db_ssl' => '1',
'db.db_name' => 'foo_db',
'db.db_pw' => 'secret',
'db.db_user' => 'foo_user'
};
return $expected;
}