Backport failing test into 5.70 trunk
Tomas Doran [Wed, 4 Mar 2009 23:19:20 +0000 (23:19 +0000)]
Changes
t/lib/TestApp/Controller/Action/Chained.pm
t/lib/TestApp/Controller/Action/Visit.pm
t/live_component_controller_action_visit.t

diff --git a/Changes b/Changes
index 70938c5..65da53e 100644 (file)
--- a/Changes
+++ b/Changes
@@ -1,6 +1,8 @@
 # This file documents the revision history for Perl extension Catalyst.
 
 5.71000_01 UNRELEASED
+        - Add failing test for passing arguments to visited chained 
+          actions (Radoslaw Zielinski)
         - Support Moose components so that attribute defaults work
           and BUILD methods are correctly called (t0m)
           - Add tests for this (Florian Ragwitz)
index 90b1efe..030f22d 100644 (file)
@@ -15,7 +15,11 @@ sub begin :Private { }
 #
 #   Simple parent/child action test
 #
-sub foo  :PathPart('chained/foo')  :CaptureArgs(1) :Chained('/') { }
+sub foo  :PathPart('chained/foo')  :CaptureArgs(1) :Chained('/') {
+    my ( $self, $c, @args ) = @_;
+    die "missing argument" unless @args;
+    die "more than 1 argument" if @args > 1;
+}
 sub endpoint  :PathPart('end')  :Chained('/action/chained/foo')  :Args(1) { }
 
 #
index 3011a75..0447d34 100644 (file)
@@ -62,7 +62,9 @@ sub visit_die : Local {
 
 sub visit_chained : Local {
     my ( $self, $c, $val ) = @_;
-    $c->visit('/action/chained/foo/spoon',[1]);
+      $val eq 1 ? $c->visit( '/action/chained/foo/spoon',                                 [$val] )
+    : $val eq 2 ? $c->visit( qw/ Action::Chained::Foo spoon /,                            [$val] )
+    :             $c->visit( $c->controller('Action::Chained::Foo')->action_for('spoon'), [$val] )
 }
 
 sub view : Local {
index 62d6766..6ce6706 100644 (file)
@@ -10,7 +10,7 @@ our $iters;
 
 BEGIN { $iters = $ENV{CAT_BENCH_ITERS} || 1; }
 
-use Test::More tests => 54 * $iters;
+use Test::More tests => 60 * $iters;
 use Catalyst::Test 'TestApp';
 
 if ( $ENV{CAT_BENCHMARK} ) {
@@ -271,10 +271,13 @@ sub run_tests {
 
         my $expected = join( ", ", @expected );
 
-        ok( my $response = request('http://localhost/action/visit/visit_chained'), 'visit to chained + subcontroller endpoint' );
-        is( $response->header('X-Catalyst-Executed'),
-            $expected, 'Executed actions' );
-        is( $response->content, '; 1', 'Content OK' );
+        for my $i ( 1..3 ) {
+            ok( my $response = request("http://localhost/action/visit/visit_chained/$i"),
+                "visit to chained + subcontroller endpoint for $i" );
+            is( $response->header('X-Catalyst-Executed'),
+                $expected, "Executed actions for $i" );
+            is( $response->content, "; $i", "Content OK for $i" );
+        }
     }
 
 }