The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use Kelp::Base -strict;

use Kelp;
use Kelp::Test;
use HTTP::Request::Common;
use Test::More tests => 8;

my $app = Kelp->new( mode => 'test' );
my $t = Kelp::Test->new( app => $app );

$app->add_route( '/test' => sub { shift->res->redirect_to('/example') });
$t->request( GET '/test' )
    ->header_is('Location', '/example')
    ->code_is(302);

$app->add_route( '/catalogue/:id' => { to => 'test_catalogue', name => 'catalogue', defaults => { id => 'all' }});
$app->add_route( '/test2' => sub { shift->res->redirect_to('catalogue') });
$t->request( GET '/test2' )
    ->header_is('Location', '/catalogue/all')
    ->code_is(302);

$app->add_route( '/test3' => sub { shift->res->redirect_to('catalogue', {id => 243}) });
$t->request( GET '/test3' )
    ->header_is('Location', '/catalogue/243')
    ->code_is(302);

$app->add_route( '/test4' => sub { shift->res->redirect_to('catalogue', {}, 403) });
$t->request( GET '/test4' )
    ->header_is('Location', '/catalogue/all')
    ->code_is(403);

done_testing;