SimpleGraphQLClient

SimpleGraphQLClient

SimpleGraphQLClient

A minimalistic GraphQL client for populating and querying test data.

Signature

class SimpleGraphQLClient {
  constructor(vendureConfig: Required<VendureConfig>, apiUrl: string = '')
  setAuthToken(token: string) => ;
  setChannelToken(token: string | null) => ;
  getAuthToken() => string;
  async query(query: DocumentNode, variables?: V, queryParams?: QueryParams) => Promise<T>;
  async queryStatus(query: DocumentNode, variables?: V) => Promise<number>;
  async asUserWithCredentials(username: string, password: string) => ;
  async asSuperAdmin() => ;
  async asAnonymousUser() => ;
  fileUploadMutation(options: {
        mutation: DocumentNode;
        filePaths: string[];
        mapVariables: (filePaths: string[]) => any;
    }) => Promise<any>;
}

Members

constructor

method
type:
(vendureConfig: Required<VendureConfig>, apiUrl: string = '') => SimpleGraphQLClient

setAuthToken

method
type:
(token: string) =>
Sets the authToken to be used in each GraphQL request.

setChannelToken

method
type:
(token: string | null) =>
Sets the authToken to be used in each GraphQL request.

getAuthToken

method
type:
() => string
Returns the authToken currently being used.

query

async method
type:
(query: DocumentNode, variables?: V, queryParams?: QueryParams) => Promise<T>
Performs both query and mutation operations.

queryStatus

async method
type:
(query: DocumentNode, variables?: V) => Promise<number>
Performs a query or mutation and returns the resulting status code.

asUserWithCredentials

async method
type:
(username: string, password: string) =>
Attemps to log in with the specified credentials.

asSuperAdmin

async method
type:
() =>
Logs in as the SuperAdmin user.

asAnonymousUser

async method
type:
() =>
Logs out so that the client is then treated as an anonymous user.

fileUploadMutation

method
type:
(options: { mutation: DocumentNode; filePaths: string[]; mapVariables: (filePaths: string[]) => any; }) => Promise<any>

Uses curl to post a multipart/form-data request to the server. Due to differences between the Node and browser environments, we cannot just use an existing library like apollo-upload-client.

Upload spec: https://github.com/jaydenseric/graphql-multipart-request-spec Discussion of issue: https://github.com/jaydenseric/apollo-upload-client/issues/32