public void RollbackOnTimeout()
{
Assert.That(() =>
{
using (var scope = new TransactionScope(TransactionScopeOption.Required, new TimeSpan(0, 0, 1)))
{
using (var conn = new NpgsqlConnection(ConnectionString + ";enlist=true"))
{
conn.Open();
var cmd = new NpgsqlCommand(@"INSERT INTO data (name) VALUES ('HELLO')", conn);
cmd.ExecuteNonQuery(); // the update operation is expected to rollback
System.Threading.Thread.Sleep(2000);
}
scope.Complete();
}
}, Throws.Exception.AssignableTo<TransactionException>());
using (var conn = OpenConnection())
Assert.That(conn.ExecuteScalar("SELECT COUNT(*) FROM data"), Is.EqualTo(0));
}