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

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