import { render as rtlRender, type RenderOptions } from "@testing-library/react"; import type { AppRouter } from "@thorium/.server/init/router"; import type { inferRouterOutputs } from "@thorium/utils/live-query/.server/types"; import { LiveQueryProvider } from "@thorium/utils/live-query/client/liveQueryContext"; import { MockNetRequestContext } from "@thorium/utils/live-query/client/mockContext"; import React, { type ReactNode, Suspense } from "react"; import { MemoryRouter as Router } from "react-router"; import { vi } from "vitest"; // @ts-expect-error global.IS_REACT_ACT_ENVIRONMENT = true; let netSendResponse: { response: any } = { response: "" }; const netSendSpy = vi.fn((_, __) => _ && __ && netSendResponse); function setNetSendResponse(response: any) { netSendResponse = { response }; } global.fetch = vi.fn((url: URL, { body }: { body: FormData }) => { if (url.pathname.toLowerCase() === "/netsend") { const bodyObj: any = {}; body.forEach((value, key) => { bodyObj[key] = value; }); const params = JSON.parse(bodyObj.params); netSendSpy(bodyObj.input, { ...params }); return Promise.resolve({ json: () => Promise.resolve(netSendResponse.response), text: () => Promise.resolve(netSendResponse.response), ok: true, }); } return Promise.resolve({ json: () => Promise.resolve({}), text: () => Promise.resolve({}), }); }) as any; type DeepPartial = T extends object ? { [P in keyof T]?: DeepPartial; } : T; interface OptionsInterface { initialRoutes?: string[]; netRequestData?: DeepPartial>; } async function render( ui: Parameters[0], options?: Omit & OptionsInterface, ) { const { initialRoutes = ["/"] } = options || {}; const Wrapper = ({ children }: { children: ReactNode }) => { return ( Suspended in test

}> ({ id: "test" })}> {children}
); }; const renderOutput = rtlRender(ui, { wrapper: Wrapper, ...options }); return { netSendSpy, setNetSendResponse, ...renderOutput, }; } export * from "@testing-library/react"; export { render };