UNPKG

skutter

Version:

Skutter: Opinionated BDD Browser based test framework

79 lines (78 loc) 2.61 kB
"use strict"; const Lazy = require("lazy.js"); const result_types_1 = require("./result-types"); const scenario_result_1 = require("./scenario-result"); class FeatureResult { constructor(sourceFeature) { this._skipped = false; this.beginLog = []; this.endLog = []; this._scenarios = new Map(); this._sourceFeature = sourceFeature; for (let scenario of this._sourceFeature.scenarios) { this.appendScenario(scenario); } if (!sourceFeature.queued) { this.setSkipped(); } } appendScenario(sourceScenario) { let scenarioResult = new scenario_result_1.ScenarioResult(sourceScenario); this._scenarios.set(sourceScenario.id, scenarioResult); } appendStartupLog(lines) { this.beginLog.push(...lines); } appendTeardownLog(lines) { this.endLog.push(...lines); } setSkipped() { this._skipped = true; this._scenarios.forEach((value, key, map) => { value.setSkipped(); }); } get result() { if (this._skipped) { return result_types_1.ResultTypes.Skipped; } let scenarioResults = []; this._scenarios.forEach((value, key, map) => { scenarioResults.push(value.result); }); let results = Lazy(scenarioResults).uniq(); if (results.some((result) => { return result === result_types_1.ResultTypes.Errored; })) { return result_types_1.ResultTypes.Errored; } if (results.some((result) => { return result === result_types_1.ResultTypes.Failed; })) { return result_types_1.ResultTypes.Failed; } if (results.some((result) => { return result === result_types_1.ResultTypes.Passed; })) { return result_types_1.ResultTypes.Passed; } return result_types_1.ResultTypes.Skipped; } get feature() { return this._sourceFeature; } getScenarioCount(result) { if (result !== undefined) { return this.getScenarios(result).length; } return this._scenarios.size; } getScenarios(result) { let scenarioResults = []; this._scenarios.forEach((value, key, map) => { scenarioResults.push(value); }); return Lazy(scenarioResults) .where((scenario) => { return scenario.result === result; }).toArray(); } findScenarioResult(scenarioId) { return this._scenarios.get(scenarioId); } } exports.FeatureResult = FeatureResult;