/* Ċ Ġ* ĠCopyright Ġ 2 0 2 0 ĠExp edia , ĠInc Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠ Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . exp edi ag roup . graphql . plugin . generator . types Ċ Ċ import Ġcom . exp edi ag roup . graphql . plugin . generator . GraphQL Client Generator Ċ import Ġcom . exp edi ag roup . graphql . plugin . generator . GraphQL Client Generator Config Ċ import Ġcom . exp edi ag roup . graphql . plugin . generator . GraphQL Client Type Ċ import Ġcom . exp edi ag roup . graphql . plugin . generator . test Schema Ċ import Ġcom . exp edi ag roup . graphql . plugin . generator . verify Generated File Spec Contents Ċ import Ġorg . junit . jupiter . api . Test Ċ import Ġorg . junit . jupiter . api . assert Throws Ċ import Ġorg . junit . jupiter . api . io . TempDir Ċ import Ġjava . io . File Ċ import Ġjava . nio . file . Path Ċ import Ġkotlin . test . assertEquals Ċ Ċ class ĠGenerate GraphQL Client IT Ġ{ ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġgenerated Ġclient Ġdoes Ġnot Ġchange Ġthe Ġoperation Ġname `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Query File Spec Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . exp edi ag roup . graphql . plugin . generator . integration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . GraphQL Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . execute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . types . GraphQL Response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠMI _ XE _ D CA _ SE _ QUERY : ĠString Ġ= Ġ" query Ġmi X ED ca SE Query Ġ{\ n Ġ Ġscalar Query Ġ{\ n ĠĠĠ Ġname \ n Ġ Ġ}\ n }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠMi X ED ca SE Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġgraph QL Client : ĠGraphQL Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġexecute (): ĠGraphQL Response < Mi X ED ca SE Query . Result > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph QL Client . execute ( MI _ XE _ D CA _ SE _ QUERY , Ġ" mi X ED ca SE Query ", Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠWrapper Ġthat Ġholds Ġall Ġsupported Ġscalar Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠScalar Wrapper ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠUTF - 8 Ġcharacter Ġsequence ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthat Ġreturns Ġwrapper Ġobject Ġwith Ġall Ġsupported Ġscalar Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscalar Query : ĠMi X ED ca SE Query . Scalar Wrapper ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġmi X ED ca SE Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscalar Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġverify Generated File Spec Contents ( query , Ġexpected Query File Spec ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġgenerated Ġclient Ġdoes Ġnot Ġrequire Ġoperation Ġname ` (@ TempDir Ġtemp Dir : ĠPath ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Query File Spec Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . exp edi ag roup . graphql . plugin . generator . integration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . GraphQL Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . execute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . types . GraphQL Response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠAN ONY MO US _ TEST _ QUERY : ĠString Ġ= Ġ" query Ġ{\ n Ġ Ġscalar Query Ġ{\ n ĠĠĠ Ġname \ n Ġ Ġ}\ n }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠAn onymous Test Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġgraph QL Client : ĠGraphQL Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġexecute (): ĠGraphQL Response < Anonymous Test Query . Result > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph QL Client . execute ( AN ONY MO US _ TEST _ QUERY , Ġnull , Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠWrapper Ġthat Ġholds Ġall Ġsupported Ġscalar Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠScalar Wrapper ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠUTF - 8 Ġcharacter Ġsequence ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthat Ġreturns Ġwrapper Ġobject Ġwith Ġall Ġsupported Ġscalar Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscalar Query : ĠAn onymous Test Query . Scalar Wrapper ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscalar Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġtest Directory Ġ= Ġtemp Dir . to File () ĊĠĠĠĠĠĠĠ Ġval Ġquery File Ġ= ĠFile ( test Directory , Ġ" anonymous Test Query . graphql ") ĊĠĠĠĠĠĠĠ Ġquery File . delete On Exit () ĊĠĠĠĠĠĠĠ Ġquery File . write Text ( query ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠGraphQL Client Generator ( test Schema (), ĠGraphQL Client Generator Config ( packageName Ġ= Ġ" com . exp edi ag roup . graphql . plugin . generator . integration ")) ĊĠĠĠĠĠĠĠ Ġval Ġfile Specs Ġ= Ġgenerator . generate ( listOf ( query File )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġfile Specs . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Query File Spec , Ġfile Specs [ 0 ]. toString (). trim ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġwe Ġcan Ġgenerate Ġobjects Ġusing Ġaliases `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . exp edi ag roup . graphql . plugin . generator . integration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . GraphQL Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . execute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . types . GraphQL Response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . Boolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠA LI AS _ TEST _ QUERY : ĠString Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" query ĠAlias Test Query Ġ{\ n Ġ Ġfirst : Ġinput Object Query ( criteria : Ġ{ Ġmin : Ġ 1 . 0 , Ġmax : Ġ 5 . 0 Ġ} Ġ) \ n Ġ Ġsecond : Ġinput Object Query ( criteria : Ġ{ Ġmin : Ġ 5 . 0 , Ġmax : Ġ 1 0 . 0 Ġ} Ġ) \ n }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠAlias Test Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġgraph QL Client : ĠGraphQL Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġexecute (): ĠGraphQL Response < Alias Test Query . Result > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph QL Client . execute ( ALIAS _ TEST _ QUERY , Ġ" Alias Test Query ", Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthat Ġaccepts Ġsome Ġinput Ġarguments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfirst : ĠBoolean , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthat Ġaccepts Ġsome Ġinput Ġarguments ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġsecond : ĠBoolean ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery ĠAlias Test Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfirst : Ġinput Object Query ( criteria : Ġ{ Ġmin : Ġ 1 . 0 , Ġmax : Ġ 5 . 0 Ġ} Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsecond : Ġinput Object Query ( criteria : Ġ{ Ġmin : Ġ 5 . 0 , Ġmax : Ġ 1 0 . 0 Ġ} Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġverify Generated File Spec Contents ( query , Ġexpected ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġexception Ġis Ġthrown Ġwhen Ġattempting Ġto Ġselect Ġdeprecated Ġfield `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġinvalid Query Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery ĠDeprecated Field Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeprecated Query ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ ĠassertThrows < RuntimeException > Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġverify Generated File Spec Contents ( invalid Query , Ġ" will Ġthrow Ġexception ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġobject Ġwith Ġdeprecated Ġfields Ġis Ġgenerated Ġif Ġexplicitly Ġconfigured `() Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . exp edi ag roup . graphql . plugin . generator . integration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . GraphQL Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . execute ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . types . GraphQL Response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . Deprecated ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠDE PRECATED _ FIELD _ QUERY : ĠString Ġ= Ġ" query ĠDeprecated Field Query Ġ{\ n Ġ Ġdeprecated Query \ n }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠDeprecated Field Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġgraph QL Client : ĠGraphQL Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġexecute (): ĠGraphQL Response < Deprecated Field Query . Result > Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġgraph QL Client . execute ( DEPRECATED _ FIELD _ QUERY , Ġ" Deprecated Field Query ", Ġnull ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠDeprecated Ġquery Ġthat Ġshould Ġnot Ġbe Ġused Ġanymore ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ@ Deprecated ( message Ġ= Ġ" old Ġquery Ġshould Ġnot Ġbe Ġused ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdeprecated Query : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġinvalid Query Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery ĠDeprecated Field Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdeprecated Query ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġverify Generated File Spec Contents ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġinvalid Query , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġexpected , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraphQL Client Generator Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName Ġ= Ġ" com . exp edi ag roup . graphql . plugin . generator . integration ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġallow Deprecated Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġwe Ġcan Ġgenerate Ġk tor Ġbased Ġclient ` (@ TempDir Ġtemp Dir : ĠPath ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Query File Spec Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . exp edi ag roup . graphql . plugin . generator . integration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . GraphQL K tor Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . types . GraphQL Response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġio . ktor . client . request . HttpRequest Builder ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . Unit ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠAN ONY MO US _ TEST _ QUERY : ĠString Ġ= Ġ" query Ġ{\ n Ġ Ġscalar Query Ġ{\ n ĠĠĠ Ġname \ n Ġ Ġ}\ n }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠAn onymous Test Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġgraph QL Client : ĠGraphQL K tor Client < *> ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġexecute ( request Builder : ĠHttpRequest Builder . () Ġ-> ĠUnit Ġ= Ġ{} ): ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGraphQL Response < Anonymous Test Query . Result > Ġ= Ġgraph QL Client . execute ( AN ONY MO US _ TEST _ QUERY , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġrequest Builder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠWrapper Ġthat Ġholds Ġall Ġsupported Ġscalar Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠScalar Wrapper ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠUTF - 8 Ġcharacter Ġsequence ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthat Ġreturns Ġwrapper Ġobject Ġwith Ġall Ġsupported Ġscalar Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscalar Query : ĠAn onymous Test Query . Scalar Wrapper ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscalar Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġtest Directory Ġ= Ġtemp Dir . to File () ĊĠĠĠĠĠĠĠ Ġval Ġquery File Ġ= ĠFile ( test Directory , Ġ" anonymous Test Query . graphql ") ĊĠĠĠĠĠĠĠ Ġquery File . delete On Exit () ĊĠĠĠĠĠĠĠ Ġquery File . write Text ( query ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠGraphQL Client Generator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Schema (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraphQL Client Generator Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName Ġ= Ġ" com . exp edi ag roup . graphql . plugin . generator . integration ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Type Ġ= ĠGraphQL Client Type . KT OR ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Specs Ġ= Ġgenerator . generate ( listOf ( query File )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġfile Specs . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Query File Spec , Ġfile Specs [ 0 ]. toString (). trim ()) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Test ĊĠĠĠ Ġfun Ġ` verify Ġwe Ġcan Ġgenerate Ġspring Ġweb client Ġbased Ġclient ` (@ TempDir Ġtemp Dir : ĠPath ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġexpected Query File Spec Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpackage Ġcom . exp edi ag roup . graphql . plugin . generator . integration ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . client . GraphQL Web Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġcom . exp edi ag roup . graphql . types . GraphQL Response ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . String ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġkotlin . Unit ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġimport Ġorg . springframework . web . reactive . function . client . Web Client ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġconst Ġval ĠAN ONY MO US _ TEST _ QUERY : ĠString Ġ= Ġ" query Ġ{\ n Ġ Ġscalar Query Ġ{\ n ĠĠĠ Ġname \ n Ġ Ġ}\ n }" ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclass ĠAn onymous Test Query ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval Ġgraph QL Client : ĠGraphQL Web Client ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuspend Ġfun Ġexecute ( request Builder : ĠWeb Client . RequestBody Uri Spec . () Ġ-> ĠUnit Ġ= Ġ{} ): ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠGraphQL Response < Anonymous Test Query . Result > Ġ= Ġgraph QL Client . execute ( AN ONY MO US _ TEST _ QUERY , Ġnull , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull , Ġrequest Builder ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠWrapper Ġthat Ġholds Ġall Ġsupported Ġscalar Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠScalar Wrapper ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠUTF - 8 Ġcharacter Ġsequence ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġname : ĠString ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdata Ġclass ĠResult ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠQuery Ġthat Ġreturns Ġwrapper Ġobject Ġwith Ġall Ġsupported Ġscalar Ġtypes ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġscalar Query : ĠAn onymous Test Query . Scalar Wrapper ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĊĠĠĠĠĠĠĠ Ġval Ġquery Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġquery Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġscalar Query Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġname ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ""" . trim Indent () ĊĠĠĠĠĠĠĠ Ġval Ġtest Directory Ġ= Ġtemp Dir . to File () ĊĠĠĠĠĠĠĠ Ġval Ġquery File Ġ= ĠFile ( test Directory , Ġ" anonymous Test Query . graphql ") ĊĠĠĠĠĠĠĠ Ġquery File . delete On Exit () ĊĠĠĠĠĠĠĠ Ġquery File . write Text ( query ) ĊĊĠĠĠĠĠĠĠ Ġval Ġgenerator Ġ= ĠGraphQL Client Generator ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtest Schema (), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠGraphQL Client Generator Config ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠpackageName Ġ= Ġ" com . exp edi ag roup . graphql . plugin . generator . integration ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclient Type Ġ= ĠGraphQL Client Type . WEB CLIENT ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġval Ġfile Specs Ġ= Ġgenerator . generate ( listOf ( query File )) ĊĠĠĠĠĠĠĠ ĠassertEquals ( 1 , Ġfile Specs . size ) ĊĠĠĠĠĠĠĠ ĠassertEquals ( expected Query File Spec , Ġfile Specs [ 0 ]. toString (). trim ()) ĊĠĠĠ Ġ} Ċ } Ċ