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

Commit 8babe6ca by Mick Hansen

Merge pull request #1238 from saschagehlich/bugfix/enum-values

Sequelize.ENUM: Values as arguments / array
2 parents 233bec45 a65f6ade
......@@ -257,7 +257,8 @@ module.exports = {
type: 'ENUM',
values: Array.prototype.slice.call(arguments).reduce(function(result, element) {
return result.concat(Array.isArray(element) ? element : [ element ])
}, [])
}, []),
toString: result.toString
}
}
......
......@@ -203,6 +203,13 @@ module.exports = (function() {
// If you don't specify a valid data type lets help you debug it
Utils._.each(attributes, function(dataType, name) {
if (Utils.isHash(dataType)) {
// We have special cases where the type is an object containing
// the values (e.g. Sequelize.ENUM(value, value2) returns an object
// instead of a function)
// Copy these values to the dataType
dataType.values = (dataType.type && dataType.type.values) || dataType.values;
// We keep on working with the actual type object
dataType = dataType.type
}
......
......@@ -651,6 +651,62 @@ describe(Support.getTestDialectTeaser("DAOFactory"), function () {
})
})
describe('when defined via { field: Sequelize.ENUM }', function() {
it('allows values passed as parameters', function(done) {
var Enum = this.sequelize.define('Enum', {
state: Sequelize.ENUM('happy', 'sad')
})
Enum.sync({ force: true }).success(function() {
Enum.create({ state: 'happy' }).success(function(_item) {
done()
});
});
})
it('allows values passed as an array', function(done) {
var Enum = this.sequelize.define('Enum', {
state: Sequelize.ENUM(['happy', 'sad'])
})
Enum.sync({ force: true }).success(function() {
Enum.create({ state: 'happy' }).success(function(_item) {
done()
});
});
})
})
describe('when defined via { field: { type: Sequelize.ENUM } }', function() {
it('allows values passed as parameters', function(done) {
var Enum = this.sequelize.define('Enum', {
state: {
type: Sequelize.ENUM('happy', 'sad')
}
})
Enum.sync({ force: true }).success(function() {
Enum.create({ state: 'happy' }).success(function(_item) {
done()
});
});
})
it('allows values passed as an array', function(done) {
var Enum = this.sequelize.define('Enum', {
state: {
type: Sequelize.ENUM(['happy', 'sad'])
}
})
Enum.sync({ force: true }).success(function() {
Enum.create({ state: 'happy' }).success(function(_item) {
done()
});
});
})
})
describe('can safely sync multiple times', function(done) {
it('through the factory', function(done) {
var Enum = this.sequelize.define('Enum', {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!