-
-
Notifications
You must be signed in to change notification settings - Fork 1.3k
/
Copy path600-tests.js
80 lines (70 loc) · 1.75 KB
/
600-tests.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
'use strict'
var async = require('async')
var helper = require('../test-helper')
const suite = new helper.Suite()
var db = helper.client()
function createTableFoo (callback) {
db.query('create temp table foo(column1 int, column2 int)', callback)
}
function createTableBar (callback) {
db.query('create temp table bar(column1 text, column2 text)', callback)
}
function insertDataFoo (callback) {
db.query({
name: 'insertFoo',
text: 'insert into foo values($1,$2)',
values: ['one', 'two']
}, callback)
}
function insertDataBar (callback) {
db.query({
name: 'insertBar',
text: 'insert into bar values($1,$2)',
values: ['one', 'two']
}, callback)
}
function startTransaction (callback) {
db.query('BEGIN', callback)
}
function endTransaction (callback) {
db.query('COMMIT', callback)
}
function doTransaction (callback) {
// The transaction runs startTransaction, then all queries, then endTransaction,
// no matter if there has been an error in a query in the middle.
startTransaction(function () {
insertDataFoo(function () {
insertDataBar(function () {
endTransaction(callback)
})
})
})
}
var steps = [
createTableFoo,
createTableBar,
doTransaction,
insertDataBar
]
suite.test('test if query fails', function (done) {
async.series(steps, assert.success(function () {
db.end()
done()
}))
})
suite.test('test if prepare works but bind fails', function (done) {
var client = helper.client()
var q = {
text: 'SELECT $1::int as name',
values: ['brian'],
name: 'test'
}
client.query(q, assert.calls(function (err, res) {
q.values = [1]
client.query(q, assert.calls(function (err, res) {
assert.ifError(err)
client.end()
done()
}))
}))
})