2014-10-20 10:53:08 +08:00
|
|
|
var async = require('async');
|
|
|
|
var helper = require('../test-helper');
|
|
|
|
|
|
|
|
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
|
|
|
|
]
|
|
|
|
|
2014-10-22 01:50:49 +08:00
|
|
|
test('test if query fails', function() {
|
|
|
|
async.series(steps, assert.success(function() {
|
|
|
|
db.end()
|
|
|
|
}))
|
|
|
|
})
|
|
|
|
|
|
|
|
test('test if prepare works but bind fails', function() {
|
|
|
|
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();
|
|
|
|
}));
|
|
|
|
}));
|
|
|
|
});
|
|
|
|
|