jest-allure2-reporter
Version:
Idiomatic Jest reporter for Allure Framework
30 lines (23 loc) • 825 B
text/typescript
import type { Helpers, HelpersCustomizer } from 'jest-allure2-reporter';
import type { HelpersExtractor } from '../types';
export function helpers(customizer: HelpersCustomizer | undefined): HelpersExtractor | undefined {
if (customizer == null) {
return undefined;
}
if (typeof customizer === 'function') {
return customizer;
}
const customizedKeys = Object.keys(customizer) as (keyof Helpers)[];
return (context) => {
const base = { ...context.value };
const baseKeys = Object.keys(base) as (keyof Helpers)[];
const allKeys = new Set([...baseKeys, ...customizedKeys]);
for (const key of allKeys) {
if (customizer[key]) {
const factory = customizer[key] as any;
base[key] = factory({ ...context, value: context.$[key] });
}
}
return base;
};
}