From 2c4204995072b9ae19c843b51d035e8081a1c812 Mon Sep 17 00:00:00 2001 From: Daniel Reichhart <34721312+reichhartd@users.noreply.github.com> Date: Mon, 25 May 2026 13:13:08 +0200 Subject: [PATCH] [typescript-nestjs] Use paramName for URL path substitution (fixes #16668) --- .../TypeScriptNestjsClientCodegen.java | 6 ++- .../TypeScriptNestjsClientCodegenTest.java | 43 +++++++++++++++++++ 2 files changed, 48 insertions(+), 1 deletion(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java index 2edf3b9d198e..4613ae588248 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java @@ -312,7 +312,11 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap operations, L // Add the more complicated component instead of just the brace. CodegenParameter parameter = findPathParameterByName(op, parameterName.toString()); - pathBuffer.append(toVarName(parameterName.toString())); + if (parameter != null) { + pathBuffer.append(parameter.paramName); + } else { + pathBuffer.append(toVarName(parameterName.toString())); + } if (parameter != null && parameter.isDateTime) { pathBuffer.append(".toISOString()"); } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnestjs/TypeScriptNestjsClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnestjs/TypeScriptNestjsClientCodegenTest.java index 72aae1b236ee..30acf9bed5da 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnestjs/TypeScriptNestjsClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnestjs/TypeScriptNestjsClientCodegenTest.java @@ -7,9 +7,15 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.responses.ApiResponse; import io.swagger.v3.oas.models.responses.ApiResponses; +import java.util.Arrays; +import java.util.Collections; +import java.util.List; import org.openapitools.codegen.CodegenOperation; +import org.openapitools.codegen.CodegenParameter; import org.openapitools.codegen.TestUtils; import org.openapitools.codegen.languages.TypeScriptNestjsClientCodegen; +import org.openapitools.codegen.model.OperationMap; +import org.openapitools.codegen.model.OperationsMap; import org.openapitools.codegen.typescript.TypeScriptGroups; import org.testng.Assert; import org.testng.annotations.Test; @@ -134,4 +140,41 @@ public void testSchema() { Assert.assertEquals(schemaType, "SchemaOne | SchemaTwo | SchemaThree"); } + @Test + public void testPathPropertyName() { + TypeScriptNestjsClientCodegen codegen = new TypeScriptNestjsClientCodegen(); + + CodegenOperation codegenOperation = new CodegenOperation(); + + CodegenParameter pathParam1 = createPathParam("pathParam1", "path_param1"); + CodegenParameter pathParam2 = createPathParam("pathParam2", "pathParam2"); + + codegenOperation.httpMethod = "GET"; + codegenOperation.path = "test/{path_param1}/{pathParam2}"; + codegenOperation.allParams.addAll(Arrays.asList(pathParam1, pathParam2)); + codegenOperation.pathParams.addAll(Arrays.asList(pathParam1, pathParam2)); + + OperationMap operations = new OperationMap(); + operations.setOperation(codegenOperation); + operations.setClassname("TestService"); + + OperationsMap objs = new OperationsMap(); + objs.setOperation(operations); + objs.setImports(List.of()); + + var res = codegen.postProcessOperationsWithModels(objs, Collections.emptyList()); + + Assert.assertEquals(res.getOperations().getOperation().get(0).path, + "test/${encodeURIComponent(String(pathParam1))}/${encodeURIComponent(String(pathParam2))}"); + } + + private CodegenParameter createPathParam(String paramName, String baseName) { + CodegenParameter codegenParameter = new CodegenParameter(); + codegenParameter.paramName = paramName; + codegenParameter.baseName = baseName; + codegenParameter.dataType = "String"; + codegenParameter.isPathParam = true; + return codegenParameter; + } + }