Skip to content

Commit 7f8ff39

Browse files
samuelAndalonT45K
andauthored
Support built-in ID type serialization in GraphQLServerRequest (#1959)
Backport of #1952 to v6 Co-authored-by: Tasuku Nakagawa <38446259+T45K@users.noreply.github.com>
1 parent d5c312f commit 7f8ff39

File tree

2 files changed

+17
-0
lines changed

2 files changed

+17
-0
lines changed

servers/graphql-kotlin-server/src/main/kotlin/com/expediagroup/graphql/server/types/serializers/AnyNullableKSerializer.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.expediagroup.graphql.server.types.serializers
22

3+
import com.expediagroup.graphql.generator.scalars.ID
34
import kotlinx.serialization.KSerializer
45
import kotlinx.serialization.descriptors.SerialDescriptor
56
import kotlinx.serialization.descriptors.buildClassSerialDescriptor
@@ -41,6 +42,7 @@ object AnyNullableKSerializer : KSerializer<Any?> {
4142
is Number -> JsonPrimitive(value)
4243
is Boolean -> JsonPrimitive(value)
4344
is String -> JsonPrimitive(value)
45+
is ID -> JsonPrimitive(value.value)
4446
else -> JsonNull
4547
}
4648

servers/graphql-kotlin-server/src/test/kotlin/com/expediagroup/graphql/server/types/GraphQLServerRequestTest.kt

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@
1616

1717
package com.expediagroup.graphql.server.types
1818

19+
import com.expediagroup.graphql.generator.scalars.ID
1920
import kotlinx.serialization.encodeToString
2021
import kotlinx.serialization.json.Json
2122
import org.junit.jupiter.api.Test
@@ -51,6 +52,20 @@ class GraphQLServerRequestTest {
5152
assertEquals(expectedJson, Json.encodeToString(request))
5253
}
5354

55+
@Test
56+
fun `verify complete serialization including ID`() {
57+
val request = GraphQLRequest(
58+
query = "query FooQuery(\$input: ID) { foo(\$input) }",
59+
operationName = "FooQuery",
60+
variables = mapOf("input" to ID("1"))
61+
)
62+
63+
val expectedJson =
64+
"""{"query":"query FooQuery(${'$'}input: ID) { foo(${'$'}input) }","operationName":"FooQuery","variables":{"input":"1"}}"""
65+
66+
assertEquals(expectedJson, Json.encodeToString(request))
67+
}
68+
5469
@Test
5570
fun `verify batch request serialization`() {
5671
val request = GraphQLBatchRequest(

0 commit comments

Comments
 (0)