UNPKG

@toptal/davinci-qa

Version:
74 lines (59 loc) 1.51 kB
import argsToCLIRules from './jest-args-to-cli-converters.js' const pipe = (...fns) => arg => fns.reduce((result, func) => func(result), arg) const aliasToOptionMap = { b: 'bail', c: 'config', e: 'expand', w: 'maxWorkers', o: 'onlyChanged', i: 'runInBand', t: 'testNamePattern', u: 'updateSnapshot', v: 'version', } const convertAliasesIntoJestOptions = options => { const resultOptions = {} for (const [key, value] of Object.entries(options)) { if (aliasToOptionMap[key]) { const fullOptionName = aliasToOptionMap[key] resultOptions[fullOptionName] = value } else { resultOptions[key] = value } } return resultOptions } const convertStringToBoolean = options => { const resultOptions = {} for (const [key, value] of Object.entries(options)) { if (value === 'true') { resultOptions[key] = true } else if (value === 'false') { resultOptions[key] = false } else { resultOptions[key] = value } } return resultOptions } const applyOptionRules = async options => { const resultOptions = {} for (const [key, value] of Object.entries(options)) { if (argsToCLIRules[key]) { resultOptions[key] = await argsToCLIRules[key](value) } else { resultOptions[key] = value } } return resultOptions } const toJestCLIArguments = options => pipe( convertAliasesIntoJestOptions, convertStringToBoolean, applyOptionRules )(options) export default toJestCLIArguments