Skip to content

Commit 163a3fa

Browse files
authored
[typescript-nestjs] Use paramName for URL path substitution (fixes #16668) (#23868)
1 parent 74f7b07 commit 163a3fa

2 files changed

Lines changed: 48 additions & 1 deletion

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNestjsClientCodegen.java

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -312,7 +312,11 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap operations, L
312312

313313
// Add the more complicated component instead of just the brace.
314314
CodegenParameter parameter = findPathParameterByName(op, parameterName.toString());
315-
pathBuffer.append(toVarName(parameterName.toString()));
315+
if (parameter != null) {
316+
pathBuffer.append(parameter.paramName);
317+
} else {
318+
pathBuffer.append(toVarName(parameterName.toString()));
319+
}
316320
if (parameter != null && parameter.isDateTime) {
317321
pathBuffer.append(".toISOString()");
318322
}

modules/openapi-generator/src/test/java/org/openapitools/codegen/typescript/typescriptnestjs/TypeScriptNestjsClientCodegenTest.java

Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,9 +7,15 @@
77
import io.swagger.v3.oas.models.media.Schema;
88
import io.swagger.v3.oas.models.responses.ApiResponse;
99
import io.swagger.v3.oas.models.responses.ApiResponses;
10+
import java.util.Arrays;
11+
import java.util.Collections;
12+
import java.util.List;
1013
import org.openapitools.codegen.CodegenOperation;
14+
import org.openapitools.codegen.CodegenParameter;
1115
import org.openapitools.codegen.TestUtils;
1216
import org.openapitools.codegen.languages.TypeScriptNestjsClientCodegen;
17+
import org.openapitools.codegen.model.OperationMap;
18+
import org.openapitools.codegen.model.OperationsMap;
1319
import org.openapitools.codegen.typescript.TypeScriptGroups;
1420
import org.testng.Assert;
1521
import org.testng.annotations.Test;
@@ -134,4 +140,41 @@ public void testSchema() {
134140
Assert.assertEquals(schemaType, "SchemaOne | SchemaTwo | SchemaThree");
135141
}
136142

143+
@Test
144+
public void testPathPropertyName() {
145+
TypeScriptNestjsClientCodegen codegen = new TypeScriptNestjsClientCodegen();
146+
147+
CodegenOperation codegenOperation = new CodegenOperation();
148+
149+
CodegenParameter pathParam1 = createPathParam("pathParam1", "path_param1");
150+
CodegenParameter pathParam2 = createPathParam("pathParam2", "pathParam2");
151+
152+
codegenOperation.httpMethod = "GET";
153+
codegenOperation.path = "test/{path_param1}/{pathParam2}";
154+
codegenOperation.allParams.addAll(Arrays.asList(pathParam1, pathParam2));
155+
codegenOperation.pathParams.addAll(Arrays.asList(pathParam1, pathParam2));
156+
157+
OperationMap operations = new OperationMap();
158+
operations.setOperation(codegenOperation);
159+
operations.setClassname("TestService");
160+
161+
OperationsMap objs = new OperationsMap();
162+
objs.setOperation(operations);
163+
objs.setImports(List.of());
164+
165+
var res = codegen.postProcessOperationsWithModels(objs, Collections.emptyList());
166+
167+
Assert.assertEquals(res.getOperations().getOperation().get(0).path,
168+
"test/${encodeURIComponent(String(pathParam1))}/${encodeURIComponent(String(pathParam2))}");
169+
}
170+
171+
private CodegenParameter createPathParam(String paramName, String baseName) {
172+
CodegenParameter codegenParameter = new CodegenParameter();
173+
codegenParameter.paramName = paramName;
174+
codegenParameter.baseName = baseName;
175+
codegenParameter.dataType = "String";
176+
codegenParameter.isPathParam = true;
177+
return codegenParameter;
178+
}
179+
137180
}

0 commit comments

Comments
 (0)