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

Commit 8023222f by Mick Hansen

conver tests to promises

1 parent 8a9f3626
...@@ -30,7 +30,7 @@ describe(Support.getTestDialectTeaser('BelongsTo'), function() { ...@@ -30,7 +30,7 @@ describe(Support.getTestDialectTeaser('BelongsTo'), function() {
if (current.dialect.supports.transactions) { if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize).then(function (sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
, Group = sequelize.define('Group', { name: Support.Sequelize.STRING }); , Group = sequelize.define('Group', { name: Support.Sequelize.STRING });
...@@ -151,7 +151,7 @@ describe(Support.getTestDialectTeaser('BelongsTo'), function() { ...@@ -151,7 +151,7 @@ describe(Support.getTestDialectTeaser('BelongsTo'), function() {
if (current.dialect.supports.transactions) { if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize).then(function (sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
, Group = sequelize.define('Group', { name: Support.Sequelize.STRING }); , Group = sequelize.define('Group', { name: Support.Sequelize.STRING });
...@@ -342,7 +342,7 @@ describe(Support.getTestDialectTeaser('BelongsTo'), function() { ...@@ -342,7 +342,7 @@ describe(Support.getTestDialectTeaser('BelongsTo'), function() {
if (current.dialect.supports.transactions) { if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
return Support.prepareTransactionTest(this.sequelize, function(sequelize) { return Support.prepareTransactionTest(this.sequelize).then(function (sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
, Group = sequelize.define('Group', { name: Support.Sequelize.STRING }); , Group = sequelize.define('Group', { name: Support.Sequelize.STRING });
......
...@@ -25,28 +25,28 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -25,28 +25,28 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
describe('getAssocation', function() { describe('getAssocation', function() {
if (current.dialect.supports.transactions) { if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function() {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { return Support.prepareTransactionTest(this.sequelize).then(function (sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
, Group = sequelize.define('Group', { name: Support.Sequelize.STRING }); , Group = sequelize.define('Group', { name: Support.Sequelize.STRING });
Group.hasOne(User); Group.hasOne(User);
sequelize.sync({ force: true }).success(function() { return sequelize.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(fakeUser) { return User.create({ username: 'foo' }).then(function(fakeUser) {
User.create({ username: 'foo' }).success(function(user) { return User.create({ username: 'foo' }).then(function(user) {
Group.create({ name: 'bar' }).success(function(group) { return Group.create({ name: 'bar' }).then(function(group) {
sequelize.transaction().then(function(t) { return sequelize.transaction().then(function(t) {
group.setUser(user, { transaction: t }).success(function() { return group.setUser(user, { transaction: t }).then(function() {
Group.all().success(function(groups) { return Group.all().then(function(groups) {
groups[0].getUser().success(function(associatedUser) { return groups[0].getUser().then(function(associatedUser) {
expect(associatedUser).to.be.null; expect(associatedUser).to.be.null;
Group.all({ transaction: t }).success(function(groups) { return Group.all({ transaction: t }).then(function(groups) {
groups[0].getUser({ transaction: t }).success(function(associatedUser) { return groups[0].getUser({ transaction: t }).then(function(associatedUser) {
expect(associatedUser).not.to.be.null; expect(associatedUser).not.to.be.null;
expect(associatedUser.id).to.equal(user.id); expect(associatedUser.id).to.equal(user.id);
expect(associatedUser.id).not.to.equal(fakeUser.id); expect(associatedUser.id).not.to.equal(fakeUser.id);
t.rollback().success(function() { done(); }); return t.rollback();
}); });
}); });
}); });
...@@ -78,19 +78,19 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -78,19 +78,19 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
}); });
it('should be able to handle a where object that\'s a first class citizen.', function(done) { it('should be able to handle a where object that\'s a first class citizen.', function() {
var User = this.sequelize.define('UserXYZ', { username: Sequelize.STRING }) var User = this.sequelize.define('UserXYZ', { username: Sequelize.STRING })
, Task = this.sequelize.define('TaskXYZ', { title: Sequelize.STRING, status: Sequelize.STRING }); , Task = this.sequelize.define('TaskXYZ', { title: Sequelize.STRING, status: Sequelize.STRING });
User.hasOne(Task); User.hasOne(Task);
User.sync({ force: true }).success(function() {
Task.sync({ force: true }).success(function() { return User.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(user) { return Task.sync({ force: true }).then(function() {
Task.create({ title: 'task', status: 'inactive' }).success(function(task) { return User.create({ username: 'foo' }).then(function(user) {
user.setTaskXYZ(task).success(function() { return Task.create({ title: 'task', status: 'inactive' }).then(function(task) {
user.getTaskXYZ({where: ['status = ?', 'active']}).success(function(task) { return user.setTaskXYZ(task).then(function() {
return user.getTaskXYZ({where: ['status = ?', 'active']}).then(function(task) {
expect(task).to.be.null; expect(task).to.be.null;
done();
}); });
}); });
}); });
...@@ -102,30 +102,25 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -102,30 +102,25 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
describe('setAssociation', function() { describe('setAssociation', function() {
if (current.dialect.supports.transactions) { if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function() {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { return Support.prepareTransactionTest(this.sequelize).then(function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
, Group = sequelize.define('Group', { name: Support.Sequelize.STRING }); , Group = sequelize.define('Group', { name: Support.Sequelize.STRING });
Group.hasOne(User); Group.hasOne(User);
sequelize.sync({ force: true }).success(function() { return sequelize.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(user) { return User.create({ username: 'foo' }).then(function(user) {
Group.create({ name: 'bar' }).success(function(group) { return Group.create({ name: 'bar' }).then(function(group) {
sequelize.transaction().then(function(t) { return sequelize.transaction().then(function(t) {
group return group.setUser(user, { transaction: t }).then(function() {
.setUser(user, { transaction: t }) return Group.all().then(function(groups) {
.success(function() { return groups[0].getUser().then(function(associatedUser) {
Group.all().success(function(groups) { expect(associatedUser).to.be.null;
groups[0].getUser().success(function(associatedUser) { return t.rollback();
expect(associatedUser).to.be.null;
t.rollback().success(function() { done(); });
});
}); });
})
.on('sql', function(sql, uuid) {
expect(uuid).to.not.equal('default');
}); });
});
}); });
}); });
}); });
...@@ -134,24 +129,23 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -134,24 +129,23 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
} }
it('can set an association with predefined primary keys', function(done) { it('can set an association with predefined primary keys', function() {
var User = this.sequelize.define('UserXYZZ', { userCoolIdTag: { type: Sequelize.INTEGER, primaryKey: true }, username: Sequelize.STRING }) var User = this.sequelize.define('UserXYZZ', { userCoolIdTag: { type: Sequelize.INTEGER, primaryKey: true }, username: Sequelize.STRING })
, Task = this.sequelize.define('TaskXYZZ', { taskOrSomething: { type: Sequelize.INTEGER, primaryKey: true }, title: Sequelize.STRING }); , Task = this.sequelize.define('TaskXYZZ', { taskOrSomething: { type: Sequelize.INTEGER, primaryKey: true }, title: Sequelize.STRING });
User.hasOne(Task, {foreignKey: 'userCoolIdTag'}); User.hasOne(Task, {foreignKey: 'userCoolIdTag'});
User.sync({ force: true }).success(function() { return User.sync({ force: true }).then(function() {
Task.sync({ force: true }).success(function() { return Task.sync({ force: true }).then(function() {
User.create({userCoolIdTag: 1, username: 'foo'}).success(function(user) { return User.create({userCoolIdTag: 1, username: 'foo'}).then(function(user) {
Task.create({taskOrSomething: 1, title: 'bar'}).success(function(task) { return Task.create({taskOrSomething: 1, title: 'bar'}).then(function(task) {
user.setTaskXYZZ(task).success(function() { return user.setTaskXYZZ(task).then(function() {
user.getTaskXYZZ().success(function(task) { return user.getTaskXYZZ().then(function(task) {
expect(task).not.to.be.null; expect(task).not.to.be.null;
user.setTaskXYZZ(null).success(function() { return user.setTaskXYZZ(null).then(function() {
user.getTaskXYZZ().success(function(_task) { return user.getTaskXYZZ().then(function(_task) {
expect(_task).to.be.null; expect(_task).to.be.null;
done();
}); });
}); });
}); });
...@@ -162,27 +156,25 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -162,27 +156,25 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
}); });
it('clears the association if null is passed', function(done) { it('clears the association if null is passed', function() {
var User = this.sequelize.define('UserXYZ', { username: Sequelize.STRING }) var User = this.sequelize.define('UserXYZ', { username: Sequelize.STRING })
, Task = this.sequelize.define('TaskXYZ', { title: Sequelize.STRING }); , Task = this.sequelize.define('TaskXYZ', { title: Sequelize.STRING });
User.hasOne(Task); User.hasOne(Task);
User.sync({ force: true }).success(function() { return User.sync({ force: true }).then(function() {
Task.sync({ force: true }).success(function() { return Task.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(user) { return User.create({ username: 'foo' }).then(function(user) {
Task.create({ title: 'task' }).success(function(task) { return Task.create({ title: 'task' }).then(function(task) {
user.setTaskXYZ(task).success(function() { return user.setTaskXYZ(task).then(function() {
user.getTaskXYZ().success(function(task) { return user.getTaskXYZ().then(function(task) {
expect(task).not.to.equal(null); expect(task).not.to.equal(null);
user.setTaskXYZ(null).success(function() { return user.setTaskXYZ(null).then(function() {
user.getTaskXYZ().success(function(task) { return user.getTaskXYZ().then(function(task) {
expect(task).to.equal(null); expect(task).to.equal(null);
done();
}); });
}); });
}); });
}); });
}); });
...@@ -212,20 +204,18 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -212,20 +204,18 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
describe('createAssociation', function() { describe('createAssociation', function() {
it('creates an associated model instance', function(done) { it('creates an associated model instance', function() {
var User = this.sequelize.define('User', { username: Sequelize.STRING }) var User = this.sequelize.define('User', { username: Sequelize.STRING })
, Task = this.sequelize.define('Task', { title: Sequelize.STRING }); , Task = this.sequelize.define('Task', { title: Sequelize.STRING });
User.hasOne(Task); User.hasOne(Task);
this.sequelize.sync({ force: true }).success(function() { return this.sequelize.sync({ force: true }).then(function() {
User.create({ username: 'bob' }).success(function(user) { return User.create({ username: 'bob' }).then(function(user) {
user.createTask({ title: 'task' }).success(function() { return user.createTask({ title: 'task' }).then(function() {
user.getTask().success(function(task) { return user.getTask().then(function(task) {
expect(task).not.to.be.null; expect(task).not.to.be.null;
expect(task.title).to.equal('task'); expect(task.title).to.equal('task');
done();
}); });
}); });
}); });
...@@ -233,24 +223,24 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -233,24 +223,24 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
if (current.dialect.supports.transactions) { if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function() {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { return Support.prepareTransactionTest(this.sequelize).then(function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
, Group = sequelize.define('Group', { name: Sequelize.STRING }); , Group = sequelize.define('Group', { name: Sequelize.STRING });
User.hasOne(Group); User.hasOne(Group);
sequelize.sync({ force: true }).success(function() { return sequelize.sync({ force: true }).then(function() {
User.create({ username: 'bob' }).success(function(user) { return User.create({ username: 'bob' }).then(function(user) {
sequelize.transaction().then(function(t) { return sequelize.transaction().then(function(t) {
user.createGroup({ name: 'testgroup' }, { transaction: t }).success(function() { return user.createGroup({ name: 'testgroup' }, { transaction: t }).then(function() {
User.all().success(function(users) { return User.all().then(function(users) {
users[0].getGroup().success(function(group) { return users[0].getGroup().then(function(group) {
expect(group).to.be.null; expect(group).to.be.null;
User.all({ transaction: t }).success(function(users) { return User.all({ transaction: t }).then(function(users) {
users[0].getGroup({ transaction: t }).success(function(group) { return users[0].getGroup({ transaction: t }).then(function(group) {
expect(group).to.be.not.null; expect(group).to.be.not.null;
t.rollback().success(function() { done(); }); return t.rollback();
}); });
}); });
}); });
...@@ -324,21 +314,20 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -324,21 +314,20 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
describe('foreign key constraints', function() { describe('foreign key constraints', function() {
it('are enabled by default', function(done) { it('are enabled by default', function() {
var Task = this.sequelize.define('Task', { title: Sequelize.STRING }) var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING }); , User = this.sequelize.define('User', { username: Sequelize.STRING });
User.hasOne(Task); // defaults to set NULL User.hasOne(Task); // defaults to set NULL
User.sync({ force: true }).success(function() { return User.sync({ force: true }).then(function() {
Task.sync({ force: true }).success(function() { return Task.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(user) { return User.create({ username: 'foo' }).then(function(user) {
Task.create({ title: 'task' }).success(function(task) { return Task.create({ title: 'task' }).then(function(task) {
user.setTask(task).success(function() { return user.setTask(task).then(function() {
user.destroy().success(function() { return user.destroy().then(function() {
task.reload().success(function() { return task.reload().then(function() {
expect(task.UserId).to.equal(null); expect(task.UserId).to.equal(null);
done();
}); });
}); });
}); });
...@@ -348,21 +337,20 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -348,21 +337,20 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
}); });
it('should be possible to disable them', function(done) { it('should be possible to disable them', function() {
var Task = this.sequelize.define('Task', { title: Sequelize.STRING }) var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING }); , User = this.sequelize.define('User', { username: Sequelize.STRING });
User.hasOne(Task, { constraints: false }); User.hasOne(Task, { constraints: false });
User.sync({ force: true }).success(function() { return User.sync({ force: true }).then(function() {
Task.sync({ force: true }).success(function() { return Task.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(user) { return User.create({ username: 'foo' }).then(function(user) {
Task.create({ title: 'task' }).success(function(task) { return Task.create({ title: 'task' }).then(function(task) {
user.setTask(task).success(function() { return user.setTask(task).then(function() {
user.destroy().success(function() { return user.destroy().then(function() {
task.reload().success(function() { return task.reload().then(function() {
expect(task.UserId).to.equal(user.id); expect(task.UserId).to.equal(user.id);
done();
}); });
}); });
}); });
...@@ -372,21 +360,20 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -372,21 +360,20 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
}); });
it('can cascade deletes', function(done) { it('can cascade deletes', function() {
var Task = this.sequelize.define('Task', { title: Sequelize.STRING }) var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING }); , User = this.sequelize.define('User', { username: Sequelize.STRING });
User.hasOne(Task, {onDelete: 'cascade'}); User.hasOne(Task, {onDelete: 'cascade'});
User.sync({ force: true }).success(function() { return User.sync({ force: true }).then(function() {
Task.sync({ force: true }).success(function() { return Task.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(user) { return User.create({ username: 'foo' }).then(function(user) {
Task.create({ title: 'task' }).success(function(task) { return Task.create({ title: 'task' }).then(function(task) {
user.setTask(task).success(function() { return user.setTask(task).then(function() {
user.destroy().success(function() { return user.destroy().then(function() {
Task.findAll().success(function(tasks) { return Task.findAll().then(function(tasks) {
expect(tasks).to.have.length(0); expect(tasks).to.have.length(0);
done();
}); });
}); });
}); });
...@@ -398,29 +385,27 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -398,29 +385,27 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
// NOTE: mssql does not support changing an autoincrement primary key // NOTE: mssql does not support changing an autoincrement primary key
if (Support.getTestDialect() !== 'mssql') { if (Support.getTestDialect() !== 'mssql') {
it('can cascade updates', function(done) { it('can cascade updates', function() {
var Task = this.sequelize.define('Task', { title: Sequelize.STRING }) var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING }); , User = this.sequelize.define('User', { username: Sequelize.STRING });
User.hasOne(Task, {onUpdate: 'cascade'}); User.hasOne(Task, {onUpdate: 'cascade'});
User.sync({ force: true }).success(function() { return User.sync({ force: true }).then(function() {
Task.sync({ force: true }).success(function() { return Task.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(user) { return User.create({ username: 'foo' }).then(function(user) {
Task.create({ title: 'task' }).success(function(task) { return Task.create({ title: 'task' }).then(function(task) {
user.setTask(task).success(function() { return user.setTask(task).then(function() {
// Changing the id of a DAO requires a little dance since // Changing the id of a DAO requires a little dance since
// the `UPDATE` query generated by `save()` uses `id` in the // the `UPDATE` query generated by `save()` uses `id` in the
// `WHERE` clause // `WHERE` clause
var tableName = user.QueryInterface.QueryGenerator.addSchema(user.Model); var tableName = user.QueryInterface.QueryGenerator.addSchema(user.Model);
user.QueryInterface.update(user, tableName, {id: 999}, user.id) return user.QueryInterface.update(user, tableName, {id: 999}, user.id).then(function() {
.success(function() { return Task.findAll().then(function(tasks) {
Task.findAll().success(function(tasks) {
expect(tasks).to.have.length(1); expect(tasks).to.have.length(1);
expect(tasks[0].UserId).to.equal(999); expect(tasks[0].UserId).to.equal(999);
done();
}); });
}); });
}); });
...@@ -433,23 +418,21 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -433,23 +418,21 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
if (current.dialect.supports.constraints.restrict) { if (current.dialect.supports.constraints.restrict) {
it('can restrict deletes', function(done) { it('can restrict deletes', function() {
var self = this; var self = this;
var Task = this.sequelize.define('Task', { title: Sequelize.STRING }) var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING }); , User = this.sequelize.define('User', { username: Sequelize.STRING });
User.hasOne(Task, {onDelete: 'restrict'}); User.hasOne(Task, {onDelete: 'restrict'});
User.sync({ force: true }).success(function() { return User.sync({ force: true }).then(function() {
Task.sync({ force: true }).success(function() { return Task.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(user) { return User.create({ username: 'foo' }).then(function(user) {
Task.create({ title: 'task' }).success(function(task) { return Task.create({ title: 'task' }).then(function(task) {
user.setTask(task).success(function() { return user.setTask(task).then(function() {
user.destroy().catch (self.sequelize.ForeignKeyConstraintError, function() { return expect(user.destroy()).to.eventually.be.rejectedWith(Sequelize.ForeignKeyConstraintError).then(function () {
// Should fail due to FK restriction return Task.findAll().then(function(tasks) {
Task.findAll().success(function(tasks) {
expect(tasks).to.have.length(1); expect(tasks).to.have.length(1);
done();
}); });
}); });
}); });
...@@ -459,30 +442,30 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -459,30 +442,30 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
}); });
it('can restrict updates', function(done) { it('can restrict updates', function() {
var self = this; var self = this;
var Task = this.sequelize.define('Task', { title: Sequelize.STRING }) var Task = this.sequelize.define('Task', { title: Sequelize.STRING })
, User = this.sequelize.define('User', { username: Sequelize.STRING }); , User = this.sequelize.define('User', { username: Sequelize.STRING });
User.hasOne(Task, {onUpdate: 'restrict'}); User.hasOne(Task, {onUpdate: 'restrict'});
User.sync({ force: true }).success(function() { return User.sync({ force: true }).then(function() {
Task.sync({ force: true }).success(function() { return Task.sync({ force: true }).then(function() {
User.create({ username: 'foo' }).success(function(user) { return User.create({ username: 'foo' }).then(function(user) {
Task.create({ title: 'task' }).success(function(task) { return Task.create({ title: 'task' }).then(function(task) {
user.setTask(task).success(function() { return user.setTask(task).then(function() {
// Changing the id of a DAO requires a little dance since // Changing the id of a DAO requires a little dance since
// the `UPDATE` query generated by `save()` uses `id` in the // the `UPDATE` query generated by `save()` uses `id` in the
// `WHERE` clause // `WHERE` clause
var tableName = user.QueryInterface.QueryGenerator.addSchema(user.Model); var tableName = user.QueryInterface.QueryGenerator.addSchema(user.Model);
user.QueryInterface.update(user, tableName, {id: 999}, user.id) return expect(
.catch (self.sequelize.ForeignKeyConstraintError, function() { user.QueryInterface.update(user, tableName, {id: 999}, user.id)
).to.eventually.be.rejectedWith(Sequelize.ForeignKeyConstraintError).then(function () {
// Should fail due to FK restriction // Should fail due to FK restriction
Task.findAll().success(function(tasks) { return Task.findAll().then(function(tasks) {
expect(tasks).to.have.length(1); expect(tasks).to.have.length(1);
done();
}); });
}); });
}); });
...@@ -521,25 +504,20 @@ describe(Support.getTestDialectTeaser('HasOne'), function() { ...@@ -521,25 +504,20 @@ describe(Support.getTestDialectTeaser('HasOne'), function() {
}); });
describe('Association options', function() { describe('Association options', function() {
it('can specify data type for autogenerated relational keys', function(done) { it('can specify data type for autogenerated relational keys', function() {
var User = this.sequelize.define('UserXYZ', { username: Sequelize.STRING }) var User = this.sequelize.define('UserXYZ', { username: Sequelize.STRING })
, dataTypes = [Sequelize.INTEGER, Sequelize.BIGINT, Sequelize.STRING] , dataTypes = [Sequelize.INTEGER, Sequelize.BIGINT, Sequelize.STRING]
, self = this , self = this
, Tasks = {}; , Tasks = {};
dataTypes.forEach(function(dataType) { return Promise.map(dataTypes, function(dataType) {
var tableName = 'TaskXYZ_' + dataType.key; var tableName = 'TaskXYZ_' + dataType.key;
Tasks[dataType] = self.sequelize.define(tableName, { title: Sequelize.STRING }); Tasks[dataType] = self.sequelize.define(tableName, { title: Sequelize.STRING });
User.hasOne(Tasks[dataType], { foreignKey: 'userId', keyType: dataType, constraints: false }); User.hasOne(Tasks[dataType], { foreignKey: 'userId', keyType: dataType, constraints: false });
Tasks[dataType].sync({ force: true }).success(function() { return Tasks[dataType].sync({ force: true }).then(function() {
expect(Tasks[dataType].rawAttributes.userId.type).to.be.an.instanceof(dataType); expect(Tasks[dataType].rawAttributes.userId.type).to.be.an.instanceof(dataType);
dataTypes.splice(dataTypes.indexOf(dataType), 1);
if (!dataTypes.length) {
done();
}
}); });
}); });
}); });
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!