1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
use strict;
use warnings;
use Test::More;
use Test::Warn;
use_ok('Test::MockDBI');
{
#AutoCommit should reset after commit \ rollback calls
my $dbh = DBI->connect('DBI:mysql:somedb', 'user1', 'password1');
isa_ok($dbh, 'DBI::db');
cmp_ok($dbh->{AutoCommit}, '==', 1, 'AutoCommit defaults to 1');
$dbh->begin_work();
cmp_ok($dbh->{AutoCommit}, '==', 0, 'AutoCommit is 0');
$dbh->commit();
cmp_ok($dbh->{AutoCommit}, '==', 1, 'AutoCommit is 1');
$dbh->begin_work();
cmp_ok($dbh->{AutoCommit}, '==', 0, 'AutoCommit is 0');
$dbh->rollback();
cmp_ok($dbh->{AutoCommit}, '==', 1, 'AutoCommit is 1');
}
{
#Should be able to set AutoCommit on init
my $dbh = DBI->connect('DBI:mysql:somedb', 'user1', 'password1', { AutoCommit => 0 });
cmp_ok($dbh->{AutoCommit}, '==', 0, "AutoCommit is turned off");
}
{
#DBI should display a warning on commit without autocommit
my $dbh = DBI->connect('DBI:mysql:somedb', 'user1', 'password1');
warning_like{
$dbh->commit();
} qr/commit ineffective with AutoCommit enabled/, "commit displays warning when autocommit is enabled";
warning_like{
$dbh->rollback();
} qr/rollback ineffective with AutoCommit enabled/, "rollback displays warning when autocommit is enabled";
}
done_testing();
|