@toptal/davinci-qa
Version:
QA package to test your application
74 lines (59 loc) • 1.51 kB
JavaScript
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