File: 010_container.t

package info (click to toggle)
libbread-board-perl 0.29-1~bpo70%2B1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy-backports
  • size: 620 kB
  • sloc: perl: 5,280; makefile: 13
file content (95 lines) | stat: -rw-r--r-- 3,160 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#!/usr/bin/perl

use strict;
use warnings;

use Test::More;
use Test::Moose;

use Bread::Board::Container;
use Bread::Board::ConstructorInjection;
use Bread::Board::Literal;

my $c = Bread::Board::Container->new(name => '/');
isa_ok($c, 'Bread::Board::Container');

$c->add_sub_container(
    Bread::Board::Container->new(
        name           => 'Application',
        sub_containers => [
            Bread::Board::Container->new(
                name     => 'Model',
                services => [
                    Bread::Board::Literal->new(name => 'dsn',  value => ''),
                    Bread::Board::ConstructorInjection->new(
                        name  => 'schema',
                        class => 'My::App::Schema',
                        dependencies => {
                            dsn  => Bread::Board::Dependency->new(service_path => '../dsn'),
                            user => Bread::Board::Literal->new(name => 'user', value => ''),
                            pass => Bread::Board::Literal->new(name => 'pass', value => ''),
                        },
                    )
                ]
            ),
            Bread::Board::Container->new(
                name     => 'View',
                services => [
                    Bread::Board::ConstructorInjection->new(
                        name  => 'TT',
                        class => 'My::App::View::TT',
                        dependencies => {
                            tt_include_path => Bread::Board::Literal->new(name => 'include_path',  value => []),
                        },
                    )
                ]
             ),
             Bread::Board::Container->new(name => 'Controller'),
        ]
    )
);

my $app = $c->get_sub_container('Application');
isa_ok($app, 'Bread::Board::Container');

is($app->name, 'Application', '... got the right container');

{
    my $controller = $app->get_sub_container('Controller');
    isa_ok($controller, 'Bread::Board::Container');

    is($controller->name, 'Controller', '... got the right container');
    is($controller->parent, $app, '... app is the parent of the controller');

    ok(!$controller->has_services, '... the controller has no services');
}
{
    my $view = $app->get_sub_container('View');
    isa_ok($view, 'Bread::Board::Container');

    is($view->name, 'View', '... got the right container');
    is($view->parent, $app, '... app is the parent of the view');

    ok($view->has_services, '... the veiw has services');

    my $service = $view->get_service('TT');
    does_ok($service, 'Bread::Board::Service');

    is($service->parent, $view, '... the parent of the service is the view');
}
{
    my $model = $app->get_sub_container('Model');
    isa_ok($model, 'Bread::Board::Container');

    is($model->name, 'Model', '... got the right container');
    is($model->parent, $app, '... app is the parent of the model');

    ok($model->has_services, '... the model has services');

    my $service = $model->get_service('schema');
    does_ok($service, 'Bread::Board::Service');

    is($service->parent, $model, '... the parent of the service is the model');
}

done_testing;