@hyper-fetch/react
Version:
React hooks and utils for the hyper-fetch
44 lines (38 loc) • 1.25 kB
text/typescript
import type { RequestInstance } from "@hyper-fetch/core";
import { renderHook } from "@testing-library/react";
import type { UseRequestEventsPropsType, UseTrackedStateProps } from "helpers";
import { useTrackedState, useRequestEvents } from "helpers";
import { isEqual } from "utils";
export const renderUseRequestEvents = <Request extends RequestInstance>(
request: Request,
options?: Partial<UseRequestEventsPropsType<Request>>,
trackedOptions?: Partial<UseTrackedStateProps<Request>>,
) => {
const { client } = request;
const { fetchDispatcher: dispatcher, loggerManager } = client;
const logger = loggerManager.initialize(client, "test");
const { result } = renderHook(() => {
return useTrackedState({
logger,
request,
dispatcher,
initialResponse: null,
deepCompare: isEqual,
dependencyTracking: false,
...trackedOptions,
});
});
const [, actions, { setCacheData, getIsDataProcessing }] = result.current;
return renderHook((args?: Partial<Parameters<typeof useRequestEvents>[0]>) => {
return useRequestEvents({
logger,
actions,
dispatcher,
setCacheData,
getIsDataProcessing,
...options,
...args,
request,
});
});
};