From 22f18fad91eb75764c05b3e80eb3f231687f2e3a Mon Sep 17 00:00:00 2001 From: Philzen Date: Sun, 26 May 2024 04:53:23 +0200 Subject: [PATCH] Fix tests for parsing of additional type annotations & refactor test code (#18751) * Fix tests for parsing of additional type annotations These were comparing the same things with each other and this could not fail. Now using (as probably intended by the author) the before unused ArrayList for assertion of the expectation. * Remove Exception from signature that is never thrown * Simplify assertions using AssertJ * Replace stub implementation with abstract Mockito mock * Cache flat parsed openapi results for faster test execution Simply caching any calls to TestUtils.parseFlattenSpec that occur at least twice. * Fix some "Raw use of parameterized class 'Schema'" warnings --- .../codegen/utils/ModelUtils.java | 2 +- .../AbstractJavaCodegenExampleValuesTest.java | 73 +-- .../codegen/java/AbstractJavaCodegenTest.java | 435 +++++++----------- 3 files changed, 185 insertions(+), 325 deletions(-) diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java index c5f6422fc7a..7cf7ce61881 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/utils/ModelUtils.java @@ -960,7 +960,7 @@ public class ModelUtils { * @param schema potentially containing a '$ref' * @return schema without '$ref' */ - public static Schema getReferencedSchema(OpenAPI openAPI, Schema schema) { + public static Schema getReferencedSchema(OpenAPI openAPI, Schema schema) { if (schema == null) { return null; } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenExampleValuesTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenExampleValuesTest.java index 2cbe4c62364..599b40d0b8c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenExampleValuesTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenExampleValuesTest.java @@ -17,11 +17,13 @@ package org.openapitools.codegen.java; +import org.mockito.Answers; +import org.mockito.Mockito; import org.openapitools.codegen.CodegenParameter; import org.openapitools.codegen.CodegenProperty; -import org.openapitools.codegen.CodegenType; import org.openapitools.codegen.languages.AbstractJavaCodegen; import org.testng.Assert; +import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.util.Arrays; @@ -29,7 +31,17 @@ import java.util.Collections; public class AbstractJavaCodegenExampleValuesTest { - private final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen(); + private AbstractJavaCodegen codegen; + + /** + * In TEST-NG, test class (and its fields) is only constructed once (vs. for every test in Jupiter), + * using @BeforeMethod to have a fresh codegen mock for each test + */ + @BeforeMethod void mockAbstractCodegen() { + codegen = Mockito.mock( + AbstractJavaCodegen.class, Mockito.withSettings().defaultAnswer(Answers.CALLS_REAL_METHODS).useConstructor() + ); + } @Test void referencedEnumTakeFirstName() { @@ -37,7 +49,7 @@ public class AbstractJavaCodegenExampleValuesTest { p.allowableValues = Collections.singletonMap("values", Arrays.asList("first", "second")); p.dataType = "WrappedEnum"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "WrappedEnum.fromValue(\"first\")"); } @@ -48,7 +60,7 @@ public class AbstractJavaCodegenExampleValuesTest { p.isEnum = true; p.dataType = "String"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "\"first\""); } @@ -61,7 +73,7 @@ public class AbstractJavaCodegenExampleValuesTest { p.dataType = "List"; p.items = new CodegenProperty(); - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "Arrays.asList()"); } @@ -71,7 +83,7 @@ public class AbstractJavaCodegenExampleValuesTest { p.isDate = true; p.dataType = "LocalDate"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "LocalDate.now()"); } @@ -82,7 +94,7 @@ public class AbstractJavaCodegenExampleValuesTest { p.dataType = "LocalDate"; p.example = "2017-03-30"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "LocalDate.parse(\"2017-03-30\")"); } @@ -92,7 +104,7 @@ public class AbstractJavaCodegenExampleValuesTest { p.isDateTime = true; p.dataType = "OffsetDateTime"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "OffsetDateTime.now()"); } @@ -103,7 +115,7 @@ public class AbstractJavaCodegenExampleValuesTest { p.dataType = "OffsetDateTime"; p.example = "2007-12-03T10:15:30+01:00"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "OffsetDateTime.parse(\"2007-12-03T10:15:30+01:00\")"); } @@ -113,7 +125,7 @@ public class AbstractJavaCodegenExampleValuesTest { p.isUuid = true; p.dataType = "UUID"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "UUID.randomUUID()"); } @@ -124,46 +136,7 @@ public class AbstractJavaCodegenExampleValuesTest { p.dataType = "UUID"; p.example = "13b48713-b931-45ea-bd60-b07491245960"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "UUID.fromString(\"13b48713-b931-45ea-bd60-b07491245960\")"); } - - private static class P_AbstractJavaCodegen extends AbstractJavaCodegen { - @Override - public CodegenType getTag() { - return null; - } - - @Override - public String getName() { - return null; - } - - @Override - public String getHelp() { - return null; - } - - /** - * Gets artifact version. - * Only for testing purposes. - * - * @return version - */ - public String getArtifactVersion() { - return this.artifactVersion; - } - @Test - void customExampleForEnumValue() { - final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen(); - final CodegenParameter p = new CodegenParameter(); - p.allowableValues = Collections.singletonMap("values", Arrays.asList("first", "second")); - p.dataType = "WrappedEnum"; - p.example = "CustomEnumValue"; - - fakeJavaCodegen.setParameterExampleValue(p); - // Custom example value should not be modified - Assert.assertEquals(p.example, "CustomEnumValue"); - } - } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java index dbca31cda54..b3233495371 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java @@ -31,65 +31,86 @@ import java.time.ZonedDateTime; import java.util.*; import java.util.stream.Collectors; + +import org.mockito.Answers; +import org.mockito.Mockito; import org.openapitools.codegen.*; import org.openapitools.codegen.languages.AbstractJavaCodegen; import org.openapitools.codegen.utils.ModelUtils; import org.testng.Assert; +import org.testng.annotations.BeforeMethod; import org.testng.annotations.Test; import java.io.File; import java.time.LocalDate; import java.time.ZoneId; +import static org.assertj.core.api.Assertions.assertThat; + public class AbstractJavaCodegenTest { - private final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen(); + static final Map FLATTENED_SPEC = Map.of( + "3_0/petstore", TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"), + "3_0/mapSchemas", TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml"), + "3_0/spring/date-time-parameter-types-for-testing", TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml") + ); + + private AbstractJavaCodegen codegen; + + /** + * In TEST-NG, test class (and its fields) is only constructed once (vs. for every test in Jupiter), + * using @BeforeMethod to have a fresh codegen mock for each test + */ + @BeforeMethod void mockAbstractCodegen() { + codegen = Mockito.mock( + AbstractJavaCodegen.class, Mockito.withSettings().defaultAnswer(Answers.CALLS_REAL_METHODS).useConstructor() + ); + } @Test - public void toEnumVarNameShouldNotShortenUnderScore() throws Exception { - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_", "String"), "UNDERSCORE"); - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("__", "String"), "__"); - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_,.", "String"), "__"); + public void toEnumVarNameShouldNotShortenUnderScore() { + Assert.assertEquals(codegen.toEnumVarName("_", "String"), "UNDERSCORE"); + Assert.assertEquals(codegen.toEnumVarName("__", "String"), "__"); + Assert.assertEquals(codegen.toEnumVarName("_,.", "String"), "__"); } /** * As of Java 9, '_' is a keyword, and may not be used as an identifier. */ @Test - public void toEnumVarNameShouldNotResultInSingleUnderscore() throws Exception { - Assert.assertEquals(fakeJavaCodegen.toEnumVarName(" ", "String"), "SPACE"); - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("==", "String"), "u"); + public void toEnumVarNameShouldNotResultInSingleUnderscore() { + Assert.assertEquals(codegen.toEnumVarName(" ", "String"), "SPACE"); + Assert.assertEquals(codegen.toEnumVarName("==", "String"), "u"); } @Test public void toEnumVarNameAddUnderscoresIfValueIsPascalCase() { - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("OnlyCamelCase", "String"), "ONLY_CAMEL_CASE"); - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("WithNumber1", "String"), "WITH_NUMBER1"); - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_LeadingUnderscore", "String"), "_LEADING_UNDERSCORE"); + Assert.assertEquals(codegen.toEnumVarName("OnlyCamelCase", "String"), "ONLY_CAMEL_CASE"); + Assert.assertEquals(codegen.toEnumVarName("WithNumber1", "String"), "WITH_NUMBER1"); + Assert.assertEquals(codegen.toEnumVarName("_LeadingUnderscore", "String"), "_LEADING_UNDERSCORE"); } @Test - public void toVarNameShouldAvoidOverloadingGetClassMethod() throws Exception { - Assert.assertEquals(fakeJavaCodegen.toVarName("class"), "propertyClass"); - Assert.assertEquals(fakeJavaCodegen.toVarName("_class"), "propertyClass"); - Assert.assertEquals(fakeJavaCodegen.toVarName("__class"), "propertyClass"); + public void toVarNameShouldAvoidOverloadingGetClassMethod() { + Assert.assertEquals(codegen.toVarName("class"), "propertyClass"); + Assert.assertEquals(codegen.toVarName("_class"), "propertyClass"); + Assert.assertEquals(codegen.toVarName("__class"), "propertyClass"); } @Test - public void toModelNameShouldNotUseProvidedMapping() throws Exception { - fakeJavaCodegen.importMapping().put("json_myclass", "com.test.MyClass"); - Assert.assertEquals(fakeJavaCodegen.toModelName("json_myclass"), "JsonMyclass"); + public void toModelNameShouldNotUseProvidedMapping() { + codegen.importMapping().put("json_myclass", "com.test.MyClass"); + Assert.assertEquals(codegen.toModelName("json_myclass"), "JsonMyclass"); } @Test - public void toModelNameUsesPascalCase() throws Exception { - Assert.assertEquals(fakeJavaCodegen.toModelName("json_anotherclass"), "JsonAnotherclass"); + public void toModelNameUsesPascalCase() { + Assert.assertEquals(codegen.toModelName("json_anotherclass"), "JsonAnotherclass"); } @Test - public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() throws Exception { - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); + public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() { + final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/petstore"); codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.getArtifactVersion(), openAPI.getInfo().getVersion()); @@ -100,10 +121,9 @@ public class AbstractJavaCodegenTest { } @Test - public void testPreprocessOpenAPINumVersion() throws Exception { + public void testPreprocessOpenAPINumVersion() { final OpenAPI openAPIOtherNumVersion = TestUtils.parseFlattenSpec("src/test/resources/2_0/duplicateOperationIds.yaml"); - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - + codegen.preprocessOpenAPI(openAPIOtherNumVersion); Assert.assertEquals(codegen.getArtifactVersion(), openAPIOtherNumVersion.getInfo().getVersion()); @@ -111,52 +131,54 @@ public class AbstractJavaCodegenTest { @Test public void convertVarName() { - Assert.assertEquals(fakeJavaCodegen.toVarName("name"), "name"); - Assert.assertEquals(fakeJavaCodegen.toVarName("$name"), "$name"); - Assert.assertEquals(fakeJavaCodegen.toVarName("nam$$e"), "nam$$e"); - Assert.assertEquals(fakeJavaCodegen.toVarName("user-name"), "userName"); - Assert.assertEquals(fakeJavaCodegen.toVarName("user_name"), "userName"); - Assert.assertEquals(fakeJavaCodegen.toVarName("user|name"), "userName"); - Assert.assertEquals(fakeJavaCodegen.toVarName("uSername"), "uSername"); - Assert.assertEquals(fakeJavaCodegen.toVarName("USERname"), "usERname"); - Assert.assertEquals(fakeJavaCodegen.toVarName("USERNAME"), "USERNAME"); - Assert.assertEquals(fakeJavaCodegen.toVarName("USER123NAME"), "USER123NAME"); - Assert.assertEquals(fakeJavaCodegen.toVarName("1"), "_1"); - Assert.assertEquals(fakeJavaCodegen.toVarName("1a"), "_1a"); - Assert.assertEquals(fakeJavaCodegen.toVarName("1A"), "_1A"); - Assert.assertEquals(fakeJavaCodegen.toVarName("1AAAA"), "_1AAAA"); - Assert.assertEquals(fakeJavaCodegen.toVarName("1AAaa"), "_1aAaa"); - - AbstractJavaCodegen withCaml = new P_AbstractJavaCodegen(); - withCaml.setCamelCaseDollarSign(true); - Assert.assertEquals(withCaml.toVarName("$name"), "$Name"); - Assert.assertEquals(withCaml.toVarName("1AAaa"), "_1AAaa"); + Assert.assertEquals(codegen.toVarName("name"), "name"); + Assert.assertEquals(codegen.toVarName("$name"), "$name"); + Assert.assertEquals(codegen.toVarName("nam$$e"), "nam$$e"); + Assert.assertEquals(codegen.toVarName("user-name"), "userName"); + Assert.assertEquals(codegen.toVarName("user_name"), "userName"); + Assert.assertEquals(codegen.toVarName("user|name"), "userName"); + Assert.assertEquals(codegen.toVarName("uSername"), "uSername"); + Assert.assertEquals(codegen.toVarName("USERname"), "usERname"); + Assert.assertEquals(codegen.toVarName("USERNAME"), "USERNAME"); + Assert.assertEquals(codegen.toVarName("USER123NAME"), "USER123NAME"); + Assert.assertEquals(codegen.toVarName("1"), "_1"); + Assert.assertEquals(codegen.toVarName("1a"), "_1a"); + Assert.assertEquals(codegen.toVarName("1A"), "_1A"); + Assert.assertEquals(codegen.toVarName("1AAAA"), "_1AAAA"); + Assert.assertEquals(codegen.toVarName("1AAaa"), "_1aAaa"); } + @Test + public void convertVarNameWithCaml() { + codegen.setCamelCaseDollarSign(true); + + Assert.assertEquals(codegen.toVarName("$name"), "$Name"); + Assert.assertEquals(codegen.toVarName("1AAaa"), "_1AAaa"); + } + @Test public void convertModelName() { - Assert.assertEquals(fakeJavaCodegen.toModelName("name"), "Name"); - Assert.assertEquals(fakeJavaCodegen.toModelName("$name"), "Name"); - Assert.assertEquals(fakeJavaCodegen.toModelName("nam#e"), "Name"); - Assert.assertEquals(fakeJavaCodegen.toModelName("$another-fake?"), "AnotherFake"); - Assert.assertEquals(fakeJavaCodegen.toModelName("1a"), "Model1a"); - Assert.assertEquals(fakeJavaCodegen.toModelName("1A"), "Model1A"); - Assert.assertEquals(fakeJavaCodegen.toModelName("AAAb"), "AAAb"); - Assert.assertEquals(fakeJavaCodegen.toModelName("aBB"), "ABB"); - Assert.assertEquals(fakeJavaCodegen.toModelName("AaBBa"), "AaBBa"); - Assert.assertEquals(fakeJavaCodegen.toModelName("A_B"), "AB"); - Assert.assertEquals(fakeJavaCodegen.toModelName("A-B"), "AB"); - Assert.assertEquals(fakeJavaCodegen.toModelName("Aa_Bb"), "AaBb"); - Assert.assertEquals(fakeJavaCodegen.toModelName("Aa-Bb"), "AaBb"); - Assert.assertEquals(fakeJavaCodegen.toModelName("Aa_bb"), "AaBb"); - Assert.assertEquals(fakeJavaCodegen.toModelName("Aa-bb"), "AaBb"); + Assert.assertEquals(codegen.toModelName("name"), "Name"); + Assert.assertEquals(codegen.toModelName("$name"), "Name"); + Assert.assertEquals(codegen.toModelName("nam#e"), "Name"); + Assert.assertEquals(codegen.toModelName("$another-fake?"), "AnotherFake"); + Assert.assertEquals(codegen.toModelName("1a"), "Model1a"); + Assert.assertEquals(codegen.toModelName("1A"), "Model1A"); + Assert.assertEquals(codegen.toModelName("AAAb"), "AAAb"); + Assert.assertEquals(codegen.toModelName("aBB"), "ABB"); + Assert.assertEquals(codegen.toModelName("AaBBa"), "AaBBa"); + Assert.assertEquals(codegen.toModelName("A_B"), "AB"); + Assert.assertEquals(codegen.toModelName("A-B"), "AB"); + Assert.assertEquals(codegen.toModelName("Aa_Bb"), "AaBb"); + Assert.assertEquals(codegen.toModelName("Aa-Bb"), "AaBb"); + Assert.assertEquals(codegen.toModelName("Aa_bb"), "AaBb"); + Assert.assertEquals(codegen.toModelName("Aa-bb"), "AaBb"); } @Test public void testInitialConfigValues() throws Exception { OpenAPI openAPI = TestUtils.createOpenAPI(); - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.processOpts(); codegen.preprocessOpenAPI(openAPI); @@ -177,7 +199,6 @@ public class AbstractJavaCodegenTest { public void testSettersForConfigValues() throws Exception { OpenAPI openAPI = TestUtils.createOpenAPI(); - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setHideGenerationTimestamp(true); codegen.setModelPackage("xyz.yyyyy.zzzzzzz.model"); @@ -204,18 +225,15 @@ public class AbstractJavaCodegenTest { @Test public void testAdditionalPropertiesPutForConfigValues() throws Exception { - OpenAPI openAPI = TestUtils.createOpenAPI(); - - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(CodegenConstants.HIDE_GENERATION_TIMESTAMP, false); codegen.additionalProperties().put(CodegenConstants.MODEL_PACKAGE, "xyz.yyyyy.model.oooooo"); codegen.additionalProperties().put(CodegenConstants.API_PACKAGE, "xyz.yyyyy.api.oooooo"); codegen.additionalProperties().put(CodegenConstants.INVOKER_PACKAGE, "xyz.yyyyy.invoker.oooooo"); codegen.additionalProperties().put(AbstractJavaCodegen.BOOLEAN_GETTER_PREFIX, "getBoolean"); codegen.additionalProperties().put(CodegenConstants.ARTIFACT_VERSION, "0.8.0-SNAPSHOT"); - codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); + codegen.processOpts(); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); Assert.assertEquals(codegen.additionalProperties().get(CodegenConstants.HIDE_GENERATION_TIMESTAMP), Boolean.FALSE); Assert.assertFalse(codegen.isHideGenerationTimestamp()); @@ -231,119 +249,62 @@ public class AbstractJavaCodegenTest { } @Test - public void testAdditionalModelTypeAnnotationsSemiColon() throws Exception { - OpenAPI openAPI = TestUtils.createOpenAPI(); - - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); + public void testAdditionalModelTypeAnnotationsSemiColon() { codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar"); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - final List additionalModelTypeAnnotations = new ArrayList(); - additionalModelTypeAnnotations.add("@Foo"); - additionalModelTypeAnnotations.add("@Bar"); - - final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo"); } @Test - public void testAdditionalModelTypeAnnotationsNewLineLinux() throws Exception { - OpenAPI openAPI = TestUtils.createOpenAPI(); - - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); + public void testAdditionalModelTypeAnnotationsNewLineLinux() { codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\n@Bar"); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - final List additionalModelTypeAnnotations = new ArrayList(); - additionalModelTypeAnnotations.add("@Foo"); - additionalModelTypeAnnotations.add("@Bar"); - - final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo"); } @Test - public void testAdditionalModelTypeAnnotationsNewLineWindows() throws Exception { - OpenAPI openAPI = TestUtils.createOpenAPI(); - - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); + public void testAdditionalModelTypeAnnotationsNewLineWindows() { codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\r\n@Bar"); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - final List additionalModelTypeAnnotations = new ArrayList(); - additionalModelTypeAnnotations.add("@Foo"); - additionalModelTypeAnnotations.add("@Bar"); - - final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo"); } @Test - public void testAdditionalModelTypeAnnotationsMixed() throws Exception { - OpenAPI openAPI = TestUtils.createOpenAPI(); - - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); + public void testAdditionalModelTypeAnnotationsMixed() { codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, " \t @Foo;\r\n@Bar ;\n @Foobar "); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - final List additionalModelTypeAnnotations = new ArrayList(); - additionalModelTypeAnnotations.add("@Foo"); - additionalModelTypeAnnotations.add("@Bar"); - additionalModelTypeAnnotations.add("@Foobar"); - - final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo", "@Foobar"); } @Test - public void testAdditionalModelTypeAnnotationsNoDuplicate() throws Exception { - OpenAPI openAPI = TestUtils.createOpenAPI(); - - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); + public void testAdditionalModelTypeAnnotationsNoDuplicate() { codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar;@Foo"); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - final List additionalModelTypeAnnotations = new ArrayList(); - additionalModelTypeAnnotations.add("@Foo"); - additionalModelTypeAnnotations.add("@Bar"); - - final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo", "@Foo"); } @Test public void toEnumValue() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); Assert.assertEquals(codegen.toEnumValue("1", "Integer"), "1"); Assert.assertEquals(codegen.toEnumValue("42", "Double"), "42"); Assert.assertEquals(codegen.toEnumValue("1337", "Long"), "1337l"); @@ -353,7 +314,6 @@ public class AbstractJavaCodegenTest { @Test public void apiFileFolder() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setOutputDir("/User/open.api.tools"); codegen.setSourceFolder("source.folder"); codegen.setApiPackage("org.openapitools.codegen.api"); @@ -362,7 +322,6 @@ public class AbstractJavaCodegenTest { @Test public void apiTestFileFolder() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setOutputDir("/User/open.api.tools"); codegen.setTestFolder("test.folder"); codegen.setApiPackage("org.openapitools.codegen.api"); @@ -371,7 +330,6 @@ public class AbstractJavaCodegenTest { @Test public void modelTestFileFolder() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setOutputDir("/User/open.api.tools"); codegen.setTestFolder("test.folder"); codegen.setModelPackage("org.openapitools.codegen.model"); @@ -380,7 +338,6 @@ public class AbstractJavaCodegenTest { @Test public void apiTestFileFolderDirect() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setOutputTestFolder("/User/open.api.tools"); codegen.setTestFolder("test.folder"); codegen.setApiPackage("org.openapitools.codegen.api"); @@ -389,7 +346,6 @@ public class AbstractJavaCodegenTest { @Test public void modelTestFileFolderDirect() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setOutputTestFolder("/User/open.api.tools"); codegen.setTestFolder("test.folder"); codegen.setModelPackage("org.openapitools.codegen.model"); @@ -398,7 +354,6 @@ public class AbstractJavaCodegenTest { @Test public void modelFileFolder() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setOutputDir("/User/open.api.tools"); codegen.setSourceFolder("source.folder"); codegen.setModelPackage("org.openapitools.codegen.model"); @@ -407,69 +362,57 @@ public class AbstractJavaCodegenTest { @Test public void apiDocFileFolder() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setOutputDir("/User/open.api.tools"); Assert.assertEquals(codegen.apiDocFileFolder(), "/User/open.api.tools/docs/".replace('/', File.separatorChar)); } @Test(description = "tests if API version specification is used if no version is provided in additional properties") public void openApiVersionTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - OpenAPI api = TestUtils.createOpenAPI(); codegen.processOpts(); - codegen.preprocessOpenAPI(api); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); Assert.assertEquals(codegen.getArtifactVersion(), "1.0.7"); } @Test(description = "tests if API version specification is used if no version is provided in additional properties with snapshot version") public void openApiSnapShotVersionTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - codegen.additionalProperties().put("snapshotVersion", "true"); - OpenAPI api = TestUtils.createOpenAPI(); codegen.processOpts(); - codegen.preprocessOpenAPI(api); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); Assert.assertEquals(codegen.getArtifactVersion(), "1.0.7-SNAPSHOT"); } @Test(description = "tests if artifactVersion additional property is used") public void additionalPropertyArtifactVersionTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - codegen.additionalProperties().put("artifactVersion", "1.1.1"); - OpenAPI api = TestUtils.createOpenAPI(); codegen.processOpts(); - codegen.preprocessOpenAPI(api); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); Assert.assertEquals(codegen.getArtifactVersion(), "1.1.1"); } @Test(description = "tests if artifactVersion additional property is used with snapshot parameter") public void additionalPropertyArtifactSnapShotVersionTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put("artifactVersion", "1.1.1"); codegen.additionalProperties().put("snapshotVersion", "true"); - OpenAPI api = TestUtils.createOpenAPI(); codegen.processOpts(); - codegen.preprocessOpenAPI(api); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); Assert.assertEquals(codegen.getArtifactVersion(), "1.1.1-SNAPSHOT"); } @Test(description = "tests if default version is used when neither OpenAPI version nor artifactVersion additional property has been provided") public void defaultVersionTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setArtifactVersion(null); - OpenAPI api = TestUtils.createOpenAPI(); api.getInfo().setVersion(null); + codegen.processOpts(); codegen.preprocessOpenAPI(api); @@ -478,12 +421,11 @@ public class AbstractJavaCodegenTest { @Test(description = "tests if default version with snapshot is used when neither OpenAPI version nor artifactVersion additional property has been provided") public void snapshotVersionTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put("snapshotVersion", "true"); - OpenAPI api = TestUtils.createOpenAPI(); api.getInfo().setVersion(null); + codegen.processOpts(); codegen.preprocessOpenAPI(api); @@ -492,12 +434,11 @@ public class AbstractJavaCodegenTest { @Test(description = "tests if default version with snapshot is used when OpenAPI version has been provided") public void snapshotVersionOpenAPITest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true"); - OpenAPI api = TestUtils.createOpenAPI(); api.getInfo().setVersion("2.0"); + codegen.processOpts(); codegen.preprocessOpenAPI(api); @@ -506,12 +447,11 @@ public class AbstractJavaCodegenTest { @Test(description = "tests if setting an artifact version programmatically persists to additional properties, when openapi version is null") public void allowsProgrammaticallySettingArtifactVersionWithNullOpenApiVersion() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); final String version = "9.8.7-rc1"; codegen.setArtifactVersion(version); - OpenAPI api = TestUtils.createOpenAPI(); api.getInfo().setVersion(null); + codegen.processOpts(); codegen.preprocessOpenAPI(api); @@ -521,12 +461,11 @@ public class AbstractJavaCodegenTest { @Test(description = "tests if setting an artifact version programmatically persists to additional properties, even when openapi version is specified") public void allowsProgrammaticallySettingArtifactVersionWithSpecifiedOpenApiVersion() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); final String version = "9.8.7-rc1"; codegen.setArtifactVersion(version); - OpenAPI api = TestUtils.createOpenAPI(); api.getInfo().setVersion("1.2.3-SNAPSHOT"); + codegen.processOpts(); codegen.preprocessOpenAPI(api); @@ -536,9 +475,7 @@ public class AbstractJavaCodegenTest { @Test(description = "tests if a null in addition properties artifactVersion results in default version") public void usesDefaultVersionWhenAdditionalPropertiesVersionIsNull() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); final String version = "1.0.0"; - OpenAPI api = TestUtils.createOpenAPI(); api.getInfo().setVersion(null); codegen.setArtifactVersion(null); @@ -554,21 +491,18 @@ public class AbstractJavaCodegenTest { @Test(description = "tests if default version with snapshot is used when setArtifactVersion is used") public void snapshotVersionAlreadySnapshotTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true"); - - OpenAPI api = TestUtils.createOpenAPI(); codegen.setArtifactVersion("4.1.2-SNAPSHOT"); - codegen.processOpts(); - codegen.preprocessOpenAPI(api); + codegen.processOpts(); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); + Assert.assertEquals(codegen.getArtifactVersion(), "4.1.2-SNAPSHOT"); } @Test public void toDefaultValueDateTimeLegacyTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setDateLibrary("legacy"); String defaultValue; @@ -601,11 +535,9 @@ public class AbstractJavaCodegenTest { @Test public void toDefaultValueTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setDateLibrary("java8"); - - Schema schema = createObjectSchemaWithMinItems(); + Schema schema = new ObjectSchema().addProperty("id", new IntegerSchema().format("int32")).minItems(1); String defaultValue = codegen.toDefaultValue(schema); Assert.assertEquals(defaultValue, "null"); @@ -614,7 +546,7 @@ public class AbstractJavaCodegenTest { codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("NestedArray", nestedArraySchema))); // Create an array schema with item type set to the array alias - schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/NestedArray")); + schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/NestedArray")); ModelUtils.setGenerateAliasAsModel(false); defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), schema); @@ -625,7 +557,7 @@ public class AbstractJavaCodegenTest { Assert.assertEquals(defaultValue, "new ArrayList<>()"); // Create a map schema with additionalProperties type set to array alias - schema = new MapSchema().additionalProperties(new Schema().$ref("#/components/schemas/NestedArray")); + schema = new MapSchema().additionalProperties(new Schema<>().$ref("#/components/schemas/NestedArray")); ModelUtils.setGenerateAliasAsModel(false); defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), schema); @@ -641,14 +573,14 @@ public class AbstractJavaCodegenTest { Date date = Date.from(defaultLocalDate.atStartOfDay(ZoneId.systemDefault()).toInstant()); dateSchema.setDefault(date); defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), dateSchema); - Assert.assertEquals(defaultValue, "LocalDate.parse(\"" + defaultLocalDate.toString() + "\")"); + Assert.assertEquals(defaultValue, "LocalDate.parse(\"" + defaultLocalDate + "\")"); DateTimeSchema dateTimeSchema = new DateTimeSchema(); OffsetDateTime defaultDateTime = OffsetDateTime.parse("1984-12-19T03:39:57-08:00"); ZonedDateTime expectedDateTime = defaultDateTime.atZoneSameInstant(ZoneId.systemDefault()); dateTimeSchema.setDefault(defaultDateTime); defaultValue = codegen.toDefaultValue(codegen.fromProperty("", schema), dateTimeSchema); - Assert.assertTrue(defaultValue.startsWith("OffsetDateTime.parse(\"" + expectedDateTime.toString())); + Assert.assertTrue(defaultValue.startsWith("OffsetDateTime.parse(\"" + expectedDateTime)); // Test default value for number without format NumberSchema numberSchema = new NumberSchema(); @@ -665,15 +597,14 @@ public class AbstractJavaCodegenTest { @Test public void dateDefaultValueIsIsoDate() { - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml"); - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); + final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/spring/date-time-parameter-types-for-testing"); codegen.setOpenAPI(openAPI); Set imports = new HashSet<>(); CodegenParameter parameter = codegen.fromParameter(openAPI.getPaths().get("/thingy/{date}").getGet().getParameters().get(2), imports); Assert.assertEquals(parameter.dataType, "Date"); - Assert.assertEquals(parameter.isDate, true); + Assert.assertTrue(parameter.isDate); Assert.assertEquals(parameter.defaultValue, "1974-01-01"); Assert.assertEquals(imports.size(), 1); Assert.assertEquals(imports.iterator().next(), "Date"); @@ -684,15 +615,14 @@ public class AbstractJavaCodegenTest { @Test public void dateDefaultValueIsIsoDateTime() { - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml"); - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); + final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/spring/date-time-parameter-types-for-testing"); codegen.setOpenAPI(openAPI); Set imports = new HashSet<>(); CodegenParameter parameter = codegen.fromParameter(openAPI.getPaths().get("/thingy/{date}").getGet().getParameters().get(1), imports); Assert.assertEquals(parameter.dataType, "Date"); - Assert.assertEquals(parameter.isDateTime, true); + Assert.assertTrue(parameter.isDateTime); Assert.assertEquals(parameter.defaultValue, "1973-12-19T03:39:57-08:00"); Assert.assertEquals(imports.size(), 1); Assert.assertEquals(imports.iterator().next(), "Date"); @@ -703,19 +633,19 @@ public class AbstractJavaCodegenTest { @Test public void getTypeDeclarationGivenSchemaMappingTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.schemaMapping().put("MyStringType", "com.example.foo"); codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("MyStringType", new StringSchema()))); - Schema schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/MyStringType")); + Schema schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/MyStringType")); + String defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List"); } @Test public void getTypeDeclarationTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - Schema schema = createObjectSchemaWithMinItems(); + Schema schema = new ObjectSchema().addProperty("id", new IntegerSchema().format("int32")).minItems(1); String defaultValue = codegen.getTypeDeclaration(schema); Assert.assertEquals(defaultValue, "Object"); @@ -724,7 +654,7 @@ public class AbstractJavaCodegenTest { codegen.setOpenAPI(new OpenAPI().components(new Components().addSchemas("NestedArray", nestedArraySchema))); // Create an array schema with item type set to the array alias - schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/NestedArray")); + schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/NestedArray")); ModelUtils.setGenerateAliasAsModel(false); defaultValue = codegen.getTypeDeclaration(schema); @@ -735,7 +665,7 @@ public class AbstractJavaCodegenTest { Assert.assertEquals(defaultValue, "List"); // Create an array schema with item type set to the array alias - schema = new ArraySchema().items(new Schema().$ref("#/components/schemas/NestedArray")); + schema = new ArraySchema().items(new Schema<>().$ref("#/components/schemas/NestedArray")); schema.setUniqueItems(true); ModelUtils.setGenerateAliasAsModel(false); @@ -747,7 +677,7 @@ public class AbstractJavaCodegenTest { Assert.assertEquals(defaultValue, "Set"); // Create a map schema with additionalProperties type set to array alias - schema = new MapSchema().additionalProperties(new Schema().$ref("#/components/schemas/NestedArray")); + schema = new MapSchema().additionalProperties(new Schema<>().$ref("#/components/schemas/NestedArray")); ModelUtils.setGenerateAliasAsModel(false); defaultValue = codegen.getTypeDeclaration(schema); @@ -760,66 +690,63 @@ public class AbstractJavaCodegenTest { @Test public void processOptsBooleanTrueFromString() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true"); - codegen.preprocessOpenAPI(openAPI); + + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); + Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @Test public void processOptsBooleanTrueFromBoolean() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, true); - codegen.preprocessOpenAPI(openAPI); + + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); + Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @Test public void processOptsBooleanFalseFromString() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "false"); - codegen.preprocessOpenAPI(openAPI); + + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); + Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @Test public void processOptsBooleanFalseFromBoolean() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, false); - codegen.preprocessOpenAPI(openAPI); + + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); + Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @Test public void processOptsBooleanFalseFromGarbage() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "blibb"); - codegen.preprocessOpenAPI(openAPI); + + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); + Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @Test public void processOptsBooleanFalseFromNumeric() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, 42L); - codegen.preprocessOpenAPI(openAPI); + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @Test public void nullDefaultValueForModelWithDynamicProperties() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml"); + final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/mapSchemas"); codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true); codegen.setOpenAPI(openAPI); - Schema schema = openAPI.getComponents().getSchemas().get("ModelWithAdditionalProperties"); + Schema schema = openAPI.getComponents().getSchemas().get("ModelWithAdditionalProperties"); CodegenModel cm = codegen.fromModel("ModelWithAdditionalProperties", schema); Assert.assertEquals(cm.vars.size(), 1, "Expected single declared var"); Assert.assertEquals(cm.vars.get(0).name, "id"); @@ -831,12 +758,11 @@ public class AbstractJavaCodegenTest { @Test public void maplikeDefaultValueForModelWithStringToStringMapping() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml"); + final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/mapSchemas"); codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true); codegen.setOpenAPI(openAPI); - Schema schema = openAPI.getComponents().getSchemas().get("ModelWithStringToStringMapping"); + Schema schema = openAPI.getComponents().getSchemas().get("ModelWithStringToStringMapping"); CodegenModel cm = codegen.fromModel("ModelWithAdditionalProperties", schema); Assert.assertEquals(cm.vars.size(), 0, "Expected no declared vars"); Assert.assertNull(cm.defaultValue, "Expected no defined default value in spec"); @@ -847,12 +773,11 @@ public class AbstractJavaCodegenTest { @Test public void maplikeDefaultValueForModelWithStringToModelMapping() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml"); + final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/mapSchemas"); codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true); codegen.setOpenAPI(openAPI); - Schema schema = openAPI.getComponents().getSchemas().get("ModelWithStringToModelMapping"); + Schema schema = openAPI.getComponents().getSchemas().get("ModelWithStringToModelMapping"); CodegenModel cm = codegen.fromModel("ModelWithStringToModelMapping", schema); Assert.assertEquals(cm.vars.size(), 0, "Expected no declared vars"); Assert.assertNull(cm.defaultValue, "Expected no defined default value in spec"); @@ -865,20 +790,19 @@ public class AbstractJavaCodegenTest { public void srcMainFolderShouldNotBeOperatingSystemSpecificPaths() { // it's not responsibility of the generator to fix OS-specific paths. This is left to template manager. // This path must be non-OS-specific for expectations in source outputs (e.g. gradle build files) - Assert.assertEquals(fakeJavaCodegen.getSourceFolder(), "src/main/java"); + Assert.assertEquals(codegen.getSourceFolder(), "src/main/java"); } @Test public void srcTestFolderShouldNotBeOperatingSystemSpecificPaths() { // it's not responsibility of the generator to fix OS-specific paths. This is left to template manager. // This path must be non-OS-specific for expectations in source outputs (e.g. gradle build files) - Assert.assertEquals(fakeJavaCodegen.getTestFolder(), "src/test/java"); + Assert.assertEquals(codegen.getTestFolder(), "src/test/java"); } @Test - public void testOneOfModelImports() throws Exception { + public void testOneOfModelImports() { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/oneOf_nonPrimitive.yaml"); - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setOpenAPI(openAPI); codegen.preprocessOpenAPI(openAPI); @@ -891,16 +815,15 @@ public class AbstractJavaCodegenTest { } @Test - public void arrayParameterDefaultValueDoesNotNeedBraces() throws Exception { + public void arrayParameterDefaultValueDoesNotNeedBraces() { ParseOptions parseOptions = new ParseOptions(); parseOptions.setResolve(true); final OpenAPI openAPI = new OpenAPIParser() .readLocation("src/test/resources/3_0/issue_16223.yaml", null, parseOptions) .getOpenAPI(); - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setOpenAPI(openAPI); - Map schemas = openAPI.getPaths().get("/test").getGet().getParameters().stream() + Map> schemas = openAPI.getPaths().get("/test").getGet().getParameters().stream() .collect(Collectors.toMap( Parameter::getName, p -> ModelUtils.getReferencedSchema(openAPI, p.getSchema()))); @@ -912,7 +835,6 @@ public class AbstractJavaCodegenTest { @Test public void ignoreBeanValidationAnnotationsTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put("useBeanValidation", true); Schema schema = new Schema<>().type("string").format("uuid").pattern("^[a-z]$").maxLength(36); @@ -938,7 +860,6 @@ public class AbstractJavaCodegenTest { @Test public void ignoreBeanValidationAnnotationsContainerTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put("useBeanValidation", true); Schema schema = new ArraySchema().items(new Schema<>().type("string").format("uuid").pattern("^[a-z]$").maxLength(36)); @@ -964,7 +885,6 @@ public class AbstractJavaCodegenTest { @Test public void AnnotationsContainerTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put("useBeanValidation", true); // 1. string type @@ -1048,37 +968,4 @@ public class AbstractJavaCodegenTest { defaultValue = codegen.getTypeDeclaration(schema); Assert.assertEquals(defaultValue, "List<@Max(10)Integer>"); } - - private static Schema createObjectSchemaWithMinItems() { - return new ObjectSchema() - .addProperties("id", new IntegerSchema().format("int32")) - .minItems(1); - } - - private static class P_AbstractJavaCodegen extends AbstractJavaCodegen { - @Override - public CodegenType getTag() { - return null; - } - - @Override - public String getName() { - return null; - } - - @Override - public String getHelp() { - return null; - } - - /** - * Gets artifact version. - * Only for testing purposes. - * - * @return version - */ - public String getArtifactVersion() { - return this.artifactVersion; - } - } }