node-postgres/test/integration/client/transaction-tests.js
2011-07-12 23:08:16 -05:00

75 lines
1.9 KiB
JavaScript

var helper = require(__dirname + '/test-helper');
test('a single connection transaction', function() {
var connectionString = helper.connectionString();
var sink = new helper.Sink(1, function() {
helper.pg.end();
});
helper.pg.connect(connectionString, assert.calls(function(err, client) {
assert.isNull(err);
client.query('begin');
var getZed = {
text: 'SELECT * FROM person WHERE name = $1',
values: ['Zed']
};
test('Zed should not exist in the database', function() {
client.query(getZed, assert.calls(function(err, result) {
assert.isNull(err);
assert.empty(result.rows);
}))
})
client.query("INSERT INTO person(name, age) VALUES($1, $2)", ['Zed', 270], assert.calls(function(err, result) {
assert.isNull(err)
}));
test('Zed should exist in the database', function() {
client.query(getZed, assert.calls(function(err, result) {
assert.isNull(err);
assert.equal(result.rows[0].name, 'Zed');
}))
})
client.query('rollback');
test('Zed should not exist in the database', function() {
client.query(getZed, assert.calls(function(err, result) {
assert.isNull(err);
assert.empty(result.rows);
sink.add();
}))
})
}))
})
test('gh#36', function() {
var connectionString = helper.connectionString();
helper.pg.connect(connectionString, function(err, client) {
if(err) throw err;
client.query("BEGIN");
client.query({
name: 'X',
text: "SELECT $1::INTEGER",
values: [0]
}, assert.calls(function(err, result) {
if(err) throw err;
assert.equal(result.rows.length, 1);
}))
client.query({
name: 'X',
text: "SELECT $1::INTEGER",
values: [0]
}, assert.calls(function(err, result) {
if(err) throw err;
assert.equal(result.rows.length, 1);
}))
client.query("COMMIT")
client.on('drain', client.end.bind(client))
})
})