From 1bff1a0c4bc60f216dee4d6d1ead4c02f2295fd8 Mon Sep 17 00:00:00 2001 From: Kavitha Srinivasan <41588701+srinivasankavitha@users.noreply.github.com> Date: Wed, 17 Jan 2024 11:13:35 -0800 Subject: [PATCH] Fix handling of default values in schema for complex types. (#648) --- .../generators/java/DataTypeGenerator.kt | 1 + .../graphql/dgs/codegen/CodeGenTest.kt | 26 +++++++++++++++++++ 2 files changed, 27 insertions(+) diff --git a/graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/DataTypeGenerator.kt b/graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/DataTypeGenerator.kt index 5c3fb0f90..49dfbab58 100644 --- a/graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/DataTypeGenerator.kt +++ b/graphql-dgs-codegen-core/src/main/kotlin/com/netflix/graphql/dgs/codegen/generators/java/DataTypeGenerator.kt @@ -146,6 +146,7 @@ class InputTypeGenerator(config: CodeGenConfig, document: Document) : BaseDataTy } }.joinToString() ) + is ObjectValue -> CodeBlock.of("new \$L()", typeUtils.findReturnType(it.type)) else -> CodeBlock.of("\$L", defVal) } } diff --git a/graphql-dgs-codegen-core/src/test/kotlin/com/netflix/graphql/dgs/codegen/CodeGenTest.kt b/graphql-dgs-codegen-core/src/test/kotlin/com/netflix/graphql/dgs/codegen/CodeGenTest.kt index 65967fcf7..f469ee49e 100644 --- a/graphql-dgs-codegen-core/src/test/kotlin/com/netflix/graphql/dgs/codegen/CodeGenTest.kt +++ b/graphql-dgs-codegen-core/src/test/kotlin/com/netflix/graphql/dgs/codegen/CodeGenTest.kt @@ -1593,6 +1593,32 @@ class CodeGenTest { assertCompilesJava(enumTypes + dataTypes) } + @Test + fun generateInputWithDefaultValueForComplexType() { + val schema = """ + enum Color { + red + } + + input ColorFilter { + color: Color = red + } + + input Car { + color: Color = red + make: String + } + + input MyCar { + car: Car = {color: red} + } + """.trimIndent() + + val (dataTypes, _, enumTypes) = CodeGen(CodeGenConfig(schemas = setOf(schema), packageName = basePackageName)).generate() + + assertCompilesJava(enumTypes + dataTypes) + } + @Test fun generateInputWithDefaultValueForArray() { val schema = """