graphile-test
Version:
PostGraphile Testing
42 lines (41 loc) • 2.08 kB
TypeScript
import type { GraphileConfig } from 'graphile-config';
import type { DocumentNode, GraphQLError } from 'graphql';
/**
* Variables type that accepts plain objects and interfaces without requiring
* an explicit index signature. Using `Record<string, any>` allows TypeScript
* to accept typed interfaces like { username: string } since `any` is bi-directionally
* assignable to all types.
*/
export type Variables = Record<string, any>;
export interface GraphQLQueryOptions<TVariables extends Variables = Variables> {
query: string | DocumentNode;
variables?: TVariables;
commit?: boolean;
reqOptions?: Record<string, unknown>;
}
export interface GraphQLTestContext {
setup: () => Promise<void>;
teardown: () => Promise<void>;
query: <TResult = unknown, TVariables extends Variables = Variables>(opts: GraphQLQueryOptions<TVariables>) => Promise<TResult>;
}
/**
* Input for GraphQL test connections.
*/
export interface GetConnectionsInput {
useRoot?: boolean;
schemas: string[];
authRole?: string;
/**
* V5 preset configuration.
* Can include extends, plugins, schema options, etc.
*/
preset?: GraphileConfig.Preset;
}
export interface GraphQLResponse<T> {
data?: T;
errors?: readonly GraphQLError[];
}
export type GraphQLQueryFnObj = <TResult = unknown, TVariables extends Variables = Variables>(opts: GraphQLQueryOptions<TVariables>) => Promise<GraphQLResponse<TResult>>;
export type GraphQLQueryFn = <TResult = unknown, TVariables extends Variables = Variables>(query: string | DocumentNode, variables?: TVariables, commit?: boolean, reqOptions?: Record<string, unknown>) => Promise<GraphQLResponse<TResult>>;
export type GraphQLQueryUnwrappedFnObj = <TResult = unknown, TVariables extends Variables = Variables>(opts: GraphQLQueryOptions<TVariables>) => Promise<TResult>;
export type GraphQLQueryUnwrappedFn = <TResult = unknown, TVariables extends Variables = Variables>(query: string | DocumentNode, variables?: TVariables, commit?: boolean, reqOptions?: Record<string, unknown>) => Promise<TResult>;