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 )