128 lines
3.8 KiB
JavaScript
128 lines
3.8 KiB
JavaScript
var helper = require(__dirname + "/test-helper");
|
|
|
|
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('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");
|
|
});
|
|
});
|
|
|
|
});
|
|
|
|
});
|
|
|