Adds fix for issue 7372 (#7383)

This commit is contained in:
spacether 2020-09-14 02:18:43 -07:00 committed by GitHub
parent 0173acd1d3
commit 8556cb8d71
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 40 additions and 1 deletions

View File

@ -781,7 +781,7 @@ public class ModelUtils {
}
} else if (addlProps instanceof Schema) {
// additionalProperties defined as {}
if (addlProps.getType() == null && (addlProps.getProperties() == null || addlProps.getProperties().isEmpty())) {
if (addlProps.getType() == null && addlProps.get$ref() == null && (addlProps.getProperties() == null || addlProps.getProperties().isEmpty())) {
return true;
}
}

View File

@ -21,9 +21,15 @@ import io.swagger.v3.oas.models.OpenAPI;
import io.swagger.v3.oas.models.Operation;
import io.swagger.v3.oas.models.media.*;
import io.swagger.v3.parser.util.SchemaTypeUtil;
import java.io.File;
import java.math.BigDecimal;
import java.nio.file.Files;
import java.util.Arrays;
import java.util.List;
import org.openapitools.codegen.*;
import org.openapitools.codegen.config.CodegenConfigurator;
import org.openapitools.codegen.languages.PythonClientExperimentalCodegen;
import org.openapitools.codegen.utils.ModelUtils;
import org.testng.Assert;
@ -375,4 +381,22 @@ public class PythonClientExperimentalTest {
Assert.assertEquals(noDefaultEumLengthOneModel.defaultValue, "15.0");
Assert.assertEquals(noDefaultEumLengthOneModel.hasRequired, false);
}
@Test
public void testObjectModelWithRefedAdditionalPropertiesIsGenerated() throws Exception {
File output = Files.createTempDirectory("test").toFile();
final CodegenConfigurator configurator = new CodegenConfigurator()
.setGeneratorName("python-experimental")
.setInputSpec("src/test/resources/3_0/issue_7372.yaml")
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
final ClientOptInput clientOptInput = configurator.toClientOptInput();
DefaultGenerator generator = new DefaultGenerator();
List<File> files = generator.opts(clientOptInput).generate();
TestUtils.ensureContainsFile(files, output, "openapi_client/model/a.py");
TestUtils.ensureContainsFile(files, output, "openapi_client/model/b.py");
output.deleteOnExit();
}
}

View File

@ -0,0 +1,15 @@
openapi: 3.0.0
info:
title: foo
version: 1.0.0
components:
schemas:
A:
type: object
additionalProperties:
$ref: '#/components/schemas/B'
B:
type: array
items:
type: object
paths: {}