import { ApolloServer } from '@apollo/server'; import { config } from 'dotenv'; import { GraphQLFormattedError } from 'graphql'; import { schema } from '~/graphql'; import { MockedContext } from './mockContext'; config(); interface BodyReponse { kind: 'single'; singleResult: { data: Results; errors: readonly GraphQLFormattedError[]; }; } interface QueryResult { body: BodyReponse; } export const testServer = async () => { const server = new ApolloServer({ schema: schema, }); const query = async ( query: string, variables?: any, contextValue?: MockedContext, ) => { return (await server.executeOperation( { query: `query ${query}`, variables }, { contextValue }, )) as QueryResult; }; const mutate = async ( mutation: string, variables?: any, contextValue?: MockedContext, ) => { return (await server.executeOperation( { query: `mutation ${mutation}`, variables }, { contextValue }, )) as QueryResult; }; return { query, mutate }; };