prisma-binding
prisma-binding copied to clipboard
Connect Prisma Bindings to mock server
I can mock a generic graphQL service with graphql-tools
I cannot use these tools with prisma binding as I cannot pass prisma-bindings an executable schema.
Current work around
create file schema.ts
const schemaPath = path.format({dir: __dirname, base: '../generated/prisma.graphql'}).toString();
export const typeDefs = gql(importSchema(schemaPath));
add below to package.json
"generate": "graphql-binding --language typescript --input src/mocks/Schema.ts --outputBinding
src/mocks/generated/MockPrismaBinding.ts"
Then create a file MockPrisma.ts
export const MockPrisma = ( mockList: IMocks, typeResolvers = undefined) => {
// Add mocks, modifies schema in place
const schema = makeExecutableSchema({ typeDefs, resolvers: typeResolvers});
addMockFunctionsToSchema({ schema , mocks: mockList});
const link = new SchemaLink({schema});
// custom binding generate with graphql-binding --language typescript
return new MockPrismaBindings.Binding(link);
};
Can now mock in tests like this
const prisma = MockPrisma({
CurationTag: (source, args) =>
({
curations: [],
user: null,
id: args.where.id,
name: 'comedy',
} as CurationTag)
});
const result = await Resolver.type(null, {ids:[]}, {db: prisma} as Context, null);