libpq
Version:
Low-level native bindings to PostgreSQL libpq
67 lines (57 loc) • 1.81 kB
JavaScript
var Libpq = require('../');
var assert = require('assert');
describe('transactionStatus', function() {
it('returns PQTRANS_UNKNOWN when not connected', function() {
var pq = new Libpq();
assert.strictEqual(pq.transactionStatus(), 4);
});
it('returns PQTRANS_IDLE after connecting', function() {
var pq = new Libpq();
pq.connectSync();
assert.strictEqual(pq.transactionStatus(), 0);
pq.finish();
});
it('returns PQTRANS_IDLE after a simple query', function() {
var pq = new Libpq();
pq.connectSync();
pq.exec('SELECT 1');
assert.strictEqual(pq.transactionStatus(), 0);
pq.finish();
});
it('returns PQTRANS_INTRANS inside a transaction', function() {
var pq = new Libpq();
pq.connectSync();
pq.exec('BEGIN');
assert.strictEqual(pq.transactionStatus(), 2);
pq.exec('ROLLBACK');
pq.finish();
});
it('returns PQTRANS_IDLE after COMMIT', function() {
var pq = new Libpq();
pq.connectSync();
pq.exec('BEGIN');
assert.strictEqual(pq.transactionStatus(), 2);
pq.exec('COMMIT');
assert.strictEqual(pq.transactionStatus(), 0);
pq.finish();
});
it('returns PQTRANS_INERROR after a failed query in a transaction', function() {
var pq = new Libpq();
pq.connectSync();
pq.exec('BEGIN');
pq.exec('SELECT FROM nonexistent_table_xyz');
assert.strictEqual(pq.transactionStatus(), 3);
pq.exec('ROLLBACK');
pq.finish();
});
it('returns PQTRANS_IDLE after ROLLBACK from error state', function() {
var pq = new Libpq();
pq.connectSync();
pq.exec('BEGIN');
pq.exec('SELECT FROM nonexistent_table_xyz');
assert.strictEqual(pq.transactionStatus(), 3);
pq.exec('ROLLBACK');
assert.strictEqual(pq.transactionStatus(), 0);
pq.finish();
});
});