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 )