Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix issue with Ruby client where strings from example properties are not wrapped with quotes #987

Merged
merged 1 commit into from
Nov 4, 2018
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -537,6 +539,34 @@ public void setParameterExampleValue(CodegenParameter p) {
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;
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -271,4 +271,33 @@ public void nullableParameterOAS2Test() {
// 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'");
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -360,6 +360,7 @@ paths:
required: true
schema:
type: string
example: orderid123
responses:
'400':
description: Invalid ID supplied
Expand Down