import renderer, { act } from "react-test-renderer"; import { Ibdd_in, Ibdd_out, ITestImplementation, ITestSpecification, } from "Testeranto/src/CoreTypes"; export type IWhenShape = any; export type IThenShape = any; export type InitialState = unknown; export type IInput = Promise; export type ISelection = renderer.ReactTestRenderer; export type IStore = renderer.ReactTestRenderer; export type ISubject = renderer.ReactTestRenderer; export type ITestImpl< I extends Ibdd_in< renderer.ReactTestRenderer, renderer.ReactTestRenderer, renderer.ReactTestRenderer, renderer.ReactTestRenderer, unknown, unknown, unknown >, O extends Ibdd_out< Record, Record, Record, Record, Record > > = ITestImplementation; export type ITestSpec< I extends Ibdd_in< renderer.ReactTestRenderer, renderer.ReactTestRenderer, renderer.ReactTestRenderer, renderer.ReactTestRenderer, unknown, unknown, unknown >, O extends Ibdd_out< Record, Record, Record, Record, Record > > = ITestSpecification; export const testInterface = { beforeEach: async (CComponent) => { return new Promise((res, rej) => { let component; act(async () => { component = renderer.create(CComponent); }); res(component); }); }, andWhen: async function ( renderer: renderer.ReactTestRenderer, whenCB: () => (any) => any ): Promise { await act(() => whenCB()(renderer)); return renderer; }, };