2020-04-10 11:31:03 -05:00

99 lines
3.0 KiB
JavaScript

'use strict'
var helper = require('./test-helper')
var Query = helper.pg.Query
// before running this test make sure you run the script create-test-tables
test('simple query interface', function () {
var client = helper.client()
var query = client.query(new Query('select name from person order by name collate "C"'))
client.on('drain', client.end.bind(client))
var rows = []
query.on('row', function (row, result) {
assert.ok(result)
rows.push(row['name'])
})
query.once('row', function (row) {
test('Can iterate through columns', function () {
var columnCount = 0
for (var column in row) {
columnCount++
}
if ('length' in row) {
assert.lengthIs(
row,
columnCount,
'Iterating through the columns gives a different length from calling .length.'
)
}
})
})
assert.emits(query, 'end', function () {
test('returned right number of rows', function () {
assert.lengthIs(rows, 26)
})
test('row ordering', function () {
assert.equal(rows[0], 'Aaron')
assert.equal(rows[25], 'Zanzabar')
})
})
})
test('prepared statements do not mutate params', function () {
var client = helper.client()
var params = [1]
var query = client.query(new Query('select name from person where $1 = 1 order by name collate "C"', params))
assert.deepEqual(params, [1])
client.on('drain', client.end.bind(client))
const rows = []
query.on('row', function (row, result) {
assert.ok(result)
rows.push(row)
})
query.on('end', function (result) {
assert.lengthIs(rows, 26, 'result returned wrong number of rows')
assert.lengthIs(rows, result.rowCount)
assert.equal(rows[0].name, 'Aaron')
assert.equal(rows[25].name, 'Zanzabar')
})
})
test('multiple simple queries', function () {
var client = helper.client()
client.query({ text: "create temp table bang(id serial, name varchar(5));insert into bang(name) VALUES('boom');" })
client.query("insert into bang(name) VALUES ('yes');")
var query = client.query(new Query('select name from bang'))
assert.emits(query, 'row', function (row) {
assert.equal(row['name'], 'boom')
assert.emits(query, 'row', function (row) {
assert.equal(row['name'], 'yes')
})
})
client.on('drain', client.end.bind(client))
})
test('multiple select statements', function () {
var client = helper.client()
client.query(
'create temp table boom(age integer); insert into boom(age) values(1); insert into boom(age) values(2); insert into boom(age) values(3)'
)
client.query({ text: "create temp table bang(name varchar(5)); insert into bang(name) values('zoom');" })
var result = client.query(new Query({ text: 'select age from boom where age < 2; select name from bang' }))
assert.emits(result, 'row', function (row) {
assert.strictEqual(row['age'], 1)
assert.emits(result, 'row', function (row) {
assert.strictEqual(row['name'], 'zoom')
})
})
client.on('drain', client.end.bind(client))
})