diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/CamelCaseLambda.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/CamelCaseLambda.java index cf2f2571dc38..034d0cee76d7 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/CamelCaseLambda.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/templating/mustache/CamelCaseLambda.java @@ -62,7 +62,7 @@ public CamelCaseLambda escapeAsParamName(final Boolean escape) { @Override public void execute(Template.Fragment fragment, Writer writer) throws IOException { - String text = camelize(fragment.execute(), lowercaseFirstLetter); + String text = camelize(fragment.execute().replace(" ", "_"), lowercaseFirstLetter); if (generator != null) { text = generator.sanitizeName(text); if (generator.reservedWords().contains(text)) { diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/CamelCaseLambdaTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/CamelCaseLambdaTest.java index f984adcb0f80..101b80adb120 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/CamelCaseLambdaTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/CamelCaseLambdaTest.java @@ -33,6 +33,15 @@ public void camelCaseTest() { test("inputText", "{{#camelcase}}Input-text{{/camelcase}}", ctx); } + @Test + public void camelCaseSpaceTest() { + // Given + Map ctx = context("camelcase", new CamelCaseLambda()); + + // When & Then + test("inputTextApi", "{{#camelcase}}Input text api{{/camelcase}}", ctx); + } + @Test public void camelCaseReservedWordTest() { // Given diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/PascalCaseLambdaTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/PascalCaseLambdaTest.java new file mode 100644 index 000000000000..30a3d0ef4ebd --- /dev/null +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/templating/mustache/PascalCaseLambdaTest.java @@ -0,0 +1,75 @@ +package org.openapitools.codegen.templating.mustache; + +import static org.mockito.AdditionalAnswers.returnsFirstArg; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; + +import java.util.Arrays; +import java.util.HashSet; +import java.util.Map; + +import org.mockito.Mock; +import org.mockito.MockitoAnnotations; +import org.openapitools.codegen.CodegenConfig; +import org.testng.annotations.BeforeMethod; +import org.testng.annotations.Test; + +public class PascalCaseLambdaTest extends LambdaTest { + + @Mock + CodegenConfig generator; + + @BeforeMethod + public void setup() { + MockitoAnnotations.initMocks(this); + } + + @Test + public void pascalCaseTest() { + // Given + Map ctx = context("pascalcase", new CamelCaseLambda(false)); + + // When & Then + test("InputText", "{{#pascalcase}}Input-text{{/pascalcase}}", ctx); + test("InputText", "{{#pascalcase}}Input_text{{/pascalcase}}", ctx); + test("", "{{#pascalcase}}{{/pascalcase}}", ctx); + + } + + @Test + public void pascalCaseSpaceTest() { + // Given + Map ctx = context("pascalcase", new CamelCaseLambda(false)); + + // When & Then + test("InputTextApi", "{{#pascalcase}}Input text api{{/pascalcase}}", ctx); + } + + @Test + public void pascalCaseReservedWordTest() { + // Given + Map ctx = context("pascalcase", new CamelCaseLambda(false).generator(generator)); + + when(generator.sanitizeName(anyString())).then(returnsFirstArg()); + when(generator.reservedWords()).thenReturn(new HashSet(Arrays.asList("ReservedWord"))); + when(generator.escapeReservedWord("ReservedWord")).thenReturn("escapedReservedWord"); + + // When & Then + test("escapedReservedWord", "{{#pascalcase}}reserved-word{{/pascalcase}}", ctx); + } + + @Test + public void pascalCaseEscapeParamTest() { + // Given + Map ctx = context("pascalcase", new CamelCaseLambda(false) + .generator(generator).escapeAsParamName(true)); + + when(generator.sanitizeName(anyString())).then(returnsFirstArg()); + when(generator.reservedWords()).thenReturn(new HashSet()); + when(generator.toParamName("InputText")).thenReturn("inputTextAsParam"); + + // When & Then + test("inputTextAsParam", "{{#pascalcase}}Input_text{{/pascalcase}}", ctx); + } + +}