MyAction attribute - thanks aherzog
Ash Berlin [Wed, 21 Feb 2007 17:43:57 +0000 (17:43 +0000)]
lib/Catalyst/Controller.pm
t/lib/TestApp/Controller/Action/Action.pm
t/live_component_controller_action_action.t

index 20741bb..78a60a6 100644 (file)
@@ -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;
 
index 9532a69..787bb8d 100644 (file)
@@ -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;
index f82a250..22f5d59 100644 (file)
@@ -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'
+        );
+    }
+
 }