File tree Expand file tree Collapse file tree 4 files changed +65
-2
lines changed
graphql-dgs-codegen-core/src
main/kotlin/com/netflix/graphql/dgs/codegen/generators
test/kotlin/com/netflix/graphql/dgs/codegen Expand file tree Collapse file tree 4 files changed +65
-2
lines changed Original file line number Diff line number Diff line change @@ -66,7 +66,7 @@ class EnumTypeGenerator(private val config: CodeGenConfig) {
6666 }
6767 }
6868 }
69- javaType.addEnumConstant(it.name, typeSpec.build())
69+ javaType.addEnumConstant(ReservedKeywordSanitizer .sanitize( it.name) , typeSpec.build())
7070 }
7171
7272 val javaFile = JavaFile .builder(getPackageName(), javaType.build()).build()
Original file line number Diff line number Diff line change @@ -21,6 +21,7 @@ package com.netflix.graphql.dgs.codegen.generators.kotlin
2121import com.netflix.graphql.dgs.codegen.CodeGenConfig
2222import com.netflix.graphql.dgs.codegen.CodeGenResult
2323import com.netflix.graphql.dgs.codegen.generators.java.EnumTypeGenerator
24+ import com.netflix.graphql.dgs.codegen.generators.java.ReservedKeywordSanitizer
2425import com.netflix.graphql.dgs.codegen.generators.shared.applyDirectivesKotlin
2526import com.netflix.graphql.dgs.codegen.shouldSkip
2627import com.squareup.kotlinpoet.FileSpec
@@ -59,7 +60,7 @@ class KotlinEnumTypeGenerator(private val config: CodeGenConfig) {
5960 applyDirectivesKotlin(it.directives, config)
6061 )
6162 }
62- kotlinType.addEnumConstant(it.name, typeSpec.build())
63+ kotlinType.addEnumConstant(ReservedKeywordSanitizer .sanitize( it.name) , typeSpec.build())
6364 }
6465
6566 kotlinType.addType(TypeSpec .companionObjectBuilder().addOptionalGeneratedAnnotation(config).build())
Original file line number Diff line number Diff line change @@ -965,6 +965,36 @@ class CodeGenTest {
965965 assertCompilesJava(codeGenResult.javaEnumTypes)
966966 }
967967
968+ @Test
969+ fun generateEnumWithReservedKeywords () {
970+ val schema = """
971+ type Query {
972+ people: [Person]
973+ }
974+
975+ enum EmployeeTypes {
976+ default
977+ root
978+ new
979+ }
980+ """ .trimIndent()
981+
982+ val codeGenResult = CodeGen (
983+ CodeGenConfig (
984+ schemas = setOf (schema),
985+ packageName = basePackageName
986+ )
987+ ).generate()
988+
989+ // Check generated enum type
990+ assertThat(codeGenResult.javaEnumTypes.size).isEqualTo(1 )
991+ assertThat(codeGenResult.javaEnumTypes[0 ].typeSpec.name).isEqualTo(" EmployeeTypes" )
992+ assertThat(codeGenResult.javaEnumTypes[0 ].typeSpec.enumConstants.size).isEqualTo(3 )
993+ assertThat(codeGenResult.javaEnumTypes[0 ].typeSpec.enumConstants).containsKeys(" _default" , " _root" , " _new" )
994+
995+ assertCompilesJava(codeGenResult.javaEnumTypes)
996+ }
997+
968998 @Nested
969999 inner class EnumAnnotationTest {
9701000 @Test
Original file line number Diff line number Diff line change @@ -883,6 +883,38 @@ class KotlinCodeGenTest {
883883 assertCompilesKotlin(result.kotlinDataTypes + result.kotlinEnumTypes)
884884 }
885885
886+ @Test
887+ fun generateEnumWithReservedKeywords () {
888+ val schema = """
889+ type Query {
890+ people: [Person]
891+ }
892+
893+ enum EmployeeTypes {
894+ default
895+ root
896+ new
897+ }
898+ """ .trimIndent()
899+
900+ val result = CodeGen (
901+ CodeGenConfig (
902+ schemas = setOf (schema),
903+ packageName = basePackageName,
904+ language = Language .KOTLIN
905+ )
906+ ).generate()
907+ val type = result.kotlinEnumTypes[0 ].members[0 ] as TypeSpec
908+
909+ // Check generated enum type
910+ assertThat(type.name).isEqualTo(" EmployeeTypes" )
911+ assertThat(type.enumConstants.size).isEqualTo(3 )
912+ assertThat(type.enumConstants).containsKeys(" _default" , " _root" , " _new" )
913+ assertThat(type.typeSpecs[0 ].isCompanion).isTrue
914+
915+ assertCompilesKotlin(result.kotlinDataTypes + result.kotlinEnumTypes)
916+ }
917+
886918 @Nested
887919 inner class EnumAnnotationTests {
888920 @Test
You can’t perform that action at this time.
0 commit comments