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

Commit e0804c74 by Mick Hansen

test for simple nested hasMany -> belongsTo include

1 parent 16e66c8d
Showing with 135 additions and 100 deletions
...@@ -17,121 +17,155 @@ chai.use(datetime) ...@@ -17,121 +17,155 @@ chai.use(datetime)
chai.Assertion.includeStack = true chai.Assertion.includeStack = true
describe(Support.getTestDialectTeaser("Include"), function () { describe(Support.getTestDialectTeaser("Include"), function () {
it('should support a simple nested belongsTo -> belongsTo include', function (done) { describe('find', function () {
var Task = this.sequelize.define('Task', {}) it('should support a simple nested belongsTo -> belongsTo include', function (done) {
, User = this.sequelize.define('User', {}) var Task = this.sequelize.define('Task', {})
, Group = this.sequelize.define('Group', {}) , User = this.sequelize.define('User', {})
, Group = this.sequelize.define('Group', {})
Task.belongsTo(User) Task.belongsTo(User)
User.belongsTo(Group) User.belongsTo(Group)
this.sequelize.sync({force: true}).done(function () { this.sequelize.sync({force: true}).done(function () {
async.auto({ async.auto({
task: function (callback) { task: function (callback) {
Task.create().done(callback) Task.create().done(callback)
}, },
user: function (callback) { user: function (callback) {
User.create().done(callback) User.create().done(callback)
}, },
group: function (callback) { group: function (callback) {
Group.create().done(callback) Group.create().done(callback)
}, },
taskUser: ['task', 'user', function (callback, results) { taskUser: ['task', 'user', function (callback, results) {
results.task.setUser(results.user).done(callback) results.task.setUser(results.user).done(callback)
}], }],
userGroup: ['user', 'group', function (callback, results) { userGroup: ['user', 'group', function (callback, results) {
results.user.setGroup(results.group).done(callback) results.user.setGroup(results.group).done(callback)
}] }]
}, function (err, results) { }, function (err, results) {
expect(err).not.to.be.ok
Task.find({
id: results.task.id,
include: [
{model: User, include: [
{model: Group}
]}
]
}).done(function (err, task) {
expect(err).not.to.be.ok expect(err).not.to.be.ok
expect(task.user).to.be.ok
expect(task.user.group).to.be.ok Task.find({
done() where: {
id: results.task.id
},
include: [
{model: User, include: [
{model: Group}
]}
]
}).done(function (err, task) {
expect(err).not.to.be.ok
expect(task.user).to.be.ok
expect(task.user.group).to.be.ok
done()
})
}) })
}) })
}) })
})
it('should support a simple nested hasOne -> hasOne include', function (done) { it('should support a simple nested hasOne -> hasOne include', function (done) {
var Task = this.sequelize.define('Task', {}) var Task = this.sequelize.define('Task', {})
, User = this.sequelize.define('User', {}) , User = this.sequelize.define('User', {})
, Group = this.sequelize.define('Group', {}) , Group = this.sequelize.define('Group', {})
User.hasOne(Task) User.hasOne(Task)
Group.hasOne(User) Group.hasOne(User)
this.sequelize.sync({force: true}).done(function () { this.sequelize.sync({force: true}).done(function () {
async.auto({ async.auto({
task: function (callback) { task: function (callback) {
Task.create().done(callback) Task.create().done(callback)
}, },
user: function (callback) { user: function (callback) {
User.create().done(callback) User.create().done(callback)
}, },
group: function (callback) { group: function (callback) {
Group.create().done(callback) Group.create().done(callback)
}, },
userTask: ['user', 'task', function (callback, results) { userTask: ['user', 'task', function (callback, results) {
results.user.setTask(results.task).done(callback) results.user.setTask(results.task).done(callback)
}], }],
groupUser: ['group', 'user', function (callback, results) { groupUser: ['group', 'user', function (callback, results) {
results.group.setUser(results.user).done(callback) results.group.setUser(results.user).done(callback)
}] }]
}, function (err, results) { }, function (err, results) {
expect(err).not.to.be.ok
Group.find({
id: results.group.id,
include: [
{model: User, include: [
{model: Task}
]}
]
}).done(function (err, group) {
expect(err).not.to.be.ok expect(err).not.to.be.ok
expect(group.user).to.be.ok
expect(group.user.task).to.be.ok Group.find({
done() where: {
id: results.group.id
},
include: [
{model: User, include: [
{model: Task}
]}
]
}).done(function (err, group) {
expect(err).not.to.be.ok
expect(group.user).to.be.ok
expect(group.user.task).to.be.ok
done()
})
}) })
}) })
}) })
})
it('should support a simple nested hasMany -> belongsTo include', function (done) { it('should support a simple nested hasMany -> belongsTo include', function (done) {
var Task = this.sequelize.define('Task', {}) var Task = this.sequelize.define('Task', {})
, User = this.sequelize.define('User', {}) , User = this.sequelize.define('User', {})
, Project = this.sequelize.define('Project', {}) , Project = this.sequelize.define('Project', {})
User.hasMany(Task)
Task.belongsTo(Project)
User.hasMany(Task) this.sequelize.sync({force: true}).done(function () {
Task.belongsTo(Project) async.auto({
user: function (callback) {
User.create().done(callback)
},
projects: function (callback) {
Project.bulkCreate([{}, {}]).done(function () {
Project.findAll().done(callback)
})
},
tasks: ['projects', function(callback, results) {
Task.bulkCreate([
{ProjectId: results.projects[0].id},
{ProjectId: results.projects[1].id},
{ProjectId: results.projects[0].id},
{ProjectId: results.projects[1].id}
]).done(function () {
Task.findAll().done(callback)
})
}],
userTasks: ['user', 'tasks', function (callback, results) {
results.user.setTasks(results.tasks).done(callback)
}]
}, function (err, results) {
User.find({
where: {
id: results.user.id
},
include: [
{model: Task, include: [
{model: Project}
]}
]
}).done(function (err, user) {
expect(err).not.to.be.ok
expect(user.tasks).to.be.ok
expect(user.tasks.length).to.equal(4)
this.sequelize.sync({force: true}).done(function () { user.tasks.forEach(function (task) {
async.auto({ expect(task.project).to.be.ok
user: function (callback) { })
User.create().done(callback)
}, done()
projects: function (callback) { })
Project.bulkCreate([{}, {}]).done(callback) })
}, })
tasks: ['projects', function(callback, results) { })
Task.bulkCreate([
{ProjectId: results.projects[0].id},
{ProjectId: results.projects[1].id},
{ProjectId: results.projects[0].id},
{ProjectId: results.projects[1].id}
]).done(callback)
}]
}, done);
});
}) })
}) })
\ No newline at end of file
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!