diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java index 7cd75706b27..a74b43a2575 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/AbstractTypeScriptClientCodegen.java @@ -690,13 +690,13 @@ public abstract class AbstractTypeScriptClientCodegen extends DefaultCodegen imp case original: return name; case camelCase: - return camelize(name, true); + return camelize(underscore(name), true); case PascalCase: - return camelize(name); + return camelize(underscore(name)); case snake_case: return underscore(name); case UPPERCASE: - return name.toUpperCase(Locale.ROOT); + return underscore(name).toUpperCase(Locale.ROOT); default: throw new IllegalArgumentException("Unsupported enum property naming: '" + name); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/TypeScriptAxiosClientCodegenTestTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/TypeScriptAxiosClientCodegenTestTest.java new file mode 100644 index 00000000000..0f93f8d4e94 --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/TypeScriptAxiosClientCodegenTestTest.java @@ -0,0 +1,81 @@ +package org.openapitools.codegen.typescript; + +import org.openapitools.codegen.CodegenConstants; +import org.openapitools.codegen.languages.TypeScriptAxiosClientCodegen; +import org.testng.annotations.Test; + +import static org.testng.Assert.assertEquals; + +public class TypeScriptAxiosClientCodegenTestTest { + + TypeScriptAxiosClientCodegen codegen = new TypeScriptAxiosClientCodegen(); + + @Test + public void testToEnumVarNameOriginalNamingType() { + codegen.additionalProperties().put(CodegenConstants.ENUM_PROPERTY_NAMING, CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.original.name()); + codegen.processOpts(); + assertEquals(codegen.toEnumVarName("SCIENCE", "string"), "SCIENCE"); + assertEquals(codegen.toEnumVarName("SCIENCE_FICTION", "string"), "SCIENCE_FICTION"); + assertEquals(codegen.toEnumVarName("science", "string"), "science"); + assertEquals(codegen.toEnumVarName("science_fiction", "string"), "science_fiction"); + assertEquals(codegen.toEnumVarName("scienceFiction", "string"), "scienceFiction"); + assertEquals(codegen.toEnumVarName("ScienceFiction", "string"), "ScienceFiction"); + assertEquals(codegen.toEnumVarName("A", "string"), "A"); + assertEquals(codegen.toEnumVarName("b", "string"), "b"); + } + + @Test + public void testToEnumVarNameCamelCaseNamingType() { + codegen.additionalProperties().put(CodegenConstants.ENUM_PROPERTY_NAMING, CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.camelCase.name()); + codegen.processOpts(); + assertEquals(codegen.toEnumVarName("SCIENCE", "string"), "science"); + assertEquals(codegen.toEnumVarName("SCIENCE_FICTION", "string"), "scienceFiction"); + assertEquals(codegen.toEnumVarName("science", "string"), "science"); + assertEquals(codegen.toEnumVarName("science_fiction", "string"), "scienceFiction"); + assertEquals(codegen.toEnumVarName("scienceFiction", "string"), "scienceFiction"); + assertEquals(codegen.toEnumVarName("ScienceFiction", "string"), "scienceFiction"); + } + + @Test + public void testToEnumVarNamePascalCaseNamingType() { + codegen.additionalProperties().put(CodegenConstants.ENUM_PROPERTY_NAMING, CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.PascalCase.name()); + codegen.processOpts(); + assertEquals(codegen.toEnumVarName("SCIENCE", "string"), "Science"); + assertEquals(codegen.toEnumVarName("SCIENCE_FICTION", "string"), "ScienceFiction"); + assertEquals(codegen.toEnumVarName("science", "string"), "Science"); + assertEquals(codegen.toEnumVarName("science_fiction", "string"), "ScienceFiction"); + assertEquals(codegen.toEnumVarName("scienceFiction", "string"), "ScienceFiction"); + assertEquals(codegen.toEnumVarName("ScienceFiction", "string"), "ScienceFiction"); + assertEquals(codegen.toEnumVarName("A", "string"), "A"); + assertEquals(codegen.toEnumVarName("b", "string"), "B"); + } + + @Test + public void testToEnumVarNameSnakeCaseNamingType() { + codegen.additionalProperties().put(CodegenConstants.ENUM_PROPERTY_NAMING, CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.snake_case.name()); + codegen.processOpts(); + assertEquals(codegen.toEnumVarName("SCIENCE", "string"), "science"); + assertEquals(codegen.toEnumVarName("SCIENCE_FICTION", "string"), "science_fiction"); + assertEquals(codegen.toEnumVarName("science", "string"), "science"); + assertEquals(codegen.toEnumVarName("science_fiction", "string"), "science_fiction"); + assertEquals(codegen.toEnumVarName("scienceFiction", "string"), "science_fiction"); + assertEquals(codegen.toEnumVarName("ScienceFiction", "string"), "science_fiction"); + assertEquals(codegen.toEnumVarName("A", "string"), "a"); + assertEquals(codegen.toEnumVarName("b", "string"), "b"); + } + + @Test + public void testToEnumVarNameUpperCaseNamingType() { + codegen.additionalProperties().put(CodegenConstants.ENUM_PROPERTY_NAMING, CodegenConstants.ENUM_PROPERTY_NAMING_TYPE.UPPERCASE.name()); + codegen.processOpts(); + assertEquals(codegen.toEnumVarName("SCIENCE", "string"), "SCIENCE"); + assertEquals(codegen.toEnumVarName("SCIENCE_FICTION", "string"), "SCIENCE_FICTION"); + assertEquals(codegen.toEnumVarName("science", "string"), "SCIENCE"); + assertEquals(codegen.toEnumVarName("science_fiction", "string"), "SCIENCE_FICTION"); + assertEquals(codegen.toEnumVarName("scienceFiction", "string"), "SCIENCE_FICTION"); + assertEquals(codegen.toEnumVarName("ScienceFiction", "string"), "SCIENCE_FICTION"); + assertEquals(codegen.toEnumVarName("A", "string"), "A"); + assertEquals(codegen.toEnumVarName("b", "string"), "B"); + } + +}