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

Commit 0f4a7b42 by Mick Hansen

Merge branch 'master' of github.com:sequelize/sequelize

2 parents d0453674 38d1887b
...@@ -32,6 +32,7 @@ AbstractDialect.prototype.supports = { ...@@ -32,6 +32,7 @@ AbstractDialect.prototype.supports = {
/* What is the dialect's keyword for INSERT IGNORE */ /* What is the dialect's keyword for INSERT IGNORE */
'IGNORE': '', 'IGNORE': '',
schemas: false, schemas: false,
transactions: true,
constraints: { constraints: {
restrict: true restrict: true
}, },
......
...@@ -25,6 +25,8 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() { ...@@ -25,6 +25,8 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() {
}) })
describe('getAssociation', function() { describe('getAssociation', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
...@@ -57,6 +59,7 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() { ...@@ -57,6 +59,7 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() {
}) })
}) })
}) })
}
it('does not modify the passed arguments', function () { it('does not modify the passed arguments', function () {
var User = this.sequelize.define('user', {}) var User = this.sequelize.define('user', {})
...@@ -126,6 +129,8 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() { ...@@ -126,6 +129,8 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() {
}) })
describe('setAssociation', function() { describe('setAssociation', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
...@@ -151,6 +156,7 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() { ...@@ -151,6 +156,7 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() {
}) })
}) })
}) })
}
it('can set the association with declared primary keys...', function(done) { it('can set the association with declared primary keys...', function(done) {
var User = this.sequelize.define('UserXYZ', { user_id: {type: DataTypes.INTEGER, primaryKey: true }, username: DataTypes.STRING }) var User = this.sequelize.define('UserXYZ', { user_id: {type: DataTypes.INTEGER, primaryKey: true }, username: DataTypes.STRING })
...@@ -277,6 +283,7 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() { ...@@ -277,6 +283,7 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() {
}) })
}) })
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
...@@ -303,6 +310,7 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() { ...@@ -303,6 +310,7 @@ describe(Support.getTestDialectTeaser("BelongsTo"), function() {
}) })
}) })
}) })
}
}) })
describe("foreign key", function () { describe("foreign key", function () {
......
...@@ -50,6 +50,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -50,6 +50,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
expect(Object.keys(this.Label.rawAttributes).length).to.equal(3); expect(Object.keys(this.Label.rawAttributes).length).to.equal(3);
}); });
if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
var Article, Label, sequelize, article, label, t; var Article, Label, sequelize, article, label, t;
return Support.prepareTransactionTest(this.sequelize).then(function(_sequelize) { return Support.prepareTransactionTest(this.sequelize).then(function(_sequelize) {
...@@ -87,6 +88,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -87,6 +88,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
}); });
}); });
}); });
}
it('does not have any labels assigned to it initially', function() { it('does not have any labels assigned to it initially', function() {
return Promise.all([ return Promise.all([
...@@ -155,6 +157,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -155,6 +157,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
return this.sequelize.sync({ force: true }); return this.sequelize.sync({ force: true });
}); });
if (current.dialect.supports.transactions) {
it('supports transactions', function () { it('supports transactions', function () {
return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) { return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) {
this.sequelize = sequelize; this.sequelize = sequelize;
...@@ -190,6 +193,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -190,6 +193,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
return this.t.rollback(); return this.t.rollback();
}); });
}); });
}
it('answers false if only some labels have been assigned', function() { it('answers false if only some labels have been assigned', function() {
return Promise.all([ return Promise.all([
...@@ -249,6 +253,8 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -249,6 +253,8 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
}); });
describe('setAssociations', function() { describe('setAssociations', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) { return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) {
this.Article = sequelize.define('Article', { 'title': DataTypes.STRING }); this.Article = sequelize.define('Article', { 'title': DataTypes.STRING });
...@@ -279,6 +285,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -279,6 +285,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
return this.t.rollback(); return this.t.rollback();
}); });
}); });
}
it("clears associations when passing null to the set-method", function() { it("clears associations when passing null to the set-method", function() {
var User = this.sequelize.define('User', { username: DataTypes.STRING }) var User = this.sequelize.define('User', { username: DataTypes.STRING })
...@@ -366,6 +373,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -366,6 +373,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
}); });
describe('addAssociations', function() { describe('addAssociations', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) { return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) {
this.Article = sequelize.define('Article', { 'title': DataTypes.STRING }); this.Article = sequelize.define('Article', { 'title': DataTypes.STRING });
...@@ -397,6 +405,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -397,6 +405,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
return this.t.rollback(); return this.t.rollback();
}); });
}); });
}
it('supports passing the primary key instead of an object', function () { it('supports passing the primary key instead of an object', function () {
var Article = this.sequelize.define('Article', { 'title': DataTypes.STRING }) var Article = this.sequelize.define('Article', { 'title': DataTypes.STRING })
...@@ -521,6 +530,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -521,6 +530,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
}); });
}); });
if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) { return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) {
this.sequelize = sequelize; this.sequelize = sequelize;
...@@ -551,6 +561,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -551,6 +561,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
return this.t.rollback(); return this.t.rollback();
}); });
}); });
}
it('supports passing the field option', function () { it('supports passing the field option', function () {
var Article = this.sequelize.define('Article', { var Article = this.sequelize.define('Article', {
...@@ -774,6 +785,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -774,6 +785,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
}); });
}); });
if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) { return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) {
this.sequelize = sequelize; this.sequelize = sequelize;
...@@ -807,6 +819,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -807,6 +819,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
return this.t.rollback(); return this.t.rollback();
}); });
}); });
}
it('gets all associated objects with all fields', function() { it('gets all associated objects with all fields', function() {
return this.User.find({where: {username: 'John'}}).then(function (john) { return this.User.find({where: {username: 'John'}}).then(function (john) {
...@@ -1095,6 +1108,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -1095,6 +1108,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
}); });
}); });
if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) { return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) {
this.User = sequelize.define('User', { username: DataTypes.STRING }); this.User = sequelize.define('User', { username: DataTypes.STRING });
...@@ -1125,6 +1139,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -1125,6 +1139,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
return this.t.rollback(); return this.t.rollback();
}); });
}); });
}
it('supports setting through table attributes', function () { it('supports setting through table attributes', function () {
var User = this.sequelize.define('user', {}) var User = this.sequelize.define('user', {})
...@@ -1207,6 +1222,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -1207,6 +1222,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
}); });
}); });
if (current.dialect.supports.transactions) {
it('supports transactions', function() { it('supports transactions', function() {
return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) { return Support.prepareTransactionTest(this.sequelize).bind({}).then(function(sequelize) {
this.User = sequelize.define('User', { username: DataTypes.STRING }); this.User = sequelize.define('User', { username: DataTypes.STRING });
...@@ -1277,7 +1293,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() { ...@@ -1277,7 +1293,7 @@ describe(Support.getTestDialectTeaser("HasMany"), function() {
return this.t.rollback(); return this.t.rollback();
}); });
}); });
}
it('supports passing the primary key instead of an object', function () { it('supports passing the primary key instead of an object', function () {
var User = this.sequelize.define('User', { username: DataTypes.STRING }) var User = this.sequelize.define('User', { username: DataTypes.STRING })
......
...@@ -23,6 +23,7 @@ describe(Support.getTestDialectTeaser("HasOne"), function() { ...@@ -23,6 +23,7 @@ describe(Support.getTestDialectTeaser("HasOne"), function() {
}) })
describe('getAssocation', function() { describe('getAssocation', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
...@@ -57,6 +58,7 @@ describe(Support.getTestDialectTeaser("HasOne"), function() { ...@@ -57,6 +58,7 @@ describe(Support.getTestDialectTeaser("HasOne"), function() {
}) })
}) })
}) })
}
it('does not modify the passed arguments', function () { it('does not modify the passed arguments', function () {
var User = this.sequelize.define('user', {}) var User = this.sequelize.define('user', {})
...@@ -98,6 +100,7 @@ describe(Support.getTestDialectTeaser("HasOne"), function() { ...@@ -98,6 +100,7 @@ describe(Support.getTestDialectTeaser("HasOne"), function() {
}) })
describe('setAssociation', function() { describe('setAssociation', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
...@@ -128,6 +131,7 @@ describe(Support.getTestDialectTeaser("HasOne"), function() { ...@@ -128,6 +131,7 @@ 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(done) {
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 })
...@@ -227,6 +231,7 @@ describe(Support.getTestDialectTeaser("HasOne"), function() { ...@@ -227,6 +231,7 @@ describe(Support.getTestDialectTeaser("HasOne"), function() {
}) })
}) })
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
...@@ -255,6 +260,8 @@ describe(Support.getTestDialectTeaser("HasOne"), function() { ...@@ -255,6 +260,8 @@ describe(Support.getTestDialectTeaser("HasOne"), function() {
}) })
}) })
}) })
}
}) })
describe('foreign key', function () { describe('foreign key', function () {
......
...@@ -12,6 +12,8 @@ var chai = require('chai') ...@@ -12,6 +12,8 @@ var chai = require('chai')
, _ = require('lodash') , _ = require('lodash')
, moment = require('moment') , moment = require('moment')
, async = require('async') , async = require('async')
, current = Support.sequelize;
chai.use(datetime) chai.use(datetime)
chai.config.includeStack = true chai.config.includeStack = true
...@@ -700,6 +702,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -700,6 +702,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
describe('find', function() { describe('find', function() {
if (current.dialect.supports.transactions) {
it('supports the transaction option in the first parameter', function(done) { it('supports the transaction option in the first parameter', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING, foo: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING, foo: Sequelize.STRING })
...@@ -716,6 +719,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -716,6 +719,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it('should not fail if model is paranoid and where is an empty array', function(done) { it('should not fail if model is paranoid and where is an empty array', function(done) {
var User = this.sequelize.define('User', { username: Sequelize.STRING }, { paranoid: true }) var User = this.sequelize.define('User', { username: Sequelize.STRING }, { paranoid: true })
...@@ -738,6 +742,8 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -738,6 +742,8 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
describe('findOrInitialize', function() { describe('findOrInitialize', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING, foo: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING, foo: Sequelize.STRING })
...@@ -769,6 +775,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -769,6 +775,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
describe('returns an instance if it already exists', function() { describe('returns an instance if it already exists', function() {
it('with a single find field', function (done) { it('with a single find field', function (done) {
...@@ -828,6 +835,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -828,6 +835,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
describe('update', function() { describe('update', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
...@@ -849,6 +857,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -849,6 +857,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it('updates the attributes that we select only without updating createdAt', function(done) { it('updates the attributes that we select only without updating createdAt', function(done) {
var User = this.sequelize.define('User1', { var User = this.sequelize.define('User1', {
...@@ -1046,6 +1055,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1046,6 +1055,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
describe('destroy', function() { describe('destroy', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
...@@ -1067,6 +1077,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1067,6 +1077,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it('deletes values that match filter', function(done) { it('deletes values that match filter', function(done) {
var self = this var self = this
...@@ -1469,6 +1480,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1469,6 +1480,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
describe('count', function() { describe('count', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
...@@ -1488,6 +1500,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1488,6 +1500,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it('counts all created objects', function(done) { it('counts all created objects', function(done) {
var self = this var self = this
...@@ -1569,6 +1582,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1569,6 +1582,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { age: Sequelize.INTEGER }) var User = sequelize.define('User', { age: Sequelize.INTEGER })
...@@ -1588,6 +1602,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1588,6 +1602,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it("should return the min value", function(done) { it("should return the min value", function(done) {
var self = this var self = this
...@@ -1658,6 +1673,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1658,6 +1673,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { age: Sequelize.INTEGER }) var User = sequelize.define('User', { age: Sequelize.INTEGER })
...@@ -1677,6 +1693,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1677,6 +1693,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it("should return the max value for a field named the same as an SQL reserved keyword", function(done) { it("should return the max value for a field named the same as an SQL reserved keyword", function(done) {
var self = this var self = this
...@@ -2203,6 +2220,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -2203,6 +2220,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
.then(function() { done() }) .then(function() { done() })
}) })
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
...@@ -2222,6 +2240,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -2222,6 +2240,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it("selects all users with name 'foo'", function(done) { it("selects all users with name 'foo'", function(done) {
this this
...@@ -2463,7 +2482,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -2463,7 +2482,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
if (dialect !== 'sqlite') { if (dialect !== 'sqlite' && current.dialect.supports.transactions) {
it('supports multiple async transactions', function(done) { it('supports multiple async transactions', function(done) {
this.timeout(25000); this.timeout(25000);
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
......
...@@ -10,6 +10,8 @@ var chai = require('chai') ...@@ -10,6 +10,8 @@ var chai = require('chai')
, datetime = require('chai-datetime') , datetime = require('chai-datetime')
, _ = require('lodash') , _ = require('lodash')
, assert = require('assert') , assert = require('assert')
, current = Support.sequelize;
chai.use(datetime) chai.use(datetime)
chai.config.includeStack = true chai.config.includeStack = true
...@@ -41,6 +43,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -41,6 +43,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}); });
describe('findOrCreate', function () { describe('findOrCreate', function () {
if (current.dialect.supports.transactions) {
it("supports transactions", function(done) { it("supports transactions", function(done) {
var self = this; var self = this;
this.sequelize.transaction().then(function(t) { this.sequelize.transaction().then(function(t) {
...@@ -70,6 +73,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -70,6 +73,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it("returns instance if already existent. Single find field.", function(done) { it("returns instance if already existent. Single find field.", function(done) {
var self = this, var self = this,
...@@ -137,6 +141,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -137,6 +141,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
if (current.dialect.supports.transactions) {
it("should release transaction when meeting errors", function(){ it("should release transaction when meeting errors", function(){
var self = this var self = this
...@@ -160,8 +165,10 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -160,8 +165,10 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
return test(0); return test(0);
}) })
}
describe('several concurrent calls', function () { describe('several concurrent calls', function () {
if (current.dialect.supports.transactions) {
it('works with a transaction', function () { it('works with a transaction', function () {
return this.sequelize.transaction().bind(this).then(function (transaction) { return this.sequelize.transaction().bind(this).then(function (transaction) {
return Promise.join( return Promise.join(
...@@ -186,6 +193,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -186,6 +193,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
); );
}); });
}); });
}
// Creating two concurrent transactions and selecting / inserting from the same table throws sqlite off // Creating two concurrent transactions and selecting / inserting from the same table throws sqlite off
(dialect !== 'sqlite' ? it : it.skip)('works without a transaction', function () { (dialect !== 'sqlite' ? it : it.skip)('works without a transaction', function () {
...@@ -287,6 +295,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -287,6 +295,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}); });
}); });
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
var self = this; var self = this;
this.sequelize.transaction().then(function(t) { this.sequelize.transaction().then(function(t) {
...@@ -303,6 +312,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -303,6 +312,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it('is possible to use casting when creating an instance', function (done) { it('is possible to use casting when creating an instance', function (done) {
var self = this var self = this
...@@ -960,6 +970,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -960,6 +970,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
describe('bulkCreate', function() { describe('bulkCreate', function() {
if (current.dialect.supports.transactions) {
it("supports transactions", function(done) { it("supports transactions", function(done) {
var self = this; var self = this;
this.sequelize.transaction().then(function(t) { this.sequelize.transaction().then(function(t) {
...@@ -976,6 +987,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -976,6 +987,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it('properly handles disparate field lists', function(done) { it('properly handles disparate field lists', function(done) {
var self = this var self = this
......
...@@ -11,6 +11,8 @@ var chai = require('chai') ...@@ -11,6 +11,8 @@ var chai = require('chai')
, promised = require("chai-as-promised") , promised = require("chai-as-promised")
, _ = require('lodash') , _ = require('lodash')
, async = require('async') , async = require('async')
, current = Support.sequelize;
chai.use(promised); chai.use(promised);
chai.use(datetime) chai.use(datetime)
...@@ -33,6 +35,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -33,6 +35,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
describe('find', function() { describe('find', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
...@@ -59,6 +62,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -59,6 +62,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
describe('general / basic function', function() { describe('general / basic function', function() {
beforeEach(function(done) { beforeEach(function(done) {
......
...@@ -11,6 +11,8 @@ var chai = require('chai') ...@@ -11,6 +11,8 @@ var chai = require('chai')
, _ = require('lodash') , _ = require('lodash')
, moment = require('moment') , moment = require('moment')
, async = require('async') , async = require('async')
, current = Support.sequelize;
chai.use(datetime) chai.use(datetime)
chai.config.includeStack = true chai.config.includeStack = true
...@@ -33,6 +35,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -33,6 +35,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
describe('findAll', function() { describe('findAll', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
...@@ -58,6 +61,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -58,6 +61,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
describe('special where conditions/smartWhere object', function() { describe('special where conditions/smartWhere object', function() {
beforeEach(function(done) { beforeEach(function(done) {
...@@ -1364,6 +1368,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1364,6 +1368,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
...@@ -1384,6 +1389,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1384,6 +1389,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it("handles where clause [only]", function(done) { it("handles where clause [only]", function(done) {
this.User.findAndCountAll({where: "id != " + this.users[0].id}).success(function(info) { this.User.findAndCountAll({where: "id != " + this.users[0].id}).success(function(info) {
...@@ -1503,6 +1509,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1503,6 +1509,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
...@@ -1522,6 +1529,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () { ...@@ -1522,6 +1529,7 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
}) })
}) })
}) })
}
it("should return all users", function(done) { it("should return all users", function(done) {
this.User.all().on('success', function(users) { this.User.all().on('success', function(users) {
......
...@@ -9,6 +9,8 @@ var chai = require('chai') ...@@ -9,6 +9,8 @@ var chai = require('chai')
, datetime = require('chai-datetime') , datetime = require('chai-datetime')
, uuid = require('node-uuid') , uuid = require('node-uuid')
, _ = require('lodash') , _ = require('lodash')
, current = Support.sequelize;
chai.use(datetime) chai.use(datetime)
chai.config.includeStack = true chai.config.includeStack = true
...@@ -272,6 +274,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -272,6 +274,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
}) })
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { number: Support.Sequelize.INTEGER }) var User = sequelize.define('User', { number: Support.Sequelize.INTEGER })
...@@ -293,6 +296,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -293,6 +296,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
}) })
}) })
}
it('supports where conditions', function(done) { it('supports where conditions', function(done) {
var self = this var self = this
...@@ -416,6 +420,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -416,6 +420,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
this.User.create({ id: 1, aNumber: 0, bNumber: 0 }).complete(done) this.User.create({ id: 1, aNumber: 0, bNumber: 0 }).complete(done)
}) })
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { number: Support.Sequelize.INTEGER }) var User = sequelize.define('User', { number: Support.Sequelize.INTEGER })
...@@ -437,6 +442,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -437,6 +442,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
}) })
}) })
}
it('with array', function(done) { it('with array', function(done) {
var self = this var self = this
...@@ -544,6 +550,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -544,6 +550,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
describe('reload', function () { describe('reload', function () {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
...@@ -565,6 +572,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -565,6 +572,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
}) })
}) })
}
it("should return a reference to the same DAO instead of creating a new one", function(done) { it("should return a reference to the same DAO instead of creating a new one", function(done) {
this.User.create({ username: 'John Doe' }).complete(function(err, originalUser) { this.User.create({ username: 'John Doe' }).complete(function(err, originalUser) {
...@@ -748,6 +756,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -748,6 +756,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
describe('save', function() { describe('save', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
...@@ -767,6 +776,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -767,6 +776,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
}) })
}) })
}
it('only updates fields in passed array', function(done) { it('only updates fields in passed array', function(done) {
var self = this var self = this
...@@ -1600,6 +1610,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -1600,6 +1610,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
describe('updateAttributes', function() { describe('updateAttributes', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
...@@ -1621,6 +1632,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -1621,6 +1632,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
}) })
}) })
}
it("updates attributes in the database", function(done) { it("updates attributes in the database", function(done) {
this.User.create({ username: 'user' }).success(function(user) { this.User.create({ username: 'user' }).success(function(user) {
...@@ -1734,6 +1746,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -1734,6 +1746,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
describe('destroy', function() { describe('destroy', function() {
if (current.dialect.supports.transactions) {
it('supports transactions', function(done) { it('supports transactions', function(done) {
Support.prepareTransactionTest(this.sequelize, function(sequelize) { Support.prepareTransactionTest(this.sequelize, function(sequelize) {
var User = sequelize.define('User', { username: Support.Sequelize.STRING }) var User = sequelize.define('User', { username: Support.Sequelize.STRING })
...@@ -1755,6 +1768,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () { ...@@ -1755,6 +1768,7 @@ describe(Support.getTestDialectTeaser("DAO"), function () {
}) })
}) })
}) })
}
it('deletes a record from the database if dao is not paranoid', function(done) { it('deletes a record from the database if dao is not paranoid', function(done) {
var UserDestroy = this.sequelize.define('UserDestroy', { var UserDestroy = this.sequelize.define('UserDestroy', {
......
...@@ -11,6 +11,8 @@ var chai = require('chai') ...@@ -11,6 +11,8 @@ var chai = require('chai')
, Transaction = require(__dirname + '/../lib/transaction') , Transaction = require(__dirname + '/../lib/transaction')
, path = require('path') , path = require('path')
, sinon = require('sinon') , sinon = require('sinon')
, current = Support.sequelize;
chai.config.includeStack = true chai.config.includeStack = true
...@@ -866,6 +868,7 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () { ...@@ -866,6 +868,7 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () {
}) })
}) })
if (current.dialect.supports.transactions) {
describe('transaction', function() { describe('transaction', function() {
beforeEach(function(done) { beforeEach(function(done) {
var self = this var self = this
...@@ -1115,5 +1118,6 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () { ...@@ -1115,5 +1118,6 @@ describe(Support.getTestDialectTeaser("Sequelize"), function () {
}) })
}) })
}) })
}
}) })
}) })
...@@ -3,6 +3,10 @@ var chai = require('chai') ...@@ -3,6 +3,10 @@ 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')
, current = Support.sequelize;
if (current.dialect.supports.transactions) {
describe(Support.getTestDialectTeaser("Sequelize#transaction"), function () { describe(Support.getTestDialectTeaser("Sequelize#transaction"), function () {
this.timeout(4000); this.timeout(4000);
...@@ -182,3 +186,5 @@ describe(Support.getTestDialectTeaser("Sequelize#transaction"), function () { ...@@ -182,3 +186,5 @@ describe(Support.getTestDialectTeaser("Sequelize#transaction"), function () {
}) })
}) })
}) })
}
...@@ -4,7 +4,6 @@ var chai = require('chai') ...@@ -4,7 +4,6 @@ var chai = require('chai')
, expect = chai.expect , expect = chai.expect
, Support = require(__dirname + '/support') , Support = require(__dirname + '/support')
, dialect = Support.getTestDialect() , dialect = Support.getTestDialect()
, Transaction = require(__dirname + '/../lib/transaction')
, Sequelize = require(__dirname + '/../index') , Sequelize = require(__dirname + '/../index')
, Promise = Sequelize.Promise , Promise = Sequelize.Promise
, sinon = require('sinon'); , sinon = require('sinon');
......
...@@ -7,6 +7,8 @@ var chai = require('chai') ...@@ -7,6 +7,8 @@ var chai = require('chai')
, sinon = require('sinon') , sinon = require('sinon')
, current = Support.sequelize; , current = Support.sequelize;
if (current.dialect.supports.transactions) {
describe(Support.getTestDialectTeaser("Transaction"), function () { describe(Support.getTestDialectTeaser("Transaction"), function () {
this.timeout(4000); this.timeout(4000);
describe('constructor', function() { describe('constructor', function() {
...@@ -173,3 +175,5 @@ describe(Support.getTestDialectTeaser("Transaction"), function () { ...@@ -173,3 +175,5 @@ describe(Support.getTestDialectTeaser("Transaction"), function () {
}); });
} }
}); });
}
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!