mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
* Work on converting lib to standard * Finish updating lib * Finish linting lib * Format test files * Add .eslintrc with standard format * Supply full path to eslint bin * Move lint command to package.json * Add eslint as dev dependency
143 lines
3.5 KiB
JavaScript
143 lines
3.5 KiB
JavaScript
'use strict'
|
|
var helper = require('./test-helper')
|
|
var Query = helper.pg.Query
|
|
|
|
var suite = new helper.Suite()
|
|
|
|
;(function () {
|
|
var client = helper.client()
|
|
client.on('drain', client.end.bind(client))
|
|
|
|
var queryName = 'user by age and like name'
|
|
var parseCount = 0
|
|
|
|
suite.test('first named prepared statement', function (done) {
|
|
var query = client.query(new Query({
|
|
text: 'select name from person where age <= $1 and name LIKE $2',
|
|
values: [20, 'Bri%'],
|
|
name: queryName
|
|
}))
|
|
|
|
assert.emits(query, 'row', function (row) {
|
|
assert.equal(row.name, 'Brian')
|
|
})
|
|
|
|
query.on('end', () => done())
|
|
})
|
|
|
|
suite.test('second named prepared statement with same name & text', function (done) {
|
|
var cachedQuery = client.query(new Query({
|
|
text: 'select name from person where age <= $1 and name LIKE $2',
|
|
name: queryName,
|
|
values: [10, 'A%']
|
|
}))
|
|
|
|
assert.emits(cachedQuery, 'row', function (row) {
|
|
assert.equal(row.name, 'Aaron')
|
|
})
|
|
|
|
cachedQuery.on('end', () => done())
|
|
})
|
|
|
|
suite.test('with same name, but without query text', function (done) {
|
|
var q = client.query(new Query({
|
|
name: queryName,
|
|
values: [30, '%n%']
|
|
}))
|
|
|
|
assert.emits(q, 'row', function (row) {
|
|
assert.equal(row.name, 'Aaron')
|
|
|
|
// test second row is emitted as well
|
|
assert.emits(q, 'row', function (row) {
|
|
assert.equal(row.name, 'Brian')
|
|
})
|
|
})
|
|
|
|
q.on('end', () => done())
|
|
})
|
|
})()
|
|
|
|
;(function () {
|
|
var statementName = 'differ'
|
|
var statement1 = 'select count(*)::int4 as count from person'
|
|
var statement2 = 'select count(*)::int4 as count from person where age < $1'
|
|
|
|
var client1 = helper.client()
|
|
var client2 = helper.client()
|
|
|
|
suite.test('client 1 execution', function (done) {
|
|
var query = client1.query({
|
|
name: statementName,
|
|
text: statement1
|
|
}, (err, res) => {
|
|
assert(!err)
|
|
assert.equal(res.rows[0].count, 26)
|
|
done()
|
|
})
|
|
})
|
|
|
|
suite.test('client 2 execution', function (done) {
|
|
var query = client2.query(new Query({
|
|
name: statementName,
|
|
text: statement2,
|
|
values: [11]
|
|
}))
|
|
|
|
assert.emits(query, 'row', function (row) {
|
|
assert.equal(row.count, 1)
|
|
})
|
|
|
|
assert.emits(query, 'end', function () {
|
|
done()
|
|
})
|
|
})
|
|
|
|
suite.test('clean up clients', () => {
|
|
return client1.end().then(() => client2.end())
|
|
})
|
|
})()
|
|
|
|
;(function () {
|
|
var client = helper.client()
|
|
client.query('CREATE TEMP TABLE zoom(name varchar(100));')
|
|
client.query("INSERT INTO zoom (name) VALUES ('zed')")
|
|
client.query("INSERT INTO zoom (name) VALUES ('postgres')")
|
|
client.query("INSERT INTO zoom (name) VALUES ('node postgres')")
|
|
|
|
var checkForResults = function (q) {
|
|
assert.emits(q, 'row', function (row) {
|
|
assert.equal(row.name, 'node postgres')
|
|
|
|
assert.emits(q, 'row', function (row) {
|
|
assert.equal(row.name, 'postgres')
|
|
|
|
assert.emits(q, 'row', function (row) {
|
|
assert.equal(row.name, 'zed')
|
|
})
|
|
})
|
|
})
|
|
}
|
|
|
|
suite.test('with small row count', function (done) {
|
|
var query = client.query(new Query({
|
|
name: 'get names',
|
|
text: 'SELECT name FROM zoom ORDER BY name',
|
|
rows: 1
|
|
}, done))
|
|
|
|
checkForResults(query)
|
|
})
|
|
|
|
suite.test('with large row count', function (done) {
|
|
var query = client.query(new Query({
|
|
name: 'get names',
|
|
text: 'SELECT name FROM zoom ORDER BY name',
|
|
rows: 1000
|
|
}, done))
|
|
checkForResults(query)
|
|
})
|
|
|
|
suite.test('cleanup', () => client.end())
|
|
})()
|