Skip to content

Commit af9667d

Browse files
sgebsmyrick
authored andcommitted
Function builder ignores parameters annotated with GraphQLIgnore (ExpediaGroup#207)
1 parent 1a5e745 commit af9667d

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

src/main/kotlin/com/expedia/graphql/generator/types/FunctionBuilder.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ import com.expedia.graphql.generator.extensions.getName
99
import com.expedia.graphql.generator.extensions.getTypeOfFirstArgument
1010
import com.expedia.graphql.generator.extensions.isDataFetchingEnvironment
1111
import com.expedia.graphql.generator.extensions.isGraphQLContext
12+
import com.expedia.graphql.generator.extensions.isGraphQLIgnored
1213
import com.expedia.graphql.generator.extensions.isInterface
1314
import com.expedia.graphql.generator.extensions.safeCast
1415
import graphql.schema.GraphQLArgument
@@ -37,6 +38,7 @@ internal class FunctionBuilder(generator: SchemaGenerator) : TypeBuilder(generat
3738

3839
fn.valueParameters
3940
.filterNot { it.isGraphQLContext() }
41+
.filterNot { it.isGraphQLIgnored() }
4042
.filterNot { it.isDataFetchingEnvironment() }
4143
.forEach {
4244
// deprecation of arguments is currently unsupported: https://github.com/facebook/graphql/issues/197

src/test/kotlin/com/expedia/graphql/generator/types/FunctionBuilderTest.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package com.expedia.graphql.generator.types
33
import com.expedia.graphql.annotations.GraphQLContext
44
import com.expedia.graphql.annotations.GraphQLDescription
55
import com.expedia.graphql.annotations.GraphQLDirective
6+
import com.expedia.graphql.annotations.GraphQLIgnore
67
import com.expedia.graphql.execution.FunctionDataFetcher
78
import graphql.Scalars
89
import graphql.introspection.Introspection
@@ -52,6 +53,8 @@ internal class FunctionBuilderTest : TypeTestHelper() {
5253

5354
fun context(@GraphQLContext context: String, string: String) = "$context and $string"
5455

56+
fun ignoredParameter(color: String, @GraphQLIgnore ignoreMe: String) = "$color and $ignoreMe"
57+
5558
fun completableFuture(num: Int): CompletableFuture<Int> = CompletableFuture.completedFuture(num)
5659

5760
fun dataFetchingEnvironment(environment: DataFetchingEnvironment): String = environment.field.name
@@ -128,6 +131,17 @@ internal class FunctionBuilderTest : TypeTestHelper() {
128131
assertEquals(expected = "string", actual = arg?.name)
129132
}
130133

134+
@Test
135+
fun `Test ignored parameter`() {
136+
val kFunction = Happy::ignoredParameter
137+
val result = builder.function(kFunction)
138+
139+
assertTrue(result.directives.isEmpty())
140+
assertEquals(expected = 1, actual = result.arguments.size)
141+
val arg = result.arguments.firstOrNull()
142+
assertEquals(expected = "color", actual = arg?.name)
143+
}
144+
131145
@Test
132146
fun `Non-abstract function`() {
133147
val kFunction = MyInterface::printMessage

0 commit comments

Comments
 (0)