/* eslint-disable @typescript-eslint/no-explicit-any */ import type * as core from "express-serve-static-core" import { RequestWithJwt } from "../../components/types/types" import { Mock } from "vitest" export function asMock<T>(value: T): Mock { return value as Mock } export function mockRequestWithJwt(): RequestWithJwt<core.Query, any> { return <RequestWithJwt<core.Query, any>>{} } export function mockResponse(): core.Response { const response = { status: undefined, json: undefined, end: undefined, } const mockImplementation = () => { return response } response.status = vi.fn().mockImplementation(mockImplementation) response.json = vi.fn() response.end = vi.fn() return <core.Response>response } export function getResolvingPromise<T>(value?: T): Promise<T> { return new Promise((resolve) => { resolve(value) }) } export function getMockCallArgument<T>( value: any, call: number, argument: number, ): T { const calls = asMock(value).mock.calls expect(calls.length).toBeGreaterThanOrEqual(call) expect(calls[call].length).toBeGreaterThanOrEqual(argument) return asMock(value).mock.calls[call][argument] as T }