UNPKG

@glimmer/application-test-helpers

Version:

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

64 lines (54 loc) 6.54 kB
import { buildApp } from './app-builder'; import { DEBUG } from '@glimmer/env'; export function renderModule(name, renderTest) { QUnit.module(name); var _loop = function _loop(prop) { var test = renderTest.prototype[prop]; if (isTestFunction(test) && shouldRun(test)) { ['runtime-compiler', 'bytecode'].forEach(function (loader) { var app = buildApp({ loader: loader }); QUnit.test("[" + loader + "] " + prop, function (assert) { return test.call({ app: app }, assert); }); }); } }; for (var prop in renderTest.prototype) { _loop(prop); } } function shouldRun(testFunc) { if (testFunc['debug'] && !DEBUG) { return false; } return true; } function isTestFunction(value) { return typeof value === 'function' && value.isTest; } export var RenderTest = function RenderTest() {}; function setTestingDescriptor(descriptor) { var testFunction = descriptor.value; descriptor.enumerable = true; testFunction['isTest'] = true; } export function test() { if (arguments.length === 1) { var meta = arguments.length <= 0 ? undefined : arguments[0]; return function (_target, _name, descriptor) { var testFunction = descriptor.value; Object.keys(meta).forEach(function (key) { return testFunction[key] = meta[key]; }); setTestingDescriptor(descriptor); }; } var descriptor = arguments.length <= 2 ? undefined : arguments[2]; setTestingDescriptor(descriptor); return descriptor; } //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvcmVuZGVyLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsU0FBUyxRQUFULFFBQXNELGVBQXREO0FBQ0EsU0FBUyxLQUFULFFBQXNCLGNBQXRCO0FBTUEsT0FBTSxTQUFVLFlBQVYsQ0FBdUIsSUFBdkIsRUFBcUMsVUFBckMsRUFBd0U7QUFDNUUsRUFBQSxLQUFLLENBQUMsTUFBTixDQUFhLElBQWI7O0FBRDRFLDZCQUduRSxJQUhtRTtBQUkxRSxRQUFNLElBQUksR0FBRyxVQUFVLENBQUMsU0FBWCxDQUFxQixJQUFyQixDQUFiOztBQUVBLFFBQUksY0FBYyxDQUFDLElBQUQsQ0FBZCxJQUF3QixTQUFTLENBQUMsSUFBRCxDQUFyQyxFQUE2QztBQUMzQyxPQUFDLGtCQUFELEVBQXFCLFVBQXJCLEVBQWlDLE9BQWpDLENBQXlDLFVBQUEsTUFBTSxFQUFHO0FBQ2hELFlBQUksR0FBRyxHQUFHLFFBQVEsQ0FBQztBQUFFLFVBQUEsTUFBTSxFQUFOO0FBQUYsU0FBRCxDQUFsQjtBQUNBLFFBQUEsS0FBSyxDQUFDLElBQU4sT0FBZSxNQUFmLFVBQTBCLElBQTFCLEVBQWtDLFVBQUEsTUFBTTtBQUFBLGlCQUFJLElBQUksQ0FBQyxJQUFMLENBQVU7QUFBRSxZQUFBLEdBQUcsRUFBSDtBQUFGLFdBQVYsRUFBbUIsTUFBbkIsQ0FBSjtBQUFBLFNBQXhDO0FBQ0QsT0FIRDtBQUlEO0FBWHlFOztBQUc1RSxPQUFLLElBQUksSUFBVCxJQUFpQixVQUFVLENBQUMsU0FBNUIsRUFBdUM7QUFBQSxVQUE5QixJQUE4QjtBQVN0QztBQUNGOztBQUVELFNBQVMsU0FBVCxDQUFtQixRQUFuQixFQUFnQztBQUM5QixNQUFJLFFBQVEsQ0FBQyxPQUFELENBQVIsSUFBcUIsQ0FBQyxLQUExQixFQUFpQztBQUMvQixXQUFPLEtBQVA7QUFDRDs7QUFDRCxTQUFPLElBQVA7QUFDRDs7QUFFRCxTQUFTLGNBQVQsQ0FDRSxLQURGLEVBQ1k7QUFFVixTQUFPLE9BQU8sS0FBUCxLQUFpQixVQUFqQixJQUErQixLQUFLLENBQUMsTUFBNUM7QUFDRDs7QUFFRCxXQUFhLFVBQWI7O0FBSUEsU0FBUyxvQkFBVCxDQUE4QixVQUE5QixFQUE0RDtBQUMxRCxNQUFJLFlBQVksR0FBaUIsVUFBVSxDQUFDLEtBQTVDO0FBQ0EsRUFBQSxVQUFVLENBQUMsVUFBWCxHQUF3QixJQUF4QjtBQUNBLEVBQUEsWUFBWSxDQUFDLFFBQUQsQ0FBWixHQUF5QixJQUF6QjtBQUNEOztBQWlCRCxPQUFNLFNBQVUsSUFBVixHQUE2QjtBQUNqQyxNQUFJLFVBQUssTUFBTCxLQUFnQixDQUFwQixFQUF1QjtBQUNyQixRQUFJLElBQUksbURBQVI7QUFDQSxXQUFPLFVBQUMsT0FBRCxFQUFrQixLQUFsQixFQUFpQyxVQUFqQyxFQUFtRTtBQUN4RSxVQUFJLFlBQVksR0FBaUIsVUFBVSxDQUFDLEtBQTVDO0FBQ0EsTUFBQSxNQUFNLENBQUMsSUFBUCxDQUFZLElBQVosRUFBa0IsT0FBbEIsQ0FBMEIsVUFBQSxHQUFHO0FBQUEsZUFBSyxZQUFZLENBQUMsR0FBRCxDQUFaLEdBQW9CLElBQUksQ0FBQyxHQUFELENBQTdCO0FBQUEsT0FBN0I7QUFDQSxNQUFBLG9CQUFvQixDQUFDLFVBQUQsQ0FBcEI7QUFDRCxLQUpEO0FBS0Q7O0FBRUQsTUFBSSxVQUFVLG1EQUFkO0FBQ0EsRUFBQSxvQkFBb0IsQ0FBQyxVQUFELENBQXBCO0FBQ0EsU0FBTyxVQUFQO0FBQ0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBidWlsZEFwcCwgVGVzdEFwcGxpY2F0aW9uLCBBcHBCdWlsZGVyIH0gZnJvbSAnLi9hcHAtYnVpbGRlcic7XG5pbXBvcnQgeyBERUJVRyB9IGZyb20gJ0BnbGltbWVyL2Vudic7XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ29uc3RydWN0b3I8VD4ge1xuICBuZXcgKC4uLmFyZ3M6IGFueVtdKTogVDtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHJlbmRlck1vZHVsZShuYW1lOiBzdHJpbmcsIHJlbmRlclRlc3Q6IENvbnN0cnVjdG9yPFJlbmRlclRlc3Q+KSB7XG4gIFFVbml0Lm1vZHVsZShuYW1lKTtcblxuICBmb3IgKGxldCBwcm9wIGluIHJlbmRlclRlc3QucHJvdG90eXBlKSB7XG4gICAgY29uc3QgdGVzdCA9IHJlbmRlclRlc3QucHJvdG90eXBlW3Byb3BdO1xuXG4gICAgaWYgKGlzVGVzdEZ1bmN0aW9uKHRlc3QpICYmIHNob3VsZFJ1bih0ZXN0KSkge1xuICAgICAgWydydW50aW1lLWNvbXBpbGVyJywgJ2J5dGVjb2RlJ10uZm9yRWFjaChsb2FkZXIgPT4ge1xuICAgICAgICBsZXQgYXBwID0gYnVpbGRBcHAoeyBsb2FkZXIgfSk7XG4gICAgICAgIFFVbml0LnRlc3QoYFske2xvYWRlcn1dICR7cHJvcH1gLCBhc3NlcnQgPT4gdGVzdC5jYWxsKHsgYXBwIH0sIGFzc2VydCkpO1xuICAgICAgfSk7XG4gICAgfVxuICB9XG59XG5cbmZ1bmN0aW9uIHNob3VsZFJ1bih0ZXN0RnVuYzogYW55KTogYm9vbGVhbiB7XG4gIGlmICh0ZXN0RnVuY1snZGVidWcnXSAmJiAhREVCVUcpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHRydWU7XG59XG5cbmZ1bmN0aW9uIGlzVGVzdEZ1bmN0aW9uKFxuICB2YWx1ZTogYW55XG4pOiB2YWx1ZSBpcyAodGhpczogUmVuZGVyVGVzdCwgYXNzZXJ0OiB0eXBlb2YgUVVuaXQuYXNzZXJ0KSA9PiB2b2lkIHtcbiAgcmV0dXJuIHR5cGVvZiB2YWx1ZSA9PT0gJ2Z1bmN0aW9uJyAmJiB2YWx1ZS5pc1Rlc3Q7XG59XG5cbmV4cG9ydCBjbGFzcyBSZW5kZXJUZXN0IHtcbiAgYXBwOiBBcHBCdWlsZGVyPFRlc3RBcHBsaWNhdGlvbj47XG59XG5cbmZ1bmN0aW9uIHNldFRlc3RpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcik6IHZvaWQge1xuICBsZXQgdGVzdEZ1bmN0aW9uOiBUZXN0RnVuY3Rpb24gPSBkZXNjcmlwdG9yLnZhbHVlIGFzIFRlc3RGdW5jdGlvbjtcbiAgZGVzY3JpcHRvci5lbnVtZXJhYmxlID0gdHJ1ZTtcbiAgdGVzdEZ1bmN0aW9uWydpc1Rlc3QnXSA9IHRydWU7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgVGVzdE1ldGEge1xuICBba2V5OiBzdHJpbmddOiBhbnk7XG4gIGRlYnVnPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0RnVuY3Rpb24ge1xuICBba2V5OiBzdHJpbmddOiBib29sZWFuO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdGVzdChtZXRhOiBUZXN0TWV0YSk6IE1ldGhvZERlY29yYXRvcjtcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KFxuICBfdGFyZ2V0OiBPYmplY3QgfCBUZXN0TWV0YSxcbiAgX25hbWU/OiBzdHJpbmcsXG4gIGRlc2NyaXB0b3I/OiBQcm9wZXJ0eURlc2NyaXB0b3Jcbik6IFByb3BlcnR5RGVzY3JpcHRvciB8IHZvaWQ7XG5leHBvcnQgZnVuY3Rpb24gdGVzdCguLi5hcmdzOiBhbnlbXSkge1xuICBpZiAoYXJncy5sZW5ndGggPT09IDEpIHtcbiAgICBsZXQgbWV0YTogVGVzdE1ldGEgPSBhcmdzWzBdO1xuICAgIHJldHVybiAoX3RhcmdldDogT2JqZWN0LCBfbmFtZTogc3RyaW5nLCBkZXNjcmlwdG9yOiBQcm9wZXJ0eURlc2NyaXB0b3IpID0+IHtcbiAgICAgIGxldCB0ZXN0RnVuY3Rpb246IFRlc3RGdW5jdGlvbiA9IGRlc2NyaXB0b3IudmFsdWUgYXMgVGVzdEZ1bmN0aW9uO1xuICAgICAgT2JqZWN0LmtleXMobWV0YSkuZm9yRWFjaChrZXkgPT4gKHRlc3RGdW5jdGlvbltrZXldID0gbWV0YVtrZXldKSk7XG4gICAgICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgICB9O1xuICB9XG5cbiAgbGV0IGRlc2NyaXB0b3IgPSBhcmdzWzJdO1xuICBzZXRUZXN0aW5nRGVzY3JpcHRvcihkZXNjcmlwdG9yKTtcbiAgcmV0dXJuIGRlc2NyaXB0b3I7XG59XG4iXSwic291cmNlUm9vdCI6IiJ9