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

Commit 5077d4ac by sdepold

specs for clearing associations

1 parent 06fd640e
if (typeof require === 'function') {
const buster = require("buster")
, Sequelize = require("../../index")
, config = require("../config/config")
, sequelize = new Sequelize(config.database, config.username, config.password, {
logging: false
})
}
buster.spec.expose()
buster.testRunner.timeout = 500
describe('BelongsTo', function() {
describe('setAssociation', function() {
it('clears the association if null is passed', function(done) {
var User = sequelize.define('User', { username: Sequelize.STRING })
, Task = sequelize.define('Task', { title: Sequelize.STRING })
Task.belongsTo(User)
sequelize.sync({ force: true }).success(function() {
User.create({ username: 'foo' }).success(function(user) {
Task.create({ title: 'task' }).success(function(task) {
task.setUser(user).success(function() {
task.getUser().success(function(user) {
expect(user).toBeDefined()
task.setUser(null).success(function() {
task.getUser().success(function(user) {
expect(user).toEqual(null)
done()
})
})
})
})
})
})
})
})
})
})
...@@ -16,7 +16,10 @@ describe('HasMany', function() { ...@@ -16,7 +16,10 @@ describe('HasMany', function() {
sequelize.getQueryInterface() sequelize.getQueryInterface()
.dropAllTables() .dropAllTables()
.success(done) .success(function() {
sequelize.daoFactoryManager.daos = []
done()
})
.error(function(err) { console.log(err) }) .error(function(err) { console.log(err) })
}) })
...@@ -131,6 +134,34 @@ describe('HasMany', function() { ...@@ -131,6 +134,34 @@ describe('HasMany', function() {
}) })
}) })
}) })
describe('setAssociations', function() {
it("clears associations when passing null to the set-method", function(done) {
var User = sequelize.define('User', { username: Sequelize.STRING })
, Task = sequelize.define('Task', { title: Sequelize.STRING })
Task.hasMany(User)
sequelize.sync({ force: true }).success(function() {
User.create({ username: 'foo' }).success(function(user) {
Task.create({ title: 'task' }).success(function(task) {
task.setUsers([ user ]).success(function() {
task.getUsers().success(function(_users) {
expect(_users.length).toEqual(1)
task.setUsers(null).success(function() {
task.getUsers().success(function(_users) {
expect(_users.length).toEqual(0)
done()
})
})
})
})
})
})
})
})
})
}) })
describe('(N:M)', function() { describe('(N:M)', function() {
...@@ -162,24 +193,26 @@ describe('HasMany', function() { ...@@ -162,24 +193,26 @@ describe('HasMany', function() {
expect(add).toHaveBeenCalledThrice() expect(add).toHaveBeenCalledThrice()
}) })
it("clears associations when passing null to the set-method", function(done) { describe('setAssociations', function() {
var User = sequelize.define('User', { username: Sequelize.STRING }) it("clears associations when passing null to the set-method", function(done) {
, Task = sequelize.define('Task', { title: Sequelize.STRING }) var User = sequelize.define('User', { username: Sequelize.STRING })
, Task = sequelize.define('Task', { title: Sequelize.STRING })
User.hasMany(Task)
Task.hasMany(User) User.hasMany(Task)
Task.hasMany(User)
sequelize.sync({ force: true }).success(function() {
User.create({ username: 'foo' }).success(function(user) { sequelize.sync({ force: true }).success(function() {
Task.create({ title: 'task' }).success(function(task) { User.create({ username: 'foo' }).success(function(user) {
task.setUsers([ user ]).success(function() { Task.create({ title: 'task' }).success(function(task) {
task.getUsers().success(function(_users) { task.setUsers([ user ]).success(function() {
expect(_users.length).toEqual(1) task.getUsers().success(function(_users) {
expect(_users.length).toEqual(1)
task.setUsers(null).success(function() {
task.getUsers().success(function(_users) { task.setUsers(null).success(function() {
expect(_users.length).toEqual(0) task.getUsers().success(function(_users) {
done() expect(_users.length).toEqual(0)
done()
})
}) })
}) })
}) })
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!