package Ġio . github . rem en . graphql kotlin . output types Ċ Ċ import Ġcom . fasterxml . jackson . databind . JsonNode Ċ import Ġgraphql . Execution Input Ċ import Ġgraphql . GraphQL Ċ import Ġio . github . rem en . graphql kotlin .* Ċ import Ġkotlinx . coroutines . experimental . delay Ċ import Ġkotlinx . coroutines . experimental . future . await Ċ import Ġkotlinx . coroutines . experimental . run Blocking Ċ import Ġorg . assertj . core . api . Assertions . assertThat Ċ import Ġorg . jetbrains . spe k . api . Spe k Ċ import Ġorg . jetbrains . spe k . api . dsl . describe Ċ import Ġorg . jetbrains . spe k . api . dsl . it Ċ Ċ object ĠS uspend Field Test Ġ: ĠSpe k ({ ĊĠĠĠ Ġclass ĠS uspend able Query Ġ{ ĊĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġsuspend ( delay : ĠLong ): ĠLong Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġdelay ( delay ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġdelay ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġvar Ġgraph QL : ĠGraphQL ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġquery Type : ĠType ? Ġ= Ġnull ĊĠĠĠ Ġbefore Group Ġ{ ĊĠĠĠĠĠĠĠ Ġgraph QL Ġ= Ġcreate GraphQL ( Suspend able Query :: class ) ĊĠĠĠĠĠĠĠ Ġquery Type Ġ= Ġget Schema ( graph QL !! ). query Type ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġdescribe (" the Ġ' suspend ' Ġfield ") Ġ{ ĊĠĠĠĠĠĠĠ Ġvar Ġfield : ĠField ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġbefore Group Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfield Ġ= Ġquery Type !!. fields !!. find Ġ{ Ġit . name Ġ== Ġ" suspend " Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" exists ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( field ). isNotNull () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" has Ġtype ĠNON _ NULL ĠInteger ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġfield !!. type ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( type . kind ). isEqualTo (" NON _ NULL ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġof Type Ġ= Ġtype . of Type !! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( of Type . name ). isEqualTo (" Long ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġit (" can Ġbe Ġqueried Ġagainst ") Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrun Blocking Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġgraph QL !!. execute Suspend ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ= Ġ"{ Ġsuspend ( delay : Ġ 1 0 ) Ġ} ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot Ġ= ĠS uspend able Query () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġjson Ġ= ĠOBJECT _ MAP PER . convert Value ( result , ĠJsonNode :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( json [" errors "]). isNull OrEmpty () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠassertThat ( json [" data "][" suspend "]. as Long ()). isEqualTo ( 1 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }) Ċ