Acrux-DBI
view release on metacpan or search on metacpan
t/03-connect.t view on Meta::CPAN
#$res->finish;
#note explain $rslt;
#note explain $dbi->dbh->{Driver};
#note $dbi->dbh->{Driver}{Name}
#note explain $res->{'mysql_type'};
#note explain $res->{'pg_type'};
};
subtest 'Create' => sub {
my $res = $dbi->query('CREATE TABLE IF NOT EXISTS `names` (`id` INTEGER AUTO_INCREMENT PRIMARY KEY, `name` VARCHAR(255))');
ok($res, 'Create table') or diag $dbi->error;
if (ref $res) {
# Insert a few rows
ok($dbi->query('INSERT INTO `names` (name) VALUES (?)', 'Bob'), 'Add Bob') or diag $dbi->error;
ok($dbi->query('INSERT INTO `names` (name) VALUES (?)', 'Alice'), 'Add Alice') or diag $dbi->error;
}
};
subtest 'Read' => sub {
my $res = $dbi->query('SELECT `name` FROM `names` WHERE `name` = ?', 'Bob');
ok($res, 'Read Bob') or diag $dbi->error;
if (ref $res) {
is($res->hash->{name}, 'Bob', 'Bob user found');
#note explain $res->hash;
}
};
subtest 'Update' => sub {
my $res = $dbi->query('UPDATE `names` SET `name` = ? WHERE `name` = ?', 'Fred', 'Bob');
ok($res, 'Update Bob to Fred') or diag $dbi->error;
if (ref $res) {
my $r2 = $dbi->query('SELECT `name` FROM `names` WHERE `name` = ?', 'Fred');
ok($r2 && $r2->rows, 'Fred user found');
}
};
subtest 'Delete' => sub {
my $res = $dbi->query('DELETE FROM `names` WHERE `name` = ?', 'Alice');
ok($res, 'Delete Alice') or diag $dbi->error;
if (ref $res) {
my $r2 = $dbi->query('SELECT `name` FROM `names` WHERE `name` = ?', 'Alice');
ok($r2 && !$r2->rows, 'Alice user not found');
}
};
subtest 'Cleanup' => sub {
my $res = $dbi->query('DROP TABLE IF EXISTS `names`');
ok($res, 'Drop table') or diag $dbi->error;
};
done_testing;
1;
__END__
DB_CONNECT_URL='postgres://foo:pass@localhost/mydb?PrintError=1&foo=123' prove -lv t/03-connect.t
DB_CONNECT_URL='mysql://test:test@192.168.0.1/test?mysql_auto_reconnect=1&mysql_enable_utf8=1' prove -lv t/03-connect.t
( run in 1.242 second using v1.01-cache-2.11-cpan-5b529ec07f3 )