From 752b36e660f155b727cf547304876890265f2d9a Mon Sep 17 00:00:00 2001 From: Thibault Duperron Date: Thu, 17 May 2018 03:51:55 +0200 Subject: [PATCH] Sanitize enumeration name to add underscore when it starts with digits (#77) --- .../languages/AbstractKotlinCodegen.java | 4 +- .../kotlin/AbstractKotlinCodegenTest.java | 69 +++++++++++++++++++ 2 files changed, 71 insertions(+), 2 deletions(-) create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java index 4ee48938f94..0030ee5ab67 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractKotlinCodegen.java @@ -421,8 +421,8 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co if (reservedWords.contains(modified)) { return escapeReservedWord(modified); } - - return modified; + // NOTE: another sanitize because camelize can create an invalid name + return sanitizeKotlinSpecificNames(modified); } @Override diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java new file mode 100644 index 00000000000..c269495429e --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/AbstractKotlinCodegenTest.java @@ -0,0 +1,69 @@ +package org.openapitools.codegen.kotlin; + +import org.openapitools.codegen.CodegenType; +import org.openapitools.codegen.languages.AbstractKotlinCodegen; +import org.testng.Assert; +import org.testng.annotations.Test; + +import static org.openapitools.codegen.CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.*; + +public class AbstractKotlinCodegenTest { + + private final AbstractKotlinCodegen codegen = new P_AbstractKotlinCodegen(); + + @Test + public void camlCaseEnumConverter() { + codegen.setEnumPropertyNaming(camelCase.name()); + Assert.assertEquals(codegen.toEnumVarName("long Name", null), "longName"); + Assert.assertEquals(codegen.toEnumVarName("1long Name", null), "_1longName"); + Assert.assertEquals(codegen.toEnumVarName("not1long Name", null), "not1longName"); + } + + @Test + public void uppercasEnumConverter() { + codegen.setEnumPropertyNaming(UPPERCASE.name()); + Assert.assertEquals(codegen.toEnumVarName("long Name", null), "LONG_NAME"); + Assert.assertEquals(codegen.toEnumVarName("1long Name", null), "_1LONG_NAME"); + Assert.assertEquals(codegen.toEnumVarName("not1long Name", null), "NOT1LONG_NAME"); + } + @Test + public void snake_caseEnumConverter() { + codegen.setEnumPropertyNaming(snake_case.name()); + Assert.assertEquals(codegen.toEnumVarName("long Name", null), "long_name"); + Assert.assertEquals(codegen.toEnumVarName("1long Name", null), "_1long_name"); + Assert.assertEquals(codegen.toEnumVarName("not1long Name", null), "not1long_name"); + } + + @Test + public void originalEnumConverter() { + codegen.setEnumPropertyNaming(original.name()); + Assert.assertEquals(codegen.toEnumVarName("long Name", null), "long_Name"); + Assert.assertEquals(codegen.toEnumVarName("1long Name", null), "_1long_Name"); + Assert.assertEquals(codegen.toEnumVarName("not1long Name", null), "not1long_Name"); + } + @Test + public void pascalCaseEnumConverter() { + codegen.setEnumPropertyNaming(PascalCase.name()); + Assert.assertEquals(codegen.toEnumVarName("long Name", null), "LongName"); + Assert.assertEquals(codegen.toEnumVarName("1long Name", null), "_1longName"); + Assert.assertEquals(codegen.toEnumVarName("not1long Name", null), "Not1longName"); + } + + + private class P_AbstractKotlinCodegen extends AbstractKotlinCodegen { + @Override + public CodegenType getTag() { + return null; + } + + @Override + public String getName() { + return null; + } + + @Override + public String getHelp() { + return null; + } + } +} \ No newline at end of file