Skip to content

Instantly share code, notes, and snippets.

@Turbo87
Last active May 3, 2017 23:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Turbo87/dc0eefcb2cba5e2b06f26188e8134244 to your computer and use it in GitHub Desktop.
Save Turbo87/dc0eefcb2cba5e2b06f26188e8134244 to your computer and use it in GitHub Desktop.
import escape from 'js-string-escape';
interface TestGenerator {
suiteHeader(suiteName: string): string
suiteFooter(): string
test(testName: string, passed: boolean, assertionMessage: string): string
}
class QUnitTestGenerator implements TestGenerator {
suiteHeader(suiteName) {
return `QUnit.module('${escape(suiteName)}');\n`;
}
suiteFooter() {
return '';
}
test(testName, passed, assertionMessage) {
return (
`QUnit.test('${escape(testName)}', function(assert) {\n` +
` assert.expect(1);\n` +
` assert.ok(${passed}, '${escape(assertionMessage)}');\n` +
`});\n`
);
}
}
class MochaTestGenerator implements TestGenerator {
suiteHeader(suiteName) {
return `describe('${escape(suiteName)}', function() {\n`;
}
suiteFooter() {
return '});\n';
}
test(testName, passed, assertionMessage) {
return (
` it('${escape(testName)}', function() {\n` +
this.assertion(passed, assertionMessage) +
` });\n`
);
}
assertion(passed, assertionMessage) {
if (passed) {
return ` // test passed\n`;
}
return (
` // test failed\n`+
` var error = new chai.AssertionError('${escape(assertionMessage)}');\n` +
` error.stack = undefined;\n` +
` throw error;\n`
);
}
}
let qunit = new QUnitTestGenerator();
let mocha = new MochaTestGenerator();
let generators: { [name: string]: TestGenerator } = { qunit, mocha };
export default generators;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment