X-Git-Url: http://git.shadowcat.co.uk/gitweb/gitweb.cgi?p=catagits%2FCatalyst-Runtime.git;a=blobdiff_plain;f=t%2Fpsgi_utils.t;h=078dd82cba1a6e30d3d8cf910d65a447b212b450;hp=829d8e3dd7a3161944f17a7b6d8043f4195d9da0;hb=460bb45ba7f4694c2cbb4f1992f14cd9a34b77f7;hpb=b5436c195469b987a25a8492f5c1101992d7d59e diff --git a/t/psgi_utils.t b/t/psgi_utils.t index 829d8e3..078dd82 100644 --- a/t/psgi_utils.t +++ b/t/psgi_utils.t @@ -10,6 +10,7 @@ my $psgi_app = sub { { package MyApp::Controller::Docs; + $INC{'MyApp/Controller/Docs.pm'} = __FILE__; use base 'Catalyst::Controller'; use Plack::Request; @@ -31,6 +32,7 @@ my $psgi_app = sub { } package MyApp::Controller::User; + $INC{'MyApp/Controller/User.pm'} = __FILE__; use base 'Catalyst::Controller'; use Plack::Request; @@ -75,6 +77,27 @@ my $psgi_app = sub { $c->res->from_psgi_response( $psgi_app->($env)); } + + sub mounted :Local Args(1) { + my ($self, $c, $arg) = @_; + our $app ||= ref($c)->psgi_app; + my $env = $self->get_env($c); + $c->res->from_psgi_response( + $app->($env)); + } + + sub mount_arg :Path(/mounted) Arg(1) { + my ($self, $c, $arg) = @_; + my $uri = $c->uri_for( $self->action_for('local_example_args1'),$arg); + $c->res->body("$uri"); + } + + sub mount_noarg :Path(/mounted_no_arg) { + my ($self, $c) = @_; + my $uri = $c->uri_for( $self->action_for('local_example_args1'),444); + $c->res->body("$uri"); + } + sub get_env { my ($self, $c) = @_; @@ -89,8 +112,6 @@ my $psgi_app = sub { } } - $INC{'MyApp/Controller/User.pm'} = __FILE__; - package MyApp; use Catalyst; MyApp->setup; @@ -100,6 +121,20 @@ my $psgi_app = sub { use Test::More; use Catalyst::Test 'MyApp'; +{ + my ($res, $c) = ctx_request('/user/mounted/111?path_prefix=1'); + is $c->action, 'user/mounted'; + is $res->content, 'http://localhost/user/user/local_example_args1/111'; + is_deeply $c->req->args, [111]; +} + +{ + my ($res, $c) = ctx_request('/user/mounted/mounted_no_arg?env_path=1'); + is $c->action, 'user/mounted'; + is $res->content, 'http://localhost/user/mounted/user/local_example_args1/444'; + is_deeply $c->req->args, ['mounted_no_arg']; +} + # BEGIN [user/local_example] { my ($res, $c) = ctx_request('/user/local_example');