DBIx-TableLoader
view release on metacpan or search on metacpan
t/validate.t view on Meta::CPAN
# vim: set ts=2 sts=2 sw=2 expandtab smarttab:
use strict;
use warnings;
use Test::More 0.96;
use Test::Fatal;
my $mod = 'DBIx::TableLoader';
eval "require $mod" or die $@;
sub new_loader {
my ($data, $handler) = @_;
return new_ok($mod, [
columns => [qw(counting crows)],
data => $data,
handle_invalid_row => $handler,
]);
}
subtest warn => sub {
my $loader = new_loader(
[
[qw( round here )],
[qw( angels of the silences )],
[qw( daylight fading )],
],
'warn',
);
my @warnings;
local $SIG{__WARN__} = sub { push @warnings, $_[0] };
is_deeply $loader->get_row, [qw( round here )], 'got good row';
is_deeply $loader->get_row, [qw( angels of the silences )], 'bad row passed through';
is_deeply $loader->get_row, [qw( daylight fading )], 'got good row';
is scalar(@warnings), 1, 'only 1 warning';
like
$warnings[0],
qr/^Row has 4 fields when 2 are expected$/,
'got bad column number warning';
};
subtest die => sub {
my $loader = new_loader(
[
[qw( anna begins )],
[qw( perfect blue buildings )],
],
'die'
);
is_deeply $loader->get_row, [qw( anna begins )], 'got good row';
like
exception { $loader->get_row },
qr/^Row has 3 fields when 2 are expected$/,
'died with bad column number';
};
subtest coderef => sub {
my $loader = new_loader(
[
[qw( goodnight elisabeth )],
[qw( a long december )],
[qw( have you seen me lately )],
[qw( hanginaround )],
[qw( four days )],
( run in 1.037 second using v1.01-cache-2.11-cpan-54e63673c56 )