@typed/test
Version:
Simple test framework
54 lines • 2.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
var _167_1 = require("167");
var typed_colors_1 = require("typed-colors");
var isTestCollection_1 = require("./isTestCollection");
exports.describe = _167_1.curry2(function (what, tests) {
return new Describe(what, tests);
});
var Describe = (function () {
function Describe(name, tests) {
this.name = typed_colors_1.blue('Describe') + " " + name;
this.tests = tests;
}
Describe.prototype.run = function (timeout) {
var tests = this.tests;
var promise = Promise.resolve({});
var stats = { passed: true };
var _loop_1 = function (i) {
promise = promise.then(function (results) {
var test = tests[i];
return isTestCollection_1.isTestCollection(test)
? runTestCollection(timeout, test, results, stats)
: runTest(timeout, test, results, stats);
});
};
for (var i = 0; i < tests.length; ++i) {
_loop_1(i);
}
return promise.then(function (results) { return ({ passed: stats.passed, results: results }); });
};
return Describe;
}());
exports.Describe = Describe;
function runTest(timeout, test, results, stats) {
return test.run(timeout).then(function (result) {
if (!result.passed)
stats.passed = false;
var previousResult = results[test.name];
if (previousResult)
return _167_1.set(test.name, [previousResult, result], results);
return _167_1.set(test.name, result, results);
});
}
function runTestCollection(timeout, testCollection, results, stats) {
return testCollection.run(timeout).then(function (testResults) {
if (!testResults.passed)
stats.passed = false;
var previousResult = results[testCollection.name];
if (previousResult)
return _167_1.set(testCollection.name, [previousResult, testResults], results);
return _167_1.set(testCollection.name, testResults, results);
});
}
//# sourceMappingURL=describe.js.map