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=c543c083c62a89fa7bf622c1c78c8b6246638307;hp=84a5a8e8361bb762dbb414aa895861b5592b1d9c;hb=6e3dd95f237370a2824e5ecc1419eaed075f0279;hpb=ec4d72594fb7a701c2f36e85ecf9a680ca1abba2 diff --git a/t/configured_comps.t b/t/configured_comps.t index 84a5a8e..c543c08 100644 --- a/t/configured_comps.t +++ b/t/configured_comps.t @@ -4,6 +4,22 @@ use HTTP::Request::Common; use Test::More; { + package TestRole; + + use Moose::Role; + + sub role { 'role' } + + package Local::Model::Foo; + + use Moose; + extends 'Catalyst::Model'; + + has a => (is=>'ro', required=>1); + has b => (is=>'ro'); + + sub foo { shift->a . 'foo' } + package Local::Controller::Errors; use Moose; @@ -13,12 +29,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 }, @@ -43,7 +69,13 @@ use Test::More; sub user :Local Args(1) { my ($self, $c, $int) = @_; - my $user = $c->model("User")->find($int); + + Test::More::ok(my $user = $c->model("User")->find($int)); + Test::More::is($c->model("User")->zoo->a, 2); + Test::More::is($c->model("Foo")->role, 'role'); + Test::More::is($c->model("One")->a, 'one'); + Test::More::is($c->model("Two")->a, 'two'); + $c->res->body("name: $user->{name}, age: $user->{age}"); } @@ -57,10 +89,23 @@ use Test::More; package MyApp; use Catalyst; + MyApp->inject_components( + 'Model::One' => { from_component => 'Local::Model::Foo' }, + 'Model::Two' => { from_component => 'Local::Model::Foo' }, + ); + MyApp->config({ - 'Controller::Err' => { - component => 'Local::Controller::Errors' - } + inject_components => { + 'Controller::Err' => { from_component => 'Local::Controller::Errors' }, + 'Model::Zoo' => { from_component => 'Local::Model::Foo' }, + 'Model::Foo' => { from_component => 'Local::Model::Foo', roles => ['TestRole'] }, + }, + 'Controller::Err' => { a => 100, b => 200, namespace => 'error' }, + 'Model::Zoo' => { a => 2 }, + 'Model::Foo' => { a => 100 }, + 'Model::One' => { a => 'one' }, + 'Model::Two' => { a => 'two' }, + }); MyApp->setup; @@ -73,4 +118,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;