use strict;
use warnings FATAL => 'all';
-use Data::Dump qw(dump);
-use Test::More (
- eval { require HTTP::Request::AsCGI }
- ? 'no_plan'
- : (skip_all => 'No HTTP::Request::AsCGI')
-);
+use Data::Dumper::Concise;
+use Test::More 'no_plan';
+use Plack::Test;
{
use Web::Simple 't::Web::Simple::SubDispatchArgs';
package t::Web::Simple::SubDispatchArgs;
+ has 'attr' => (is=>'ro');
+
sub dispatch_request {
my $self = shift;
sub (/) {
$self->show_landing(@_);
},
sub(/...) {
- sub (GET + /user) {
+ q(GET + /user) => sub {
$self->show_users(@_);
},
sub (/user/*) {
sub show_landing {
my ($self, @args) = @_;
+ local $self->{_dispatcher};
return [
200, ['Content-Type' => 'application/perl' ],
- [Data::Dump::dump @args],
+ [::Dumper \@args],
];
}
sub show_users {
my ($self, @args) = @_;
+ local $self->{_dispatcher};
return [
200, ['Content-Type' => 'application/perl' ],
- [Data::Dump::dump @args],
+ [::Dumper \@args],
];
}
sub show_user {
my ($self, @args) = @_;
+ local $self->{_dispatcher};
return [
200, ['Content-Type' => 'application/perl' ],
- [Data::Dump::dump @args],
+ [::Dumper \@args],
];
}
sub process_post {
my ($self, @args) = @_;
+ local $self->{_dispatcher};
return [
200, ['Content-Type' => 'application/perl' ],
- [Data::Dump::dump @args],
+ [::Dumper \@args],
];
}
}
'made app';
sub run_request {
- my @args = (shift, SCRIPT_NAME=> $0);
- my $c = HTTP::Request::AsCGI->new(@args)->setup;
- $app->run;
- $c->restore;
- return $c->response;
+ my $request = shift;
+ return test_psgi $app->to_psgi_app, sub { shift->($request) };
}
use HTTP::Request::Common qw(GET POST);
cmp_ok $get_landing->code, '==', 200,
'200 on GET';
+no strict 'refs';
+
{
- my ($self, $env, @noextra) = eval $get_landing->content;
+ my ($self, $env, @noextra) = @{eval($get_landing->content)||[]};
+ die $@ if $@;
is scalar(@noextra), 0, 'No extra stuff';
is ref($self), 't::Web::Simple::SubDispatchArgs', 'got object';
is ref($env), 'HASH', 'Got hashref';
- is $env->{SCRIPT_NAME}, $0, 'correct scriptname';
}
ok my $get_users = run_request(GET 'http://localhost/user'),
'200 on GET';
{
- my ($self, $env, @noextra) = eval $get_users->content;
+ my ($self, $env, @noextra) = @{eval $get_users->content};
is scalar(@noextra), 0, 'No extra stuff';
is ref($self), 't::Web::Simple::SubDispatchArgs', 'got object';
is ref($env), 'HASH', 'Got hashref';
- is $env->{SCRIPT_NAME}, $0, 'correct scriptname';
}
ok my $get_user = run_request(GET 'http://localhost/user/42'),
'200 on GET';
{
- my ($self, $env, @noextra) = eval $get_user->content;
+ my ($self, $env, @noextra) = @{eval $get_user->content};
is scalar(@noextra), 0, 'No extra stuff';
is ref($self), 't::Web::Simple::SubDispatchArgs', 'got object';
is ref($env), 'HASH', 'Got hashref';
- is $env->{SCRIPT_NAME}, $0, 'correct scriptname';
}
ok my $post_user = run_request(POST 'http://localhost/user/42', [id => '99'] ),
'200 on POST';
{
- my ($self, $params, $env, @noextra) = eval $post_user->content;
+ my ($self, $params, $env, @noextra) = @{eval $post_user->content};
is scalar(@noextra), 0, 'No extra stuff';
is ref($self), 't::Web::Simple::SubDispatchArgs', 'got object';
is ref($params), 'HASH', 'Got POST hashref';
is $params->{id}, 99, 'got expected value for id';
is ref($env), 'HASH', 'Got hashref';
- is $env->{SCRIPT_NAME}, $0, 'correct scriptname';
}