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

Commit 43e0e194 by Mick Hansen

fix a test

1 parent 54b3b371
...@@ -361,7 +361,7 @@ var QueryGenerator = { ...@@ -361,7 +361,7 @@ var QueryGenerator = {
}, },
startTransactionQuery: function(transaction, options) { startTransactionQuery: function(transaction, options) {
if (options.parent) { if (transaction.parent) {
return 'SAVEPOINT ' + this.quoteIdentifier(transaction.name) + ';'; return 'SAVEPOINT ' + this.quoteIdentifier(transaction.name) + ';';
} }
......
...@@ -880,9 +880,7 @@ QueryInterface.prototype.deferConstraints = function (transaction, options) { ...@@ -880,9 +880,7 @@ QueryInterface.prototype.deferConstraints = function (transaction, options) {
transaction: transaction.parent || transaction transaction: transaction.parent || transaction
}, options || {}); }, options || {});
var sql = this.QueryGenerator.deferConstraintsQuery({ var sql = this.QueryGenerator.deferConstraintsQuery(options);
parent: transaction.parent
});
if (sql) { if (sql) {
return this.sequelize.query(sql, options); return this.sequelize.query(sql, options);
......
...@@ -6,11 +6,20 @@ var chai = require('chai') ...@@ -6,11 +6,20 @@ var chai = require('chai')
, Support = require(__dirname + '/support') , Support = require(__dirname + '/support')
, Promise = require(__dirname + '/../../lib/promise') , Promise = require(__dirname + '/../../lib/promise')
, Transaction = require(__dirname + '/../../lib/transaction') , Transaction = require(__dirname + '/../../lib/transaction')
, sinon = require('sinon')
, current = Support.sequelize; , current = Support.sequelize;
if (current.dialect.supports.transactions) { if (current.dialect.supports.transactions) {
describe(Support.getTestDialectTeaser('Sequelize#transaction'), function() { describe(Support.getTestDialectTeaser('Sequelize#transaction'), function() {
beforeEach(function () {
this.sinon = sinon.sandbox.create();
});
afterEach(function () {
this.sinon.restore();
});
describe('then', function() { describe('then', function() {
it('gets triggered once a transaction has been successfully committed', function() { it('gets triggered once a transaction has been successfully committed', function() {
var called = false; var called = false;
......
...@@ -15,54 +15,54 @@ if (!Support.sequelize.dialect.supports.deferrableConstraints) { ...@@ -15,54 +15,54 @@ if (!Support.sequelize.dialect.supports.deferrableConstraints) {
} }
describe(Support.getTestDialectTeaser('Sequelize'), function() { describe(Support.getTestDialectTeaser('Sequelize'), function() {
beforeEach(function () { describe('Deferrable', function () {
this.run = function (deferrable, options) { beforeEach(function () {
options = options || {}; this.run = function (deferrable, options) {
options = options || {};
var taskTableName = options.taskTableName || 'tasks_' + config.rand(); var taskTableName = options.taskTableName || 'tasks_' + config.rand();
var transactionOptions = _.extend({ deferrable: Sequelize.Deferrable.SET_DEFERRED }, options); var transactionOptions = _.assign({}, { deferrable: Sequelize.Deferrable.SET_DEFERRED }, options);
var userTableName = 'users_' + config.rand(); var userTableName = 'users_' + config.rand();
var User = this.sequelize.define( var User = this.sequelize.define(
'User', { name: Sequelize.STRING }, { tableName: userTableName } 'User', { name: Sequelize.STRING }, { tableName: userTableName }
); );
var Task = this.sequelize.define( var Task = this.sequelize.define(
'Task', { 'Task', {
title: Sequelize.STRING, title: Sequelize.STRING,
user_id: { user_id: {
allowNull: false, allowNull: false,
type: Sequelize.INTEGER, type: Sequelize.INTEGER,
references: { references: {
model: userTableName, model: userTableName,
key: 'id', key: 'id',
deferrable: deferrable deferrable: deferrable
}
} }
}, {
tableName: taskTableName
} }
}, { );
tableName: taskTableName
}
);
return User.sync({ force: true }).bind(this).then(function () { return User.sync({ force: true }).bind(this).then(function () {
return Task.sync({ force: true }); return Task.sync({ force: true });
}).then(function () { }).then(function () {
return this.sequelize.transaction(transactionOptions, function (t) { return this.sequelize.transaction(transactionOptions, function (t) {
return Task return Task
.create({ title: 'a task', user_id: -1 }, { transaction: t }) .create({ title: 'a task', user_id: -1 }, { transaction: t })
.then(function (task) { .then(function (task) {
return [task, User.create({}, { transaction: t })]; return [task, User.create({}, { transaction: t })];
}) })
.spread(function (task, user) { .spread(function (task, user) {
task.user_id = user.id; task.user_id = user.id;
return task.save({ transaction: t }); return task.save({ transaction: t });
}); });
});
}); });
}); };
}; });
});
describe('Deferrable', function () {
describe('NOT', function () { describe('NOT', function () {
it('does not allow the violation of the foreign key constraint', function () { it('does not allow the violation of the foreign key constraint', function () {
return expect(this.run(Sequelize.Deferrable.NOT)).to.eventually.be.rejectedWith(Sequelize.ForeignKeyConstraintError); return expect(this.run(Sequelize.Deferrable.NOT)).to.eventually.be.rejectedWith(Sequelize.ForeignKeyConstraintError);
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!