skutter
Version:
Skutter: Opinionated BDD Browser based test framework
79 lines (78 loc) • 2.61 kB
JavaScript
"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;