DBIx-Librarian
view release on metacpan or search on metacpan
t/00suite.t view on Meta::CPAN
}
plan tests => 34;
my $dblbn = new DBIx::Librarian ({
LIB => ["tests"],
});
# test series with default archiver
runtest();
$dblbn->disconnect;
my $archiver = new Data::Library::ManyPerFile({
LIB => ["tests"],
EXTENSION => "msql",
});
$dblbn = new DBIx::Librarian ({
ARCHIVER => $archiver,
MAXSELECTROWS => 100,
});
# test series with ManyPerFile archiver
runtest();
$dblbn->disconnect;
# Dismantle test tables
system ("echo 'drop table BUG' | mysql -D test -p$ENV{DBI_PASS}") and die;
exit;
sub runtest {
my @toc = $dblbn->{SQL}->toc;
ok (scalar(@toc) == 7, "toc");
######################################################################
# DELETE to prepare for test scenario
eval { $dblbn->execute("t_delete", $data); };
ok (!$@, "delete");
######################################################################
# test prepare
eval { $dblbn->prepare("t_insert_bind") };
ok (!$@, "successful prepare");
eval { $dblbn->prepare("t_no_such_query",
"t_select_bug") };
ok ($@, "successful prepare");
######################################################################
# INSERT with no bind variable
# SELECT check to verify that one row was inserted
my @results;
eval { @results = $dblbn->execute("t_insert", $data); };
ok($data->{bugid} == 5, "insert, no bind variables");
ok($results[0] == 2
&& $results[1]->[0] == 1
&& $results[1]->[1] == 1, "rowcounts");
# force disconnect to make sure Librarian reconnects correctly
$dblbn->{DBH}->disconnect;
######################################################################
# INSERT with bind variables
# SELECT check to verify that one row was inserted
$data->{groupset} = 17;
$data->{assigned_to} = 9;
$data->{product} = "Perl";
$data->{testnode}->{product_name} = "Perl";
#$data->{product} = [ "foo" ];
eval { $dblbn->execute("t_insert_bind", $data); };
ok($data->{bugid} == 7, "insert, with bind variables");
######################################################################
# multi-column SELECT
eval { $dblbn->execute("t_select_row"); };
ok($@, "Missing target data reference");
$data->{groupset} = 42;
eval { $dblbn->execute("t_select_row", $data); };
ok($data->{bugid} == 5, "single-row select");
eval { $dblbn->execute("t_select_row2", $data); };
ok(defined $data->{foo}, "single-row select with structure");
ok($data->{foo}->{bugid} == 5, "single-row select with structure");
######################################################################
# multi-row SELECT
eval { $dblbn->execute("t_select_all", $data); };
ok(scalar(@{$data->{bug}}) == 2, "multi-row select");
######################################################################
# repeat SELECT
my $i = 0;
foreach my $bug (@{$data->{bug}}) {
eval { $dblbn->execute("t_select_bug", $bug); };
$i++ if length $bug->{product} > 0;
}
ok($i == 2, "fetching rows from sub-level of data");
######################################################################
# try an non-existent query
eval { $dblbn->execute("t_does_not_exist", $data) };
ok($@, "t_does_not_exist not found");
ok (! $dblbn->can("t_does_not_exist"), "cannot");
ok ($dblbn->can("t_select_bug"), "can");
######################################################################
eval { $dblbn->execute("t_select_all"); };
ok ($@, "missing data");
######################################################################
######################################################################
}
( run in 3.341 seconds using v1.01-cache-2.11-cpan-5c0b1e786e0 )