fava
Version:
A wannabe tiny largely-drop-in replacement for ava that works in the browser too.
32 lines (31 loc) • 862 B
JavaScript
/* IMPORT */
import chainer from 'call-chainer';
import Executor from './executor.js';
import Flags from './flags.js';
/* MAIN */
const Enhancer = {
/* API */
withFlags: (fn) => {
return chainer(Flags, (flags, ...args) => {
return fn(flags, ...args);
});
},
withHooks: (fn) => {
const makeHookSetter = (hook) => {
return (fn) => {
const suiter = Executor.get();
const describer = suiter.current;
describer.hooks[hook](fn);
};
};
Object.assign(fn, {
before: makeHookSetter('before'),
after: makeHookSetter('after'),
beforeEach: makeHookSetter('beforeEach'),
afterEach: makeHookSetter('afterEach')
});
return fn;
}
};
/* EXPORT */
export default Enhancer;