multiple-level-filters.test.js
2.09 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
/* jshint camelcase: false, expr: true */
var chai = require('chai')
, expect = chai.expect
, Support = require(__dirname + '/../support')
, DataTypes = require(__dirname + "/../../lib/data-types")
chai.Assertion.includeStack = true
describe(Support.getTestDialectTeaser("Multiple Level Filters"), function() {
it('can filter through relations', function(done) {
var User = this.sequelize.define('User', {username: DataTypes.STRING })
, Task = this.sequelize.define('Task', {title: DataTypes.STRING })
, Project = this.sequelize.define('Project', { title: DataTypes.STRING })
Project.belongsTo(User);
//User.hasMany(Project)
Task.belongsTo(Project);
//Project.hasMany(Task);
this.sequelize.sync({ force: true }).success(function() {
User.bulkCreate([{
id: 101,
username: 'leia'
}, {
id: 102,
username: 'vader'
}]).success(function() {
Project.bulkCreate([{
id: 201,
UserId: 101,
title: 'republic'
},{
id: 202,
UserId: 102,
title: 'empire'
}]).success(function() {
Task.bulkCreate([{
id: 301,
ProjectId: 201,
title: 'fight empire'
},{
id: 302,
ProjectId: 201,
title: 'stablish republic'
},{
id: 303,
ProjectId: 202,
title: 'destroy rebel alliance'
},{
id: 304,
ProjectId: 202,
title: 'rule everything'
}]).success(function() {
Task.findAll({
where: {
'project.user.username': 'leia'
}
}).success(function(tasks){
try{
expect(tasks.length).to.be.equal(2);
expect(tasks[0].title).to.be.equal('fight empire');
expect(tasks[1].title).to.be.equal('stablish republic');
done();
}catch(e){
done(e);
}
})
});
});
});
})
})
})