summaryrefslogtreecommitdiffstats
path: root/t/012_container_with_shared_deps.t
diff options
context:
space:
mode:
Diffstat (limited to 't/012_container_with_shared_deps.t')
-rw-r--r--t/012_container_with_shared_deps.t57
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