import { expect } from 'chai' ; import { describe , it } from 'mocha' ; import { parse } from '../../language/parser' ; import { getOperationAST } from '../getOperationAST' ; describe ( 'getOperationAST' , ( ) => { it ( 'Gets an operation from a simple document' , ( ) => { const doc = parse ( '{ field }' ) ; expect ( getOperationAST ( doc ) ) . to . equal ( doc . definitions [ 0 ] ) ; } ) ; it ( 'Gets an operation from a document with named op (mutation)' , ( ) => { const doc = parse ( 'mutation Test { field }' ) ; expect ( getOperationAST ( doc ) ) . to . equal ( doc . definitions [ 0 ] ) ; } ) ; it ( 'Gets an operation from a document with named op (subscription)' , ( ) => { const doc = parse ( 'subscription Test { field }' ) ; expect ( getOperationAST ( doc ) ) . to . equal ( doc . definitions [ 0 ] ) ; } ) ; it ( 'Does not get missing operation' , ( ) => { const doc = parse ( 'type Foo { field: String }' ) ; expect ( getOperationAST ( doc ) ) . to . equal ( null ) ; } ) ; it ( 'Does not get ambiguous unnamed operation' , ( ) => { const doc = parse ( `
      { field }
      mutation Test { field }
      subscription TestSub { field }
    ` ) ; expect ( getOperationAST ( doc ) ) . to . equal ( null ) ; } ) ; it ( 'Does not get ambiguous named operation' , ( ) => { const doc = parse ( `
      query TestQ { field }
      mutation TestM { field }
      subscription TestS { field }
    ` ) ; expect ( getOperationAST ( doc ) ) . to . equal ( null ) ; } ) ; it ( 'Does not get misnamed operation' , ( ) => { const doc = parse ( `
      { field }

      query TestQ { field }
      mutation TestM { field }
      subscription TestS { field }
    ` ) ; expect ( getOperationAST ( doc , 'Unknown' ) ) . to . equal ( null ) ; } ) ; it ( 'Gets named operation' , ( ) => { const doc = parse ( `
      query TestQ { field }
      mutation TestM { field }
      subscription TestS { field }
    ` ) ; expect ( getOperationAST ( doc , 'TestQ' ) ) . to . equal ( doc . definitions [ 0 ] ) ; expect ( getOperationAST ( doc , 'TestM' ) ) . to . equal ( doc . definitions [ 1 ] ) ; expect ( getOperationAST ( doc , 'TestS' ) ) . to . equal ( doc . definitions [ 2 ] ) ; } ) ; } ) ;