UNPKG

mocha-it-each

Version:
69 lines (68 loc) 1.95 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.itEach = void 0; const itEach = (title, data, callback, callbackMocha) => { if (callback.length === 2) { callItAsync(title, data, callback, callbackMocha || it); } else { callItSync(title, data, callback, callbackMocha || it); } }; exports.itEach = itEach; itEach.only = (title, data, callback) => { itEach(title, data, callback, it.only); }; itEach.skip = (title, data, callback) => { itEach(title, data, callback, it.skip); }; /** * Call mocha it function synchronously * * @template T type of parameters * @param {string} title title of the test * @param {T[]} data parameters * @param {FunctionCallback} callback function to test * @param {MochaCallback} callbackMocha mocha function to call * @returns {Void} void */ function callItSync(title, data, callback, callbackMocha) { data.forEach(function (val) { callbackMocha(renderTemplate(title, val), function () { return callback(val); }); }); } /** * Call mocha it function asynchronously * * @template T type of parameters * @param {string} title title of the test * @param {T[]} data parameters * @param {FunctionCallback} callback function to test * @param {MochaCallback} callbackMocha mocha function to call * @returns {Void} void */ function callItAsync(title, data, callback, callbackMocha) { data.forEach(function (val) { callbackMocha(renderTemplate(title, val), function (done) { callback(done, val); }); }); } /** * Add value to description * * @param {string} template title template * @param {any} value value from parameter * @returns {string} title */ function renderTemplate(template, value) { try { // ${value} is used with the value argument return eval('`' + template + '`;'); } catch (err) { return template; } }