Skip to content

Instantly share code, notes, and snippets.

@yowcow
Created October 15, 2014 08:26
Show Gist options
  • Save yowcow/9f6f37cf84c7559fa5a4 to your computer and use it in GitHub Desktop.
Save yowcow/9f6f37cf84c7559fa5a4 to your computer and use it in GitHub Desktop.
"Request" class method "param" comparison
use common::sense;
use HTTP::Message::PSGI;
use HTTP::Request::Common;
use Test::More;
use Test::Pretty;
use Test::Stub;
my $env = (GET "http://hoge/?name=foo&name=bar")->to_psgi;
subtest 'Plack::Request' => sub {
use Plack::Request;
my $req = Plack::Request->new($env);
my $name = $req->param('name');
my @names = $req->param('name');
is $name, 'bar';
is_deeply \@names, [qw( foo bar )];
};
subtest 'Amon2::Web::Request' => sub {
use Amon2::Web::Request;
my $req = Amon2::Web::Request->new($env);
stub($req)->_encoding('utf-8');
my $name = $req->param('name');
my @names = $req->param('name');
is $name, 'bar';
is_deeply \@names, [qw( foo bar )];
};
subtest 'Mojo::Parameters' => sub {
use Mojo::Parameters;
my $params = Mojo::Parameters->new("name=foo&name=bar");
my $name = $params->param('name');
my @names = $params->param('name');
is $name, 'bar';
SKIP: {
skip 'Mojo::Parameter::param returns only 1 value', 1;
is_deeply \@names, [qw( foo bar )];
};
};
subtest 'Dancer::Request' => sub {
use Dancer::Request;
my $req = Dancer::Request->new(env => $env);
SKIP: {
skip 'Dancer::Request does not have method "param"', 2;
my $name = $req->param('name');
my @names = $req->param('name');
is $name, 'bar';
is_deeply \@names, [qw( foo bar )];
};
};
done_testing;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment