include test for failure mode
Hans Dieter Pearcey [Sat, 28 Mar 2009 05:01:57 +0000 (05:01 +0000)]
lib/Catalyst.pm
t/aggregate/unit_core_uri_for_action.t

index 005df7a..9c5bc8c 100644 (file)
@@ -1250,6 +1250,9 @@ sub uri_for_action {
     my $action = blessed($path) 
       ? $path 
       : $c->dispatcher->get_action_by_path($path);
+    unless (defined $action) {
+      croak "Can't find action for path '$path'";
+    }
     return $c->uri_for( $action, @args );
 }
 
index 8336779..499a1c7 100644 (file)
@@ -8,7 +8,7 @@ use lib "$FindBin::Bin/../lib";
 
 use Test::More;
 
-plan tests => 28;
+plan tests => 29;
 
 use_ok('TestApp');
 
@@ -164,6 +164,10 @@ is($context->uri_for($chained_action, [ 1 ], 2, { q => 1 }),
     is( $context->uri_for_action( $complex_chained, [23], (13), {q => 3} ),
         'http://127.0.0.1/foo/chained/empty/23/13?q=3',
         'uri_for_action returns correct uri for chain with many empty path parts' );
-}
 
+    eval { $context->uri_for_action( '/does/not/exist' ) };
+    like $@, qr{^Can't find action for path '/does/not/exist'},
+        'uri_for_action croaks on nonexistent path';
+      
+}