use Test::More tests => 8;

use strict;
use warnings FATAL => 'all';

use Dancer::Request;

my $tmpdir = File::Spec->tmpdir;

%ENV = (
    'REQUEST_METHOD' => 'GET',
    'REQUEST_URI'    => '/',
    'PATH_INFO'      => '/',
    'QUERY_STRING'   => 'foo=bar&number=42',
    'TMPDIR'         => $tmpdir,
);

my $req = Dancer::Request->new(env => \%ENV);
is $req->path, '/', 'path is /';
is $req->method, 'GET', 'method is get';
is_deeply scalar($req->params), {foo => 'bar', number => 42}, 
    'params are parsed';

$req = Dancer::Request->new_for_request('GET', '/stuff');
is $req->path, '/stuff', 'path is changed';
is $req->method, 'GET', 'method is changed';
is_deeply scalar($req->params), {foo => 'bar', number => 42}, 
    'params are not touched';

$req = Dancer::Request->new_for_request('GET', '/stuff', {user => 'sukria'});
is_deeply scalar($req->params), {foo => 'bar', number => 42, user => 'sukria'}, 
    'params are updated';

$req = Dancer::Request->new_for_request('GET', '/stuff?foo=baz&number=24');
is_deeply scalar($req->params), {foo => 'baz', number => 24},
    'query string replace';
