forked from loafle/openapi-generator-original
typescript-node: handle additional properties (#4699)
* add handling additional properties into typescript node * additional tests * petscripts * Update modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java Co-Authored-By: Esteban Gehring <esteban.gehring@gmail.com> * Update modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/TypeScriptNodeClientCodegen.java Co-Authored-By: Esteban Gehring <esteban.gehring@gmail.com>
This commit is contained in:
parent
d0dfe3e4a0
commit
f472020412
@ -18,8 +18,10 @@
|
||||
package org.openapitools.codegen.languages;
|
||||
|
||||
import io.swagger.v3.oas.models.Operation;
|
||||
import io.swagger.v3.oas.models.media.ArraySchema;
|
||||
import io.swagger.v3.oas.models.media.Schema;
|
||||
import io.swagger.v3.oas.models.responses.ApiResponse;
|
||||
|
||||
import org.openapitools.codegen.*;
|
||||
import org.openapitools.codegen.utils.ModelUtils;
|
||||
import org.slf4j.Logger;
|
||||
@ -189,8 +191,8 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen
|
||||
// Loop over all the operations and pick out each unique auth method
|
||||
Map<String, CodegenSecurity> authMethodsMap = new HashMap<>();
|
||||
for (CodegenOperation op : (List<CodegenOperation>) objs.get("operation")) {
|
||||
if(op.hasAuthMethods){
|
||||
for(CodegenSecurity sec : op.authMethods){
|
||||
if (op.hasAuthMethods) {
|
||||
for (CodegenSecurity sec : op.authMethods) {
|
||||
authMethodsMap.put(sec.name, sec);
|
||||
}
|
||||
}
|
||||
@ -299,4 +301,14 @@ public class TypeScriptNodeClientCodegen extends AbstractTypeScriptClientCodegen
|
||||
String name = filename.substring((modelPackage() + File.separator).length());
|
||||
return camelize(name);
|
||||
}
|
||||
@Override
|
||||
protected void addAdditionPropertiesToCodeGenModel(CodegenModel codegenModel, Schema schema) {
|
||||
super.addAdditionPropertiesToCodeGenModel(codegenModel, schema);
|
||||
Schema additionalProperties = ModelUtils.getAdditionalProperties(schema);
|
||||
codegenModel.additionalPropertiesType = getSchemaType(additionalProperties);
|
||||
if ("array".equalsIgnoreCase(codegenModel.additionalPropertiesType)) {
|
||||
codegenModel.additionalPropertiesType += '<' + getSchemaType(((ArraySchema) additionalProperties).getItems()) + '>';
|
||||
}
|
||||
addImport(codegenModel, codegenModel.additionalPropertiesType);
|
||||
}
|
||||
}
|
||||
|
@ -18,9 +18,11 @@
|
||||
package org.openapitools.codegen.typescript.typescriptnode;
|
||||
|
||||
import com.google.common.collect.Sets;
|
||||
|
||||
import io.swagger.v3.oas.models.OpenAPI;
|
||||
import io.swagger.v3.oas.models.media.*;
|
||||
import io.swagger.v3.parser.util.SchemaTypeUtil;
|
||||
|
||||
import org.openapitools.codegen.CodegenModel;
|
||||
import org.openapitools.codegen.CodegenProperty;
|
||||
import org.openapitools.codegen.DefaultCodegen;
|
||||
@ -206,6 +208,54 @@ public class TypeScriptNodeModelTest {
|
||||
Assert.assertEquals(Sets.intersection(cm.imports, Sets.newHashSet("Children")).size(), 1);
|
||||
}
|
||||
|
||||
@Test(description = "convert an array additional properties model")
|
||||
public void arrayModelAdditionalPropertiesArrayTest() {
|
||||
final Schema schema = new Schema()
|
||||
.description("a map model")
|
||||
.additionalProperties(new ArraySchema().type("array").items(new Schema().type("string")));
|
||||
final DefaultCodegen codegen = new TypeScriptNodeClientCodegen();
|
||||
OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", schema);
|
||||
codegen.setOpenAPI(openAPI);
|
||||
final CodegenModel cm = codegen.fromModel("sample", schema);
|
||||
|
||||
Assert.assertEquals(cm.name, "sample");
|
||||
Assert.assertEquals(cm.classname, "Sample");
|
||||
Assert.assertEquals(cm.description, "a map model");
|
||||
Assert.assertEquals(cm.additionalPropertiesType, "Array<string>");
|
||||
}
|
||||
|
||||
@Test(description = "convert an string additional properties model")
|
||||
public void arrayModelAdditionalPropertiesStringTest() {
|
||||
final Schema schema = new Schema()
|
||||
.description("a map model")
|
||||
.additionalProperties(new Schema().type("string"));
|
||||
final DefaultCodegen codegen = new TypeScriptNodeClientCodegen();
|
||||
OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", schema);
|
||||
codegen.setOpenAPI(openAPI);
|
||||
final CodegenModel cm = codegen.fromModel("sample", schema);
|
||||
|
||||
Assert.assertEquals(cm.name, "sample");
|
||||
Assert.assertEquals(cm.classname, "Sample");
|
||||
Assert.assertEquals(cm.description, "a map model");
|
||||
Assert.assertEquals(cm.additionalPropertiesType, "string");
|
||||
}
|
||||
|
||||
@Test(description = "convert an complex additional properties model")
|
||||
public void arrayModelAdditionalPropertiesComplexTest() {
|
||||
final Schema schema = new Schema()
|
||||
.description("a map model")
|
||||
.additionalProperties(new Schema().type("object").$ref("#/definitions/Children"));
|
||||
final DefaultCodegen codegen = new TypeScriptNodeClientCodegen();
|
||||
OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", schema);
|
||||
codegen.setOpenAPI(openAPI);
|
||||
final CodegenModel cm = codegen.fromModel("sample", schema);
|
||||
|
||||
Assert.assertEquals(cm.name, "sample");
|
||||
Assert.assertEquals(cm.classname, "Sample");
|
||||
Assert.assertEquals(cm.description, "a map model");
|
||||
Assert.assertEquals(cm.additionalPropertiesType, "Children");
|
||||
}
|
||||
|
||||
@Test(description = "prepend imports with ./ by default")
|
||||
public void defaultFromModelTest() {
|
||||
final OpenAPI openAPI = TestUtils.parseSpec("src/test/resources/3_0/petstore.yaml");
|
||||
|
@ -1 +1 @@
|
||||
4.2.2-SNAPSHOT
|
||||
4.2.3-SNAPSHOT
|
Loading…
x
Reference in New Issue
Block a user