不要怂,就是干,撸起袖子干!

Commit 2efbe849 by Sascha Depold

the uber test for parallel transactions

1 parent 3334a1a4
Showing with 49 additions and 0 deletions
......@@ -523,6 +523,55 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () {
})
})
})
it("correctly handles multiple transactions", function(done) {
var TransactionTest = this.sequelize.define('TransactionTest', { name: DataTypes.STRING })
, self = this
, count = function(transaction, callback) {
self
.sequelize
.query('SELECT count(*) as cnt FROM `TransactionTests`', null, { plain: true, raw: true, transaction: transaction })
.success(function(result) {
callback(result.cnt)
})
}
TransactionTest.sync({ force: true }).success(function() {
self.sequelize.transaction(function(t1) {
self.sequelize.query('INSERT INTO `TransactionTests` (`name`) VALUES ("foo");', null, { plain: true, raw: true, transaction: t1 }).success(function() {
self.sequelize.transaction(function(t2) {
self.sequelize.query('INSERT INTO `TransactionTests` (`name`) VALUES ("bar");', null, { plain: true, raw: true, transaction: t2 }).success(function() {
count(null, function(cnt) {
expect(cnt).to.equal(0)
count(t1, function(cnt) {
expect(cnt).to.equal(1)
count(t2, function(cnt) {
expect(cnt).to.equal(1)
t2.rollback().success(function() {
count(t2, function(cnt) {
expect(cnt).to.equal(0)
t1.commit().success(function() {
count(null, function(cnt) {
expect(cnt).to.equal(1)
})
})
})
})
})
})
})
})
})
})
}).done(function() {
done()
})
})
})
})
})
})
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!