# !!! do not replace this with done_testing - tests reside in the callbacks
# !!! number of calls is important
-use Test::More tests => 11;
+use Test::More tests => 17;
# !!!
+use Test::Warn;
my $schema = DBICTest::Schema->clone;
$schema->storage->ensure_connected;
$schema->storage->disconnect; # this should not fire any tests
}
+
+{
+ ok $schema->connection(
+ sub { DBI->connect(DBICTest->_database, undef, undef, { AutoCommit => 0 } ) },
+ {
+ # method list form
+ on_connect_call => [ sub { ok 1, "on_connect_call after DT parser" }, ],
+ on_disconnect_call => [ sub { ok 1, "on_disconnect_call after DT parser" }, ],
+ },
+ ), 'connection()';
+
+ ok (! $schema->storage->connected, 'start disconnected');
+
+ # this should connect due to the coderef, and also warn due to the false autocommit above
+ warnings_exist {
+ $schema->storage->_determine_driver
+ } qr/The 'RaiseError' of the externally supplied DBI handle is set to false/, 'Warning on clobbered AutoCommit => 0 fired';
+
+ ok ($schema->storage->connected, 'determine driver connects');
+ $schema->storage->disconnect;
+}