UNPKG

node-tdd

Version:

Drop in extension for mocha to abstract commonly used test setups

23 lines (21 loc) 826 B
import objectScan from 'object-scan'; export default (input, modifiers) => { objectScan(['**'], { filterFn: ({ key, value, parent }) => { const k = key[key.length - 1]; if (typeof k === 'string' && k.includes('|')) { const [newKey, ...modifierNames] = k.split('|'); const unknownModifiers = modifierNames .filter((n) => typeof modifiers[n] !== 'function'); if (unknownModifiers.length !== 0) { throw new Error(`Unknown Modifier(s) detected: ${unknownModifiers.join(', ')}`); } // eslint-disable-next-line no-param-reassign delete parent[k]; // eslint-disable-next-line no-param-reassign parent[newKey] = modifierNames .reduce((p, modifierName) => modifiers[modifierName](p), value); } } })(input); };