added PathPrefix from branch
Brian Cassidy [Thu, 29 Mar 2007 20:03:24 +0000 (20:03 +0000)]
Changes
lib/Catalyst/Controller.pm
t/lib/TestApp/Controller/Action/Chained/PathPrefix.pm [new file with mode: 0644]
t/live_component_controller_action_chained.t

diff --git a/Changes b/Changes
index dd6d514..4071083 100644 (file)
--- a/Changes
+++ b/Changes
@@ -14,6 +14,7 @@ This file documents the revision history for Perl extension Catalyst.
         - Added $c->request->keywords for getting the keywords (a query string with
           no parameters).
         - Sending SIGHUP to the dev server will now cause it to restart.
+        - Added PathPrefix attribute
         - Allow "0" for a path in uri_for.
 
 5.7007  2007-03-13 14:18:00
index 78a60a6..1e03eed 100644 (file)
@@ -292,6 +292,11 @@ sub _parse_MyAction_attr {
     return ( 'ActionClass', $value );
 }
 
+sub _parse_PathPrefix_attr {
+    my ( $self, $c, $name, $value ) = @_;
+    return PathPart => $self->path_prefix;
+}
+
 1;
 
 __END__
diff --git a/t/lib/TestApp/Controller/Action/Chained/PathPrefix.pm b/t/lib/TestApp/Controller/Action/Chained/PathPrefix.pm
new file mode 100644 (file)
index 0000000..0d3b859
--- /dev/null
@@ -0,0 +1,12 @@
+package TestApp::Controller::Action::Chained::PathPrefix;
+
+use strict;
+use warnings;
+
+use base qw/Catalyst::Controller/;
+
+# this is kinda the same thing as: sub instance : Path {}
+# it should respond to: /action/chained/pathprefix/*
+sub instance : Chained('/') PathPrefix Args(1) { }
+
+1;
index cb4f0dc..9fcdc48 100644 (file)
@@ -10,7 +10,7 @@ our $iters;
 
 BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; }
 
-use Test::More tests => 109*$iters;
+use Test::More tests => 112*$iters;
 use Catalyst::Test 'TestApp';
 
 if ( $ENV{CAT_BENCHMARK} ) {
@@ -766,4 +766,22 @@ sub run_tests {
         is( $response->content, '; ', 'Content OK' );
     }
 
+    #
+    #   PathPrefix
+    #
+    {
+        my @expected = qw[
+          TestApp::Controller::Action::Chained->begin
+          TestApp::Controller::Action::Chained::PathPrefix->instance
+          TestApp::Controller::Action::Chained->end
+        ];
+
+        my $expected = join( ", ", @expected );
+
+        ok( my $response = request('http://localhost/action/chained/pathprefix/1'),
+            "PathPrefix (as an endpoint)" );
+        is( $response->header('X-Catalyst-Executed'),
+            $expected, 'Executed actions' );
+        is( $response->content, '; 1', 'Content OK' );
+    }
 }