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;

set plugins => {
    'Cache::CHI' => { driver => 'Memory', global => 1, expires_in => '1 min' },
};

check_page_cache;

for my $i ( qw/ foo bar / ) {
    get "/$i" => sub { cache_page $i };
}

get '/keys' => sub {
    my $cache = cache();
    return join " : ", sort $cache->get_keys('Default');
};

plan tests => 6;

response_content_is '/foo', 'foo';
response_content_is '/bar', 'bar';

response_content_is '/keys', '/bar : /foo';

cache_page_key_generator sub {
    return join ":", request()->host, request()->path_info;
};

response_content_is '/foo', 'foo';
response_content_is '/bar', 'bar';

response_content_is '/keys', '/bar : /foo : localhost:/bar : localhost:/foo';