Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
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
Prev Previous commit
Next Next commit
Merge branch 'master' into fix-nullable-field
  • Loading branch information
etremblay committed Aug 31, 2022
commit 0a2512e3c51169061be8321d1f0853fee77e2eff
Original file line number Diff line number Diff line change
Expand Up @@ -4220,6 +4220,31 @@ public void testUnalias() {
Assert.assertEquals(codegenParameter.getSchema(), null);
}

@Test
public void testFromPropertyRequiredAndOptional() {
final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/issue_12857.yaml");
final DefaultCodegen codegen = new DefaultCodegen();
codegen.setOpenAPI(openAPI);
codegen.setDisallowAdditionalPropertiesIfNotPresent(false);

String modelName = "FooRequired";
Schema sc = openAPI.getComponents().getSchemas().get(modelName);
CodegenModel fooRequired = codegen.fromModel(modelName, sc);
modelName = "FooOptional";
sc = openAPI.getComponents().getSchemas().get(modelName);
CodegenModel fooOptional = codegen.fromModel(modelName, sc);
Assert.assertTrue(fooRequired.vars.get(0).required);
Assert.assertEquals(fooRequired.vars.get(0).name, "foo");

Assert.assertEquals(fooRequired.requiredVars.size(), 1);
Assert.assertEquals(fooRequired.requiredVars.get(0).name, "foo");
Assert.assertTrue(fooRequired.requiredVars.get(0).required);

Assert.assertFalse(fooOptional.vars.get(0).required);
Assert.assertEquals(fooOptional.vars.get(0).name, "foo");
Assert.assertEquals(fooOptional.requiredVars.size(), 0);
}

@Test
public void testNullabelObjectProperties() {
DefaultCodegen codegen = new DefaultCodegen();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,10 @@
import org.openapitools.codegen.utils.ModelUtils;
import org.testng.Assert;
import org.testng.annotations.Test;
import java.io.File;
import java.util.Collections;
import java.util.List;
import java.util.Map;

import static org.junit.Assert.assertFalse;
import static org.testng.Assert.assertEquals;
Expand Down Expand Up @@ -86,6 +90,62 @@ public void testArrayWithUniqueItems() {
Assert.assertFalse(codegenModel.imports.contains("Set"));
}

@Test
public void testWithAdditionalProperties() {
final Schema inner = new ObjectSchema();
inner.setAdditionalProperties(true);

final Schema root = new ObjectSchema()
.addProperties("inner", inner);

final DefaultCodegen codegen = new TypeScriptClientCodegen();
final OpenAPI openAPI = TestUtils.createOpenAPIWithOneSchema("sample", root);
codegen.setOpenAPI(openAPI);

try {
// TypeScriptClientCodegen can generate codes without throwing exception.
codegen.fromModel("sample", root);
} catch (Exception e) {
Assert.fail("Exception was thrown.");
}
}

@Test
public void defaultModelImportTest() {
final DefaultCodegen codegen = new TypeScriptClientCodegen();

final CodegenModel cm = new CodegenModel();
cm.setImports(Collections.singleton("ApiResponse"));
final ModelsMap models = new ModelsMap();
final ModelMap model = new ModelMap();
model.setModel(cm);
models.setModels(Collections.singletonList(model));

final ModelsMap processedModels = codegen.postProcessModels(models);
final List<Map<String, String>> tsImports = (List<Map<String, String>>) processedModels.getModels().get(0).get("tsImports");
Assert.assertEquals(tsImports.get(0).get("filename"), "../models/ApiResponse".replace("/", File.separator));
Assert.assertEquals(tsImports.get(0).get("classname"), "ApiResponse");
}

@Test
public void modelImportWithMappingTest() {
final DefaultCodegen codegen = new TypeScriptClientCodegen();
final String mappedName = "@namespace/dir/response";
codegen.importMapping().put("ApiResponse", mappedName);

final CodegenModel cm = new CodegenModel();
cm.setImports(Collections.singleton("ApiResponse"));
final ModelsMap models = new ModelsMap();
final ModelMap model = new ModelMap();
model.setModel(cm);
models.setModels(Collections.singletonList(model));

final ModelsMap processedModels = codegen.postProcessModels(models);
final List<Map<String, String>> tsImports = (List<Map<String, String>>) processedModels.getModels().get(0).get("tsImports");
Assert.assertEquals(tsImports.get(0).get("filename"), mappedName);
Assert.assertEquals(tsImports.get(0).get("classname"), "ApiResponse");
}

@Test
public void testNullabelObjectProperties() {
DefaultCodegen codegen = new TypeScriptClientCodegen();
Expand Down Expand Up @@ -115,5 +175,4 @@ public void testNullabelObjectProperties() {
// assertEquals(property.openApiType, "string | number"); // Worked before #12104
// oneOf property resolve to any type and is set to nullable
}

}
You are viewing a condensed version of this merge commit. You can view the full changes here.