@tsdi/unit
Version:
unit testing framework, base on AOP, Ioc container
135 lines (133 loc) • 4.13 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.AfterEach = exports.After = exports.AfterAll = exports.BeforeEach = exports.Before = exports.BeforeAll = exports.Test = exports.createTestDecorator = exports.Suite = exports.createSuiteDecorator = void 0;
var tslib_1 = require("tslib");
var ioc_1 = require("@tsdi/ioc");
/**
* create filed decorator.
*
* @export
* @template T
* @param {string} [SuiteType]
* @param {ArgsIteratorAction<T>[]} [actions]
* @param {MetadataExtends<T>} [metaExtends]
* @returns {IFiledDecorator<T>}
*/
function createSuiteDecorator(actions, metaExtends) {
return ioc_1.createClassDecorator('Suite', tslib_1.__spreadArrays((actions || []), [
function (ctx, next) {
var arg = ctx.currArg;
if (ioc_1.isString(arg)) {
ctx.metadata.describe = arg;
ctx.next(next);
}
},
function (ctx, next) {
var arg = ctx.currArg;
if (ioc_1.isNumber(arg)) {
ctx.metadata.timeout = arg;
ctx.next(next);
}
}
]), function (metadata) {
if (metaExtends) {
metaExtends(metadata);
}
metadata.singleton = true;
return metadata;
});
}
exports.createSuiteDecorator = createSuiteDecorator;
exports.Suite = createSuiteDecorator();
/**
* create Test decorator.
*
* @export
* @template T
* @param {string} [TestType]
* @param {MetadataAdapter} [actions]
* @param {MetadataExtends<T>} [metaExtends]
* @returns {ITestDecorator<T>}
*/
function createTestDecorator(name, actions, finallyActions, metaExtends) {
return ioc_1.createMethodDecorator(name, tslib_1.__spreadArrays((actions ? (ioc_1.isArray(actions) ? actions : [actions]) : []), [
function (ctx, next) {
var arg = ctx.currArg;
if (ioc_1.isNumber(arg)) {
ctx.metadata.timeout = arg;
ctx.next(next);
}
}
], (finallyActions ? (ioc_1.isArray(finallyActions) ? finallyActions : [finallyActions]) : [])), metaExtends);
}
exports.createTestDecorator = createTestDecorator;
/**
* @Test decorator. define the method of class as unit test case. Describe a specification or test-case with the given `title` and callback `fn` acting
* as a thunk.
*
* @export
* @interface ITestDecorator
* @template T
*/
exports.Test = createTestDecorator('TestCase', function (ctx, next) {
var arg = ctx.currArg;
if (ioc_1.isString(arg)) {
ctx.metadata.title = arg;
ctx.next(next);
}
}, function (ctx, next) {
var arg = ctx.currArg;
if (ioc_1.isNumber(arg)) {
ctx.metadata.setp = arg;
ctx.next(next);
}
});
/**
* @BeforeAll decorator. define the method of class as unit test action run before all test case.
*
* @export
* @interface IBeforeTestDecorator
* @template T
*/
exports.BeforeAll = createTestDecorator('BeforeAll');
/**
* @BeforeAll decorator. define the method of class as unit test action run before all test case.
*
* @export
* @interface IBeforeTestDecorator
* @template T
*/
exports.Before = exports.BeforeAll;
/**
* @BeforeEach decorator. define the method of class as unit test action run before each test case.
*
* @export
* @interface IBeforeEachTestDecorator
* @template T
*/
exports.BeforeEach = createTestDecorator('TestBeforeEach');
/**
* @AfterAll decorator. define the method of class as unit test action run after all test case.
*
* @export
* @interface IAfterTestDecorator
* @template T
*/
exports.AfterAll = createTestDecorator('AfterAll');
/**
* @AfterAll decorator. define the method of class as unit test action run after all test case.
*
* @export
* @interface IAfterTestDecorator
* @template T
*/
exports.After = exports.AfterAll;
/**
* @AfterEach decorator. define the method of class as unit test action run after each test case.
*
* @export
* @interface IAfterEachTestDecorator
* @template T
*/
exports.AfterEach = createTestDecorator('TestAfterEach');
//# sourceMappingURL=sourcemaps/decorators.js.map