X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Fconfigured_comps.t;h=1cc0d1ad451727584e7b281e9263206b38663d22;hp=84a5a8e8361bb762dbb414aa895861b5592b1d9c;hb=3e5607485bfedb02a06193f653a2f05202db7a4e;hpb=cbe627b901f8e459035a76d423229694e1fefbff diff --git a/t/configured_comps.t b/t/configured_comps.t index 84a5a8e..1cc0d1a 100644 --- a/t/configured_comps.t +++ b/t/configured_comps.t @@ -4,6 +4,15 @@ use HTTP::Request::Common; use Test::More; { + package Local::Model::Foo; + + use Moose; + extends 'Catalyst::Model'; + + has a => (is=>'ro', required=>1); + + sub foo { shift->a . 'foo' } + package Local::Controller::Errors; use Moose; @@ -13,12 +22,22 @@ use Test::More; has ['a', 'b'] => (is=>'ro', required=>1); - sub not_found :Local { pop->res->from_psgi_response(404, [], ['Not Found']) } + sub not_found :Local { pop->res->from_psgi_response([404, [], ['Not Found']]) } package MyApp::Model::User; $INC{'MyApp/Model/User.pm'} = __FILE__; - use base 'Catalyst::Model'; + use Moose; + extends 'Catalyst::Model'; + + has 'zoo' => (is=>'ro', required=>1, isa=>'Object'); + + around 'COMPONENT', sub { + my ($orig, $class, $app, $config) = @_; + $config->{zoo} = $app->model('Zoo'); + + return $class->$orig($app, $config); + }; our %users = ( 1 => { name => 'john', age => 46 }, @@ -44,6 +63,9 @@ use Test::More; sub user :Local Args(1) { my ($self, $c, $int) = @_; my $user = $c->model("User")->find($int); + + $c->model("User")->zoo->a; + $c->res->body("name: $user->{name}, age: $user->{age}"); } @@ -59,8 +81,18 @@ use Test::More; MyApp->config({ 'Controller::Err' => { - component => 'Local::Controller::Errors' - } + from_component => 'Local::Controller::Errors', + args => { a=> 100, b => 200, namespace =>'error' }, + }, + 'Model::Zoo' => { + from_component => 'Local::Model::Foo', + args => {a=>2}, + }, + 'Model::Foo' => { + from_component => 'Local::Model::Foo', + args => { a=> 100 }, + }, + }); MyApp->setup; @@ -73,4 +105,9 @@ use Catalyst::Test 'MyApp'; is $res->content, 'name: john, age: 46'; } +{ + my $res = request '/error/not_found'; + is $res->content, 'Not Found'; +} + done_testing;