@glimmer/application-test-helpers
Version:
Test helpers for developing @glimmer/component and @glimmer/application
75 lines (61 loc) • 6.99 kB
JavaScript
;
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);
var _loop = function _loop(prop) {
var test = renderTest.prototype[prop];
if (isTestFunction(test) && shouldRun(test)) {
['runtime-compiler', 'bytecode'].forEach(function (loader) {
var app = (0, _appBuilder.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'] && !_env.DEBUG) {
return false;
}
return true;
}
function isTestFunction(value) {
return typeof value === 'function' && value.isTest;
}
var RenderTest = exports.RenderTest = function RenderTest() {};
function setTestingDescriptor(descriptor) {
var testFunction = descriptor.value;
descriptor.enumerable = true;
testFunction['isTest'] = true;
}
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,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3BhY2thZ2VzL0BnbGltbWVyL2FwcGxpY2F0aW9uLXRlc3QtaGVscGVycy9zcmMvcmVuZGVyLXRlc3QudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7O1FBT00sWSxHQUFBLFk7UUFxREEsSSxHQUFBLEk7O0FBNUROOztBQUNBOztBQU1NLFNBQUEsWUFBQSxDQUFBLElBQUEsRUFBQSxVQUFBLEVBQXdFO0FBQzVFLEVBQUEsS0FBSyxDQUFMLE1BQUEsQ0FBQSxJQUFBOztBQUQ0RSxNQUFBLEtBQUEsR0FBQSxTQUFBLEtBQUEsQ0FBQSxJQUFBLEVBQUE7QUFJMUUsUUFBTSxJQUFJLEdBQUcsVUFBVSxDQUFWLFNBQUEsQ0FBYixJQUFhLENBQWI7O0FBRUEsUUFBSSxjQUFjLENBQWQsSUFBYyxDQUFkLElBQXdCLFNBQVMsQ0FBckMsSUFBcUMsQ0FBckMsRUFBNkM7QUFDM0MsT0FBQSxrQkFBQSxFQUFBLFVBQUEsRUFBQSxPQUFBLENBQXlDLFVBQUEsTUFBQSxFQUFTO0FBQ2hELFlBQUksR0FBRyxHQUFHLDBCQUFTO0FBQUUsVUFBQSxNQUFNLEVBQU47QUFBRixTQUFULENBQVY7QUFDQSxRQUFBLEtBQUssQ0FBTCxJQUFBLENBQUEsTUFBQSxNQUFBLEdBQUEsSUFBQSxHQUFBLElBQUEsRUFBa0MsVUFBQSxNQUFBLEVBQU07QUFBQSxpQkFBSSxJQUFJLENBQUosSUFBQSxDQUFVO0FBQUUsWUFBQSxHQUFHLEVBQUg7QUFBRixXQUFWLEVBQUosTUFBSSxDQUFKO0FBQXhDLFNBQUE7QUFGRixPQUFBO0FBSUQ7QUFYeUUsR0FBQTs7QUFHNUUsT0FBSyxJQUFMLElBQUEsSUFBaUIsVUFBVSxDQUEzQixTQUFBLEVBQXVDO0FBQUEsSUFBQSxLQUFBLENBQTlCLElBQThCLENBQUE7QUFTdEM7QUFDRjs7QUFFRCxTQUFBLFNBQUEsQ0FBQSxRQUFBLEVBQWdDO0FBQzlCLE1BQUksUUFBUSxDQUFSLE9BQVEsQ0FBUixJQUFxQixDQUF6QixVQUFBLEVBQWlDO0FBQy9CLFdBQUEsS0FBQTtBQUNEOztBQUNELFNBQUEsSUFBQTtBQUNEOztBQUVELFNBQUEsY0FBQSxDQUFBLEtBQUEsRUFDWTtBQUVWLFNBQU8sT0FBQSxLQUFBLEtBQUEsVUFBQSxJQUErQixLQUFLLENBQTNDLE1BQUE7QUFDRDs7QUFFRCxJQUFhLFVBQWIsV0FBYSxVQUFiLEdBQUEsU0FBQSxVQUFBLEdBQUEsQ0FBQSxDQUFBOztBQUlBLFNBQUEsb0JBQUEsQ0FBQSxVQUFBLEVBQTREO0FBQzFELE1BQUksWUFBWSxHQUFpQixVQUFVLENBQTNDLEtBQUE7QUFDQSxFQUFBLFVBQVUsQ0FBVixVQUFBLEdBQUEsSUFBQTtBQUNBLEVBQUEsWUFBWSxDQUFaLFFBQVksQ0FBWixHQUFBLElBQUE7QUFDRDs7QUFpQkssU0FBQSxJQUFBLEdBQTZCO0FBQ2pDLE1BQUksU0FBQSxDQUFBLE1BQUEsS0FBSixDQUFBLEVBQXVCO0FBQ3JCLFFBQUksSUFBSSxHQUFBLFNBQUEsQ0FBQSxNQUFBLElBQUEsQ0FBQSxHQUFBLFNBQUEsR0FBQSxTQUFBLENBQVIsQ0FBUSxDQUFSO0FBQ0EsV0FBTyxVQUFBLE9BQUEsRUFBQSxLQUFBLEVBQUEsVUFBQSxFQUFtRTtBQUN4RSxVQUFJLFlBQVksR0FBaUIsVUFBVSxDQUEzQyxLQUFBO0FBQ0EsTUFBQSxNQUFNLENBQU4sSUFBQSxDQUFBLElBQUEsRUFBQSxPQUFBLENBQTBCLFVBQUEsR0FBQSxFQUFHO0FBQUEsZUFBSyxZQUFZLENBQVosR0FBWSxDQUFaLEdBQW9CLElBQUksQ0FBN0IsR0FBNkIsQ0FBN0I7QUFBN0IsT0FBQTtBQUNBLE1BQUEsb0JBQW9CLENBQXBCLFVBQW9CLENBQXBCO0FBSEYsS0FBQTtBQUtEOztBQUVELE1BQUksVUFBVSxHQUFBLFNBQUEsQ0FBQSxNQUFBLElBQUEsQ0FBQSxHQUFBLFNBQUEsR0FBQSxTQUFBLENBQWQsQ0FBYyxDQUFkO0FBQ0EsRUFBQSxvQkFBb0IsQ0FBcEIsVUFBb0IsQ0FBcEI7QUFDQSxTQUFBLFVBQUE7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGJ1aWxkQXBwLCBUZXN0QXBwbGljYXRpb24sIEFwcEJ1aWxkZXIgfSBmcm9tICcuL2FwcC1idWlsZGVyJztcbmltcG9ydCB7IERFQlVHIH0gZnJvbSAnQGdsaW1tZXIvZW52JztcblxuZXhwb3J0IGludGVyZmFjZSBDb25zdHJ1Y3RvcjxUPiB7XG4gIG5ldyAoLi4uYXJnczogYW55W10pOiBUO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gcmVuZGVyTW9kdWxlKG5hbWU6IHN0cmluZywgcmVuZGVyVGVzdDogQ29uc3RydWN0b3I8UmVuZGVyVGVzdD4pIHtcbiAgUVVuaXQubW9kdWxlKG5hbWUpO1xuXG4gIGZvciAobGV0IHByb3AgaW4gcmVuZGVyVGVzdC5wcm90b3R5cGUpIHtcbiAgICBjb25zdCB0ZXN0ID0gcmVuZGVyVGVzdC5wcm90b3R5cGVbcHJvcF07XG5cbiAgICBpZiAoaXNUZXN0RnVuY3Rpb24odGVzdCkgJiYgc2hvdWxkUnVuKHRlc3QpKSB7XG4gICAgICBbJ3J1bnRpbWUtY29tcGlsZXInLCAnYnl0ZWNvZGUnXS5mb3JFYWNoKGxvYWRlciA9PiB7XG4gICAgICAgIGxldCBhcHAgPSBidWlsZEFwcCh7IGxvYWRlciB9KTtcbiAgICAgICAgUVVuaXQudGVzdChgWyR7bG9hZGVyfV0gJHtwcm9wfWAsIGFzc2VydCA9PiB0ZXN0LmNhbGwoeyBhcHAgfSwgYXNzZXJ0KSk7XG4gICAgICB9KTtcbiAgICB9XG4gIH1cbn1cblxuZnVuY3Rpb24gc2hvdWxkUnVuKHRlc3RGdW5jOiBhbnkpOiBib29sZWFuIHtcbiAgaWYgKHRlc3RGdW5jWydkZWJ1ZyddICYmICFERUJVRykge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gaXNUZXN0RnVuY3Rpb24oXG4gIHZhbHVlOiBhbnlcbik6IHZhbHVlIGlzICh0aGlzOiBSZW5kZXJUZXN0LCBhc3NlcnQ6IHR5cGVvZiBRVW5pdC5hc3NlcnQpID0+IHZvaWQge1xuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnZnVuY3Rpb24nICYmIHZhbHVlLmlzVGVzdDtcbn1cblxuZXhwb3J0IGNsYXNzIFJlbmRlclRlc3Qge1xuICBhcHA6IEFwcEJ1aWxkZXI8VGVzdEFwcGxpY2F0aW9uPjtcbn1cblxuZnVuY3Rpb24gc2V0VGVzdGluZ0Rlc2NyaXB0b3IoZGVzY3JpcHRvcjogUHJvcGVydHlEZXNjcmlwdG9yKTogdm9pZCB7XG4gIGxldCB0ZXN0RnVuY3Rpb246IFRlc3RGdW5jdGlvbiA9IGRlc2NyaXB0b3IudmFsdWUgYXMgVGVzdEZ1bmN0aW9uO1xuICBkZXNjcmlwdG9yLmVudW1lcmFibGUgPSB0cnVlO1xuICB0ZXN0RnVuY3Rpb25bJ2lzVGVzdCddID0gdHJ1ZTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBUZXN0TWV0YSB7XG4gIFtrZXk6IHN0cmluZ106IGFueTtcbiAgZGVidWc/OiBib29sZWFuO1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIFRlc3RGdW5jdGlvbiB7XG4gIFtrZXk6IHN0cmluZ106IGJvb2xlYW47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KG1ldGE6IFRlc3RNZXRhKTogTWV0aG9kRGVjb3JhdG9yO1xuZXhwb3J0IGZ1bmN0aW9uIHRlc3QoXG4gIF90YXJnZXQ6IE9iamVjdCB8IFRlc3RNZXRhLFxuICBfbmFtZT86IHN0cmluZyxcbiAgZGVzY3JpcHRvcj86IFByb3BlcnR5RGVzY3JpcHRvclxuKTogUHJvcGVydHlEZXNjcmlwdG9yIHwgdm9pZDtcbmV4cG9ydCBmdW5jdGlvbiB0ZXN0KC4uLmFyZ3M6IGFueVtdKSB7XG4gIGlmIChhcmdzLmxlbmd0aCA9PT0gMSkge1xuICAgIGxldCBtZXRhOiBUZXN0TWV0YSA9IGFyZ3NbMF07XG4gICAgcmV0dXJuIChfdGFyZ2V0OiBPYmplY3QsIF9uYW1lOiBzdHJpbmcsIGRlc2NyaXB0b3I6IFByb3BlcnR5RGVzY3JpcHRvcikgPT4ge1xuICAgICAgbGV0IHRlc3RGdW5jdGlvbjogVGVzdEZ1bmN0aW9uID0gZGVzY3JpcHRvci52YWx1ZSBhcyBUZXN0RnVuY3Rpb247XG4gICAgICBPYmplY3Qua2V5cyhtZXRhKS5mb3JFYWNoKGtleSA9PiAodGVzdEZ1bmN0aW9uW2tleV0gPSBtZXRhW2tleV0pKTtcbiAgICAgIHNldFRlc3RpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICAgIH07XG4gIH1cblxuICBsZXQgZGVzY3JpcHRvciA9IGFyZ3NbMl07XG4gIHNldFRlc3RpbmdEZXNjcmlwdG9yKGRlc2NyaXB0b3IpO1xuICByZXR1cm4gZGVzY3JpcHRvcjtcbn1cbiJdLCJzb3VyY2VSb290IjoiIn0=