1#!/usr/bin/perl
2
3use strict;
4use warnings;
5
6use Test::More;
7use Test::Moose;
8
9use Bread::Board;
10
11{
12    package User;
13    use Moose;
14    has 'name' => ( is => 'ro', isa => 'Str' );
15
16    package Page;
17    use Moose;
18    has 'user' => ( is => 'ro', isa => 'User' );
19}
20
21my $c = container 'Views' => as {
22
23    service 'User' => (
24        block => sub {
25            my $s = shift;
26            '<p>' . $s->param('user')->name . '</p>';
27        },
28        parameters => {
29            user => { isa => 'User' }
30        }
31    );
32
33    service 'Page' => (
34        block => sub {
35            my $s = shift;
36            '<html>' .
37            '<body>' .
38                $s->param('user_view')->inflate(
39                    user => $s->param('page')->user
40                ) .
41            '</body>' .
42            '</html>';
43        },
44        dependencies => {
45            user_view => depends_on('User')
46        },
47        parameters => {
48            page => { isa => 'Page' }
49        }
50    );
51
52};
53
54my $view = $c->fetch('Page')->get(
55    page => Page->new(
56        user => User->new(
57            name => 'Stevan'
58        )
59    )
60);
61
62is( $view, '<html><body><p>Stevan</p></body></html>', '... got the correct result' );
63
64
65done_testing;
66