Bread-Board

 view release on metacpan or  search on metacpan

t/005_alias.t  view on Meta::CPAN

#!/usr/bin/env perl
use strict;
use warnings;
use Test::More;
use Test::Fatal;

use Bread::Board;

{
    package Some::Class;
    use Moose;

    has foo => (
        is  => 'ro',
        isa => 'Str',
    );
}

{
    my $c = container 'MyApp' => as {
        service 'foo' => 'FOO';
        service 'bar' => (
            block => sub { 'BAR' },
        );
        service 'baz' => (
            class => 'Some::Class',
        );

        alias 'foo_alias' => 'foo';
        alias 'bar_alias' => 'bar';
        alias 'baz_alias' => 'baz';
    };

    is($c->resolve(service => 'foo_alias'), 'FOO', "literal aliases work");
    is($c->resolve(service => 'bar_alias'), 'BAR', "block aliases work");
    isa_ok($c->resolve(service => 'baz_alias'), 'Some::Class');

    is($c->fetch('foo_alias')->name, 'foo',
       "fetch on aliases returns the underlying service");
}

{
    my $c = container 'MyApp' => as {
        service 'foo' => 'FOO';
        service 'bar' => (
            block => sub {
                my $s = shift;
                return $s->param('foo') . 'BAR';
            },
            dependencies => ['foo'],
        );
        service 'baz' => (
            class => 'Some::Class',
            dependencies => ['foo'],
        );

        alias 'bar_alias' => 'bar';
        alias 'baz_alias' => 'baz';
    };

    is($c->resolve(service => 'bar_alias'), 'FOOBAR',
       "block aliases with deps work");
    is($c->resolve(service => 'baz_alias')->foo, 'FOO',
       "constructor aliases with deps work");
}



( run in 1.235 second using v1.01-cache-2.11-cpan-54e63673c56 )