Brickyard
view release on metacpan or search on metacpan
t/tests/Test/Brickyard.pm view on Meta::CPAN
use 5.010;
use strict;
use warnings;
package Test::Brickyard;
# ABSTRACT: Class tests for Brickyard
use Test::Most;
use Test::Fatal;
use Brickyard;
use parent 'Test::MyBase';
sub class { 'Brickyard' }
sub constructor : Test(2) {
my $test = shift;
my $obj = $test->make_object;
isa_ok $obj, $test->class;
is $obj->base_package, 'MyApp', 'default base_package';
}
sub set_base_package : Test(1) {
my $test = shift;
my $obj = $test->make_object(base_package => 'Foobar');
is $obj->base_package, 'Foobar', 'set base_package on constructor';
}
sub expand_package : Tests {
my $test = shift;
my $obj = $test->make_object;
is $obj->expand_package('@Service::Default'),
'MyApp::PluginBundle::Service::Default',
'expand [@Default]';
is $obj->expand_package('*@Filter'), 'Brickyard::PluginBundle::Filter',
'expand [*@Filter]';
is $obj->expand_package('*Filter'), 'Brickyard::Plugin::Filter',
'expand [*Filter]';
is $obj->expand_package('=Foo::Bar'), 'Foo::Bar', 'expand [=Foo::Bar]';
is $obj->expand_package('@=Foo::Bar'), 'MyApp::Plugin::@=Foo::Bar',
'expand [@=Foo::Bar] does not recognize @= as either @ or =';
is $obj->expand_package('Some::Thing'), 'MyApp::Plugin::Some::Thing',
'expand [Some::Thing]';
is $obj->expand_package('-Thing::Frobnulizer'),
'MyApp::Role::Thing::Frobnulizer', 'expand [-Thing::Frobnulizer]';
# custom expansions
is $obj->expand_package('%Foo::Bar'),
'MyApp::Plugin::%Foo::Bar', 'expand [%Foo::Bar] without custom expansion';
$obj->expand([ 's/^%/MyOtherApp::Plugin::/' ]);
is $obj->expand_package('%Foo::Bar'),
'MyOtherApp::Plugin::Foo::Bar', 'expand [%Foo::Bar] with custom expansion';
}
sub parse_ini : Tests {
my $test = shift;
my $ini = <<'EOINI';
; A comment
name = Foobar
[@Default]
[Some::Thing]
foo = bar
baz = 43
baz = blah
EOINI
my $config = $test->make_object->parse_ini($ini);
eq_or_diff $config,
[ [ '_', '_', { name => 'Foobar' } ],
[ '@Default', '@Default', {} ],
( run in 1.180 second using v1.01-cache-2.11-cpan-54e63673c56 )