intern
Version:
Intern. A next-generation code testing stack for JavaScript.
102 lines • 4.15 kB
JavaScript
(function (factory) {
if (typeof module === "object" && typeof module.exports === "object") {
var v = factory(require, exports);
if (v !== undefined) module.exports = v;
}
else if (typeof define === "function" && define.amd) {
define(["require", "exports", "tslib", "@theintern/common", "../Suite", "../Test"], factory);
}
})(function (require, exports) {
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.createSuite = exports.isSuiteDescriptorFactory = exports.getInterface = void 0;
var tslib_1 = require("tslib");
var common_1 = require("@theintern/common");
var Suite_1 = tslib_1.__importDefault(require("../Suite"));
var Test_1 = tslib_1.__importStar(require("../Test"));
function registerSuite(name, descriptorOrFactory) {
return _registerSuite(common_1.global.intern, name, descriptorOrFactory);
}
exports.default = registerSuite;
function getInterface(executor) {
return {
registerSuite: function (name, descriptorOrFactory) {
return _registerSuite(executor, name, descriptorOrFactory);
}
};
}
exports.getInterface = getInterface;
function isSuiteDescriptorFactory(value) {
return typeof value === 'function';
}
exports.isSuiteDescriptorFactory = isSuiteDescriptorFactory;
function createSuite(name, parent, descriptor, SuiteClass, TestClass) {
var options = { name: name, parent: parent };
var tests;
if (isObjectSuiteDescriptor(descriptor)) {
var keys = Object.keys(descriptor).filter(function (key) { return key !== 'tests'; });
for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {
var key = keys_1[_i];
var optionsKey = key;
if (key === 'setup') {
parent.executor.emit('deprecated', {
original: 'Suite#setup',
replacement: 'Suite#before'
});
optionsKey = 'before';
}
else if (key === 'teardown') {
parent.executor.emit('deprecated', {
original: 'Suite#teardown',
replacement: 'Suite#after'
});
optionsKey = 'after';
}
options[optionsKey] =
descriptor[key];
}
tests = descriptor.tests;
}
else {
tests = descriptor;
}
var suite = new SuiteClass(options);
Object.keys(tests)
.map(function (name) {
if (name === 'before' ||
name === 'after' ||
name === 'setup' ||
name === 'teardown' ||
name === 'beforeEach' ||
name === 'afterEach') {
parent.executor.log("Warning: created test with lifecycle method name \"" + name + "\"");
}
var thing = tests[name];
if (Test_1.isTestFunction(thing)) {
return new TestClass({ name: name, test: thing, parent: suite });
}
return createSuite(name, suite, tslib_1.__assign({}, thing), SuiteClass, TestClass);
})
.forEach(function (suiteOrTest) {
suite.add(suiteOrTest);
});
return suite;
}
exports.createSuite = createSuite;
function isObjectSuiteDescriptor(value) {
return typeof value === 'object' && typeof value.tests === 'object';
}
function _registerSuite(executor, name, descriptorOrFactory) {
executor.addSuite(function (parent) {
var descriptor;
if (isSuiteDescriptorFactory(descriptorOrFactory)) {
descriptor = descriptorOrFactory();
}
else {
descriptor = descriptorOrFactory;
}
parent.add(createSuite(name, parent, descriptor, Suite_1.default, Test_1.default));
});
}
});
//# sourceMappingURL=object.js.map