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

Commit ab5f7567 by Igor Nawrocki

reworked to use promises

1 parent 16620c02
Showing with 72 additions and 63 deletions
......@@ -254,78 +254,87 @@ describe(Support.getTestDialectTeaser("Include"), function () {
Product.hasMany(Tag, {through: ProductTag})
Tag.hasMany(Product, {through: ProductTag})
this.sequelize.sync({force: true}).done(function () {
async.auto({
sets: function(callback) {
Set.bulkCreate([
{title: 'office'}
]).done(function () {
Set.findAll().done(callback)
})
},
products: function (callback) {
Product.bulkCreate([
{title: 'Chair'},
{title: 'Desk'},
{title: 'Dress'}
]).done(function () {
Product.findAll().done(callback)
})
},
tags: function(callback) {
Tag.bulkCreate([
{name: 'A'},
{name: 'B'},
{name: 'C'}
]).done(function () {
Tag.findAll().done(callback)
})
},
productSets: ['sets','products', function(callback, results) {
var chainer = new Sequelize.Utils.QueryChainer()
chainer.add(results.sets[0].addProduct(results.products[0]))
chainer.add(results.sets[0].addProduct(results.products[1]))
chainer.run().done(callback)
}],
productTags: ['products', 'tags', function (callback, results) {
var chainer = new Sequelize.Utils.QueryChainer()
chainer.add(results.products[0].addTag(results.tags[0], {priority: 1}))
chainer.add(results.products[0].addTag(results.tags[1], {priority: 2}))
chainer.add(results.products[1].addTag(results.tags[1], {priority: 1}))
chainer.add(results.products[2].addTag(results.tags[0], {priority: 3}))
chainer.add(results.products[2].addTag(results.tags[1], {priority: 1}))
chainer.add(results.products[2].addTag(results.tags[2], {priority: 2}))
chainer.run().done(callback)
}]
}, function (err) {
expect(err).not.to.be.ok
Set.findAll({
this.sequelize.sync({force: true}).then(function () {
return Set.bulkCreate([
{title: 'office'}
])
.then( function() {
return Product.bulkCreate([
{title: 'Chair'},
{title: 'Desk'},
{title: 'Dress'}
])
})
.then( function() {
return Tag.bulkCreate([
{name: 'A'},
{name: 'B'},
{name: 'C'}
]).done(function () {
return Tag.findAll()
})
})
.then(function() {
return Set.findAll()
})
.then(function(sets) {
return [sets, Product.findAll()]
})
.spread( function(sets, products) {
return sets[0].addProduct(products[0])
.then( function() {
return sets[0].addProduct(products[1])
}).then( function() {
return [sets, products]
})
})
.spread( function(sets, products) {
return [sets, products, Tag.findAll()]
})
.spread( function(sets, products, tags) {
return products[0].addTag(tags[0], {priority:1})
.then( function() {
return products[0].addTag(tags[1], {priority:2})
})
.then( function() {
return products[0].addTag(tags[2], {priority:1})
})
.then( function() {
return products[1].addTag(tags[1], {priority:2})
})
.then( function() {
return products[2].addTag(tags[1], {priority:3})
})
.then( function() {
return products[2].addTag(tags[2], {priority:0})
})
})
.then( function() {
return Set.findAll({
include: [
{
model: Product,
include: [
{
model: Tag,
where: {
name: 'A'
}
}
]
model: Product,
include: [
{
model: Tag,
where: {
name: 'A'
}
}]
}],
limit: 1
}).done(function (err, products) {
})
})
.then( function() {
done()
})
.catch(function (err) {
expect(err).not.to.be.ok
done()
})
})
})
})
it('should support an include with multiple different association types', function (done) {
var User = this.sequelize.define('User', {})
, Product = this.sequelize.define('Product', {
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!