From 2d95b92582166f711e05c973f3e22950bbce6b2f Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 27 Jul 2011 11:03:04 -0500 Subject: allow specifying parameters for services (not sure how i missed this) --- t/parameters.t | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 t/parameters.t (limited to 't') diff --git a/t/parameters.t b/t/parameters.t new file mode 100644 index 0000000..2c37629 --- /dev/null +++ b/t/parameters.t @@ -0,0 +1,71 @@ +#!/usr/bin/env perl +use strict; +use warnings; +use Test::More; +use Test::Fatal; + +{ + package Schema; + use Moose; +} + +{ + package Thing; + use Moose; + + has schema => ( + is => 'ro', + isa => 'Schema', + required => 1, + ); + + has foo => ( + is => 'ro', + required => 1, + ); + + has bar => ( + is => 'ro', + required => 1, + ); +} + +{ + package Model; + use Moose; + use Bread::Board::Declare; + + has schema => ( + is => 'ro', + isa => 'Schema', + ); + + has thing => ( + is => 'ro', + isa => 'Thing', + dependencies => ['schema'], + parameters => ['foo', 'bar'], + ); +} + +my $m = Model->new; +like( + exception { $m->thing }, + qr/Mandatory parameters .* missing/, + "error with unsatisfied parameters" +); +is( + exception { + my $thing = $m->resolve( + service => 'thing', + parameters => { foo => 'a', bar => 'b' }, + ); + is($thing->foo, 'a'); + is($thing->bar, 'b'); + isa_ok($thing->schema, 'Schema'); + }, + undef, + "no error with satisfied parameters" +); + +done_testing; -- cgit v1.2.3