Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | 2x 2x 2x 2x 8x 8x 8x 8x 8x 8x 8x 8x 8x 8x 2x 1x 1x 1x 2x 2x 1x 1x 2x 2x 1x 2x 1x 2x | "use strict"; const _ = require("lodash"); const U = require("glace-utils"); const CONF = require("../config"); /** * Iterates test chunks through all languages specified in config or options. * * It's applicable for multilingual application. If list of languages is * specified, it will be used firstly. Otherwise from configuration. * * @global * @function * @arg {object} [name="for language"] - Iterator namespace (will be report). * @arg {function[]} [fixtures] - Involved fixtures list. * @arg {object} [opts] - Options. * @arg {?string[]} [opts.languages] - List of tested languages. * @arg {number} [opts.chunkRetry=0] - Number of chunk retries on failure. * Overrides config value for concrete test chunks. * @arg {?number} [opts.chunkTimeout=null] - Time to execute chunk or hook, sec. * @arg {function} func - Function with test steps. * @example * * test("Some test", ctx => { * forEachLanguage(lang => { * chunk(() => { * // payload * }); * }); * }); */ const forEachLanguage = (name, fixtures, opts, func) => { if (_.isFunction(opts)) [func, opts] = [opts]; if (_.isPlainObject(fixtures)) [opts, fixtures] = [fixtures]; if (_.isFunction(fixtures)) [func, fixtures] = [fixtures]; if (_.isArray(name)) [fixtures, name] = [name]; if (_.isPlainObject(name)) [opts, name] = [name]; if (_.isFunction(name)) [func, name] = [name]; name = name || "for language"; opts = opts || {}; fixtures = fixtures || []; (opts.languages || CONF.test.languages).forEach(_langCb(name, fixtures, opts, func)); }; const _langCb = (name, fixtures, opts, func) => lang => { const _fixtures = [langFixture(lang)].concat(fixtures); scope(`${name} "${lang}"`, _fixtures, opts, () => { func(lang); }); }; const beforeCb = lang => ctx => () => { if (!CONF.test.curCase) return; ctx.oldLang = CONF.test.curCase.testParams.language; CONF.test.curCase.testParams.language = lang; }; const afterCb = ctx => () => { if (!CONF.test.curCase) return; CONF.test.curCase.testParams.language = ctx.oldLang; }; const langFixture = lang => { return U.makeFixture({ before: beforeCb(lang), after: afterCb }); }; module.exports = forEachLanguage; |