The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

use strict;
use Plack::Test;
use Test::More tests => 8;
use MyApp::Dispatcher;
use MyApp::Context;
use HTTP::Request;
use HTTP::Response;
use HTTP::Message::PSGI;

my $dispatcher = MyApp::Dispatcher->new( file => 't/MyApp/etc/routes.pl' );
isa_ok( $dispatcher, 'MyApp::Dispatcher' );

{
    my $req = HTTP::Request->new( GET => 'http://localhost/foo' );
    my $env = $req->to_psgi;
    my $c = MyApp::Context->new( $env );
    
    ok( my $match = $dispatcher->match( $c ) );
    is( $match->{controller}, 'Root' );
    is( $match->{action}, 'foo' );
}

{
    my $req = HTTP::Request->new( GET => 'http://localhost/items/1' );
    my $env = $req->to_psgi;
    my $c = MyApp::Context->new( $env );
    
    ok( my $match = $dispatcher->match( $c ) );
    is( $match->{controller}, 'Item' );
    is( $match->{action}, 'view' );
    is( $match->{args}->{id}, '1' );
}