From b8c2bebcaca895d7803ebb9b86364675bd9147a2 Mon Sep 17 00:00:00 2001 From: "Brian M. Carlson" Date: Sat, 10 Jun 2017 16:29:00 -0500 Subject: [PATCH] Fix more tests to use query instance --- lib/client.js | 4 + .../client/big-simple-query-tests.js | 18 +-- test/integration/client/cancel-query-tests.js | 11 +- .../client/error-handling-tests.js | 2 +- test/integration/client/no-data-tests.js | 11 +- .../integration/client/no-row-result-tests.js | 4 +- .../client/prepared-statement-tests.js | 104 +++++------------- ...error-handling-prepared-statement-tests.js | 10 +- .../client/query-error-handling-tests.js | 10 +- .../client/result-metadata-tests.js | 8 +- .../client/results-as-array-tests.js | 3 - test/integration/client/simple-query-tests.js | 33 ++---- .../integration/client/type-coercion-tests.js | 9 +- .../connection-pool/test-helper.js | 4 +- 14 files changed, 75 insertions(+), 156 deletions(-) diff --git a/lib/client.js b/lib/client.js index d489ff8d..32ea76b9 100644 --- a/lib/client.js +++ b/lib/client.js @@ -356,6 +356,10 @@ Client.prototype.query = function(config, values, callback) { // processing to the passed object - this is how pg.Query, QueryStream, and Cursor work if (isQueryable) { query = config; + // accept client.query(new Query('select *'), (err, res) => { }) call signature + if (typeof values == 'function') { + query.callback = query.callback || values; + } } else { query = new Query(config, values, callback); if (!query.callback) { diff --git a/test/integration/client/big-simple-query-tests.js b/test/integration/client/big-simple-query-tests.js index cf6cdbf7..514babe6 100644 --- a/test/integration/client/big-simple-query-tests.js +++ b/test/integration/client/big-simple-query-tests.js @@ -1,4 +1,5 @@ -var helper = require(__dirname+"/test-helper"); +var helper = require("./test-helper"); +var Query = helper.pg.Query /* Test to trigger a bug. @@ -15,7 +16,7 @@ var big_query_rows_3 = []; // Works test('big simple query 1',function() { var client = helper.client(); - client.query("select 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as bla from person where name = '' or 1 = 1") + client.query(new Query("select 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as bla from person where name = '' or 1 = 1")) .on('row', function(row) { big_query_rows_1.push(row); }) .on('error', function(error) { console.log("big simple query 1 error"); console.log(error); }); client.on('drain', client.end.bind(client)); @@ -24,7 +25,7 @@ test('big simple query 1',function() { // Works test('big simple query 2',function() { var client = helper.client(); - client.query("select 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as bla from person where name = $1 or 1 = 1",['']) + client.query(new Query("select 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as bla from person where name = $1 or 1 = 1",[''])) .on('row', function(row) { big_query_rows_2.push(row); }) .on('error', function(error) { console.log("big simple query 2 error"); console.log(error); }); client.on('drain', client.end.bind(client)); @@ -34,7 +35,7 @@ test('big simple query 2',function() { // If test 1 and 2 are commented out it works test('big simple query 3',function() { var client = helper.client(); - client.query("select 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as bla from person where name = $1 or 1 = 1",['']) + client.query(new Query("select 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa' as bla from person where name = $1 or 1 = 1",[''])) .on('row', function(row) { big_query_rows_3.push(row); }) .on('error', function(error) { console.log("big simple query 3 error"); console.log(error); }); client.on('drain', client.end.bind(client)); @@ -56,19 +57,12 @@ var runBigQuery = function(client) { } assert.lengthIs(result.rows, 26); }); - q.on('row', function(row) { - rows.push(row); - }) - assert.emits(q, 'end', function() { - //query ended - assert.lengthIs(rows, 26); - }) } test('many times', function() { var client = helper.client(); for(var i = 0; i < 20; i++) { - runBigQuery(client); + runBigQuery(client); } client.on('drain', function() { client.end(); diff --git a/test/integration/client/cancel-query-tests.js b/test/integration/client/cancel-query-tests.js index b6c0c7f4..0275fa89 100644 --- a/test/integration/client/cancel-query-tests.js +++ b/test/integration/client/cancel-query-tests.js @@ -1,4 +1,5 @@ -var helper = require(__dirname+"/test-helper"); +var helper = require("./test-helper"); +var Query = helper.pg.Query; //before running this test make sure you run the script create-test-tables test("cancellation of a query", function() { @@ -11,19 +12,19 @@ test("cancellation of a query", function() { var rows3 = 0; - var query1 = client.query(qry); + var query1 = client.query(new Query(qry)); query1.on('row', function(row) { throw new Error('Should not emit a row') }); - var query2 = client.query(qry); + var query2 = client.query(new Query(qry)); query2.on('row', function(row) { throw new Error('Should not emit a row') }); - var query3 = client.query(qry); + var query3 = client.query(new Query(qry)); query3.on('row', function(row) { rows3++; }); - var query4 = client.query(qry); + var query4 = client.query(new Query(qry)); query4.on('row', function(row) { throw new Error('Should not emit a row') }); diff --git a/test/integration/client/error-handling-tests.js b/test/integration/client/error-handling-tests.js index d66fb611..08e78b33 100644 --- a/test/integration/client/error-handling-tests.js +++ b/test/integration/client/error-handling-tests.js @@ -1,7 +1,7 @@ var helper = require('./test-helper'); var util = require('util'); -const { pg } = helper +var pg = helper.pg var createErorrClient = function() { diff --git a/test/integration/client/no-data-tests.js b/test/integration/client/no-data-tests.js index 341d7287..3258e6a5 100644 --- a/test/integration/client/no-data-tests.js +++ b/test/integration/client/no-data-tests.js @@ -1,4 +1,4 @@ -var helper = require(__dirname + '/test-helper'); +var helper = require('./test-helper'); test("noData message handling", function() { @@ -22,7 +22,6 @@ test("noData message handling", function() { client.query({ name: 'insert', - text: 'insert into boom(size) values($1)', values: [101] }); @@ -30,12 +29,10 @@ test("noData message handling", function() { name: 'fetch', text: 'select size from boom where size < $1', values: [101] - }); - - assert.emits(query, 'row', function(row) { - assert.strictEqual(row.size,100) + }, (err, res) => { + var row = res.rows[0] + assert.strictEqual(row.size, 100) }); client.on('drain', client.end.bind(client)); - }); diff --git a/test/integration/client/no-row-result-tests.js b/test/integration/client/no-row-result-tests.js index 5555ff6f..1929b162 100644 --- a/test/integration/client/no-row-result-tests.js +++ b/test/integration/client/no-row-result-tests.js @@ -3,6 +3,7 @@ var pg = helper.pg; var config = helper.config; test('can access results when no rows are returned', function() { + console.log('maybe fix this?', __filename) if(config.native) return false; var checkResult = function(result) { assert(result.fields, 'should have fields definition'); @@ -13,7 +14,8 @@ test('can access results when no rows are returned', function() { }; pg.connect(config, assert.success(function(client, done) { - var query = client.query('select $1::text as val limit 0', ['hi'], assert.success(function(result) { + const q = new pg.Query('select $1::text as val limit 0', ['hi']) + var query = client.query(q, assert.success(function(result) { checkResult(result); done(); })); diff --git a/test/integration/client/prepared-statement-tests.js b/test/integration/client/prepared-statement-tests.js index 478cd007..9735407a 100644 --- a/test/integration/client/prepared-statement-tests.js +++ b/test/integration/client/prepared-statement-tests.js @@ -1,48 +1,5 @@ -var helper = require(__dirname +'/test-helper'); - -test("simple, unnamed prepared statement", function(){ - var client = helper.client(); - - var query = client.query({ - text: 'select age from person where name = $1', - values: ['Brian'] - }); - - assert.emits(query, 'row', function(row) { - assert.equal(row.age, 20); - }); - - assert.emits(query, 'end', function() { - client.end(); - }); -}); - -test("use interval in prepared statement", function(){ - return; - var client = helper.client(); - - client.query('SELECT interval \'15 days 2 months 3 years 6:12:05\' as interval', assert.success(function(result) { - var interval = result.rows[0].interval; - - var query = client.query({ - text: 'select cast($1 as interval) as interval', - values: [interval] - }); - - assert.emits(query, 'row', function(row) { - assert.equal(row.interval.seconds, 5); - assert.equal(row.interval.minutes, 12); - assert.equal(row.interval.hours, 6); - assert.equal(row.interval.days, 15); - assert.equal(row.interval.months, 2); - assert.equal(row.interval.years, 3); - }); - - assert.emits(query, 'end', function() { - client.end(); - }); - })); -}); +var helper = require('./test-helper'); +var Query = helper.pg.Query; test("named prepared statement", function() { @@ -52,12 +9,12 @@ test("named prepared statement", function() { var queryName = "user by age and like name"; var parseCount = 0; - test("first named prepared statement",function() { - var query = client.query({ + test("first named prepared statement", function() { + 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'); @@ -68,11 +25,11 @@ test("named prepared statement", function() { }); test("second named prepared statement with same name & text", function() { - var cachedQuery = client.query({ + 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'); @@ -82,28 +39,22 @@ test("named prepared statement", function() { }); }); - test("with same name, but the query text not even there batman!", function() { - var q = client.query({ + test("with same name, but without query text", function() { + var q = client.query(new Query({ name: queryName, values: [30, '%n%'] - }); + })); - test("gets first row", function() { + 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, "Aaron"); - - test("gets second row", function() { - assert.emits(q, 'row', function(row) { - assert.equal(row.name, "Brian"); - }); - }); - + assert.equal(row.name, "Brian"); }); }); - assert.emits(q, 'end', function() { - - }); + assert.emits(q, 'end', function() { }); }); }); @@ -124,14 +75,9 @@ test("prepared statements on different clients", function() { var query = client1.query({ name: statementName, text: statement1 - }); - test('gets right data back', function() { - assert.emits(query, 'row', function(row) { - assert.equal(row.count, 26); - }); - }); - - assert.emits(query, 'end', function() { + }, (err, res) => { + assert(!err); + assert.equal(res.rows[0].count, 26); if(client2Finished) { client1.end(); client2.end(); @@ -143,11 +89,11 @@ test("prepared statements on different clients", function() { }); test('client 2 execution', function() { - var query = client2.query({ + var query = client2.query(new Query({ name: statementName, text: statement2, values: [11] - }); + })); test('gets right data', function() { assert.emits(query, 'row', function(row) { @@ -192,22 +138,22 @@ test('prepared statement', function() { }; test('with small row count', function() { - var query = client.query({ + var query = client.query(new Query({ name: 'get names', text: "SELECT name FROM zoom ORDER BY name", rows: 1 - }); + })); checkForResults(query); }) test('with large row count', function() { - var query = client.query({ + var query = client.query(new Query({ name: 'get names', text: 'SELECT name FROM zoom ORDER BY name', rows: 1000 - }) + })) checkForResults(query); }) diff --git a/test/integration/client/query-error-handling-prepared-statement-tests.js b/test/integration/client/query-error-handling-prepared-statement-tests.js index 77615ff3..5f27e5a4 100644 --- a/test/integration/client/query-error-handling-prepared-statement-tests.js +++ b/test/integration/client/query-error-handling-prepared-statement-tests.js @@ -1,4 +1,5 @@ -var helper = require(__dirname + '/test-helper'); +var helper = require('./test-helper'); +var Query = helper.pg.Query; var util = require('util'); function killIdleQuery(targetQuery) { @@ -39,7 +40,7 @@ test('query killed during query execution of prepared statement', function() { // client should emit an error because it is unexpectedly disconnected assert.emits(client, 'error') - var query1 = client.query(queryConfig, assert.calls(function(err, result) { + var query1 = client.query(new Query(queryConfig), assert.calls(function(err, result) { assert.equal(err.message, 'terminating connection due to administrator command'); })); @@ -63,13 +64,14 @@ test('client end during query execution of prepared statement', function() { var client = new Client(helper.args); client.connect(assert.success(function() { var sleepQuery = 'select pg_sleep($1)'; - var query1 = client.query({ + var query1 = client.query(new Query({ name: 'sleep query', text: sleepQuery, values: [5] }, assert.calls(function(err, result) { assert.equal(err.message, 'Connection terminated'); - })); + }))); + query1.on('error', function(err) { assert.fail('Prepared statement should not emit error'); diff --git a/test/integration/client/query-error-handling-tests.js b/test/integration/client/query-error-handling-tests.js index 3eba4b11..53b59041 100644 --- a/test/integration/client/query-error-handling-tests.js +++ b/test/integration/client/query-error-handling-tests.js @@ -1,11 +1,12 @@ var helper = require('./test-helper'); var util = require('util'); -const { Query } = helper.pg; +var Query = helper.pg.Query; test('error during query execution', function() { var client = new Client(helper.args); client.connect(assert.success(function() { - var sleepQuery = new Query('select pg_sleep(5)'); + var queryText = 'select pg_sleep(5)' + var sleepQuery = new Query(queryText); var pidColName = 'procpid' var queryColName = 'current_query'; helper.versionGTE(client, '9.2.0', assert.success(function(isGreater) { @@ -26,9 +27,8 @@ test('error during query execution', function() { setTimeout(function() { var client2 = new Client(helper.args); client2.connect(assert.success(function() { - var killIdleQuery = "SELECT " + pidColName + ", (SELECT pg_terminate_backend(" + pidColName + ")) AS killed FROM pg_stat_activity WHERE " + queryColName + " = $1"; - client2.query(killIdleQuery, [sleepQuery], assert.calls(function(err, res) { - console.log('\nresult', res) + var killIdleQuery = `SELECT ${pidColName}, (SELECT pg_cancel_backend(${pidColName})) AS killed FROM pg_stat_activity WHERE ${queryColName} LIKE $1`; + client2.query(killIdleQuery, [queryText], assert.calls(function(err, res) { assert.ifError(err); assert.equal(res.rows.length, 1); client2.end(); diff --git a/test/integration/client/result-metadata-tests.js b/test/integration/client/result-metadata-tests.js index 01363003..221db776 100644 --- a/test/integration/client/result-metadata-tests.js +++ b/test/integration/client/result-metadata-tests.js @@ -20,16 +20,10 @@ test('should return insert metadata', function() { assert.isNull(err); if(hasRowCount) assert.equal(result.rowCount, 1); assert.equal(result.command, 'SELECT'); + done(); process.nextTick(pg.end.bind(pg)); })); })); - - assert.emits(q, 'end', function(result) { - assert.equal(result.command, "INSERT"); - if(hasRowCount) assert.equal(result.rowCount, 1); - done(); - }); - })); })); })); diff --git a/test/integration/client/results-as-array-tests.js b/test/integration/client/results-as-array-tests.js index ef11a891..1a1d8edf 100644 --- a/test/integration/client/results-as-array-tests.js +++ b/test/integration/client/results-as-array-tests.js @@ -26,8 +26,5 @@ test('returns results as array', function() { checkRow(result.rows[0]); client.end(); })); - assert.emits(query, 'row', function(row) { - checkRow(row); - }); })); }); diff --git a/test/integration/client/simple-query-tests.js b/test/integration/client/simple-query-tests.js index e7ffc04a..9453f159 100644 --- a/test/integration/client/simple-query-tests.js +++ b/test/integration/client/simple-query-tests.js @@ -1,10 +1,12 @@ -var helper = require(__dirname+"/test-helper"); +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("select name from person order by name"); + var query = client.query(new Query("select name from person order by name")); client.on('drain', client.end.bind(client)); @@ -36,34 +38,13 @@ test("simple query interface", function() { }); }); -test("simple query interface using addRow", function() { - - var client = helper.client(); - - var query = client.query("select name from person order by name"); - - client.on('drain', client.end.bind(client)); - - query.on('row', function(row, result) { - assert.ok(result); - result.addRow(row); - }); - - query.on('end', function(result) { - assert.lengthIs(result.rows, 26, "result returned wrong number of rows"); - assert.lengthIs(result.rows, result.rowCount); - assert.equal(result.rows[0].name, "Aaron"); - assert.equal(result.rows[25].name, "Zanzabar"); - }); -}); - test("prepared statements do not mutate params", function() { var client = helper.client(); var params = [1] - var query = client.query("select name from person where $1 = 1 order by name", params); + var query = client.query(new Query("select name from person where $1 = 1 order by name", params)); assert.deepEqual(params, [1]) @@ -86,7 +67,7 @@ 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("select name from bang"); + 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) { @@ -100,7 +81,7 @@ 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({text: "select age from boom where age < 2; select name from bang"}); + 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) { diff --git a/test/integration/client/type-coercion-tests.js b/test/integration/client/type-coercion-tests.js index d961c291..98f3148a 100644 --- a/test/integration/client/type-coercion-tests.js +++ b/test/integration/client/type-coercion-tests.js @@ -1,4 +1,5 @@ var helper = require(__dirname + '/test-helper'); +var pg = helper.pg; var sink; var testForTypeCoercion = function(type){ @@ -13,10 +14,10 @@ var testForTypeCoercion = function(type){ assert.isNull(err); })); - var query = client.query({ + var query = client.query(new pg.Query({ name: 'get type ' + type.name , text: 'select col from test_type' - }); + })); query.on('error', function(err) { console.log(err); throw err; @@ -128,11 +129,11 @@ test("timestampz round trip", function() { name: 'add date', values: ['now', now] }); - var result = client.query({ + var result = client.query(new pg.Query({ name: 'get date', text: 'select * from date_tests where name = $1', values: ['now'] - }); + })); assert.emits(result, 'row', function(row) { var date = row.tstz; diff --git a/test/integration/connection-pool/test-helper.js b/test/integration/connection-pool/test-helper.js index 199407cd..e4a3e425 100644 --- a/test/integration/connection-pool/test-helper.js +++ b/test/integration/connection-pool/test-helper.js @@ -17,8 +17,8 @@ helper.testPoolSize = function(max) { client.query("select count(*) as c from person", function(err, result) { assert.equal(result.rows[0].c, 26) }) - var query = client.query("SELECT * FROM NOW()") - query.on('end',function() { + var query = client.query("SELECT * FROM NOW()", (err) => { + assert(!err) sink.add(); done(); })