X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?a=blobdiff_plain;f=t%2Flib%2FTestAppCustomContainer%2FNoSugarContainer.pm;h=09e99dc45a757aa46052efb986886202ee53d5e8;hb=ea33d4610002b98eb830bbc250feb812813c926b;hp=2314e50d17caba72fa36c32d6780abcfa94cffbe;hpb=b18a77bd729fb52cd720f5aed314812ebc86bdc1;p=catagits%2FCatalyst-Runtime.git diff --git a/t/lib/TestAppCustomContainer/NoSugarContainer.pm b/t/lib/TestAppCustomContainer/NoSugarContainer.pm index 2314e50..09e99dc 100644 --- a/t/lib/TestAppCustomContainer/NoSugarContainer.pm +++ b/t/lib/TestAppCustomContainer/NoSugarContainer.pm @@ -7,34 +7,78 @@ extends 'Catalyst::IOC::Container'; sub BUILD { my $self = shift; - $self->get_sub_container('component')->add_service( + + warn("Add Bar to model"); + $self->get_sub_container('model')->add_service( Catalyst::IOC::ConstructorInjection->new( - name => 'model_Baz', - class => 'TestAppCustomContainer::Model::Baz', + name => 'Bar', + lifecycle => 'Singleton', + class => 'TestAppCustomContainer::Model::Bar', + catalyst_component_name => 'TestAppCustomContainer::Model::Bar', + dependencies => { + application_name => depends_on( '/application_name' ), + foo => depends_on('/model/DefaultSetup'), + }, + ) + ); + +# $self->get_sub_container('model')->add_service( +# # FIXME - i think it should be a ConstructorInjection +# # but only BlockInjection gets ctx parameter +# Catalyst::IOC::BlockInjection->new( +# name => 'Baz', +# lifecycle => '+Catalyst::IOC::LifeCycle::Request', +# dependencies => [ +# Bread::Board::Dependency->new( +# service_name => 'foo', +# service_path => 'Foo', +# +# # FIXME - same as above +# service_params => { +# ctx => +{}, +# accept_context_args => [ +{} ], +# }, +# ), +# ], +# block => sub { +# TestAppCustomContainer::Model::Baz->new(foo => shift->param('foo')); +# }, +# ) +# ); -# FIXME - it should simply be Request (or InstancePerRequest, etc) -# see Bread/Board/Service.pm line 47 - lifecycle => '+Catalyst::IOC::LifeCycle::Request', +# Broken deps!?! +# $self->get_sub_container('model')->add_service( +# Catalyst::IOC::BlockInjection->new( +# name => 'Quux', +# lifecycle => 'Singleton', +# dependencies => [ +# depends_on( '/component/model_Quux' ), +# ], +# block => sub { shift->param('model_Bar') }, +# ) +# ); + + my $fnar_config = $self->resolve(service => 'config')->{'Model::Fnar'} || {}; + $self->get_sub_container('component')->add_service( + Catalyst::IOC::ConstructorInjection->new( + name => 'model_Fnar', + lifecycle => 'Singleton', + class => 'TestAppCustomContainer::External::Class', dependencies => [ depends_on( '/application_name' ), - depends_on( '/config' ), - depends_on( '/model/Foo' ), ], + config => $fnar_config, ) ); $self->get_sub_container('model')->add_service( Catalyst::IOC::BlockInjection->new( - name => 'Baz', + name => 'model_Fnar', + lifecycle => 'Singleton', dependencies => [ - depends_on( '/model/Foo' ), - depends_on( '/component/model_Baz' ), + depends_on( '/config' ), + depends_on( '/component/model_Fnar' ), ], - block => sub { - my $s = shift; - my $foo = $s->param('Foo'); - my $instance = $s->param('model_Baz'); - return $instance; - }, + block => sub { shift->param('model_Fnar') }, ) ); }