mirror of
https://github.com/brianc/node-postgres.git
synced 2025-12-08 20:16:25 +00:00
Fix brittle unit tests
This commit is contained in:
parent
5f5e40f03c
commit
0ce8a6c675
@ -1,5 +1,6 @@
|
||||
var helper = require(__dirname+'/../test-helper');
|
||||
var Connection = require(__dirname + '/../../../lib/connection');
|
||||
var helper = require('../test-helper');
|
||||
var Connection = require('../../../lib/connection');
|
||||
|
||||
var makeClient = function() {
|
||||
var connection = new Connection({stream: "no"});
|
||||
connection.startup = function() {};
|
||||
@ -14,6 +15,6 @@ var makeClient = function() {
|
||||
return client;
|
||||
};
|
||||
|
||||
module.exports = {
|
||||
module.exports = Object.assign({
|
||||
client: makeClient
|
||||
};
|
||||
}, helper);
|
||||
|
||||
@ -1,112 +1,69 @@
|
||||
var helper = require("./test-helper");
|
||||
var Query = require('../../../lib/query')
|
||||
var types = require('pg-types')
|
||||
var Query = require("../../../lib/query");
|
||||
var types = require("pg-types");
|
||||
|
||||
test('handles throws in type parsers', function() {
|
||||
var typeParserError = new Error('TEST: Throw in type parsers');
|
||||
const suite = new helper.Suite();
|
||||
|
||||
types.setTypeParser('special oid that will throw', function () {
|
||||
throw typeParserError;
|
||||
var typeParserError = new Error("TEST: Throw in type parsers");
|
||||
|
||||
types.setTypeParser("special oid that will throw", function() {
|
||||
throw typeParserError;
|
||||
});
|
||||
|
||||
const emitFakeEvents = con => {
|
||||
setImmediate(() => {
|
||||
con.emit("readyForQuery");
|
||||
|
||||
con.emit("rowDescription", {
|
||||
fields: [
|
||||
{
|
||||
name: "boom",
|
||||
dataTypeID: "special oid that will throw"
|
||||
}
|
||||
]
|
||||
});
|
||||
|
||||
con.emit("dataRow", { fields: ["hi"] });
|
||||
con.emit("dataRow", { fields: ["hi"] });
|
||||
con.emit("commandComplete", { text: "INSERT 31 1" });
|
||||
con.emit("readyForQuery");
|
||||
});
|
||||
};
|
||||
|
||||
test('emits error', function() {
|
||||
var handled;
|
||||
var client = helper.client();
|
||||
var con = client.connection;
|
||||
var query = client.query(new Query('whatever'));
|
||||
suite.test("emits error", function(done) {
|
||||
var handled;
|
||||
var client = helper.client();
|
||||
var con = client.connection;
|
||||
var query = client.query(new Query("whatever"));
|
||||
emitFakeEvents(con)
|
||||
|
||||
handled = con.emit('readyForQuery');
|
||||
assert.ok(handled, "should have handled ready for query");
|
||||
|
||||
con.emit('rowDescription',{
|
||||
fields: [{
|
||||
name: 'boom',
|
||||
dataTypeID: 'special oid that will throw'
|
||||
}]
|
||||
});
|
||||
assert.ok(handled, "should have handled row description");
|
||||
|
||||
assert.emits(query, 'error', function(err) {
|
||||
assert.equal(err, typeParserError);
|
||||
});
|
||||
|
||||
handled = con.emit('dataRow', { fields: ["hi"] });
|
||||
assert.ok(handled, "should have handled first data row message");
|
||||
|
||||
handled = con.emit('commandComplete', { text: 'INSERT 31 1' });
|
||||
assert.ok(handled, "should have handled command complete");
|
||||
|
||||
handled = con.emit('readyForQuery');
|
||||
assert.ok(handled, "should have handled ready for query");
|
||||
assert.emits(query, "error", function(err) {
|
||||
assert.equal(err, typeParserError);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
test('calls callback with error', function() {
|
||||
var handled;
|
||||
suite.test("calls callback with error", function(done) {
|
||||
var handled;
|
||||
|
||||
var callbackCalled = 0;
|
||||
var callbackCalled = 0;
|
||||
|
||||
var client = helper.client();
|
||||
var con = client.connection;
|
||||
var query = client.query('whatever', assert.calls(function (err) {
|
||||
callbackCalled += 1;
|
||||
|
||||
assert.equal(callbackCalled, 1);
|
||||
assert.equal(err, typeParserError);
|
||||
}));
|
||||
|
||||
handled = con.emit('readyForQuery');
|
||||
assert.ok(handled, "should have handled ready for query");
|
||||
|
||||
handled = con.emit('rowDescription',{
|
||||
fields: [{
|
||||
name: 'boom',
|
||||
dataTypeID: 'special oid that will throw'
|
||||
}]
|
||||
});
|
||||
assert.ok(handled, "should have handled row description");
|
||||
|
||||
handled = con.emit('dataRow', { fields: ["hi"] });
|
||||
assert.ok(handled, "should have handled first data row message");
|
||||
|
||||
handled = con.emit('dataRow', { fields: ["hi"] });
|
||||
assert.ok(handled, "should have handled second data row message");
|
||||
|
||||
con.emit('commandComplete', { text: 'INSERT 31 1' });
|
||||
assert.ok(handled, "should have handled command complete");
|
||||
|
||||
handled = con.emit('readyForQuery');
|
||||
assert.ok(handled, "should have handled ready for query");
|
||||
});
|
||||
|
||||
test('rejects promise with error', function() {
|
||||
var handled;
|
||||
var client = helper.client();
|
||||
var con = client.connection;
|
||||
var queryPromise = client.query('whatever');
|
||||
|
||||
handled = con.emit('readyForQuery');
|
||||
assert.ok(handled, "should have handled ready for query");
|
||||
|
||||
handled = con.emit('rowDescription',{
|
||||
fields: [{
|
||||
name: 'boom',
|
||||
dataTypeID: 'special oid that will throw'
|
||||
}]
|
||||
});
|
||||
assert.ok(handled, "should have handled row description");
|
||||
|
||||
handled = con.emit('dataRow', { fields: ["hi"] });
|
||||
assert.ok(handled, "should have handled first data row message");
|
||||
|
||||
handled = con.emit('commandComplete', { text: 'INSERT 31 1' });
|
||||
assert.ok(handled, "should have handled command complete");
|
||||
|
||||
handled = con.emit('readyForQuery');
|
||||
assert.ok(handled, "should have handled ready for query");
|
||||
|
||||
queryPromise.catch(assert.calls(function (err) {
|
||||
assert.equal(err, typeParserError);
|
||||
}));
|
||||
var client = helper.client();
|
||||
var con = client.connection;
|
||||
emitFakeEvents(con);
|
||||
var query = client.query("whatever", function(err) {
|
||||
assert.equal(err, typeParserError);
|
||||
done();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
suite.test("rejects promise with error", function(done) {
|
||||
var client = helper.client();
|
||||
var con = client.connection;
|
||||
emitFakeEvents(con);
|
||||
client.query("whatever").catch(err => {
|
||||
assert.equal(err, typeParserError);
|
||||
done();
|
||||
});
|
||||
});
|
||||
|
||||
@ -1,6 +1,8 @@
|
||||
var helper = require(__dirname+'/../test-helper');
|
||||
var EventEmitter = require('events').EventEmitter;
|
||||
var Connection = require(__dirname + '/../../lib/connection');
|
||||
|
||||
var helper = require('../test-helper');
|
||||
var Connection = require('../../lib/connection');
|
||||
|
||||
MemoryStream = function() {
|
||||
EventEmitter.call(this);
|
||||
this.packets = [];
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user