Skip to content

Commit d240427

Browse files
committed
Fix more tests to use query instance
1 parent 5f2eee2 commit d240427

14 files changed

+75
-156
lines changed

lib/client.js

+4
Original file line numberDiff line numberDiff line change
@@ -356,6 +356,10 @@ Client.prototype.query = function(config, values, callback) {
356356
// processing to the passed object - this is how pg.Query, QueryStream, and Cursor work
357357
if (isQueryable) {
358358
query = config;
359+
// accept client.query(new Query('select *'), (err, res) => { }) call signature
360+
if (typeof values == 'function') {
361+
query.callback = query.callback || values;
362+
}
359363
} else {
360364
query = new Query(config, values, callback);
361365
if (!query.callback) {

test/integration/client/big-simple-query-tests.js

+6-12
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

test/integration/client/cancel-query-tests.js

+6-5
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
var helper = require(__dirname+"/test-helper");
1+
var helper = require("./test-helper");
2+
var Query = helper.pg.Query;
23

34
//before running this test make sure you run the script create-test-tables
45
test("cancellation of a query", function() {
@@ -11,19 +12,19 @@ test("cancellation of a query", function() {
1112

1213
var rows3 = 0;
1314

14-
var query1 = client.query(qry);
15+
var query1 = client.query(new Query(qry));
1516
query1.on('row', function(row) {
1617
throw new Error('Should not emit a row')
1718
});
18-
var query2 = client.query(qry);
19+
var query2 = client.query(new Query(qry));
1920
query2.on('row', function(row) {
2021
throw new Error('Should not emit a row')
2122
});
22-
var query3 = client.query(qry);
23+
var query3 = client.query(new Query(qry));
2324
query3.on('row', function(row) {
2425
rows3++;
2526
});
26-
var query4 = client.query(qry);
27+
var query4 = client.query(new Query(qry));
2728
query4.on('row', function(row) {
2829
throw new Error('Should not emit a row')
2930
});

test/integration/client/error-handling-tests.js

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
var helper = require('./test-helper');
22
var util = require('util');
33

4-
const { pg } = helper
4+
var pg = helper.pg
55

66

77
var createErorrClient = function() {

test/integration/client/no-data-tests.js

+4-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
var helper = require(__dirname + '/test-helper');
1+
var helper = require('./test-helper');
22

33
test("noData message handling", function() {
44

@@ -22,20 +22,17 @@ test("noData message handling", function() {
2222

2323
client.query({
2424
name: 'insert',
25-
text: 'insert into boom(size) values($1)',
2625
values: [101]
2726
});
2827

2928
var query = client.query({
3029
name: 'fetch',
3130
text: 'select size from boom where size < $1',
3231
values: [101]
33-
});
34-
35-
assert.emits(query, 'row', function(row) {
36-
assert.strictEqual(row.size,100)
32+
}, (err, res) => {
33+
var row = res.rows[0]
34+
assert.strictEqual(row.size, 100)
3735
});
3836

3937
client.on('drain', client.end.bind(client));
40-
4138
});

test/integration/client/no-row-result-tests.js

+3-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ var pg = helper.pg;
33
var config = helper.config;
44

55
test('can access results when no rows are returned', function() {
6+
console.log('maybe fix this?', __filename)
67
if(config.native) return false;
78
var checkResult = function(result) {
89
assert(result.fields, 'should have fields definition');
@@ -13,7 +14,8 @@ test('can access results when no rows are returned', function() {
1314
};
1415

1516
pg.connect(config, assert.success(function(client, done) {
16-
var query = client.query('select $1::text as val limit 0', ['hi'], assert.success(function(result) {
17+
const q = new pg.Query('select $1::text as val limit 0', ['hi'])
18+
var query = client.query(q, assert.success(function(result) {
1719
checkResult(result);
1820
done();
1921
}));

test/integration/client/prepared-statement-tests.js

+25-79
Original file line numberDiff line numberDiff line change
@@ -1,48 +1,5 @@
1-
var helper = require(__dirname +'/test-helper');
2-
3-
test("simple, unnamed prepared statement", function(){
4-
var client = helper.client();
5-
6-
var query = client.query({
7-
text: 'select age from person where name = $1',
8-
values: ['Brian']
9-
});
10-
11-
assert.emits(query, 'row', function(row) {
12-
assert.equal(row.age, 20);
13-
});
14-
15-
assert.emits(query, 'end', function() {
16-
client.end();
17-
});
18-
});
19-
20-
test("use interval in prepared statement", function(){
21-
return;
22-
var client = helper.client();
23-
24-
client.query('SELECT interval \'15 days 2 months 3 years 6:12:05\' as interval', assert.success(function(result) {
25-
var interval = result.rows[0].interval;
26-
27-
var query = client.query({
28-
text: 'select cast($1 as interval) as interval',
29-
values: [interval]
30-
});
31-
32-
assert.emits(query, 'row', function(row) {
33-
assert.equal(row.interval.seconds, 5);
34-
assert.equal(row.interval.minutes, 12);
35-
assert.equal(row.interval.hours, 6);
36-
assert.equal(row.interval.days, 15);
37-
assert.equal(row.interval.months, 2);
38-
assert.equal(row.interval.years, 3);
39-
});
40-
41-
assert.emits(query, 'end', function() {
42-
client.end();
43-
});
44-
}));
45-
});
1+
var helper = require('./test-helper');
2+
var Query = helper.pg.Query;
463

474
test("named prepared statement", function() {
485

@@ -52,12 +9,12 @@ test("named prepared statement", function() {
529
var queryName = "user by age and like name";
5310
var parseCount = 0;
5411

55-
test("first named prepared statement",function() {
56-
var query = client.query({
12+
test("first named prepared statement", function() {
13+
var query = client.query(new Query({
5714
text: 'select name from person where age <= $1 and name LIKE $2',
5815
values: [20, 'Bri%'],
5916
name: queryName
60-
});
17+
}));
6118

6219
assert.emits(query, 'row', function(row) {
6320
assert.equal(row.name, 'Brian');
@@ -68,11 +25,11 @@ test("named prepared statement", function() {
6825
});
6926

7027
test("second named prepared statement with same name & text", function() {
71-
var cachedQuery = client.query({
28+
var cachedQuery = client.query(new Query({
7229
text: 'select name from person where age <= $1 and name LIKE $2',
7330
name: queryName,
7431
values: [10, 'A%']
75-
});
32+
}));
7633

7734
assert.emits(cachedQuery, 'row', function(row) {
7835
assert.equal(row.name, 'Aaron');
@@ -82,28 +39,22 @@ test("named prepared statement", function() {
8239
});
8340
});
8441

85-
test("with same name, but the query text not even there batman!", function() {
86-
var q = client.query({
42+
test("with same name, but without query text", function() {
43+
var q = client.query(new Query({
8744
name: queryName,
8845
values: [30, '%n%']
89-
});
90-
91-
test("gets first row", function() {
92-
assert.emits(q, 'row', function(row) {
93-
assert.equal(row.name, "Aaron");
46+
}));
9447

95-
test("gets second row", function() {
96-
assert.emits(q, 'row', function(row) {
97-
assert.equal(row.name, "Brian");
98-
});
99-
});
48+
assert.emits(q, 'row', function(row) {
49+
assert.equal(row.name, "Aaron");
10050

51+
// test second row is emitted as well
52+
assert.emits(q, 'row', function(row) {
53+
assert.equal(row.name, "Brian");
10154
});
10255
});
10356

104-
assert.emits(q, 'end', function() {
105-
106-
});
57+
assert.emits(q, 'end', function() { });
10758
});
10859
});
10960

@@ -124,14 +75,9 @@ test("prepared statements on different clients", function() {
12475
var query = client1.query({
12576
name: statementName,
12677
text: statement1
127-
});
128-
test('gets right data back', function() {
129-
assert.emits(query, 'row', function(row) {
130-
assert.equal(row.count, 26);
131-
});
132-
});
133-
134-
assert.emits(query, 'end', function() {
78+
}, (err, res) => {
79+
assert(!err);
80+
assert.equal(res.rows[0].count, 26);
13581
if(client2Finished) {
13682
client1.end();
13783
client2.end();
@@ -143,11 +89,11 @@ test("prepared statements on different clients", function() {
14389
});
14490

14591
test('client 2 execution', function() {
146-
var query = client2.query({
92+
var query = client2.query(new Query({
14793
name: statementName,
14894
text: statement2,
14995
values: [11]
150-
});
96+
}));
15197

15298
test('gets right data', function() {
15399
assert.emits(query, 'row', function(row) {
@@ -192,22 +138,22 @@ test('prepared statement', function() {
192138
};
193139

194140
test('with small row count', function() {
195-
var query = client.query({
141+
var query = client.query(new Query({
196142
name: 'get names',
197143
text: "SELECT name FROM zoom ORDER BY name",
198144
rows: 1
199-
});
145+
}));
200146

201147
checkForResults(query);
202148

203149
})
204150

205151
test('with large row count', function() {
206-
var query = client.query({
152+
var query = client.query(new Query({
207153
name: 'get names',
208154
text: 'SELECT name FROM zoom ORDER BY name',
209155
rows: 1000
210-
})
156+
}))
211157
checkForResults(query);
212158
})
213159

test/integration/client/query-error-handling-prepared-statement-tests.js

+6-4
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
var helper = require(__dirname + '/test-helper');
1+
var helper = require('./test-helper');
2+
var Query = helper.pg.Query;
23
var util = require('util');
34

45
function killIdleQuery(targetQuery) {
@@ -39,7 +40,7 @@ test('query killed during query execution of prepared statement', function() {
3940
// client should emit an error because it is unexpectedly disconnected
4041
assert.emits(client, 'error')
4142

42-
var query1 = client.query(queryConfig, assert.calls(function(err, result) {
43+
var query1 = client.query(new Query(queryConfig), assert.calls(function(err, result) {
4344
assert.equal(err.message, 'terminating connection due to administrator command');
4445
}));
4546

@@ -63,13 +64,14 @@ test('client end during query execution of prepared statement', function() {
6364
var client = new Client(helper.args);
6465
client.connect(assert.success(function() {
6566
var sleepQuery = 'select pg_sleep($1)';
66-
var query1 = client.query({
67+
var query1 = client.query(new Query({
6768
name: 'sleep query',
6869
text: sleepQuery,
6970
values: [5] },
7071
assert.calls(function(err, result) {
7172
assert.equal(err.message, 'Connection terminated');
72-
}));
73+
})));
74+
7375

7476
query1.on('error', function(err) {
7577
assert.fail('Prepared statement should not emit error');

test/integration/client/query-error-handling-tests.js

+5-5
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,12 @@
11
var helper = require('./test-helper');
22
var util = require('util');
3-
const { Query } = helper.pg;
3+
var Query = helper.pg.Query;
44

55
test('error during query execution', function() {
66
var client = new Client(helper.args);
77
client.connect(assert.success(function() {
8-
var sleepQuery = new Query('select pg_sleep(5)');
8+
var queryText = 'select pg_sleep(5)'
9+
var sleepQuery = new Query(queryText);
910
var pidColName = 'procpid'
1011
var queryColName = 'current_query';
1112
helper.versionGTE(client, '9.2.0', assert.success(function(isGreater) {
@@ -26,9 +27,8 @@ test('error during query execution', function() {
2627
setTimeout(function() {
2728
var client2 = new Client(helper.args);
2829
client2.connect(assert.success(function() {
29-
var killIdleQuery = "SELECT " + pidColName + ", (SELECT pg_terminate_backend(" + pidColName + ")) AS killed FROM pg_stat_activity WHERE " + queryColName + " = $1";
30-
client2.query(killIdleQuery, [sleepQuery], assert.calls(function(err, res) {
31-
console.log('\nresult', res)
30+
var killIdleQuery = `SELECT ${pidColName}, (SELECT pg_cancel_backend(${pidColName})) AS killed FROM pg_stat_activity WHERE ${queryColName} LIKE $1`;
31+
client2.query(killIdleQuery, [queryText], assert.calls(function(err, res) {
3232
assert.ifError(err);
3333
assert.equal(res.rows.length, 1);
3434
client2.end();

0 commit comments

Comments
 (0)