Catalyst-Plugin-CachedUriForAction
view release on metacpan or search on metacpan
t/lib/TestApp/Controller/Action/Chained.pm view on Meta::CPAN
use strict;
use warnings;
use base qw/Catalyst::Controller/;
#
# Simple parent/child action test
#
sub foo :PathPart('chained/foo') :CaptureArgs(1) :Chained('/') {
}
sub endpoint :PathPart('end') :Chained('/action/chained/foo') :Args(1) { }
#
# Parent/child test with two args each
#
sub foo2 :PathPart('chained/foo2') :CaptureArgs(2) :Chained('/') { }
sub endpoint2 :PathPart('end2') :Chained('/action/chained/foo2') :Args(2) { }
#
# three chain with concurrent endpoints
#
sub one :PathPart('chained/one') :Chained('/') :CaptureArgs(1) { }
sub two :PathPart('two') :Chained('/action/chained/one') :CaptureArgs(2) { }
sub three_end :PathPart('three') :Chained('two') :Args(3) { }
#
# Test multiple chained actions with no captures
#
sub empty_chain_a : Chained('/') PathPart('chained/empty') CaptureArgs(0) { }
sub empty_chain_b : Chained('empty_chain_a') PathPart('') CaptureArgs(0) { }
t/unit_core_uri_for_action.t view on Meta::CPAN
is(eval{ TestApp->uri_for_action($index_action, [ 'foo' ]) }, undef,
"no URI returned for index action when snippets are given");
is(TestApp->uri_for_action($index_action),
"/action/index",
"index action returns correct path");
#
# Chained Action
#
my $chained_action = '/action/chained/endpoint';
is(eval{ TestApp->uri_for_action($chained_action) }, undef,
"Chained action without captures returns undef");
is(eval{ TestApp->uri_for_action($chained_action, [ 1, 2 ], 1) }, undef,
"Chained action with too many captures returns undef");
is(TestApp->uri_for_action($chained_action, [ 1 ], 1),
"/chained/foo/1/end/1",
"Chained action with correct captures returns correct path");
t/unit_core_uri_for_action.t view on Meta::CPAN
my $request = Catalyst::Request->new( {
_log => Catalyst::Log->new,
base => URI->new('http://127.0.0.1/foo')
} );
my $context = TestApp->new( {
request => $request,
namespace => 'yada',
} );
is( $context->uri_for_action( '/action/chained/endpoint', [ 1 ], 1 ),
'http://127.0.0.1/foo/chained/foo/1/end/1',
"uri_for a controller and action as string");
is(TestApp->uri_for_action($context->controller('Action::Chained')->action_for('endpoint'), [ 1 ], 1),
'/chained/foo/1/end/1',
"uri_for a controller and action, called with only class name");
is(TestApp->uri_for_action('/action/chained/endpoint', [ 1 ], 1 ),
'/chained/foo/1/end/1',
"uri_for a controller and action as string, called with only class name");
is(TestApp->uri_for_action( $chained_action, [ 1 ], 1 ),
'/chained/foo/1/end/1',
"uri_for action via dispatcher, called with only class name");
#
# More Chained with Context Tests
#
{
is( $context->uri_for_action( '/action/chained/endpoint2', [1,2], (3,4), { x => 5 } ),
'http://127.0.0.1/foo/chained/foo2/1/2/end2/3/4?x=5',
'uri_for_action correct for chained with multiple captures and args' );
is( $context->uri_for_action( '/action/chained/endpoint2', [1,2,3,4], { x => 5 } ),
'http://127.0.0.1/foo/chained/foo2/1/2/end2/3/4?x=5',
'uri_for_action correct for chained with multiple captures and args combined' );
is( $context->uri_for_action( '/action/chained/three_end', [1,2,3], (4,5,6) ),
'http://127.0.0.1/foo/chained/one/1/two/2/3/three/4/5/6',
'uri_for_action correct for chained with multiple capturing actions' );
is( $context->uri_for_action( '/action/chained/three_end', [1,2,3,4,5,6] ),
'http://127.0.0.1/foo/chained/one/1/two/2/3/three/4/5/6',
'uri_for_action correct for chained with multiple capturing actions and args combined' );
my $action_needs_two = '/action/chained/endpoint2';
is( eval { $context->uri_for_action($action_needs_two, [1], (2,3)) }, undef,
'uri_for_action returns undef for not enough captures' );
is( $context->uri_for_action($action_needs_two, [1,2], (2,3)),
'http://127.0.0.1/foo/chained/foo2/1/2/end2/2/3',
'uri_for_action returns correct uri for correct captures' );
is( $context->uri_for_action($action_needs_two, [1,2,2,3]),
'http://127.0.0.1/foo/chained/foo2/1/2/end2/2/3',
( run in 0.310 second using v1.01-cache-2.11-cpan-27979f6cc8f )