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

Commit 9920fee5 by Mick Hansen

fix schema include test data generation to use promises

1 parent b8a27d95
...@@ -7,7 +7,8 @@ var chai = require('chai') ...@@ -7,7 +7,8 @@ var chai = require('chai')
, DataTypes = require(__dirname + '/../../../lib/data-types') , DataTypes = require(__dirname + '/../../../lib/data-types')
, datetime = require('chai-datetime') , datetime = require('chai-datetime')
, async = require('async') , async = require('async')
, Promise = Sequelize.Promise; , Promise = Sequelize.Promise
, _ = require('lodash');
chai.use(datetime); chai.use(datetime);
chai.config.includeStack = true; chai.config.includeStack = true;
...@@ -126,107 +127,80 @@ describe(Support.getTestDialectTeaser('Includes with schemas'), function() { ...@@ -126,107 +127,80 @@ describe(Support.getTestDialectTeaser('Includes with schemas'), function() {
return Tag.findAll(); return Tag.findAll();
}) })
}).then(function (results) { }).then(function (results) {
var count = 4 var groups = results.groups
, i = -1 , ranks = results.ranks
, groups = results.groups , tags = results.tags
, ranks = results.ranks , companies = results.companies;
, tags = results.tags
, companies = results.companies; return Promise.reduce(_.range(5), function (memo, i) {
return Promise.props({
return new Promise(function (resolve, reject) { user: AccUser.create(),
async.whilst( products: Product.bulkCreate([
function() { return i < count; }, {title: 'Chair'},
function(callback) { {title: 'Desk'},
i++; {title: 'Bed'},
async.auto({ {title: 'Pen'},
user: function(callback) { {title: 'Monitor'}
AccUser.create().done(callback); ]).then(function(err) {
}, return Product.findAll();
memberships: ['user', function(callback, results) { })
var groupMembers = [ }).then(function (results) {
{AccUserId: results.user.id, GroupId: groups[0].id, RankId: ranks[0].id}, var user = results.user
{AccUserId: results.user.id, GroupId: groups[1].id, RankId: ranks[2].id} , products = results.products
]; , groupMembers;
if (i < 3) { groupMembers = [
groupMembers.push({AccUserId: results.user.id, GroupId: groups[2].id, RankId: ranks[1].id}); {AccUserId: user.id, GroupId: groups[0].id, RankId: ranks[0].id},
} {AccUserId: user.id, GroupId: groups[1].id, RankId: ranks[2].id}
];
GroupMember.bulkCreate(groupMembers).done(callback); if (i < 3) {
}], groupMembers.push({AccUserId: user.id, GroupId: groups[2].id, RankId: ranks[1].id});
products: function(callback) { }
Product.bulkCreate([
{title: 'Chair'}, return Promise.join(
{title: 'Desk'}, GroupMember.bulkCreate(groupMembers),
{title: 'Bed'}, user.setProducts([
{title: 'Pen'}, products[(i * 5) + 0],
{title: 'Monitor'} products[(i * 5) + 1],
]).done(function(err) { products[(i * 5) + 3]
if (err) return callback(err); ]),
Product.findAll().done(callback); Promise.join(
}); products[(i * 5) + 0].setTags([
}, tags[0],
userProducts: ['user', 'products', function(callback, results) { tags[2]
results.user.setProducts([ ]),
results.products[(i * 5) + 0], products[(i * 5) + 1].setTags([
results.products[(i * 5) + 1], tags[1]
results.products[(i * 5) + 3] ]),
]).done(callback); products[(i * 5) + 0].setCategory(tags[1]),
}], products[(i * 5) + 2].setTags([
productTags: ['products', function(callback, results) { tags[0]
var chainer = new Sequelize.Utils.QueryChainer(); ]),
products[(i * 5) + 3].setTags([
chainer.add(results.products[(i * 5) + 0].setTags([ tags[0]
tags[0], ])
tags[2] ),
])); Promise.join(
chainer.add(results.products[(i * 5) + 1].setTags([ products[(i * 5) + 0].setCompany(companies[4]),
tags[1] products[(i * 5) + 1].setCompany(companies[3]),
])); products[(i * 5) + 2].setCompany(companies[2]),
chainer.add(results.products[(i * 5) + 0].setCategory(tags[1])); products[(i * 5) + 3].setCompany(companies[1]),
products[(i * 5) + 4].setCompany(companies[0])
chainer.add(results.products[(i * 5) + 2].setTags([ ),
tags[0] Price.bulkCreate([
])); {ProductId: products[(i * 5) + 0].id, value: 5},
{ProductId: products[(i * 5) + 0].id, value: 10},
chainer.add(results.products[(i * 5) + 3].setTags([ {ProductId: products[(i * 5) + 1].id, value: 5},
tags[0] {ProductId: products[(i * 5) + 1].id, value: 10},
])); {ProductId: products[(i * 5) + 1].id, value: 15},
{ProductId: products[(i * 5) + 1].id, value: 20},
chainer.run().done(callback); {ProductId: products[(i * 5) + 2].id, value: 20},
}], {ProductId: products[(i * 5) + 3].id, value: 20}
companies: ['products', function(callback, results) { ])
var chainer = new Sequelize.Utils.QueryChainer(); );
results.products[(i * 5) + 0].setCompany(companies[4]);
results.products[(i * 5) + 1].setCompany(companies[3]);
results.products[(i * 5) + 2].setCompany(companies[2]);
results.products[(i * 5) + 3].setCompany(companies[1]);
results.products[(i * 5) + 4].setCompany(companies[0]);
chainer.run().done(callback);
}],
prices: ['products', function(callback, results) {
Price.bulkCreate([
{ProductId: results.products[(i * 5) + 0].id, value: 5},
{ProductId: results.products[(i * 5) + 0].id, value: 10},
{ProductId: results.products[(i * 5) + 1].id, value: 5},
{ProductId: results.products[(i * 5) + 1].id, value: 10},
{ProductId: results.products[(i * 5) + 1].id, value: 15},
{ProductId: results.products[(i * 5) + 1].id, value: 20},
{ProductId: results.products[(i * 5) + 2].id, value: 20},
{ProductId: results.products[(i * 5) + 3].id, value: 20}
]).done(callback);
}]
}, callback);
},
function(err) {
if (err) return reject(err);
resolve();
}
);
});
}); });
}, []);
});
}); });
}); });
}); });
......
...@@ -164,7 +164,7 @@ describe(Support.getTestDialectTeaser('Transaction'), function() { ...@@ -164,7 +164,7 @@ describe(Support.getTestDialectTeaser('Transaction'), function() {
awesome: true awesome: true
}, { transaction: t1}).then(function() { }, { transaction: t1}).then(function() {
t1Spy(); t1Spy();
Promise.delay(2000).then(function () { return Promise.delay(2000).then(function () {
return t1.commit(); return t1.commit();
}); });
}) })
......
Markdown is supported
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!