skillbox/client/cypress/support/graphql.ts

54 lines
1.4 KiB
TypeScript

// import {makeExecutableSchema} from '@graphql-tools/schema';
// import {addMocksToSchema} from '@graphql-tools/mock';
// import {graphql} from 'graphql';
// const schemaString = '';
interface GraphQLBody {
operationName: string;
}
interface CypressAliasRequest extends Request {
alias?: string;
}
interface GraphQLRequestPayload {
operationName: string;
query: string;
variables: any;
}
const isGraphQLBody = (body: any): body is GraphQLBody => {
return (body as GraphQLBody).operationName !== undefined;
};
export const hasOperationName = (req: Request, operationName: string) => {
const { body } = req;
return isGraphQLBody(body) && body.operationName === operationName;
};
export const aliasQuery = (req: CypressAliasRequest, operationName: string) => {
if (hasOperationName(req, operationName)) {
req.alias = `gql${operationName}Query`;
}
};
export const aliasMutation = (req: CypressAliasRequest, operationName: string) => {
if (hasOperationName(req, operationName)) {
req.alias = `gql${operationName}Mutation`;
}
};
// export const makeRequest = (req: CypressAliasRequest, alias: string) => {
// const schema = makeExecutableSchema({typeDefs: schemaString});
// const schemaWithMocks = addMocksToSchema({schema});
//
// const {body} = req;
//
// o;
// const paylaod = JSON.parse(body);
//
// return graphql(schemaWithMocks, query)
// .then(result => result);
// };