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

Commit 5cb80fd6 by sdepold

check specs for every single dialect

1 parent c7d8063d
Showing with 48 additions and 12 deletions
var config = require("./config/config")
, Sequelize = require("../index")
, sequelize = new Sequelize(config.database, config.username, config.password, { logging: false })
, Helpers = new (require("./config/helpers"))(sequelize)
, dialects = ['sqlite', 'mysql']
describe('ModelFactory', function() {
dialects.forEach(function(dialect) {
describe('with dialect "' + dialect + '"', function() {
var User = null
, sequelize = new Sequelize(config.database, config.username, config.password, {
logging: false,
dialect: dialect
})
, Helpers = new (require("./config/helpers"))(sequelize)
var setup = function(options) {
User = sequelize.define('User', options || {
......@@ -16,10 +22,17 @@ describe('ModelFactory', function() {
Helpers.dropAllTables()
Helpers.async(function(done) {
User.sync({force: true}).success(done)
User.sync({force: true}).success(done).error(function(err) { console.log(err) })
})
}
var checkMatchForDialects = function(value, expectations) {
if(!!expectations[dialect])
expect(value).toMatch(expectations[dialect])
else
throw new Error('Undefined expectation for "' + dialect + '"!')
}
beforeEach(function() { setup() })
afterEach(function() { Helpers.dropAllTables() })
......@@ -92,7 +105,13 @@ describe('ModelFactory', function() {
Helpers.async(function(done) {
User.create({ username:'foo' }).success(function() {
User.create({ username: 'foo' }).error(function(err) {
expect(err.message).toEqual("Duplicate entry 'foo' for key 'username'")
expect(err).toBeDefined()
checkMatchForDialects(err.message, {
sqlite: /.*SQLITE_CONSTRAINT.*/,
mysql: /.*Duplicate\ entry.*/
})
done()
})
})
......@@ -107,11 +126,22 @@ describe('ModelFactory', function() {
Helpers.async(function(done) {
User.create({ username: 'foo', smth: null }).error(function(err) {
expect(err.message).toEqual("Column 'smth' cannot be null")
expect(err).toBeDefined()
checkMatchForDialects(err.message, {
sqlite: /.*SQLITE_CONSTRAINT.*/,
mysql: "Column 'smth' cannot be null"
})
User.create({username: 'foo', smth: 'foo'}).success(function() {
User.create({username: 'foo', smth: 'bar'}).error(function(err) {
expect(err.message).toEqual("Duplicate entry 'foo' for key 'username'")
expect(err).toBeDefined()
checkMatchForDialects(err.message, {
sqlite: /.*SQLITE_CONSTRAINT.*/,
mysql: "Duplicate entry 'foo' for key 'username'"
})
done()
})
})
......@@ -173,9 +203,9 @@ describe('ModelFactory', function() {
User.all().success(function(users) {
expect(users.length).toEqual(0)
done()
})
})
})
}).error(function(err) { console.log(err) })
}).error(function(err) { console.log(err) })
}).error(function(err) { console.log(err) })
})
})
})
......@@ -420,6 +450,8 @@ describe('ModelFactory', function() {
})
})
// sqlite can't handle multiple primary keys
if(dialect != 'sqlite') {
it("correctly determines equality with multiple primary keys", function() {
setup({
foo: {type: Sequelize.STRING, primaryKey: true},
......@@ -431,14 +463,15 @@ describe('ModelFactory', function() {
User.create({foo: '1', bar: '2', name: 'hallo', bio: 'welt'}).success(function(u) {
expect(u.equals(u)).toBeTruthy()
done()
}).error(function(err) {
console.log(err)
})
}).error(function(err) { console.log(err) })
})
})
}
})
describe('equalsOneOf', function() {
// sqlite can't handle multiple primary keys
if(dialect != 'sqlite') {
beforeEach(function() {
setup({
foo: {type: Sequelize.STRING, primaryKey: true},
......@@ -464,6 +497,7 @@ describe('ModelFactory', function() {
})
})
})
}
})
describe('Mixin', function() {
......@@ -503,4 +537,6 @@ describe('ModelFactory', function() {
})
})
})
})
})
})
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!