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
124 lines
3.8 KiB
JavaScript
124 lines
3.8 KiB
JavaScript
'use strict'
|
|
var helper = require(__dirname + '/test-helper')
|
|
var Query = require('../../../lib/query')
|
|
|
|
test('executing query', function () {
|
|
test('queing query', function () {
|
|
test('when connection is ready', function () {
|
|
var client = helper.client()
|
|
assert.empty(client.connection.queries)
|
|
client.connection.emit('readyForQuery')
|
|
client.query('yes')
|
|
assert.lengthIs(client.connection.queries, 1)
|
|
assert.equal(client.connection.queries, 'yes')
|
|
})
|
|
|
|
test('when connection is not ready', function () {
|
|
var client = helper.client()
|
|
|
|
test('query is not sent', function () {
|
|
client.query('boom')
|
|
assert.empty(client.connection.queries)
|
|
})
|
|
|
|
test('sends query to connection once ready', function () {
|
|
assert.ok(client.connection.emit('readyForQuery'))
|
|
assert.lengthIs(client.connection.queries, 1)
|
|
assert.equal(client.connection.queries[0], 'boom')
|
|
})
|
|
})
|
|
|
|
test('multiple in the queue', function () {
|
|
var client = helper.client()
|
|
var connection = client.connection
|
|
var queries = connection.queries
|
|
client.query('one')
|
|
client.query('two')
|
|
client.query('three')
|
|
assert.empty(queries)
|
|
|
|
test('after one ready for query', function () {
|
|
connection.emit('readyForQuery')
|
|
assert.lengthIs(queries, 1)
|
|
assert.equal(queries[0], 'one')
|
|
})
|
|
|
|
test('after two ready for query', function () {
|
|
connection.emit('readyForQuery')
|
|
assert.lengthIs(queries, 2)
|
|
})
|
|
|
|
test('after a bunch more', function () {
|
|
connection.emit('readyForQuery')
|
|
connection.emit('readyForQuery')
|
|
connection.emit('readyForQuery')
|
|
assert.lengthIs(queries, 3)
|
|
assert.equal(queries[0], 'one')
|
|
assert.equal(queries[1], 'two')
|
|
assert.equal(queries[2], 'three')
|
|
})
|
|
})
|
|
})
|
|
|
|
test('query event binding and flow', function () {
|
|
var client = helper.client()
|
|
var con = client.connection
|
|
var query = client.query(new Query('whatever'))
|
|
|
|
test('has no queries sent before ready', function () {
|
|
assert.empty(con.queries)
|
|
})
|
|
|
|
test('sends query on readyForQuery event', function () {
|
|
con.emit('readyForQuery')
|
|
assert.lengthIs(con.queries, 1)
|
|
assert.equal(con.queries[0], 'whatever')
|
|
})
|
|
|
|
test('handles rowDescription message', function () {
|
|
var handled = con.emit('rowDescription', {
|
|
fields: [{
|
|
name: 'boom'
|
|
}]
|
|
})
|
|
assert.ok(handled, 'should have handlded rowDescription')
|
|
})
|
|
|
|
test('handles dataRow messages', function () {
|
|
assert.emits(query, 'row', function (row) {
|
|
assert.equal(row['boom'], 'hi')
|
|
})
|
|
|
|
var handled = con.emit('dataRow', { fields: ['hi'] })
|
|
assert.ok(handled, 'should have handled first data row message')
|
|
|
|
assert.emits(query, 'row', function (row) {
|
|
assert.equal(row['boom'], 'bye')
|
|
})
|
|
|
|
var handledAgain = con.emit('dataRow', { fields: ['bye'] })
|
|
assert.ok(handledAgain, 'should have handled seciond data row message')
|
|
})
|
|
|
|
// multiple command complete messages will be sent
|
|
// when multiple queries are in a simple command
|
|
test('handles command complete messages', function () {
|
|
con.emit('commandComplete', {
|
|
text: 'INSERT 31 1'
|
|
})
|
|
})
|
|
|
|
test('removes itself after another readyForQuery message', function () {
|
|
return false
|
|
assert.emits(query, 'end', function (msg) {
|
|
// TODO do we want to check the complete messages?
|
|
})
|
|
con.emit('readyForQuery');
|
|
// this would never actually happen
|
|
['dataRow', 'rowDescription', 'commandComplete'].forEach(function (msg) {
|
|
assert.equal(con.emit(msg), false, "Should no longer be picking up '" + msg + "' messages")
|
|
})
|
|
})
|
|
})
|
|
})
|