84 lines
2.3 KiB
JavaScript

const Client = require('../')
const assert = require('assert')
describe('query sync', function () {
before(function () {
this.client = Client()
this.client.connectSync()
})
after(function (done) {
this.client.end(done)
})
it('simple query works', function () {
const rows = this.client.querySync('SELECT NOW() AS the_time')
assert.equal(rows.length, 1)
assert.equal(rows[0].the_time.getFullYear(), new Date().getFullYear())
})
it('parameterized query works', function () {
const rows = this.client.querySync('SELECT $1::text AS name', ['Brian'])
assert.equal(rows.length, 1)
assert.equal(rows[0].name, 'Brian')
})
it('throws when second argument is not an array', function () {
assert.throws(() => {
this.client.querySync('SELECT $1::text AS name', 'Brian')
})
assert.throws(() => {
this.client.prepareSync('test-failure', 'SELECT $1::text as name', 1)
this.client.executeSync('test-failure', 'Brian')
})
})
it('prepared statement works', function () {
this.client.prepareSync('test', 'SELECT $1::text as name', 1)
const rows = this.client.executeSync('test', ['Brian'])
assert.equal(rows.length, 1)
assert.equal(rows[0].name, 'Brian')
const rows2 = this.client.executeSync('test', ['Aaron'])
assert.equal(rows2.length, 1)
assert.equal(rows2[0].name, 'Aaron')
})
it('prepare throws exception on error', function () {
assert.throws(
function () {
this.client.prepareSync('blah', 'I LIKE TO PARTY!!!', 0)
}.bind(this)
)
})
it('throws exception on executing improperly', function () {
assert.throws(function () {
// wrong number of parameters
this.client.executeSync('test', [])
})
})
it('throws exception on error', function () {
assert.throws(
function () {
this.client.querySync('SELECT ASLKJASLKJF')
}.bind(this)
)
})
it('is still usable after an error', function () {
const rows = this.client.querySync('SELECT NOW()')
assert(rows, 'should have returned rows')
assert.equal(rows.length, 1)
})
it('supports empty query', function () {
const rows = this.client.querySync('')
assert(rows, 'should return rows')
assert.equal(rows.length, 0, 'should return no rows')
})
})