forked from loafle/openapi-generator-original
Fix issue with Ruby client where strings from example properties are not wrapped with quotes (#987)
This commit is contained in:
parent
eb5a8cc752
commit
63b1c233c9
@ -18,6 +18,8 @@
|
||||
package org.openapitools.codegen.languages;
|
||||
|
||||
import io.swagger.v3.oas.models.media.Schema;
|
||||
import io.swagger.v3.oas.models.parameters.Parameter;
|
||||
import io.swagger.v3.oas.models.examples.Example;
|
||||
import org.apache.commons.lang3.StringUtils;
|
||||
import org.openapitools.codegen.*;
|
||||
import org.slf4j.Logger;
|
||||
@ -536,6 +538,34 @@ public class RubyClientCodegen extends AbstractRubyCodegen {
|
||||
p.example = example;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return the example value of the parameter. Overrides the
|
||||
* setParameterExampleValue(CodegenParameter, Parameter) method in
|
||||
* DefaultCodegen to always call setParameterExampleValue(CodegenParameter)
|
||||
* in this class, which adds single quotes around strings from the
|
||||
* x-example property.
|
||||
*
|
||||
* @param codegenParameter Codegen parameter
|
||||
* @param parameter Parameter
|
||||
*/
|
||||
public void setParameterExampleValue(CodegenParameter codegenParameter, Parameter parameter) {
|
||||
if (parameter.getExample() != null) {
|
||||
codegenParameter.example = parameter.getExample().toString();
|
||||
} else if (parameter.getExamples() != null && !parameter.getExamples().isEmpty()) {
|
||||
Example example = parameter.getExamples().values().iterator().next();
|
||||
if (example.getValue() != null) {
|
||||
codegenParameter.example = example.getValue().toString();
|
||||
}
|
||||
} else {
|
||||
Schema schema = parameter.getSchema();
|
||||
if (schema != null && schema.getExample() != null) {
|
||||
codegenParameter.example = schema.getExample().toString();
|
||||
}
|
||||
}
|
||||
|
||||
setParameterExampleValue(codegenParameter);
|
||||
}
|
||||
|
||||
public void setGemName(String gemName) {
|
||||
this.gemName = gemName;
|
||||
}
|
||||
|
@ -271,4 +271,33 @@ public class RubyClientCodegenTest {
|
||||
// TODO comment out the following until https://github.com/swagger-api/swagger-parser/issues/820 is solved
|
||||
//Assert.assertTrue(status.isNullable);
|
||||
}
|
||||
|
||||
@Test(description = "test example string imported from x-example parameterr (OAS2)")
|
||||
public void exampleStringFromExampleParameterOAS2Test() {
|
||||
final OpenAPI openAPI = new OpenAPIParser().readLocation("src/test/resources/2_0/petstore-nullable.yaml", null, new ParseOptions()).getOpenAPI();
|
||||
final RubyClientCodegen codegen = new RubyClientCodegen();
|
||||
codegen.setModuleName("OnlinePetstore");
|
||||
final String path = "/store/order/{orderId}";
|
||||
|
||||
final Operation p = openAPI.getPaths().get(path).getDelete();
|
||||
final CodegenOperation op = codegen.fromOperation(path, "delete", p, openAPI.getComponents().getSchemas());
|
||||
|
||||
CodegenParameter pp = op.pathParams.get(0);
|
||||
Assert.assertEquals(pp.example, "'orderid123'");
|
||||
}
|
||||
|
||||
@Test(description = "test example string imported from example in schema (OAS3)")
|
||||
public void exampleStringFromXExampleParameterOAS3Test() {
|
||||
final OpenAPI openAPI = new OpenAPIParser()
|
||||
.readLocation("src/test/resources/3_0/petstore_oas3_test.yaml", null, new ParseOptions()).getOpenAPI();
|
||||
final RubyClientCodegen codegen = new RubyClientCodegen();
|
||||
codegen.setModuleName("OnlinePetstore");
|
||||
final String path = "/store/order/{orderId}";
|
||||
|
||||
final Operation p = openAPI.getPaths().get(path).getDelete();
|
||||
final CodegenOperation op = codegen.fromOperation(path, "delete", p, openAPI.getComponents().getSchemas());
|
||||
|
||||
CodegenParameter pp = op.pathParams.get(0);
|
||||
Assert.assertEquals(pp.example, "'orderid123'");
|
||||
}
|
||||
}
|
||||
|
@ -361,6 +361,7 @@ paths:
|
||||
description: ID of the order that needs to be deleted
|
||||
required: true
|
||||
type: string
|
||||
x-example: orderid123
|
||||
responses:
|
||||
'400':
|
||||
description: Invalid ID supplied
|
||||
|
@ -360,6 +360,7 @@ paths:
|
||||
required: true
|
||||
schema:
|
||||
type: string
|
||||
example: orderid123
|
||||
responses:
|
||||
'400':
|
||||
description: Invalid ID supplied
|
||||
|
Loading…
x
Reference in New Issue
Block a user