/* eslint-disable @typescript-eslint/no-empty-object-type */ /* eslint-disable @typescript-eslint/no-explicit-any */ import React from "react"; import renderer, { act } from "react-test-renderer"; import { Ibdd_in, Ibdd_out, ITestImplementation, ITestSpecification, } from "testeranto/src/CoreTypes"; import test from "testeranto/src/Node"; type IInput = React.MemoExoticComponent<() => JSX.Element>; export default < I extends Ibdd_in< IInput, renderer.ReactTestRenderer, renderer.ReactTestRenderer, renderer.ReactTestRenderer, unknown, unknown, unknown >, O extends Ibdd_out< Record, Record, Record, Record > >( testImplementations: ITestImplementation, testSpecifications: ITestSpecification, testInput: IInput ) => test(testInput, testSpecifications, testImplementations, { beforeEach: function ( CComponent, props ): Promise { let component; act(() => { component = renderer.create(React.createElement(CComponent, props, [])); }); return component; }, andWhen: async function ( renderer: renderer.ReactTestRenderer, whenCB: () => (a: any) => any ): Promise { await act(() => whenCB()(renderer)); return renderer; }, });