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