Dancer2
view release on metacpan or search on metacpan
t/dispatcher.t view on Meta::CPAN
use strict;
use warnings;
use Test::More import => ['!pass'];
use Carp 'croak';
use Ref::Util qw<is_regexpref>;
use Dancer2;
use Dancer2::Core::App;
use Dancer2::Core::Route;
use Dancer2::Core::Dispatcher;
use Dancer2::Core::Hook;
use Dancer2::Core::Response;
set logger => 'Null';
# init our test fixture
my $buffer = {};
my $app = Dancer2::Core::App->new( name => 'main' );
$app->setting( logger => engine('logger') );
$app->setting( show_stacktrace => 1 );
# a simple / route
my $simple_route = $app->add_route(
method => 'get',
regexp => '/',
code => sub {"home"},
);
# an error route
my $error_route = $app->add_route(
method => 'get',
regexp => '/error',
code => sub { Fail->fail },
);
# A chain of two route for /user/$foo
my $user_name_route = $app->add_route(
method => 'get',
regexp => '/user/:name',
code => sub {
my $app = shift;
$buffer->{user} = $app->request->params->{'name'};
$app->response->has_passed(1);
},
);
my $user_splat_route = $app->add_route(
method => 'get',
regexp => '/user/*?',
code => sub {
my $app = shift;
"Hello " . $app->request->params->{'name'};
},
);
# a route with a 204 response
my $removed_content_route = $app->add_route(
method => 'get',
regexp => '/twoohfour',
code => sub {
my $app = shift;
$app->response->status(204);
"This content should be removed";
},
( run in 0.862 second using v1.01-cache-2.11-cpan-8f98c5d2c55 )