From 4d8ac0e055dca95f8ed1fe6e185ecb13c8376d7a Mon Sep 17 00:00:00 2001 From: Andrey Mochalov Date: Wed, 9 Sep 2020 16:58:45 +0300 Subject: [PATCH] [typescript] Fix incorrect enum literal case (#7378) * Fix incorrect enum values for typescript clients * Fix incorrect enum values for typescript clients * Fix incorrect enum values for typescript clients --- .../AbstractTypeScriptClientCodegen.java | 6 +- .../TypeScriptAxiosClientCodegenTestTest.java | 81 +++++++++++++++++++ 2 files changed, 84 insertions(+), 3 deletions(-) create mode 100644 modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/TypeScriptAxiosClientCodegenTestTest.java 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"); + } + +}