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 tests => 9;

BEGIN {
  use_ok('Log::Dispatch');
  use_ok('Log::Dispatch::TextTable');
}

my $return;

{ 
  my $dispatcher = Log::Dispatch->new;
  isa_ok($dispatcher, 'Log::Dispatch');

  my $table_dispatch = Log::Dispatch::TextTable->new(
    name      => 'text_table_log',
    min_level => 'debug',
    send_to   => sub { $return = $_[0] }
  );

  isa_ok($table_dispatch, 'Log::Dispatch::TextTable');
  isa_ok($table_dispatch, 'Log::Dispatch::Output');

  $dispatcher->add($table_dispatch);

  $dispatcher->alert(message => "this is your face");
  $dispatcher->alert(message => "this is your face on drugs");
}

isa_ok($return, 'Text::Table', 'the result of logging');

my $table = "$return";

is(ref($table), '', 'stringified table is just a plain old scalar');

my @lines = split /\n/, $table;

is(@lines, 3, "there were three lines in the table");

like(
  $lines[0],
  qr/\Atime\s+\|\s+level\s+\|\s+message\s*\z/,
  "first line is headers"
);