Added tests for commit and rollback
Andy Grundman [Fri, 29 Jul 2005 21:25:43 +0000 (21:25 +0000)]
t/04db.t [new file with mode: 0644]

diff --git a/t/04db.t b/t/04db.t
new file mode 100644 (file)
index 0000000..2d97f94
--- /dev/null
+++ b/t/04db.t
@@ -0,0 +1,45 @@
+use Test::More;
+
+plan tests => 4;
+
+use lib qw(t/lib);
+
+use_ok('DBICTest');
+
+# add some rows inside a transaction and commit it
+# XXX: Is _get_dbh the only way to get a dbh?
+DBICTest::Artist->_get_dbh->{AutoCommit} = 0;
+for (10..15) {
+    DBICTest::Artist->create( { 
+        artistid => $_,
+        name => "artist number $_",
+    } );
+}
+DBICTest::Artist->dbi_commit;
+my ($artist) = DBICTest::Artist->retrieve(15);
+is($artist->name, 'artist number 15', "Commit ok");
+
+# repeat the test using AutoCommit = 1 to force the commit
+DBICTest::Artist->_get_dbh->{AutoCommit} = 0;
+for (16..20) {
+    DBICTest::Artist->create( {
+        artistid => $_,
+        name => "artist number $_",
+    } );
+}
+DBICTest::Artist->_get_dbh->{AutoCommit} = 1;
+($artist) = DBICTest::Artist->retrieve(20);
+is($artist->name, 'artist number 20', "Commit using AutoCommit ok");
+
+# add some rows inside a transaction and roll it back
+DBICTest::Artist->_get_dbh->{AutoCommit} = 0;
+for (21..30) {
+    DBICTest::Artist->create( {
+        artistid => $_,
+        name => "artist number $_",
+    } );
+}
+DBICTest::Artist->dbi_rollback;
+($artist) = DBICTest::Artist->search( artistid => 25 );
+is($artist, undef, "Rollback ok");
+