UNPKG

@glimmer/application-test-helpers

Version:

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

69 lines (55 loc) 6.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RenderTest = undefined; exports.renderModule = renderModule; exports.test = test; var _appBuilder = require("./app-builder"); var _env = require("@glimmer/env"); 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 = (0, _appBuilder.buildApp)({ loader }); QUnit.test(`[${loader}] ${prop}`, assert => test.call({ app }, assert)); }); } } } function shouldRun(testFunc) { if (testFunc['debug'] && !_env.DEBUG) { return false; } return true; } function isTestFunction(value) { return typeof value === 'function' && value.isTest; } class RenderTest {} exports.RenderTest = RenderTest; function setTestingDescriptor(descriptor) { let testFunction = descriptor.value; descriptor.enumerable = true; testFunction['isTest'] = true; } 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;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvcmVuZGVyLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBT2dCLFksR0FBQSxZO1FBcURBLEksR0FBQSxJOztBQTVEaEI7O0FBQ0E7O0FBTU0sU0FBVSxZQUFWLENBQXVCLElBQXZCLEVBQXFDLFVBQXJDLEVBQXdFO0FBQzVFLEVBQUEsS0FBSyxDQUFDLE1BQU4sQ0FBYSxJQUFiOztBQUVBLE9BQUssSUFBSSxJQUFULElBQWlCLFVBQVUsQ0FBQyxTQUE1QixFQUF1QztBQUNyQyxVQUFNLElBQUksR0FBRyxVQUFVLENBQUMsU0FBWCxDQUFxQixJQUFyQixDQUFiOztBQUVBLFFBQUksY0FBYyxDQUFDLElBQUQsQ0FBZCxJQUF3QixTQUFTLENBQUMsSUFBRCxDQUFyQyxFQUE2QztBQUMzQyxPQUFDLGtCQUFELEVBQXFCLFVBQXJCLEVBQWlDLE9BQWpDLENBQXlDLE1BQU0sSUFBRztBQUNoRCxZQUFJLEdBQUcsR0FBRywwQkFBUztBQUFFLFVBQUE7QUFBRixTQUFULENBQVY7QUFDQSxRQUFBLEtBQUssQ0FBQyxJQUFOLENBQVcsSUFBSSxNQUFNLEtBQUssSUFBSSxFQUE5QixFQUFrQyxNQUFNLElBQUksSUFBSSxDQUFDLElBQUwsQ0FBVTtBQUFFLFVBQUE7QUFBRixTQUFWLEVBQW1CLE1BQW5CLENBQTVDO0FBQ0QsT0FIRDtBQUlEO0FBQ0Y7QUFDRjs7QUFFRCxTQUFTLFNBQVQsQ0FBbUIsUUFBbkIsRUFBZ0M7QUFDOUIsTUFBSSxRQUFRLENBQUMsT0FBRCxDQUFSLElBQXFCLENBQUMsVUFBMUIsRUFBaUM7QUFDL0IsV0FBTyxLQUFQO0FBQ0Q7O0FBQ0QsU0FBTyxJQUFQO0FBQ0Q7O0FBRUQsU0FBUyxjQUFULENBQ0UsS0FERixFQUNZO0FBRVYsU0FBTyxPQUFPLEtBQVAsS0FBaUIsVUFBakIsSUFBK0IsS0FBSyxDQUFDLE1BQTVDO0FBQ0Q7O0FBRUssTUFBTyxVQUFQLENBQWlCOztRQUFWLFUsR0FBQSxVOztBQUliLFNBQVMsb0JBQVQsQ0FBOEIsVUFBOUIsRUFBNEQ7QUFDMUQsTUFBSSxZQUFZLEdBQWlCLFVBQVUsQ0FBQyxLQUE1QztBQUNBLEVBQUEsVUFBVSxDQUFDLFVBQVgsR0FBd0IsSUFBeEI7QUFDQSxFQUFBLFlBQVksQ0FBQyxRQUFELENBQVosR0FBeUIsSUFBekI7QUFDRDs7QUFpQkssU0FBVSxJQUFWLENBQWUsR0FBRyxJQUFsQixFQUE2QjtBQUNqQyxNQUFJLElBQUksQ0FBQyxNQUFMLEtBQWdCLENBQXBCLEVBQXVCO0FBQ3JCLFFBQUksSUFBSSxHQUFhLElBQUksQ0FBQyxDQUFELENBQXpCO0FBQ0EsV0FBTyxDQUFDLE9BQUQsRUFBa0IsS0FBbEIsRUFBaUMsVUFBakMsS0FBbUU7QUFDeEUsVUFBSSxZQUFZLEdBQWlCLFVBQVUsQ0FBQyxLQUE1QztBQUNBLE1BQUEsTUFBTSxDQUFDLElBQVAsQ0FBWSxJQUFaLEVBQWtCLE9BQWxCLENBQTBCLEdBQUcsSUFBSyxZQUFZLENBQUMsR0FBRCxDQUFaLEdBQW9CLElBQUksQ0FBQyxHQUFELENBQTFEO0FBQ0EsTUFBQSxvQkFBb0IsQ0FBQyxVQUFELENBQXBCO0FBQ0QsS0FKRDtBQUtEOztBQUVELE1BQUksVUFBVSxHQUFHLElBQUksQ0FBQyxDQUFELENBQXJCO0FBQ0EsRUFBQSxvQkFBb0IsQ0FBQyxVQUFELENBQXBCO0FBQ0EsU0FBTyxVQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZEFwcCwgVGVzdEFwcGxpY2F0aW9uLCBBcHBCdWlsZGVyIH0gZnJvbSAnLi9hcHAtYnVpbGRlcic7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3I8VD4ge1xuICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1vZHVsZShuYW1lOiBzdHJpbmcsIHJlbmRlclRlc3Q6IENvbnN0cnVjdG9yPFJlbmRlclRlc3Q+KSB7XG4gIFFVbml0Lm1vZHVsZShuYW1lKTtcblxuICBmb3IgKGxldCBwcm9wIGluIHJlbmRlclRlc3QucHJvdG90eXBlKSB7XG4gICAgY29uc3QgdGVzdCA9IHJlbmRlclRlc3QucHJvdG90eXBlW3Byb3BdO1xuXG4gICAgaWYgKGlzVGVzdEZ1bmN0aW9uKHRlc3QpICYmIHNob3VsZFJ1bih0ZXN0KSkge1xuICAgICAgWydydW50aW1lLWNvbXBpbGVyJywgJ2J5dGVjb2RlJ10uZm9yRWFjaChsb2FkZXIgPT4ge1xuICAgICAgICBsZXQgYXBwID0gYnVpbGRBcHAoeyBsb2FkZXIgfSk7XG4gICAgICAgIFFVbml0LnRlc3QoYFske2xvYWRlcn1dICR7cHJvcH1gLCBhc3NlcnQgPT4gdGVzdC5jYWxsKHsgYXBwIH0sIGFzc2VydCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZFJ1bih0ZXN0RnVuYzogYW55KTogYm9vbGVhbiB7XG4gIGlmICh0ZXN0RnVuY1snZGVidWcnXSAmJiAhREVCVUcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzVGVzdEZ1bmN0aW9uKFxuICB2YWx1ZTogYW55XG4pOiB2YWx1ZSBpcyAodGhpczogUmVuZGVyVGVzdCwgYXNzZXJ0OiB0eXBlb2YgUVVuaXQuYXNzZXJ0KSA9PiB2b2lkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWx1ZS5pc1Rlc3Q7XG59XG5cbmV4cG9ydCBjbGFzcyBSZW5kZXJUZXN0IHtcbiAgYXBwOiBBcHBCdWlsZGVyPFRlc3RBcHBsaWNhdGlvbj47XG59XG5cbmZ1bmN0aW9uIHNldFRlc3RpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IHZvaWQge1xuICBsZXQgdGVzdEZ1bmN0aW9uOiBUZXN0RnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlIGFzIFRlc3RGdW5jdGlvbjtcbiAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgdGVzdEZ1bmN0aW9uWydpc1Rlc3QnXSA9IHRydWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE1ldGEge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIGRlYnVnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0RnVuY3Rpb24ge1xuICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdChtZXRhOiBUZXN0TWV0YSk6IE1ldGhvZERlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KFxuICBfdGFyZ2V0OiBPYmplY3QgfCBUZXN0TWV0YSxcbiAgX25hbWU/OiBzdHJpbmcsXG4gIGRlc2NyaXB0b3I/OiBQcm9wZXJ0eURlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB8IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gdGVzdCguLi5hcmdzOiBhbnlbXSkge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICBsZXQgbWV0YTogVGVzdE1ldGEgPSBhcmdzWzBdO1xuICAgIHJldHVybiAoX3RhcmdldDogT2JqZWN0LCBfbmFtZTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICAgIGxldCB0ZXN0RnVuY3Rpb246IFRlc3RGdW5jdGlvbiA9IGRlc2NyaXB0b3IudmFsdWUgYXMgVGVzdEZ1bmN0aW9uO1xuICAgICAgT2JqZWN0LmtleXMobWV0YSkuZm9yRWFjaChrZXkgPT4gKHRlc3RGdW5jdGlvbltrZXldID0gbWV0YVtrZXldKSk7XG4gICAgICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgICB9O1xuICB9XG5cbiAgbGV0IGRlc2NyaXB0b3IgPSBhcmdzWzJdO1xuICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3I7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9