Skip to content

Commit 4a9c7bb

Browse files
committed
Reworked tests for Issue #20213
1 parent 4b8953c commit 4a9c7bb

4 files changed

Lines changed: 41 additions & 54 deletions

File tree

modules/openapi-generator/src/test/java/org/openapitools/codegen/DefaultCodegenTest.java

Lines changed: 0 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -5019,57 +5019,4 @@ public void testQueryIsJsonMimeType() {
50195019

50205020
assertTrue(codegenOperation.queryParams.stream().allMatch(p -> p.queryIsJsonMimeType));
50215021
}
5022-
5023-
@Test(description = "Issue #20213")
5024-
public void testModelAdditionalPropertiesWithNullableProperty() throws Exception {
5025-
File output = Files.createTempDirectory("test").toFile();
5026-
output.deleteOnExit();
5027-
File spring = new File(output, "spring");
5028-
5029-
final CodegenConfigurator configurator = new CodegenConfigurator()
5030-
.setGeneratorName("spring")
5031-
.setInputSpec("src/test/resources/3_1/issue_20213.yaml")
5032-
.setOutputDir(spring.getAbsolutePath().replace("\\", "/"));
5033-
5034-
final ClientOptInput clientOptInput = configurator.toClientOptInput();
5035-
DefaultGenerator generator = new DefaultGenerator();
5036-
Map<String, File> files = generator.opts(clientOptInput).generate()
5037-
.stream().collect(Collectors.toMap(File::getName, Function.identity()));
5038-
5039-
JavaFileAssert.assertThat(files.get("SampleObjectWithAdditionalFalse.java"))
5040-
.assertProperty("someString")
5041-
.withType("JsonNullable<String>");
5042-
assertFalse(files.containsKey("SampleObjectWithAdditionalFalseSomeString.java"));
5043-
5044-
5045-
File tsAngular = new File(output, "ts-angular");
5046-
final CodegenConfigurator tsConfigurator = new CodegenConfigurator()
5047-
.setGeneratorName("typescript-angular")
5048-
.setInputSpec("src/test/resources/3_1/issue_20213.yaml")
5049-
.setOutputDir(tsAngular.getAbsolutePath().replace("\\", "/"));
5050-
5051-
final ClientOptInput tsClientOptInput = tsConfigurator.toClientOptInput();
5052-
DefaultGenerator tsGenerator = new DefaultGenerator();
5053-
Map<String, File> tsFiles = tsGenerator.opts(tsClientOptInput).generate()
5054-
.stream().collect(Collectors.toMap(File::getName, Function.identity()));
5055-
5056-
TestUtils.assertFileContains(tsFiles.get("sampleObjectWithAdditionalFalse.ts").toPath(), "someString?: string");
5057-
assertFalse(tsFiles.containsKey("sampleObjectWithAdditionalFalseSomeString.ts"));
5058-
5059-
File javaClient = new File(output, "java");
5060-
final CodegenConfigurator javaClientConfigurator = new CodegenConfigurator()
5061-
.setGeneratorName("java")
5062-
.setInputSpec("src/test/resources/3_1/issue_20213.yaml")
5063-
.setOutputDir(javaClient.getAbsolutePath().replace("\\", "/"));
5064-
5065-
final ClientOptInput javaClientClientOptInput = javaClientConfigurator.toClientOptInput();
5066-
DefaultGenerator javaClientGenerator = new DefaultGenerator();
5067-
Map<String, File> javaClientFiles = javaClientGenerator.opts(javaClientClientOptInput).generate()
5068-
.stream().collect(Collectors.toMap(File::getName, Function.identity()));
5069-
5070-
JavaFileAssert.assertThat(javaClientFiles.get("SampleObjectWithAdditionalFalse.java"))
5071-
.assertProperty("someString")
5072-
.withType("String");
5073-
assertFalse(javaClientFiles.containsKey("SampleObjectWithAdditionalFalseSomeString.java"));
5074-
}
50755022
}

modules/openapi-generator/src/test/java/org/openapitools/codegen/OpenAPINormalizerTest.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -939,6 +939,11 @@ public void testOpenAPINormalizerSimplifyOneOfAnyOf31Spec() {
939939
assertEquals(schema22.getAnyOf(), null);
940940
assertEquals(schema22.getTypes(), Set.of("string"));
941941
assertEquals(schema22.getEnum().size(), 2);
942+
943+
Schema schema23 = openAPI.getComponents().getSchemas().get("AnyOfNullableAdditionalPropertiesTest");
944+
assertEquals(((Schema) schema23.getProperties().get("str")).getAnyOf(), null);
945+
assertTrue(((Schema) schema23.getProperties().get("str")).getNullable());
946+
assertEquals(schema22.getTypes(), Set.of("string"));
942947
}
943948

944949
@Test

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,7 @@
6767
import static org.assertj.core.api.Assertions.assertThat;
6868
import static org.assertj.core.api.Assertions.entry;
6969
import static org.assertj.core.api.InstanceOfAssertFactories.FILE;
70+
import static org.junit.jupiter.api.Assertions.assertFalse;
7071
import static org.openapitools.codegen.CodegenConstants.*;
7172
import static org.openapitools.codegen.TestUtils.*;
7273
import static org.openapitools.codegen.languages.JavaClientCodegen.*;
@@ -3833,6 +3834,30 @@ public void queryParameterJsonSerialization(String library) {
38333834
);
38343835
}
38353836

3837+
@Test(description = "Issue #20213")
3838+
public void givenModelHasFalseAdditionalPropertiesAndPropertyHasNullAsAnyOfTypeThenModelIsCorrect() throws Exception {
3839+
File output = Files.createTempDirectory("test").toFile();
3840+
output.deleteOnExit();
3841+
3842+
final CodegenConfigurator configurator = new CodegenConfigurator()
3843+
.setGeneratorName("java")
3844+
.setInputSpec("src/test/resources/3_1/issue_20213.yaml")
3845+
.setOutputDir(output.getAbsolutePath().replace("\\", "/"));
3846+
3847+
final ClientOptInput clientOptInput = configurator.toClientOptInput();
3848+
DefaultGenerator defaultGenerator = new DefaultGenerator();
3849+
Map<String, File> fileMap = defaultGenerator.opts(clientOptInput).generate()
3850+
.stream().collect(Collectors.toMap(File::getName, Function.identity()));
3851+
3852+
JavaFileAssert.assertThat(fileMap.get("SampleObjectWithAdditionalFalse.java"))
3853+
.assertProperty("someString")
3854+
.withType("String")
3855+
.assertPropertyAnnotations()
3856+
.containsWithName("javax.annotation.Nullable");
3857+
assertFalse(fileMap.containsKey("SampleObjectWithAdditionalFalseSomeString.java"));
3858+
3859+
}
3860+
38363861
@DataProvider(name = "springClients")
38373862
public static Object[] springClients() {
38383863
return new Object[]{RESTCLIENT, WEBCLIENT};

modules/openapi-generator/src/test/resources/3_1/simplifyOneOfAnyOf_test.yaml

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -137,4 +137,14 @@ components:
137137
OneOfNullAndRef3:
138138
oneOf:
139139
- $ref: '#/components/schemas/Parent'
140-
- type: "null"
140+
- type: "null"
141+
AnyOfNullableAdditionalPropertiesTest:
142+
description: to test anyOf with additional properties
143+
additionalProperties: false
144+
properties:
145+
str:
146+
anyOf:
147+
- type: string
148+
- type: 'null'
149+
- type: null
150+
- $ref: null

0 commit comments

Comments
 (0)