UNPKG

futoin-asyncsteps

Version:

Mimic traditional threads in single threaded event loop

64 lines (60 loc) 1.92 kB
"use strict"; /** * @file Module's entry point and AsyncSteps class itself * @author Andrey Galkin <andrey@futoin.org> * * * Copyright 2018 FutoIn Project (https://futoin.org) * Copyright 2018 Andrey Galkin <andrey@futoin.org> * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ var AsyncSteps = require('./AsyncSteps'); /* globals ExecFunc */ /* globals ErrorFunc */ /** * Mocha-compatible test case based on AsyncSteps. * * Example: * ```javascript * it('should ...', $as_test( (as) => {}, (as, err) => {} ); * ``` * @param {ExecFunc} func - function defining non-blocking step execution * @param {ErrorFunc} [onerror] - Optional, provide error handler * @returns {Function} suitable for `it()` Mocha call * @alias $as_test */ module.exports = function (func, onerror) { return function (done) { var _this = this; var as = new AsyncSteps(); as.add(function (as) { as.add(function (as) { func.call(_this, as); if (onerror) { as.add(function (as) { as.error('NegativeTestMustThrow'); }); } }, onerror); }, function (as, err) { console.log("ERROR: ".concat(err, " (").concat(as.state.error_info, ")")); done(as.state.last_exception || new Error('Generic Fail')); }); as.add(function (as) { return done(); }); as.execute(); }; }; //# sourceMappingURL=testcase.js.map