// # Populate Fixtures // This module handles populating fixtures on a fresh install. // This is done automatically, by reading the fixtures.json file // All models, and relationships inside the file are then setup. var Promise = require('bluebird'), models = require('../../../models'), coreUtils = require('../../../utils'), fixtureUtils = require('./utils'), fixtures = require('./fixtures'), // private addAllModels, addAllRelations, createOwner, // public populate; /** * ### Add All Models * Sequentially calls add on all the models specified in fixtures.json * * @returns {Promise<*>} */ addAllModels = function addAllModels() { return Promise.mapSeries(fixtures.models, fixtureUtils.addFixturesForModel); }; /** * ### Add All Relations * Sequentially calls add on all the relations specified in fixtures.json * * @returns {Promise|Array} */ addAllRelations = function addAllRelations() { return Promise.mapSeries(fixtures.relations, fixtureUtils.addFixturesForRelation); }; /** * ### Create Owner * Creates the user fixture and gives it the owner role. * By default, users are given the Author role, making it hard to do this using the fixture system * * @param {{info: logger.info, warn: logger.warn}} logger * @returns {Promise<*>} */ createOwner = function createOwner(logger) { var user = { name: 'Ghost Owner', email: 'ghost@ghost.org', status: 'inactive', password: coreUtils.uid(50) }; return models.Role.findOne({name: 'Owner'}).then(function (ownerRole) { if (ownerRole) { user.roles = [ownerRole.id]; logger.info('Creating owner'); return models.User.add(user, fixtureUtils.modelOptions); } }); }; /** * ## Populate * Sequentially creates all models, in the order they are specified, and then * creates all the relationships, also maintaining order. * * @param {{info: logger.info, warn: logger.warn}} logger * @returns {Promise<*>} */ populate = function populate(logger) { logger.info('Running fixture populations'); // ### Ensure all models are added return addAllModels() // ### Ensure all relations are added .then(addAllRelations) .then(function () { return createOwner(logger); }); }; module.exports = populate;