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

use strict;
use warnings;

use lib 't';

use Dancer qw/:syntax :tests/;
use Dancer::Plugin::Cache::CHI;

use Dancer::Test;
use Test::More;

eval {
    require File::Temp;
    require CHI::Driver::FastMmap;
    1;
} or plan skip_all =>
'File::Temp and CHI::Driver::FastMmap required for these tests' . " ($@)";

File::Temp->import( 'tempdir' );

set plugins => {
    'Cache::CHI' => {
        driver => 'FastMmap',
        global => 1,
        expires_in => '100 min',
        root_dir => tempdir( CLEANUP => 1 ),
    },
};

setting show_errors => 1;

for ( qw/ foo bar / ) {
    my $cache = cache $_;

    get "/$_/*" => sub { $cache->set( x => splat ); 1; };
    get "/$_" => sub { $cache->get( "x" ) };
}

plan tests => 4;

response_status_is "/foo/monkey" => 200, "storing monkey";
response_status_is "/bar/walrus" => 200, "storing walrus";

response_content_is '/foo', 'monkey';
response_content_is '/bar', 'walrus';