The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
# vim: filetype=perl :
use strict;
use warnings;

use Test::More import => ['!pass'];

eval "use Template";
plan skip_all => "Template::Toolkit required for testing default" if $@;
#plan tests => 16;
plan 'no_plan';

use Dancer ':syntax';
use Dancer::Test;
use File::Spec::Functions qw( rel2abs );

setting views => rel2abs(path(qw( t views )));
setting template => 'template_toolkit';
setting plugins  => {
   FlashNote => {
      queue   => 'key_single',
      dequeue => 'by_key',
   },
};
use_ok 'Dancer::Plugin::FlashNote';

ok(get('/' => sub { template key_single => {where => 'root'} }),
   'root route');
ok(
   get(
      '/whine' => sub {
         flash(warn  => 'groan');
         flash(error => 'GROAN');
         template key_warn => {where => 'whine'};
      }
   ),
   'whine route'
);

route_exists [GET => $_] for qw( / /whine );

response_content_is(
   [GET => '/'],
   "root:\n   ''\n   ''\n",
   'response for / has no flash message'
);
response_content_is([GET => '/whine'], "whine:\n* warn: 'groan'\n");
response_content_is(
   [GET => '/'],
   "root:\n   ''\n   'GROAN'\n",
   'response for / collects unused keys'
);
response_content_is(
   [GET => '/'],
   "root:\n   ''\n   ''\n",
   'response for / is now empty'
);