libpq
Version:
Low-level native bindings to PostgreSQL libpq
85 lines (69 loc) • 1.99 kB
JavaScript
var PQ = require('../')
var assert = require('assert');
describe('connecting with bad credentials', function() {
it('throws an error', function() {
try {
new PQ().connectSync('asldkfjlasdf');
} catch(e) {
assert.equal(e.toString().indexOf('connection pointer is NULL'), -1)
return;
}
assert.fail('Should have thrown an exception');
});
});
describe('connecting with no credentials', function() {
before(function() {
this.pq = new PQ();
this.pq.connectSync();
});
it('is connected', function() {
assert(this.pq.connected, 'should have connected == true');
});
after(function() {
this.pq.finish();
assert(!this.pq.connected);
});
});
describe('result checking', function() {
before(function() {
this.pq = new PQ();
this.pq.connectSync();
});
after(function() {
this.pq.finish();
});
it('executes query', function() {
this.pq.exec('SELECT NOW() as my_col');
assert.equal(this.pq.resultStatus(), 'PGRES_TUPLES_OK');
})
it('has 1 tuple', function() {
assert.equal(this.pq.ntuples(), 1);
});
it('has 1 field', function() {
assert.strictEqual(this.pq.nfields(), 1);
});
it('has column name', function() {
assert.equal(this.pq.fname(0), 'my_col');
});
it('has table oid zero', function() {
assert.strictEqual(this.pq.ftable(0), 0);
});
it('has column number of the query-result', function() {
assert.strictEqual(this.pq.ftablecol(0), 0);
});
it('has oid type of timestamptz', function() {
assert.strictEqual(this.pq.ftype(0), 1184);
});
it('has value as a date', function() {
var now = new Date();
var val = this.pq.getvalue(0);
var date = new Date(Date.parse(val));
assert.equal(date.getFullYear(), now.getFullYear());
assert.equal(date.getMonth(), now.getMonth());
});
it('can manually clear result multiple times', function() {
this.pq.clear();
this.pq.clear();
this.pq.clear();
});
});