The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
use strict;
use warnings;
use Test::More;

BEGIN {
    eval "use DBI;";
    if ($@) {
        plan skip_all => "No DBI installed";
        exit(0);
    }
};

use Log::Handler::Output::DBI;
plan tests => 8;

my ($ret, $log);

$log = Log::Handler::Output::DBI->new(
    database   => "dbname",
    driver     => "mysql",
    user       => "dbuser",
    password   => "dbpass",
    host       => "127.0.0.1",
    port       => 3306,
    debug      => 0,
    table      => "messages",
    columns    => "level message",
    values     => "%level %message",
    persistent => 0,
);

ok(1, "new");

$ret = $log->{statement} eq "insert into messages (level,message) values (?,?)";
ok($ret, "checking statement");

#$ret = $log->{cstr}->[0] eq "dbi:mysql:database=dbname;host=127.0.0.1;port=3306";
$ret = $log->{cstr}->[0] eq "dbi:mysql:database=dbname;host=127.0.0.1;port=3306";
ok($ret, "checking cstr");

$ret = $log->{cstr}->[1] eq "dbuser";
ok($ret, "checking user");

$ret = $log->{cstr}->[2] eq "dbpass";
ok($ret, "checking password");

$ret = $log->{cstr}->[3]->{PrintError} == 0;
ok($ret, "checking argument PrintError");

$ret = $log->{cstr}->[3]->{AutoCommit} == 1;
ok($ret, "checking argument AutoCommit");

$log->reload(
    {
        database   => "dbname",
        driver     => "mysql",
        user       => "dbuser",
        password   => "new password",
        host       => "127.0.0.1",
        port       => 3306,
        debug      => 0,
        table      => "messages",
        columns    => "level message",
        values     => "%level %message",
        persistent => 0,
    }
);

ok($log->{password} eq "new password", "checking reload ($log->{password})");