mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
99 lines
3.0 KiB
JavaScript
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))
|
|
})
|