@typed/test
Version:
Simple test framework
52 lines • 1.98 kB
JavaScript
import { curry2, set } from '167';
import { blue } from 'typed-colors';
import { isTestCollection } from './isTestCollection';
export var describe = curry2(function (what, tests) {
return new Describe(what, tests);
});
var Describe = (function () {
function Describe(name, tests) {
this.name = 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(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;
}());
export { 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 set(test.name, [previousResult, result], results);
return 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 set(testCollection.name, [previousResult, testResults], results);
return set(testCollection.name, testResults, results);
});
}
//# sourceMappingURL=describe.js.map