UNPKG

skutter

Version:

Skutter: Opinionated BDD Browser based test framework

64 lines (63 loc) 2.17 kB
"use strict"; const Lazy = require("lazy.js"); const result_types_1 = require("./result-types"); const step_statuses_1 = require("./step-statuses"); const step_result_1 = require("./step-result"); class ScenarioResult { constructor(sourceScenario) { this._skipped = false; this.beginLog = []; this.endLog = []; this._scenario = sourceScenario; this.steps = new Map(); this.stepIndex = 0; for (let step of sourceScenario.steps) { this.appendStep(step); } } appendStep(sourceStep) { this.steps.set(sourceStep.id, new step_result_1.StepResult(sourceStep, this.stepIndex++)); } setSkipped() { this._skipped = true; } findStepResult(id) { return this.steps.get(id); } appendStartupLog(lines) { this.beginLog.push(...lines); } appendTeardownLog(lines) { this.endLog.push(...lines); } get result() { if (this._skipped) { return result_types_1.ResultTypes.Skipped; } if (this.steps.size === 0) { throw new Error("Scenario appears to have no steps."); } let stepResults = []; this.steps.forEach((value, key, map) => { stepResults.push(value.result); }); let results = Lazy(stepResults).uniq(); if (results.some((status) => { return status === step_statuses_1.StepStatuses.Errored; })) { return result_types_1.ResultTypes.Errored; } if (results.some((status) => { return status === step_statuses_1.StepStatuses.Failed; })) { return result_types_1.ResultTypes.Failed; } if (results.some((status) => { return status === step_statuses_1.StepStatuses.Pending; })) { return result_types_1.ResultTypes.Errored; } if (results.some((status) => { return status === step_statuses_1.StepStatuses.Passed; })) { return result_types_1.ResultTypes.Passed; } return result_types_1.ResultTypes.Skipped; } get scenario() { return this._scenario; } } exports.ScenarioResult = ScenarioResult;