app/lib/createPopulatedProperties.js
/**
* Function to create documents indicated by populated properties declared by modelFixture schema
* @module
*/
var _ = require('lodash');
var async = require('async');
var debug = require('app/lib/debug')('app:createPopulatedProperties');
var wh = require('app/lib/warehouse');
/**
* Creates all mock documents related to a model's fixture schema as populated properties
*/
module.exports = function(modelFixture, properties) {
return (done) => {
if (modelFixture.schemaProperties) {
debug('creating populated properties %O', properties);
async.each(Object.keys(modelFixture.schemaProperties), (name, done) => {
if (modelFixture.schemaProperties[name].ref) {
debug('creating %s document %O', modelFixture.schemaProperties[name].ref, properties[name]);
wh.oneSaved(_.lowerFirst(modelFixture.schemaProperties[name].ref), properties[name], (error, document) => {
if (!error) {
debug('created %s document %O', modelFixture.schemaProperties[name].ref, document);
}
done(error, document);
});
} else {
done();
}
}, done);
} else {
done();
}
};
};