diff --git a/lib/transaction.js b/lib/transaction.js index 7548a92..ec574ab 100644 --- a/lib/transaction.js +++ b/lib/transaction.js @@ -134,3 +134,10 @@ Transaction.begin = function(connector, options, cb) { }); if (cb.promise) return cb.promise; }; + +/** + * Check whether a transaction has an active connection. + */ +Transaction.prototype.isActive = function() { + return !!this.connection; +} diff --git a/test/transaction.test.js b/test/transaction.test.js index 458b968..8909111 100644 --- a/test/transaction.test.js +++ b/test/transaction.test.js @@ -210,6 +210,32 @@ describe('transactions', function() { }); }); + describe('isActive', function() { + it('returns true when connection is active', function(done) { + Post.beginTransaction({ + isolationLevel: Transaction.READ_COMMITTED, + timeout: 1000, + }, + function(err, tx) { + if (err) return done(err); + expect(tx.isActive()).to.equal(true); + return done(); + }); + }); + it('returns false when connection is not active', function(done) { + Post.beginTransaction({ + isolationLevel: Transaction.READ_COMMITTED, + timeout: 1000, + }, + function(err, tx) { + if (err) return done(err); + delete tx.connection; + expect(tx.isActive()).to.equal(false); + return done(); + }); + }); + }); + describe('transaction instance', function() { function TestTransaction(connector, connection) { this.connector = connector;