import { expect } from 'chai' ; import { describe , it } from 'mocha' ; import { dedent } from '../../__testUtils__/dedent' ; import { GraphQLObjectType } from '../../type/definition' ; import { GraphQLString } from '../../type/scalars' ; import { GraphQLSchema } from '../../type/schema' ; import { buildClientSchema } from '../buildClientSchema' ; import type { IntrospectionQuery } from '../getIntrospectionQuery' ; import { introspectionFromSchema } from '../introspectionFromSchema' ; import { printSchema } from '../printSchema' ; function introspectionToSDL ( introspection ) { return printSchema ( buildClientSchema ( introspection ) ) ; } describe ( 'introspectionFromSchema' , ( ) => { const schema = new GraphQLSchema ( { description : 'This is a simple schema' , query : new GraphQLObjectType ( { name : 'Simple' , description : 'This is a simple type' , fields : { string : { type : GraphQLString , description : 'This is a string field' , } , } , } ) , } ) ; it ( 'converts a simple schema' , ( ) => { const introspection = introspectionFromSchema ( schema ) ; expect ( introspectionToSDL ( introspection ) ) . to . deep . equal ( dedent `
      """This is a simple schema"""
      schema {
        query: Simple
      }

      """This is a simple type"""
      type Simple {
        """This is a string field"""
        string: String
      }
    ` ) ; } ) ; it ( 'converts a simple schema without descriptions' , ( ) => { const introspection = introspectionFromSchema ( schema , { descriptions : false , } ) ; expect ( introspectionToSDL ( introspection ) ) . to . deep . equal ( dedent `
      schema {
        query: Simple
      }

      type Simple {
        string: String
      }
    ` ) ; } ) ; } ) ;