UNPKG

@glimmer/application-test-helpers

Version:

Test helpers for developing @glimmer/component and @glimmer/application

44 lines 6.45 kB
import { buildApp } from './app-builder'; import { DEBUG } from '@glimmer/env'; export function renderModule(name, renderTest) { QUnit.module(name); for (let prop in renderTest.prototype) { const test = renderTest.prototype[prop]; if (isTestFunction(test) && shouldRun(test)) { ['runtime-compiler', 'bytecode'].forEach(loader => { let app = buildApp({ loader }); QUnit.test(`[${loader}] ${prop}`, assert => test.call({ app }, assert)); }); } } } function shouldRun(testFunc) { if (testFunc['debug'] && !DEBUG) { return false; } return true; } function isTestFunction(value) { return typeof value === 'function' && value.isTest; } export class RenderTest { } function setTestingDescriptor(descriptor) { let testFunction = descriptor.value; descriptor.enumerable = true; testFunction['isTest'] = true; } export function test(...args) { if (args.length === 1) { let meta = args[0]; return (_target, _name, descriptor) => { let testFunction = descriptor.value; Object.keys(meta).forEach(key => (testFunction[key] = meta[key])); setTestingDescriptor(descriptor); }; } let descriptor = args[2]; setTestingDescriptor(descriptor); return descriptor; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVuZGVyLXRlc3QuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9wYWNrYWdlcy9AZ2xpbW1lci9hcHBsaWNhdGlvbi10ZXN0LWhlbHBlcnMvc3JjL3JlbmRlci10ZXN0LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxRQUFRLEVBQStCLE1BQU0sZUFBZSxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxLQUFLLEVBQUUsTUFBTSxjQUFjLENBQUM7QUFNckMsTUFBTSxVQUFVLFlBQVksQ0FBQyxJQUFZLEVBQUUsVUFBbUM7SUFDNUUsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUVuQixLQUFLLElBQUksSUFBSSxJQUFJLFVBQVUsQ0FBQyxTQUFTLEVBQUU7UUFDckMsTUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV4QyxJQUFJLGNBQWMsQ0FBQyxJQUFJLENBQUMsSUFBSSxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDM0MsQ0FBQyxrQkFBa0IsRUFBRSxVQUFVLENBQUMsQ0FBQyxPQUFPLENBQUMsTUFBTSxDQUFDLEVBQUU7Z0JBQ2hELElBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQyxFQUFFLE1BQU0sRUFBRSxDQUFDLENBQUM7Z0JBQy9CLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUFFLEVBQUUsTUFBTSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLEVBQUUsTUFBTSxDQUFDLENBQUMsQ0FBQztZQUMxRSxDQUFDLENBQUMsQ0FBQztTQUNKO0tBQ0Y7QUFDSCxDQUFDO0FBRUQsU0FBUyxTQUFTLENBQUMsUUFBYTtJQUM5QixJQUFJLFFBQVEsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLEtBQUssRUFBRTtRQUMvQixPQUFPLEtBQUssQ0FBQztLQUNkO0lBQ0QsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBRUQsU0FBUyxjQUFjLENBQ3JCLEtBQVU7SUFFVixPQUFPLE9BQU8sS0FBSyxLQUFLLFVBQVUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDO0FBQ3JELENBQUM7QUFFRCxNQUFNLE9BQU8sVUFBVTtDQUV0QjtBQUVELFNBQVMsb0JBQW9CLENBQUMsVUFBOEI7SUFDMUQsSUFBSSxZQUFZLEdBQWlCLFVBQVUsQ0FBQyxLQUFxQixDQUFDO0lBQ2xFLFVBQVUsQ0FBQyxVQUFVLEdBQUcsSUFBSSxDQUFDO0lBQzdCLFlBQVksQ0FBQyxRQUFRLENBQUMsR0FBRyxJQUFJLENBQUM7QUFDaEMsQ0FBQztBQWlCRCxNQUFNLFVBQVUsSUFBSSxDQUFDLEdBQUcsSUFBVztJQUNqQyxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssQ0FBQyxFQUFFO1FBQ3JCLElBQUksSUFBSSxHQUFhLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUM3QixPQUFPLENBQUMsT0FBZSxFQUFFLEtBQWEsRUFBRSxVQUE4QixFQUFFLEVBQUU7WUFDeEUsSUFBSSxZQUFZLEdBQWlCLFVBQVUsQ0FBQyxLQUFxQixDQUFDO1lBQ2xFLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxZQUFZLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNsRSxvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUNuQyxDQUFDLENBQUM7S0FDSDtJQUVELElBQUksVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN6QixvQkFBb0IsQ0FBQyxVQUFVLENBQUMsQ0FBQztJQUNqQyxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgYnVpbGRBcHAsIFRlc3RBcHBsaWNhdGlvbiwgQXBwQnVpbGRlciB9IGZyb20gJy4vYXBwLWJ1aWxkZXInO1xuaW1wb3J0IHsgREVCVUcgfSBmcm9tICdAZ2xpbW1lci9lbnYnO1xuXG5leHBvcnQgaW50ZXJmYWNlIENvbnN0cnVjdG9yPFQ+IHtcbiAgbmV3ICguLi5hcmdzOiBhbnlbXSk6IFQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiByZW5kZXJNb2R1bGUobmFtZTogc3RyaW5nLCByZW5kZXJUZXN0OiBDb25zdHJ1Y3RvcjxSZW5kZXJUZXN0Pikge1xuICBRVW5pdC5tb2R1bGUobmFtZSk7XG5cbiAgZm9yIChsZXQgcHJvcCBpbiByZW5kZXJUZXN0LnByb3RvdHlwZSkge1xuICAgIGNvbnN0IHRlc3QgPSByZW5kZXJUZXN0LnByb3RvdHlwZVtwcm9wXTtcblxuICAgIGlmIChpc1Rlc3RGdW5jdGlvbih0ZXN0KSAmJiBzaG91bGRSdW4odGVzdCkpIHtcbiAgICAgIFsncnVudGltZS1jb21waWxlcicsICdieXRlY29kZSddLmZvckVhY2gobG9hZGVyID0+IHtcbiAgICAgICAgbGV0IGFwcCA9IGJ1aWxkQXBwKHsgbG9hZGVyIH0pO1xuICAgICAgICBRVW5pdC50ZXN0KGBbJHtsb2FkZXJ9XSAke3Byb3B9YCwgYXNzZXJ0ID0+IHRlc3QuY2FsbCh7IGFwcCB9LCBhc3NlcnQpKTtcbiAgICAgIH0pO1xuICAgIH1cbiAgfVxufVxuXG5mdW5jdGlvbiBzaG91bGRSdW4odGVzdEZ1bmM6IGFueSk6IGJvb2xlYW4ge1xuICBpZiAodGVzdEZ1bmNbJ2RlYnVnJ10gJiYgIURFQlVHKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG4gIHJldHVybiB0cnVlO1xufVxuXG5mdW5jdGlvbiBpc1Rlc3RGdW5jdGlvbihcbiAgdmFsdWU6IGFueVxuKTogdmFsdWUgaXMgKHRoaXM6IFJlbmRlclRlc3QsIGFzc2VydDogdHlwZW9mIFFVbml0LmFzc2VydCkgPT4gdm9pZCB7XG4gIHJldHVybiB0eXBlb2YgdmFsdWUgPT09ICdmdW5jdGlvbicgJiYgdmFsdWUuaXNUZXN0O1xufVxuXG5leHBvcnQgY2xhc3MgUmVuZGVyVGVzdCB7XG4gIGFwcDogQXBwQnVpbGRlcjxUZXN0QXBwbGljYXRpb24+O1xufVxuXG5mdW5jdGlvbiBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpOiB2b2lkIHtcbiAgbGV0IHRlc3RGdW5jdGlvbjogVGVzdEZ1bmN0aW9uID0gZGVzY3JpcHRvci52YWx1ZSBhcyBUZXN0RnVuY3Rpb247XG4gIGRlc2NyaXB0b3IuZW51bWVyYWJsZSA9IHRydWU7XG4gIHRlc3RGdW5jdGlvblsnaXNUZXN0J10gPSB0cnVlO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RNZXRhIHtcbiAgW2tleTogc3RyaW5nXTogYW55O1xuICBkZWJ1Zz86IGJvb2xlYW47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdEZ1bmN0aW9uIHtcbiAgW2tleTogc3RyaW5nXTogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHRlc3QobWV0YTogVGVzdE1ldGEpOiBNZXRob2REZWNvcmF0b3I7XG5leHBvcnQgZnVuY3Rpb24gdGVzdChcbiAgX3RhcmdldDogT2JqZWN0IHwgVGVzdE1ldGEsXG4gIF9uYW1lPzogc3RyaW5nLFxuICBkZXNjcmlwdG9yPzogUHJvcGVydHlEZXNjcmlwdG9yXG4pOiBQcm9wZXJ0eURlc2NyaXB0b3IgfCB2b2lkO1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QoLi4uYXJnczogYW55W10pIHtcbiAgaWYgKGFyZ3MubGVuZ3RoID09PSAxKSB7XG4gICAgbGV0IG1ldGE6IFRlc3RNZXRhID0gYXJnc1swXTtcbiAgICByZXR1cm4gKF90YXJnZXQ6IE9iamVjdCwgX25hbWU6IHN0cmluZywgZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKSA9PiB7XG4gICAgICBsZXQgdGVzdEZ1bmN0aW9uOiBUZXN0RnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlIGFzIFRlc3RGdW5jdGlvbjtcbiAgICAgIE9iamVjdC5rZXlzKG1ldGEpLmZvckVhY2goa2V5ID0+ICh0ZXN0RnVuY3Rpb25ba2V5XSA9IG1ldGFba2V5XSkpO1xuICAgICAgc2V0VGVzdGluZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gICAgfTtcbiAgfVxuXG4gIGxldCBkZXNjcmlwdG9yID0gYXJnc1syXTtcbiAgc2V0VGVzdGluZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcik7XG4gIHJldHVybiBkZXNjcmlwdG9yO1xufVxuIl19