verify-it
Version:
Randomised test property/data generation for NodeJS
35 lines (27 loc) • 1.01 kB
JavaScript
const hasFunction = require('./function/hasFunction')
const buildDelegatingFunction = (it, scenarioBuilder) => {
return function () {
const args = [].slice.call(arguments)
if (args.length < 2) {
throw new Error('A description and a body function are required.')
}
const description = args[0]
const generators = args.slice(1, args.length - 1)
const body = args[args.length - 1]
const scenario = scenarioBuilder.build(body, generators)
it(description, scenario)
}
}
const ScenarioRunnerFactory = {
create: (it, scenarioBuilder, additionalFunctionNames = []) => {
const verifyItFunction = buildDelegatingFunction(it, scenarioBuilder)
additionalFunctionNames.filter((key) => hasFunction(it, key))
.forEach((key) => {
const additionalFunction = it[key]
verifyItFunction[key] = buildDelegatingFunction(additionalFunction, scenarioBuilder)
})
return verifyItFunction
}
}
module.exports = ScenarioRunnerFactory