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 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
|
use strict;
use Test::More tests => 38;
BEGIN {
use_ok('DBI');
}
my $dbh = DBI->connect( 'dbi:Mock:', '', '' );
isa_ok($dbh, 'DBI::db');
$dbh->{PrintError} = 0;
################################################################################
$dbh->{AutoCommit} = 0;
ok( $dbh->{AutoCommit} == 0, "AutoCommit is off" );
ok( $dbh->commit, 'commit() returns true' );
ok( $dbh->rollback, 'rollback() returns true' );
ok( !defined $dbh->begin_work, "begin_work() fails if AutoCommit is off" );
is( $DBI::errstr, 'AutoCommit is off, you are already within a transaction');
my $history = $dbh->{mock_all_history};
ok( @$history == 2, "Correct number of statements" );
is( $history->[0]->statement, 'COMMIT' );
ok( @{$history->[0]->bound_params} == 0, 'No parameters' );
is( $history->[1]->statement, 'ROLLBACK' );
ok( @{$history->[1]->bound_params} == 0, 'No parameters' );
ok( $dbh->{AutoCommit} == 0, "AutoCommit is still off" );
$dbh->{mock_clear_history} = 1;
################################################################################
$dbh->{AutoCommit} = 1;
ok( $dbh->{AutoCommit} == 1, "AutoCommit is on" );
ok( !defined $dbh->commit, "Commit returns false" );
is( $DBI::errstr, "commit ineffective with AutoCommit" );
ok( !defined $dbh->rollback, "Rollback returns false" );
is( $DBI::errstr, "rollback ineffective with AutoCommit" );
ok( $dbh->{AutoCommit} == 1, "AutoCommit is still on" );
$history = $dbh->{mock_all_history};
ok( @$history == 0, "Correct number of statements" );
$dbh->{mock_clear_history} = 1;
################################################################################
$dbh->{AutoCommit} = 1;
ok( $dbh->{AutoCommit} == 1, "AutoCommit is on" );
ok( $dbh->begin_work, 'begin_work() returns true' );
ok( $dbh->{AutoCommit} == 0, "AutoCommit is now off" );
ok( $dbh->rollback, 'rollback() returns true' );
ok( $dbh->{AutoCommit} == 1, "AutoCommit is back on" );
ok( $dbh->begin_work, 'begin_work() returns true' );
ok( $dbh->{AutoCommit} == 0, "AutoCommit is now off" );
ok( $dbh->commit, 'rollback() returns true' );
ok( $dbh->{AutoCommit} == 1, "AutoCommit is back on" );
$history = $dbh->{mock_all_history};
ok( @$history == 4, "Correct number of statements" );
is( $history->[0]->statement, 'BEGIN WORK' );
ok( @{$history->[0]->bound_params} == 0, 'No parameters' );
is( $history->[1]->statement, 'ROLLBACK' );
ok( @{$history->[1]->bound_params} == 0, 'No parameters' );
is( $history->[2]->statement, 'BEGIN WORK' );
ok( @{$history->[2]->bound_params} == 0, 'No parameters' );
is( $history->[3]->statement, 'COMMIT' );
ok( @{$history->[3]->bound_params} == 0, 'No parameters' );
|