muttley
Version:
Monitor Unit Test Tool
64 lines • 2.43 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const path_1 = __importDefault(require("path"));
/**
* Fake test runner for testing the test runner
*/
class FakeTestRunner {
constructor() {
this.tests = [
{ file: 'game.t.js', suite: 'Player constructor', name: 'throws if no name', message: '', stack: [] },
{ file: 'game.t.js', suite: 'Player constructor', name: 'accepts a name', message: '', stack: [] },
{ file: 'game.t.js', suite: 'Player hit', name: 'reduces health', message: '', stack: [] },
{
file: 'game.t.js',
suite: 'Player hit',
name: 'rejects negative value',
message: 'does not throw',
stack: [{ file: 'tests/game.t.ts', lineno: 27 }],
},
];
}
findTestsP(filePath) {
const filename = path_1.default.basename(filePath);
// match the fake test cases to the filepath
return Promise.resolve(this.tests.filter((testcase) => filename.indexOf(testcase.file) >= 0));
}
runFileP(filePath, onStart, onPass, onFail, onEnd) {
return new Promise(resolve => {
setImmediate(onStart);
this.tests
.filter((test) => {
return !test.message;
})
.forEach((test) => {
setImmediate(() => {
onPass(test.suite, test.name, 0);
});
});
this.tests
.filter((test) => !!test.message)
.forEach((test) => {
setImmediate(() => {
onFail({
suite: test.suite,
name: test.name,
fullMessage: test.message,
message: test.message,
stack: test.stack,
});
});
});
const passCount = this.tests.filter((test) => !!test.message).length;
setImmediate(() => {
onEnd(passCount, this.tests.length - passCount);
resolve();
});
});
}
}
exports.FakeTestRunner = FakeTestRunner;
//# sourceMappingURL=test-runner.js.map