The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!perl
# vim: ts=8 sts=4 et sw=4 sr sta
use strict;
use warnings;

BEGIN {
    use FindBin::libs;
}

use File::Find::Rule;
use File::Path;
use Test::More;

BEGIN {
    $ENV{ TESTAPP_CONFIG } = "$FindBin::Bin/lib/testapp-file.conf";
}

plan tests => 9;
use Catalyst::Test 'TestApp';

{
    eval "require Catalyst::Plugin::ErrorCatcher::File";
    is( $@, q{}, "no require errors" );

    # make a request
    ok( my ($res,$c) = ctx_request('http://localhost/foo/ok'), 'request ok' );
    # check the config
    is_deeply(
        $c->_errorcatcher_c_cfg->{'Plugin::ErrorCatcher::File'},
        {
            dir     => '/tmp/cpectest',
            prefix  => 'cpectest',
        },
        'file emitter config ok',
    );

    my $config = Catalyst::Plugin::ErrorCatcher::File::_check_config(
        $c, q{Dummy Output},
    );
    is( ref($config), q{HASH}, q{returned config is a hashref} );

    # check the prepared config
    is_deeply(
        $config,
        {
            dir     => '/tmp/cpectest',
            prefix  => 'cpectest',
        },
        'email emitter config ok',
    );
}

{
    my ($res, @files);

    open STDERR, '>/dev/null';
    mkdir q{/tmp/cpectest};

    # first request
    ok( $res = request('http://localhost/foo/not_ok'), 'request ok' );
    @files = File::Find::Rule
        ->file()
        ->in( '/tmp/cpectest' );
    is (@files, 1, q{one output file});

    # second request
    ok( $res = request('http://localhost/foo/not_ok'), 'request ok' );
    @files = File::Find::Rule
        ->file()
        ->in( '/tmp/cpectest' );
    is (@files, 2, q{two output files});

    # cleanup
    File::Path::rmtree('/tmp/cpectest');
}