supertest-graphql
Version:
Extends supertest to test a GraphQL endpoint
109 lines (108 loc) • 4.45 kB
TypeScript
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 {};