The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Test::More tests => 5;
use strict;
use warnings FATAL => 'all';
use Dancer::Request;

my $body = 'x=1&meth=post';
open my $in, '<', \$body;

my $env = {
        CONTENT_LENGTH => length($body),
        CONTENT_TYPE   => 'application/x-www-form-urlencoded',
        QUERY_STRING   => 'y=2&meth=get',
        REQUEST_METHOD => 'POST',
        SCRIPT_NAME    => '/',
        'psgi.input'   => $in,
};

my $mixed_params = {
    meth => 'post',
    x => 1,
    y => 2,
};

my $get_params = {
    y => 2,
    meth => 'get',
};

my $post_params = {
    x => 1,
    meth => 'post',
};

my $req = Dancer::Request->new($env);
is $req->path, '/', 'path is set';
is $req->method, 'POST', 'method is set';

is_deeply scalar($req->params), $mixed_params, 'params are OK';
is_deeply scalar($req->params('body')), $post_params, 'body params are OK';
is_deeply scalar($req->params('query')), $get_params, 'query params are OK';