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 )