apollo-server/__mocks__/apollo-server-env.ts
2018-07-03 11:41:43 +02:00

61 lines
1.1 KiB
TypeScript

/// <reference types="jest" />
import {
fetch,
Request,
RequestInit,
Response,
Body,
BodyInit,
Headers,
HeadersInit,
URL,
URLSearchParams,
URLSearchParamsInit,
} from '../packages/apollo-server-env';
interface FetchMock extends jest.Mock<typeof fetch> {
mockResponseOnce(data?: any, headers?: HeadersInit, status?: number);
mockJSONResponseOnce(data?: object, headers?: HeadersInit);
}
const mockFetch = jest.fn<typeof fetch>() as FetchMock;
mockFetch.mockResponseOnce = (
data?: BodyInit,
headers?: Headers,
status: number = 200,
) => {
return mockFetch.mockImplementationOnce(async () => {
return new Response(data, {
status,
headers,
});
});
};
mockFetch.mockJSONResponseOnce = (
data = {},
headers?: Headers,
status?: number,
) => {
return mockFetch.mockResponseOnce(
JSON.stringify(data),
Object.assign({ 'Content-Type': 'application/json' }, headers),
status,
);
};
export {
mockFetch as fetch,
Request,
RequestInit,
Response,
Body,
BodyInit,
Headers,
HeadersInit,
URL,
URLSearchParams,
URLSearchParamsInit,
};