Catalyst-Engine-HTTP-POE
view release on metacpan or search on metacpan
t/lib/TestApp/Controller/Action/Chained.pm view on Meta::CPAN
#
# TODO
# :Chained('') means what?
#
#
# 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) { }
#
# Relative specification of parent action
#
sub bar :PathPart('chained/bar') :Chained('/') :CaptureArgs(0) { }
sub finale :PathPart('') :Chained('bar') :Args { }
#
# 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) { }
sub one_end :PathPart('chained/one') :Chained('/') :Args(1) { }
sub two_end :PathPart('two') :Chained('one') :Args(2) { }
#
# Dispatch on number of arguments
#
t/lib/TestApp/Controller/Action/Chained.pm view on Meta::CPAN
#
# Priority: With no Args()
#
sub priority_c1 :PathPart('chained/priority_c') :Chained('/') :CaptureArgs(1) { }
sub priority_c2 :PathPart('') :Chained('priority_c1') { }
sub priority_c2_xyz :PathPart('xyz') :Chained('priority_c1') { }
#
# Optional specification of :Args in endpoint
#
sub opt_args :PathPart('chained/opt_args') :Chained('/') { }
#
# Optional PathPart test -> /chained/optpp/*/opt_pathpart/*
#
sub opt_pp_start :Chained('/') :PathPart('chained/optpp') :CaptureArgs(1) { }
sub opt_pathpart :Chained('opt_pp_start') :Args(1) { }
#
t/lib/TestApp/Controller/Action/Chained/Root.pm view on Meta::CPAN
package TestApp::Controller::Action::Chained::Root;
use strict;
use warnings;
use base qw( Catalyst::Controller );
__PACKAGE__->config->{namespace} = '';
sub rootsub : PathPart Chained( '/' ) CaptureArgs( 1 ) { }
sub endpointsub : PathPart Chained( 'rootsub' ) Args( 1 ) { }
1;
t/live_component_controller_action_chained.t view on Meta::CPAN
my ($run_number) = @_;
#
# This is a simple test where the parent and child actions are
# within the same controller.
#
{
my @expected = qw[
TestApp::Controller::Action::Chained->begin
TestApp::Controller::Action::Chained->foo
TestApp::Controller::Action::Chained->endpoint
TestApp::Controller::Action::Chained->end
];
my $expected = join( ", ", @expected );
ok( my $response = request('http://localhost/chained/foo/1/end/2'), 'chained + local endpoint' );
is( $response->header('X-Catalyst-Executed'),
$expected, 'Executed actions' );
is( $response->content, '1; 2', 'Content OK' );
}
#
# This makes sure the above isn't found if the argument for the
# end action isn't supplied.
#
{
my $expected = undef;
ok( my $response = request('http://localhost/chained/foo/1/end'),
'chained + local endpoint; missing last argument' );
is( $response->header('X-Catalyst-Executed'),
$expected, 'Executed actions' );
is( $response->code, 500, 'Status OK' );
}
#
# Tests the case when the child action is placed in a subcontroller.
#
{
my @expected = qw[
TestApp::Controller::Action::Chained->begin
TestApp::Controller::Action::Chained->foo
TestApp::Controller::Action::Chained::Foo->spoon
TestApp::Controller::Action::Chained->end
];
my $expected = join( ", ", @expected );
ok( my $response = request('http://localhost/chained/foo/1/spoon'), 'chained + subcontroller endpoint' );
is( $response->header('X-Catalyst-Executed'),
$expected, 'Executed actions' );
is( $response->content, '1; ', 'Content OK' );
}
#
# Tests if the relative specification (e.g.: Chained('bar') ) works
# as expected.
#
{
my @expected = qw[
TestApp::Controller::Action::Chained->begin
TestApp::Controller::Action::Chained->bar
TestApp::Controller::Action::Chained->finale
TestApp::Controller::Action::Chained->end
];
my $expected = join( ", ", @expected );
ok( my $response = request('http://localhost/chained/bar/1/spoon'), 'chained + relative endpoint' );
is( $response->header('X-Catalyst-Executed'),
$expected, 'Executed actions' );
is( $response->content, '; 1, spoon', 'Content OK' );
}
#
# Just a test for multiple arguments.
#
{
my @expected = qw[
TestApp::Controller::Action::Chained->begin
TestApp::Controller::Action::Chained->foo2
TestApp::Controller::Action::Chained->endpoint2
TestApp::Controller::Action::Chained->end
];
my $expected = join( ", ", @expected );
ok( my $response = request('http://localhost/chained/foo2/10/20/end2/15/25'),
'chained + local (2 args each)' );
is( $response->header('X-Catalyst-Executed'),
$expected, 'Executed actions' );
is( $response->content, '10, 20; 15, 25', 'Content OK' );
t/live_component_controller_action_chained.t view on Meta::CPAN
}
else { pass( "Error on absolute path part arguments already tested" ) }
}
#
# Test chained actions in the root controller
#
{
my @expected = qw[
TestApp::Controller::Action::Chained::Root->rootsub
TestApp::Controller::Action::Chained::Root->endpointsub
TestApp->end
];
my $expected = join( ", ", @expected );
ok( my $response = request('http://localhost/rootsub/1/endpointsub/2'), 'chained in root namespace' );
is( $response->header('X-Catalyst-Executed'),
$expected, 'Executed actions' );
is( $response->content, '', 'Content OK' );
}
#
# Complex path with multiple empty pathparts
#
{
my @expected = qw[
( run in 0.232 second using v1.01-cache-2.11-cpan-b61123c0432 )