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

Commit e5f6adf8 by Daniel Durante

Fixed references in dao-factory.

1 parent 234c3d60
Showing with 81 additions and 90 deletions
...@@ -2368,49 +2368,47 @@ describe(Helpers.getTestDialectTeaser("DAOFactory"), function() { ...@@ -2368,49 +2368,47 @@ describe(Helpers.getTestDialectTeaser("DAOFactory"), function() {
describe('references', function() { describe('references', function() {
before(function(done) { before(function(done) {
this.Author = this.sequelize.define('author', { firstName: Sequelize.STRING }) this.sequelize = sequelize
done() done()
}) })
describe("use of existing dao factory", function() { it('uses an existing dao factory and references the author table', function(done) {
before(function(done) { var self = this
this.Post = this.sequelize.define('post', { , Author = self.sequelize.define('author', { firstName: Sequelize.STRING })
title: Sequelize.STRING, , Post = self.sequelize.define('post', {
authorId: { title: Sequelize.STRING,
type: Sequelize.INTEGER, authorId: {
references: this.Author, type: Sequelize.INTEGER,
referencesKey: "id" references: Author,
} referencesKey: "id"
}) }
this.Author.hasMany(this.Post)
this.Post.belongsTo(this.Author)
done()
}) })
it('references the author table', function(done) { Author.hasMany(Post)
var self = this Post.belongsTo(Author)
this.Author.sync({ force: true }).success(function() {
self.Post.sync({ force: true }).on('sql', function(sql) {
if (dialect === 'postgres') {
expect(sql).toMatch(/"authorId" INTEGER REFERENCES "authors" \("id"\)/)
} else if (dialect === 'mysql') {
expect(sql).toMatch(/FOREIGN KEY \(`authorId`\) REFERENCES `authors` \(`id`\)/)
} else if (dialect === 'sqlite') {
expect(sql).toMatch(/`authorId` INTEGER REFERENCES `authors` \(`id`\)/)
} else {
throw new Error('Undefined dialect!')
}
done() Author.sync({ force: true }).success(function() {
}) Post.sync({ force: true }).on('sql', function(sql) {
if (dialect === 'postgres') {
expect(sql).toMatch(/"authorId" INTEGER REFERENCES "authors" \("id"\)/)
} else if (dialect === 'mysql') {
expect(sql).toMatch(/FOREIGN KEY \(`authorId`\) REFERENCES `authors` \(`id`\)/)
} else if (dialect === 'sqlite') {
expect(sql).toMatch(/`authorId` INTEGER REFERENCES `authors` \(`id`\)/)
} else {
throw new Error('Undefined dialect!')
}
done()
}) })
}) })
}) })
describe('use of table name as string', function() { it('uses a table name as a string and references the author table', function(done) {
before(function(done) { this.timeout = 2500
this.Post = this.sequelize.define('post', { var self = this
, Author = self.sequelize.define('author', { firstName: Sequelize.STRING })
, Post = self.sequelize.define('post', {
title: Sequelize.STRING, title: Sequelize.STRING,
authorId: { authorId: {
type: Sequelize.INTEGER, type: Sequelize.INTEGER,
...@@ -2419,72 +2417,65 @@ describe(Helpers.getTestDialectTeaser("DAOFactory"), function() { ...@@ -2419,72 +2417,65 @@ describe(Helpers.getTestDialectTeaser("DAOFactory"), function() {
} }
}) })
this.Author.hasMany(this.Post) Author.hasMany(Post)
this.Post.belongsTo(this.Author) Post.belongsTo(Author)
done()
})
it('references the author table', function(done) { Author.sync( {force: true }).success(function() {
var self = this Post.sync({ force: true }).on('sql', function(sql) {
this.Author.sync({ force: true }).success(function() { if (dialect === 'postgres') {
self.Post.sync({ force: true }).on('sql', function(sql) { expect(sql).toMatch(/"authorId" INTEGER REFERENCES "authors" \("id"\)/)
if (dialect === 'postgres') { } else if (dialect === 'mysql') {
expect(sql).toMatch(/"authorId" INTEGER REFERENCES "authors" \("id"\)/) expect(sql).toMatch(/FOREIGN KEY \(`authorId`\) REFERENCES `authors` \(`id`\)/)
} else if (dialect === 'mysql') { } else if (dialect === 'sqlite') {
expect(sql).toMatch(/FOREIGN KEY \(`authorId`\) REFERENCES `authors` \(`id`\)/) expect(sql).toMatch(/`authorId` INTEGER REFERENCES `authors` \(`id`\)/)
} else if (dialect === 'sqlite') { } else {
expect(sql).toMatch(/`authorId` INTEGER REFERENCES `authors` \(`id`\)/) throw new Error('Undefined dialect!')
} else { }
throw new Error('Undefined dialect!')
}
done() done()
})
}) })
}) })
}) })
describe('use of invalid table name', function() { it("emits an error event as the referenced table name is invalid", function(done) {
it("emits the error event as the referenced table name is invalid", function(done) { this.timeout = 2500
this.timeout = 3500 var self = this
var self = this , Author = self.sequelize.define('author', { firstName: Sequelize.STRING })
, Post = self.sequelize.define('post', {
self.Post = self.sequelize.define('post', { title: Sequelize.STRING,
title: Sequelize.STRING, authorId: {
authorId: { type: Sequelize.INTEGER,
type: Sequelize.INTEGER, references: '4uth0r5',
references: '4uth0r5', referencesKey: "id"
referencesKey: "id" }
} })
})
self.Author.hasMany(self.Post)
self.Post.belongsTo(self.Author)
self.Author.sync({ force: true }).success(function() { Author.hasMany(Post)
self.Post.sync({ force: true }).success(function() { Post.belongsTo(Author)
if (dialect === 'sqlite') {
// sorry ... but sqlite is too stupid to understand whats going on ...
expect(1).toEqual(1)
done()
} else {
// the parser should not end up here ...
expect(2).toEqual(1)
}
}).error(function(err) {
if (dialect === 'mysql') {
expect(err.message).toMatch(/ER_CANNOT_ADD_FOREIGN/)
} else if (dialect === 'sqlite') {
// the parser should not end up here ... see above
expect(1).toEqual(2)
} else if (dialect === 'postgres') {
expect(err.message).toMatch(/relation "4uth0r5" does not exist/)
} else {
throw new Error('Undefined dialect!')
}
Author.sync({ force: true }).success(function() {
Post.sync({ force: true }).success(function() {
if (dialect === 'sqlite') {
// sorry ... but sqlite is too stupid to understand whats going on ...
expect(1).toEqual(1)
done() done()
}) } else {
// the parser should not end up here ...
expect(2).toEqual(1)
}
}).error(function(err) {
if (dialect === 'mysql') {
expect(err.message).toMatch(/ER_CANNOT_ADD_FOREIGN/)
} else if (dialect === 'sqlite') {
// the parser should not end up here ... see above
expect(1).toEqual(2)
} else if (dialect === 'postgres') {
expect(err.message).toMatch(/relation "4uth0r5" does not exist/)
} else {
throw new Error('Undefined dialect!')
}
done()
}) })
}) })
}) })
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!