UNPKG

apigeek-architect

Version:

Executable English for Software Teams

52 lines (39 loc) 1.97 kB
var pkg = require("../../package"); var assert = require("assert"); var ApiGeek = require("meta4qa"), _ = ApiGeek._, cli = ApiGeek.cli, Dialect = ApiGeek.Dialect, Runtime = ApiGeek.Runtime, Engine = ApiGeek.Engine, helps = ApiGeek.helpers; var util = require("util"); var helper = require("./helper"); // local (runtime) logging var debug = require("debug")("apigeek:daemon:status"); // remote (results) logging module.exports = function(apigeek) { assert(apigeek, "Missing ApiGeek"); assert(apigeek.dialect, "Missing ApiGeek Dialect"); assert(apigeek.config, "Missing ApiGeek Config"); assert(apigeek.logger, "Missing ApiGeek Logger"); var logger = apigeek.logger; debug("Status from: %s", apigeek.config.featuresPath); return function(req, res, next) { assert(req.params, "Missing Request Parameters"); assert(apigeek.config.featuresPath, "Missing featuresPath"); var featureName = req.params[0]; assert(featureName, "Missing feature ID"); var featuresPath = apigeek.config.featuresPath+"/"+featureName; // execution-specific config var config = { featuresPath: helper.toFeatureFile(featuresPath), vars: { } }; // test the features try { apigeek.execute(config, function(results) { var errors = (results.stats.failures)?true:false; // external logging var summary = util.format("[%s] %s (Tests: %s - Passes: %s - Fails: %s)", featureName, results.title, results.stats.tests, results.stats.passes, results.stats.failures); results.errors ? logger.error(summary, results) : logger.info(summary, results); res.sendFile(errors?"fail.png":"pass.png", { root: __dirname+"/../../docs/"}); }) } catch (e) { if (e.code == "ENOENT") { res.sendStatus(404); } else res.send(e).sendStatus(500); } } }