Fix parameter in PathItem (#639)

This commit is contained in:
Jérémie Bresson 2018-07-25 12:27:05 +02:00 committed by GitHub
parent 37be47fc56
commit 85f0909c7f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 52 additions and 2 deletions

View File

@ -896,8 +896,8 @@ public class DefaultGenerator extends AbstractGenerator implements Generator {
if (path.getParameters() != null) { if (path.getParameters() != null) {
for (Parameter parameter : path.getParameters()) { for (Parameter parameter : path.getParameters()) {
//skip propagation if a parameter with the same name is already defined at the operation level //skip propagation if a parameter with the same name is already defined at the operation level
if (!operationParameters.contains(generateParameterId(parameter)) && operation.getParameters() != null) { if (!operationParameters.contains(generateParameterId(parameter))) {
operation.getParameters().add(parameter); operation.addParametersItem(parameter);
} }
} }
} }

View File

@ -0,0 +1,50 @@
package org.openapitools.codegen;
import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.PathItem;
import io.swagger.v3.oas.models.Paths;
import io.swagger.v3.oas.models.media.IntegerSchema;
import io.swagger.v3.oas.models.media.StringSchema;
import io.swagger.v3.oas.models.parameters.QueryParameter;
import io.swagger.v3.oas.models.responses.ApiResponse;
import io.swagger.v3.oas.models.responses.ApiResponses;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.util.List;
import java.util.Map;
public class DefaultGeneratorTest {
@Test
public void testProcessPaths() throws Exception {
OpenAPI openAPI = TestUtils.createOpenAPI();
openAPI.setPaths(new Paths());
openAPI.getPaths().addPathItem("path1/", new PathItem().get(new Operation().operationId("op1").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK")))));
openAPI.getPaths().addPathItem("path2/", new PathItem().get(new Operation().operationId("op2").addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK")))));
openAPI.getPaths().addPathItem("path3/", new PathItem().addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).get(new Operation().operationId("op3").addParametersItem(new QueryParameter().name("p2").schema(new IntegerSchema())).responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK")))));
openAPI.getPaths().addPathItem("path4/", new PathItem().addParametersItem(new QueryParameter().name("p1").schema(new StringSchema())).get(new Operation().operationId("op4").responses(new ApiResponses().addApiResponse("201", new ApiResponse().description("OK")))));
ClientOptInput opts = new ClientOptInput();
opts.setOpenAPI(openAPI);
opts.setConfig(new DefaultCodegen());
opts.setOpts(new ClientOpts());
DefaultGenerator generator = new DefaultGenerator();
generator.opts(opts);
Map<String, List<CodegenOperation>> result = generator.processPaths(openAPI.getPaths());
Assert.assertEquals(result.size(), 1);
List<CodegenOperation> defaultList = result.get("Default");
Assert.assertEquals(defaultList.size(), 4);
Assert.assertEquals(defaultList.get(0).path, "path1/");
Assert.assertEquals(defaultList.get(0).allParams.size(), 0);
Assert.assertEquals(defaultList.get(1).path, "path2/");
Assert.assertEquals(defaultList.get(1).allParams.size(), 1);
Assert.assertEquals(defaultList.get(2).path, "path3/");
Assert.assertEquals(defaultList.get(2).allParams.size(), 2);
Assert.assertEquals(defaultList.get(3).path, "path4/");
Assert.assertEquals(defaultList.get(3).allParams.size(), 1);
}
}