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;
 | 
					package org.openapitools.codegen.languages;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import io.swagger.v3.oas.models.media.Schema;
 | 
					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.apache.commons.lang3.StringUtils;
 | 
				
			||||||
import org.openapitools.codegen.*;
 | 
					import org.openapitools.codegen.*;
 | 
				
			||||||
import org.slf4j.Logger;
 | 
					import org.slf4j.Logger;
 | 
				
			||||||
@ -536,6 +538,34 @@ public class RubyClientCodegen extends AbstractRubyCodegen {
 | 
				
			|||||||
        p.example = example;
 | 
					        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) {
 | 
					    public void setGemName(String gemName) {
 | 
				
			||||||
        this.gemName = 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
 | 
					        // TODO comment out the following until https://github.com/swagger-api/swagger-parser/issues/820 is solved
 | 
				
			||||||
        //Assert.assertTrue(status.isNullable);
 | 
					        //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
 | 
					          description: ID of the order that needs to be deleted
 | 
				
			||||||
          required: true
 | 
					          required: true
 | 
				
			||||||
          type: string
 | 
					          type: string
 | 
				
			||||||
 | 
					          x-example: orderid123
 | 
				
			||||||
      responses:
 | 
					      responses:
 | 
				
			||||||
        '400':
 | 
					        '400':
 | 
				
			||||||
          description: Invalid ID supplied
 | 
					          description: Invalid ID supplied
 | 
				
			||||||
 | 
				
			|||||||
@ -360,6 +360,7 @@ paths:
 | 
				
			|||||||
          required: true
 | 
					          required: true
 | 
				
			||||||
          schema:
 | 
					          schema:
 | 
				
			||||||
            type: string
 | 
					            type: string
 | 
				
			||||||
 | 
					            example: orderid123
 | 
				
			||||||
      responses:
 | 
					      responses:
 | 
				
			||||||
        '400':
 | 
					        '400':
 | 
				
			||||||
          description: Invalid ID supplied
 | 
					          description: Invalid ID supplied
 | 
				
			||||||
 | 
				
			|||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user