}
}
+ # PathPart('...') Args(1) should win over CaptureArgs(2) PathPart('')
+ {
+ my @expected = qw[
+ TestApp::Controller::Action::Chained->begin
+ TestApp::Controller::Action::Chained::CaptureArgs->base
+ TestApp::Controller::Action::Chained::CaptureArgs->test_one_arg
+ TestApp::Controller::Action::Chained::CaptureArgs->end
+ ];
+
+ my $expected = join( ", ", @expected );
+
+ # should dispatch to /base/test_one_arg
+ ok( my $response = request('http://localhost/captureargs/test/one'),
+ 'Correct pathpart/arg ran' );
+ TODO: {
+ local $TODO = 'Known bug';
+ is( $response->header('X-Catalyst-Executed'),
+ $expected, 'Executed actions' );
+ is( $response->content, 'base; test_plus_arg; one;', 'Content OK' );
+ }
+ }
+
#
# Args(0) should win over Args() if we actually have no arguments.
{
use base qw( Catalyst::Controller );
#
-# This controller builds two patterns of URI:
+# This controller build the following patterns of URI:
# /captureargs/*/*
# /captureargs/*/*/edit
# /captureargs/*
# /captureargs/*/edit
+# /captureargs/test/*
# It will output the arguments they got passed to @_ after the
# context object.
-# /captureargs/one/edit should not dispatch to
-# /captureargs/*/*
+# /captureargs/one/edit should not dispatch to /captureargs/*/*
+# /captureargs/test/one should not dispatch to /captureargs/*/*
sub base :Chained('/') PathPart('captureargs') CaptureArgs(0) {
my ( $self, $c, $arg ) = @_;
push @{ $c->stash->{ passed_args } }, 'view_one_arg';
}
+sub test_plus_arg :Chained('base') PathPart('test') Args(1) {
+ my ( $self, $c, $arg ) = @_;
+ push @{ $c->stash->{ passed_args } }, 'test_plus_arg', $arg;
+}
+
sub end : Private {
my ( $self, $c ) = @_;