UNPKG

supertest-graphql

Version:

Extends supertest to test a GraphQL endpoint

109 lines (108 loc) 4.45 kB
import { DocumentNode, ExecutionResult } from "graphql"; import { Disposable } from "graphql-ws"; import { ObjMap } from "graphql/jsutils/ObjMap"; import { Subscriber } from "zen-observable-ts"; import { Variables } from "./types"; export declare type WebSocketProtocol = "graphql-transport-ws" | "graphql-ws"; /** * The protocol implemented by the library `subscriptions-transport-ws` and * that is now considered legacy. */ export declare const LEGACY_WEBSOCKET_PROTOCOL = "graphql-ws"; export declare class SuperTestExecutionNextResult<TData> implements PromiseLike<ExecutionResult<TData>> { private pop; private _asserts; constructor(pop: Promise<ExecutionResult<TData>>); then<TResult1 = ExecutionResult<TData, ObjMap<unknown>>, TResult2 = never>(onfulfilled?: ((value: ExecutionResult<TData, ObjMap<unknown>>) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>; /** * Assert that there is no errors (`.errors` field) in response returned from the GraphQL API. */ expectNoErrors(): this; private assert; } export declare class SuperTestExecutionStreamingResult<TData> { private client; private queue; constructor(client: Disposable, subscriber: Subscriber<ExecutionResult<TData>>); /** * Get the next result that the operation is emitting. */ next(): SuperTestExecutionNextResult<TData>; /** * Flush the pending results from the queue. */ flush(): ExecutionResult<TData>[]; /** * Assert that no more results are pending. */ expectNoPending(): this; /** * Close the operation and the connection. */ close(): Promise<void>; } export declare class SuperTestExecutionStreamingResultPool { private _subscriptions; endAll(): Promise<void>; add(sub: SuperTestExecutionStreamingResult<any>): void; } declare type ConnectionParams = { [paramName: string]: any; }; export default class SuperTestWSGraphQL<TData, TVariables extends Variables> implements PromiseLike<SuperTestExecutionStreamingResult<TData>> { private _hostname; private _pool?; private _query?; private _operationName?; private _variables?; private _path; private _protocol; private _connectionParams?; constructor(_hostname: string, _pool?: SuperTestExecutionStreamingResultPool | undefined); /** * Send a GraphQL Query Document to the GraphQL server for execution. * @param operation - the query to execute as string or `DocumentNode` * @param variables - the variables for this query */ subscribe(operation: DocumentNode | string, variables?: TVariables): this; /** * Send a GraphQL Query Document to the GraphQL server for execution. * @param query - the query to execute as string or `DocumentNode` * @param variables - the variables for this query */ query(query: DocumentNode | string, variables?: TVariables): this; /** * Send a GraphQL Query Document to the GraphQL server for execution. * @param mutation - the mutation to execute as string or `DocumentNode` * @param variables - the variables for this mutation */ mutate(mutation: DocumentNode | string, variables?: TVariables): this; /** * Send a GraphQL Query Document to the GraphQL server for execution. * @param operation - the operation to execute as string or `DocumentNode` * @param variables - the variables for this operation */ operation(operation: DocumentNode | string, variables?: TVariables): this; /** * Set variables. * @param - variables */ variables(variables: TVariables): this; /** * Set the GraphQL endpoint path. * * @default "/graphql" */ path(path: string): this; /** * Set the GraphQL WebSocket porotocol. * You can set the legacy protocol with the variable `LEGACY_WEBSOCKET_PROTOCOL`. */ protocol(wsProtocol: WebSocketProtocol): this; /** * Set connection params. */ connectionParams(params: ConnectionParams): this; then<TResult1 = SuperTestExecutionStreamingResult<TData>, TResult2 = never>(onfulfilled?: ((value: SuperTestExecutionStreamingResult<TData>) => TResult1 | PromiseLike<TResult1>) | null, onrejected?: ((reason: any) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>; } export {};