From: Ash Berlin Date: Wed, 21 Feb 2007 17:43:57 +0000 (+0000) Subject: MyAction attribute - thanks aherzog X-Git-Tag: 5.7099_04~247 X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=commitdiff_plain;h=9287719bfa7656dd651d04cb624dd1b586af7178 MyAction attribute - thanks aherzog --- diff --git a/lib/Catalyst/Controller.pm b/lib/Catalyst/Controller.pm index 20741bb..78a60a6 100644 --- a/lib/Catalyst/Controller.pm +++ b/lib/Catalyst/Controller.pm @@ -283,7 +283,14 @@ sub _parse_ActionClass_attr { return ( 'ActionClass', $value ); } +sub _parse_MyAction_attr { + my ( $self, $c, $name, $value ) = @_; + + my $appclass = Catalyst::Utils::class2appclass($self); + $value = "${appclass}::Action::${value}"; + return ( 'ActionClass', $value ); +} 1; diff --git a/t/lib/TestApp/Controller/Action/Action.pm b/t/lib/TestApp/Controller/Action/Action.pm index 9532a69..787bb8d 100644 --- a/t/lib/TestApp/Controller/Action/Action.pm +++ b/t/lib/TestApp/Controller/Action/Action.pm @@ -20,4 +20,9 @@ sub action_action_three : Global : ActionClass('+TestApp::Action::TestBefore') { $c->forward('TestApp::View::Dump::Request'); } +sub action_action_four : Global : MyAction('TestMyAction') { + my ( $self, $c ) = @_; + $c->forward('TestApp::View::Dump::Request'); +} + 1; diff --git a/t/live_component_controller_action_action.t b/t/live_component_controller_action_action.t index f82a250..22f5d59 100644 --- a/t/live_component_controller_action_action.t +++ b/t/live_component_controller_action_action.t @@ -10,7 +10,7 @@ our $iters; BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 2; } -use Test::More tests => 21 * $iters; +use Test::More tests => 28 * $iters; use Catalyst::Test 'TestApp'; if ( $ENV{CAT_BENCHMARK} ) { @@ -87,4 +87,24 @@ sub run_tests { ); } + { + ok( my $response = request('http://localhost/action_action_four'), + 'Request' ); + ok( $response->is_success, 'Response Successful 2xx' ); + is( $response->content_type, 'text/plain', 'Response Content-Type' ); + is( $response->header('X-Catalyst-Action'), + 'action_action_four', 'Test Action' ); + is( + $response->header('X-Test-Class'), + 'TestApp::Controller::Action::Action', + 'Test Class' + ); + is( $response->header('X-TestAppActionTestMyAction'), 'MyAction works' ); + like( + $response->content, + qr/^bless\( .* 'Catalyst::Request' \)$/s, + 'Content is a serialized Catalyst::Request' + ); + } + }