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

Commit 734067ee by Sascha Depold

only run multiple transactions for pg and mysql

1 parent 1460d490
Showing with 74 additions and 36 deletions
...@@ -503,40 +503,77 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () { ...@@ -503,40 +503,77 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () {
}) })
}) })
it("correctly handles multiple transactions", function(done) { if (dialect === 'sqlite') {
var TransactionTest = this.sequelize.define('TransactionTest', { name: DataTypes.STRING }, { timestamps: false }) it("correctly scopes transaction from other connections", function(done) {
, self = this var TransactionTest = this.sequelize.define('TransactionTest', { name: DataTypes.STRING }, { timestamps: false })
, self = this
var count = function(transaction, callback) {
var sql = self.sequelize.getQueryInterface().QueryGenerator.selectQuery('TransactionTests', { attributes: [['count(*)', 'cnt']] }) var count = function(transaction, callback) {
var sql = self.sequelize.getQueryInterface().QueryGenerator.selectQuery('TransactionTests', { attributes: [['count(*)', 'cnt']] })
self
.sequelize self
.query(sql, null, { plain: true, raw: true, transaction: transaction }) .sequelize
.success(function(result) { callback(result.cnt) }) .query(sql, null, { plain: true, raw: true, transaction: transaction })
} .success(function(result) { callback(result.cnt) })
}
TransactionTest.sync({ force: true }).success(function() {
self.sequelize.transaction(function(t1) { TransactionTest.sync({ force: true }).success(function() {
self.sequelize.query('INSERT INTO ' + qq('TransactionTests') + ' (' + qq('name') + ') VALUES (\'foo\');', null, { plain: true, raw: true, transaction: t1 }).success(function() { self.sequelize.transaction(function(t1) {
self.sequelize.transaction(function(t2) { self.sequelize.query('INSERT INTO ' + qq('TransactionTests') + ' (' + qq('name') + ') VALUES (\'foo\');', null, { plain: true, raw: true, transaction: t1 }).success(function() {
self.sequelize.query('INSERT INTO ' + qq('TransactionTests') + ' (' + qq('name') + ') VALUES (\'bar\');', null, { plain: true, raw: true, transaction: t2 }).success(function() { count(null, function(cnt) {
count(null, function(cnt) { expect(cnt).to.equal(0)
expect(cnt).to.equal(0)
count(t1, function(cnt) {
count(t1, function(cnt) { expect(cnt).to.equal(1)
expect(cnt).to.equal(1)
t1.commit().success(function() {
count(t2, function(cnt) { count(null, function(cnt) {
expect(cnt).to.equal(1) expect(cnt).to.equal(1)
done()
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) })
})
} else {
it("correctly handles multiple transactions", function(done) {
var TransactionTest = this.sequelize.define('TransactionTest', { name: DataTypes.STRING }, { timestamps: false })
, self = this
var count = function(transaction, callback) {
var sql = self.sequelize.getQueryInterface().QueryGenerator.selectQuery('TransactionTests', { attributes: [['count(*)', 'cnt']] })
self
.sequelize
.query(sql, 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 ' + qq('TransactionTests') + ' (' + qq('name') + ') VALUES (\'foo\');', null, { plain: true, raw: true, transaction: t1 }).success(function() {
self.sequelize.transaction(function(t2) {
self.sequelize.query('INSERT INTO ' + qq('TransactionTests') + ' (' + qq('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)
})
}) })
}) })
}) })
...@@ -546,12 +583,13 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () { ...@@ -546,12 +583,13 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () {
}) })
}) })
}) })
}).done(function() {
done()
}) })
}).done(function() {
done()
}) })
}) })
}) }
}) })
}) })
}) })
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!