import gql from 'graphql-tag' ; import { execute , ApolloLink } from '../link' ; const sampleQuery = gql `
  query SampleQuery {
    stub {
      id
    }
  }
` ; export function checkCalls < T > ( calls = [ ] , results ) { expect ( calls . length ) . toBe ( results . length ) ; calls . map ( ( call , i ) => expect ( call . data ) . toEqual ( results [ i ] ) ) ; } export interface TestResultType { link : ApolloLink ; results ? : any [ ] ; query ? : string ; done ? : ( ) => void ; context ? : any ; variables ? : any ; } export function testLinkResults ( params ) { const { link , context , variables } = params ; const results = params . results || [ ] ; const query = params . query || sampleQuery ; const done = params . done || ( ( ) => void 0 ) ; const spy = jest . fn ( ) ; execute ( link , { query , context , variables } ) . subscribe ( { next : spy , error : error => { expect ( error ) . toEqual ( results . pop ( ) ) ; checkCalls ( spy . mock . calls [ 0 ] , results ) ; if ( done ) { done ( ) ; } } , complete : ( ) => { checkCalls ( spy . mock . calls [ 0 ] , results ) ; if ( done ) { done ( ) ; } } , } ) ; }