Skip to content

Commit d6159d5

Browse files
smyrickdariuszkuc
authored andcommitted
test: add more hook tests (#133)
* test: add more hook tests * fix: drop test helper * Delete DataFetcherExecutionPredicateTest.kt
1 parent b715ed9 commit d6159d5

File tree

2 files changed

+24
-1
lines changed

2 files changed

+24
-1
lines changed

src/main/kotlin/com/expedia/graphql/hooks/SchemaGeneratorHooks.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.expedia.graphql.hooks
22

3+
import com.expedia.graphql.generator.extensions.getTypeOfFirstArgument
34
import graphql.schema.DataFetcher
45
import graphql.schema.GraphQLFieldDefinition
56
import graphql.schema.GraphQLSchema
@@ -35,7 +36,7 @@ interface SchemaGeneratorHooks {
3536
*/
3637
fun willResolveMonad(type: KType): KType =
3738
if (type.classifier == CompletableFuture::class) {
38-
type.arguments.firstOrNull()?.type ?: type
39+
type.getTypeOfFirstArgument()
3940
} else {
4041
type
4142
}

src/test/kotlin/com/expedia/graphql/hooks/SchemaGeneratorHooksTest.kt

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.expedia.graphql.hooks
22

33
import com.expedia.graphql.TopLevelObject
44
import com.expedia.graphql.extensions.deepName
5+
import com.expedia.graphql.generator.extensions.getSimpleName
56
import com.expedia.graphql.getTestSchemaConfigWithHooks
67
import com.expedia.graphql.toSchema
78
import graphql.GraphQL
@@ -11,6 +12,7 @@ import graphql.schema.GraphQLFieldDefinition
1112
import graphql.schema.GraphQLObjectType
1213
import graphql.schema.GraphQLSchema
1314
import graphql.schema.GraphQLType
15+
import java.util.concurrent.CompletableFuture
1416
import kotlin.reflect.KFunction
1517
import kotlin.reflect.KProperty
1618
import kotlin.reflect.KType
@@ -207,10 +209,30 @@ class SchemaGeneratorHooksTest {
207209
assertEquals("Hijacked Description", query.description)
208210
}
209211

212+
@Test
213+
fun `willResolveMonad returns CompletableFuture wrapped type`() {
214+
val hooks = NoopSchemaGeneratorHooks()
215+
val type = TestQueryFuture::comepletableFutre.returnType
216+
217+
assertEquals(expected = "SomeData", actual = hooks.willResolveMonad(type).getSimpleName())
218+
}
219+
220+
@Test
221+
fun `willResolveMonad returns basic type`() {
222+
val hooks = NoopSchemaGeneratorHooks()
223+
val type = TestQuery::query.returnType
224+
225+
assertEquals(expected = "SomeData", actual = hooks.willResolveMonad(type).getSimpleName())
226+
}
227+
210228
class TestQuery {
211229
fun query(): SomeData = SomeData(0)
212230
}
213231

232+
class TestQueryFuture {
233+
fun comepletableFutre(): CompletableFuture<SomeData> = CompletableFuture.completedFuture(SomeData(1))
234+
}
235+
214236
data class SomeData(val someNumber: Int)
215237

216238
private class WrappingDataFetcher(private val dataFetcher: DataFetcher<*>) : DataFetcher<Any> {

0 commit comments

Comments
 (0)