@hyper-fetch/core
Version:
Cache, Queue and Persist your requests no matter if you are online or offline!
37 lines (32 loc) • 1.08 kB
text/typescript
import type { RequestInstance } from "request";
import { getProgressValue, getRequestEta } from "request";
export const testProgressSpy = (props: {
spy: () => void;
requestId: string;
request: RequestInstance;
startTimestamp: number;
progressTimestamp?: number;
total?: number;
loaded?: number;
timeLeft?: number;
}) => {
const { spy, requestId, request, startTimestamp, total, loaded, timeLeft, progressTimestamp } = props;
const totalValue = total ?? 1;
const loadedValue = loaded ?? 0;
const estimatedTime = getRequestEta(new Date(startTimestamp), new Date(progressTimestamp || startTimestamp), {
total: totalValue,
loaded: loadedValue,
}).timeLeft;
const timeToSend = loadedValue ? estimatedTime : null;
expect(spy).toHaveBeenCalledTimes(1);
expect(spy).toHaveBeenCalledWith({
request,
requestId,
loaded: loadedValue,
progress: getProgressValue({ total: totalValue, loaded: loadedValue }),
sizeLeft: totalValue - loadedValue,
startTimestamp,
timeLeft: timeLeft ?? timeToSend,
total: totalValue,
});
};