diff options
author | Jesse Luehrs <doy@tozt.net> | 2012-12-28 08:55:19 -0600 |
---|---|---|
committer | Jesse Luehrs <doy@tozt.net> | 2012-12-28 08:55:19 -0600 |
commit | 33e0a801cef509c08872550c490ba8efeb0eff1f (patch) | |
tree | 7ce743c434b540a66233a9ff0cabffbbb8718a79 | |
parent | 151bcf38e72990063d7ecdcbe9f2ef999b41684b (diff) | |
download | p6-bread-board-33e0a801cef509c08872550c490ba8efeb0eff1f.tar.gz p6-bread-board-33e0a801cef509c08872550c490ba8efeb0eff1f.zip |
another test
-rw-r--r-- | t/012_container_with_shared_deps.t | 57 |
1 files changed, 57 insertions, 0 deletions
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 |