}
#
+ # Complex path with multiple non-capturing pathparts
+ # PathPart('') CaptureArgs(0), PathPart('foo') CaptureArgs(0), PathPart('') Args(0)
+ # should win over PathPart('') CaptureArgs(1), PathPart('') Args(0)
+ #
+ {
+ my @expected = qw[
+ TestApp::Controller::Action::Chained->begin
+ TestApp::Controller::Action::Chained->mult_nopp2_base
+ TestApp::Controller::Action::Chained->mult_nopp2_nocap
+ TestApp::Controller::Action::Chained->mult_nopp2_action
+ TestApp::Controller::Action::Chained->mult_nopp2_action_default
+ TestApp::Controller::Action::Chained->end
+ ];
+
+ my $expected = join( ", ", @expected );
+
+ ok( my $response = request('http://localhost/chained/mult_nopp2/action'),
+ "Complex path with multiple non-capturing pathparts" );
+ TODO: {
+ local $TODO = 'Known bug';
+ is( $response->header('X-Catalyst-Executed'),
+ $expected, 'Executed actions' );
+ is( $response->content, '; ', 'Content OK' );
+ }
+ }
+
+ #
# Higher Args() hiding more specific CaptureArgs chains sections
#
{
sub mult_nopp_idall : Chained('mult_nopp_id') PathPart('') Args(0) { }
sub mult_nopp_idnew : Chained('mult_nopp_id') PathPart('new') Args(0) { }
+sub mult_nopp2_base : Chained('/') PathPart('chained/mult_nopp2') CaptureArgs(0) { }
+sub mult_nopp2_nocap : Chained('mult_nopp2_base') PathPart('') CaptureArgs(0) { }
+sub mult_nopp2_action : Chained('mult_nopp2_nocap') PathPart('action') CaptureArgs(0) { }
+sub mult_nopp2_action_default : Chained('mult_nopp2_action') PathPart('') Args(0) { }
+sub mult_nopp2_action_with_arg : Chained('mult_nopp2_action') PathPart('') Args(1) { }
+sub mult_nopp2_load : Chained('mult_nopp2_base') PathPart('') CaptureArgs(1) { }
+sub mult_nopp2_view : Chained('mult_nopp2_load') PathPart('') Args(0) { }
+
#
# Test Choice between branches and early return logic
# Declaration order is important for $children->{$*}, since this is first match best.