From 33e0a801cef509c08872550c490ba8efeb0eff1f Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Fri, 28 Dec 2012 08:55:19 -0600 Subject: another test --- t/012_container_with_shared_deps.t | 57 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 t/012_container_with_shared_deps.t diff --git a/t/012_container_with_shared_deps.t b/t/012_container_with_shared_deps.t new file mode 100644 index 0000000..05f55a9 --- /dev/null +++ b/t/012_container_with_shared_deps.t @@ -0,0 +1,57 @@ +use v6; +use Test; + +use Bread::Board; + +# PERL6: doing anything at all with the type object for a role with required +# methods is broken +#sub does_ok(Mu $var, Mu $type, $msg = ("The object does '" ~ $type.perl ~ "'")) { +sub does_ok(Mu $var, Mu $type, $msg = ("The object does [some role]")) { + ok($var.does($type), $msg); +} + +class MyApp::Schema { } + +class DBH { + has ($.dsn, $.user, $.pass); +}; + +my $c = Bread::Board::Container.new( + name => 'Model', + services => [ + Bread::Board::ConstructorInjection.new( + name => 'schema', + class => MyApp::Schema, + dependencies => { + dsn => Bread::Board::Literal.new(name => 'dsn', value => ''), + user => Bread::Board::Literal.new(name => 'user', value => ''), + pass => Bread::Board::Literal.new(name => 'pass', value => ''), + }, + ), + Bread::Board::BlockInjection.new( + name => 'dbh', + block => -> $s { + DBH.new( + dsn => $s.param('dsn'), + user => $s.param('user'), + pass => $s.param('pass'), + ); + }, + dependencies => { + dsn => Bread::Board::Literal.new(name => 'dsn', value => ''), + user => Bread::Board::Literal.new(name => 'user', value => ''), + pass => Bread::Board::Literal.new(name => 'pass', value => ''), + }, + ), + ], +); + +my $s = $c.fetch('dbh'); +does_ok($s, Bread::Board::Service); + +my $dbh = $s.get; +isa_ok($dbh, DBH); + +done; + +# vim:ft=perl6:foldmethod=manual -- cgit v1.2.3