1
+ package io.smallrye.graphql.client.model
2
+
3
+ import io.smallrye.graphql.client.typesafe.api.GraphQLClientApi
4
+ import org.eclipse.microprofile.graphql.Query
5
+ import org.jboss.jandex.Index
6
+ import org.junit.jupiter.api.Assertions.assertEquals
7
+ import org.junit.jupiter.api.Assertions.assertNotNull
8
+ import org.junit.jupiter.api.Test
9
+
10
+ class ClientModelBuilderKotlinTest {
11
+ @GraphQLClientApi(configKey = " some-client" )
12
+ interface ClientApi {
13
+ @Query
14
+ fun returnNonNullFloat (someFloat : Float ): Float
15
+
16
+ @Query
17
+ fun returnNullableString (someString : String? ): String?
18
+
19
+ @Query
20
+ fun returnList (list : List <String >): String
21
+
22
+ // fixme: nullability is bit inconsistent from kotlin
23
+
24
+ }
25
+
26
+ @Test
27
+ fun basicClientModelTest () {
28
+ val configKey = " some-client"
29
+ val clientModels = ClientModelBuilder .build(Index .of(ClientApi ::class .java))
30
+ assertNotNull(clientModels)
31
+ val clientModel = clientModels.getClientModelByConfigKey(configKey)
32
+ assertNotNull(clientModel)
33
+ assertEquals(3 , clientModel.operationMap.size)
34
+ assertOperation(clientModel, MethodKey (" returnNonNullFloat" , arrayOf(Float ::class .java)), " query returnNonNullFloat(\$ someFloat: Float!) { returnNonNullFloat(someFloat: \$ someFloat) }" )
35
+ assertOperation(clientModel, MethodKey (" returnNullableString" , arrayOf(String ::class .java)), " query returnNullableString(\$ someString: String) { returnNullableString(someString: \$ someString) }" )
36
+ assertOperation(clientModel, MethodKey (" returnList" , arrayOf(List ::class .java)), " query returnList(\$ list: [String!]!) { returnList(list: \$ list) }" )
37
+ }
38
+
39
+ private fun assertOperation (clientModel : ClientModel , methodKey : MethodKey , expectedQuery : String ) {
40
+ val actualQuery = clientModel.operationMap[methodKey]
41
+ assertEquals(expectedQuery, actualQuery)
42
+ }
43
+ }
0 commit comments