From c28e7ad851ccd0b234919f65d1897cdbc5045a13 Mon Sep 17 00:00:00 2001 From: Philzen Date: Thu, 23 May 2024 16:12:11 +0200 Subject: [PATCH 1/6] 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. --- .../codegen/java/AbstractJavaCodegenTest.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) 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 dbca31cda544..7e612f3059ad 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 @@ -245,7 +245,7 @@ public void testAdditionalModelTypeAnnotationsSemiColon() throws Exception { additionalModelTypeAnnotations.add("@Bar"); final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); + final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(additionalModelTypeAnnotations); Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); Collections.sort(sortedAdditionalModelTypeAnnotations); @@ -267,7 +267,7 @@ public void testAdditionalModelTypeAnnotationsNewLineLinux() throws Exception { additionalModelTypeAnnotations.add("@Bar"); final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); + final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(additionalModelTypeAnnotations); Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); Collections.sort(sortedAdditionalModelTypeAnnotations); @@ -289,7 +289,7 @@ public void testAdditionalModelTypeAnnotationsNewLineWindows() throws Exception additionalModelTypeAnnotations.add("@Bar"); final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); + final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(additionalModelTypeAnnotations); Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); Collections.sort(sortedAdditionalModelTypeAnnotations); @@ -312,7 +312,7 @@ public void testAdditionalModelTypeAnnotationsMixed() throws Exception { additionalModelTypeAnnotations.add("@Foobar"); final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); + final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(additionalModelTypeAnnotations); Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); Collections.sort(sortedAdditionalModelTypeAnnotations); @@ -334,7 +334,7 @@ public void testAdditionalModelTypeAnnotationsNoDuplicate() throws Exception { additionalModelTypeAnnotations.add("@Bar"); final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); + final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(additionalModelTypeAnnotations); Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); Collections.sort(sortedAdditionalModelTypeAnnotations); From c9149be076b46eb4f4e36fb98010f1857c1bc658 Mon Sep 17 00:00:00 2001 From: Philzen Date: Thu, 23 May 2024 16:15:14 +0200 Subject: [PATCH 2/6] Remove Exception from signature that is never thrown --- .../codegen/java/AbstractJavaCodegenTest.java | 28 +++++++++---------- 1 file changed, 14 insertions(+), 14 deletions(-) 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 7e612f3059ad..58a4f6b6fcbc 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 @@ -46,7 +46,7 @@ public class AbstractJavaCodegenTest { private final AbstractJavaCodegen fakeJavaCodegen = new P_AbstractJavaCodegen(); @Test - public void toEnumVarNameShouldNotShortenUnderScore() throws Exception { + public void toEnumVarNameShouldNotShortenUnderScore() { Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_", "String"), "UNDERSCORE"); Assert.assertEquals(fakeJavaCodegen.toEnumVarName("__", "String"), "__"); Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_,.", "String"), "__"); @@ -56,7 +56,7 @@ public void toEnumVarNameShouldNotShortenUnderScore() throws Exception { * As of Java 9, '_' is a keyword, and may not be used as an identifier. */ @Test - public void toEnumVarNameShouldNotResultInSingleUnderscore() throws Exception { + public void toEnumVarNameShouldNotResultInSingleUnderscore() { Assert.assertEquals(fakeJavaCodegen.toEnumVarName(" ", "String"), "SPACE"); Assert.assertEquals(fakeJavaCodegen.toEnumVarName("==", "String"), "u"); } @@ -69,25 +69,25 @@ public void toEnumVarNameAddUnderscoresIfValueIsPascalCase() { } @Test - public void toVarNameShouldAvoidOverloadingGetClassMethod() throws Exception { + public void toVarNameShouldAvoidOverloadingGetClassMethod() { Assert.assertEquals(fakeJavaCodegen.toVarName("class"), "propertyClass"); Assert.assertEquals(fakeJavaCodegen.toVarName("_class"), "propertyClass"); Assert.assertEquals(fakeJavaCodegen.toVarName("__class"), "propertyClass"); } @Test - public void toModelNameShouldNotUseProvidedMapping() throws Exception { + public void toModelNameShouldNotUseProvidedMapping() { fakeJavaCodegen.importMapping().put("json_myclass", "com.test.MyClass"); Assert.assertEquals(fakeJavaCodegen.toModelName("json_myclass"), "JsonMyclass"); } @Test - public void toModelNameUsesPascalCase() throws Exception { + public void toModelNameUsesPascalCase() { Assert.assertEquals(fakeJavaCodegen.toModelName("json_anotherclass"), "JsonAnotherclass"); } @Test - public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() throws Exception { + public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.preprocessOpenAPI(openAPI); @@ -100,7 +100,7 @@ public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() throws Exc } @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(); @@ -231,7 +231,7 @@ public void testAdditionalPropertiesPutForConfigValues() throws Exception { } @Test - public void testAdditionalModelTypeAnnotationsSemiColon() throws Exception { + public void testAdditionalModelTypeAnnotationsSemiColon() { OpenAPI openAPI = TestUtils.createOpenAPI(); final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); @@ -253,7 +253,7 @@ public void testAdditionalModelTypeAnnotationsSemiColon() throws Exception { } @Test - public void testAdditionalModelTypeAnnotationsNewLineLinux() throws Exception { + public void testAdditionalModelTypeAnnotationsNewLineLinux() { OpenAPI openAPI = TestUtils.createOpenAPI(); final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); @@ -275,7 +275,7 @@ public void testAdditionalModelTypeAnnotationsNewLineLinux() throws Exception { } @Test - public void testAdditionalModelTypeAnnotationsNewLineWindows() throws Exception { + public void testAdditionalModelTypeAnnotationsNewLineWindows() { OpenAPI openAPI = TestUtils.createOpenAPI(); final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); @@ -297,7 +297,7 @@ public void testAdditionalModelTypeAnnotationsNewLineWindows() throws Exception } @Test - public void testAdditionalModelTypeAnnotationsMixed() throws Exception { + public void testAdditionalModelTypeAnnotationsMixed() { OpenAPI openAPI = TestUtils.createOpenAPI(); final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); @@ -320,7 +320,7 @@ public void testAdditionalModelTypeAnnotationsMixed() throws Exception { } @Test - public void testAdditionalModelTypeAnnotationsNoDuplicate() throws Exception { + public void testAdditionalModelTypeAnnotationsNoDuplicate() { OpenAPI openAPI = TestUtils.createOpenAPI(); final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); @@ -876,7 +876,7 @@ public void srcTestFolderShouldNotBeOperatingSystemSpecificPaths() { } @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); @@ -891,7 +891,7 @@ public void testOneOfModelImports() throws Exception { } @Test - public void arrayParameterDefaultValueDoesNotNeedBraces() throws Exception { + public void arrayParameterDefaultValueDoesNotNeedBraces() { ParseOptions parseOptions = new ParseOptions(); parseOptions.setResolve(true); final OpenAPI openAPI = new OpenAPIParser() From 7978d641bfd0185fbfc294ca0ce44f2114a6232b Mon Sep 17 00:00:00 2001 From: Philzen Date: Thu, 23 May 2024 17:03:57 +0200 Subject: [PATCH 3/6] Simplify assertions using AssertJ --- .../codegen/java/AbstractJavaCodegenTest.java | 169 ++++++------------ 1 file changed, 56 insertions(+), 113 deletions(-) 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 58a4f6b6fcbc..43363b1c9319 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,6 +31,7 @@ import java.util.*; import java.util.stream.Collectors; + import org.openapitools.codegen.*; import org.openapitools.codegen.languages.AbstractJavaCodegen; import org.openapitools.codegen.utils.ModelUtils; @@ -41,6 +42,8 @@ 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(); @@ -204,8 +207,6 @@ public void testSettersForConfigValues() throws Exception { @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"); @@ -213,9 +214,9 @@ public void testAdditionalPropertiesPutForConfigValues() throws Exception { 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()); @@ -232,113 +233,62 @@ public void testAdditionalPropertiesPutForConfigValues() throws Exception { @Test public void testAdditionalModelTypeAnnotationsSemiColon() { - OpenAPI openAPI = TestUtils.createOpenAPI(); - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar"); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); - - final List additionalModelTypeAnnotations = new ArrayList(); - additionalModelTypeAnnotations.add("@Foo"); - additionalModelTypeAnnotations.add("@Bar"); - - final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(additionalModelTypeAnnotations); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo"); } @Test public void testAdditionalModelTypeAnnotationsNewLineLinux() { - OpenAPI openAPI = TestUtils.createOpenAPI(); - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\n@Bar"); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); - - final List additionalModelTypeAnnotations = new ArrayList(); - additionalModelTypeAnnotations.add("@Foo"); - additionalModelTypeAnnotations.add("@Bar"); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(additionalModelTypeAnnotations); - - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo"); } @Test public void testAdditionalModelTypeAnnotationsNewLineWindows() { - OpenAPI openAPI = TestUtils.createOpenAPI(); - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\r\n@Bar"); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); - - final List additionalModelTypeAnnotations = new ArrayList(); - additionalModelTypeAnnotations.add("@Foo"); - additionalModelTypeAnnotations.add("@Bar"); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(additionalModelTypeAnnotations); - - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo"); } @Test public void testAdditionalModelTypeAnnotationsMixed() { - OpenAPI openAPI = TestUtils.createOpenAPI(); - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, " \t @Foo;\r\n@Bar ;\n @Foobar "); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); - - 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<>(additionalModelTypeAnnotations); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo", "@Foobar"); } @Test public void testAdditionalModelTypeAnnotationsNoDuplicate() { - OpenAPI openAPI = TestUtils.createOpenAPI(); - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar;@Foo"); codegen.processOpts(); - codegen.preprocessOpenAPI(openAPI); - - final List additionalModelTypeAnnotations = new ArrayList(); - additionalModelTypeAnnotations.add("@Foo"); - additionalModelTypeAnnotations.add("@Bar"); - - final List sortedCodegenAdditionalModelTypeAnnotations = new ArrayList<>(codegen.getAdditionalModelTypeAnnotations()); - final List sortedAdditionalModelTypeAnnotations = new ArrayList<>(additionalModelTypeAnnotations); + codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); - Collections.sort(sortedCodegenAdditionalModelTypeAnnotations); - Collections.sort(sortedAdditionalModelTypeAnnotations); - Assert.assertEquals(sortedCodegenAdditionalModelTypeAnnotations, sortedAdditionalModelTypeAnnotations); + assertThat(codegen.getAdditionalModelTypeAnnotations()) + .containsExactlyInAnyOrder("@Bar", "@Foo", "@Foo"); } @Test @@ -416,9 +366,8 @@ public void apiDocFileFolder() { 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"); } @@ -429,9 +378,8 @@ public void openApiSnapShotVersionTest() { 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"); } @@ -442,9 +390,8 @@ public void additionalPropertyArtifactVersionTest() { 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"); } @@ -456,9 +403,8 @@ public void additionalPropertyArtifactSnapShotVersionTest() { 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"); } @@ -467,9 +413,9 @@ public void additionalPropertyArtifactSnapShotVersionTest() { 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); @@ -481,9 +427,9 @@ 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); @@ -495,9 +441,9 @@ 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); @@ -509,9 +455,9 @@ 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); @@ -524,9 +470,9 @@ public void allowsProgrammaticallySettingArtifactVersionWithSpecifiedOpenApiVers 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); @@ -538,7 +484,6 @@ public void allowsProgrammaticallySettingArtifactVersionWithSpecifiedOpenApiVers 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); @@ -557,12 +502,11 @@ 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"); } @@ -604,8 +548,7 @@ 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"); @@ -641,14 +584,14 @@ public void toDefaultValueTest() { 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(); @@ -673,7 +616,7 @@ public void dateDefaultValueIsIsoDate() { 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"); @@ -692,7 +635,7 @@ public void dateDefaultValueIsIsoDateTime() { 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"); @@ -707,7 +650,9 @@ public void getTypeDeclarationGivenSchemaMappingTest() { 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")); + String defaultValue = codegen.getTypeDeclaration(schema); + Assert.assertEquals(defaultValue, "List"); } @@ -715,7 +660,7 @@ public void getTypeDeclarationGivenSchemaMappingTest() { 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"); @@ -761,54 +706,58 @@ public void getTypeDeclarationTest() { @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(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + 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(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + 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(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + 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(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + 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(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + 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(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @@ -1049,12 +998,6 @@ public void AnnotationsContainerTest() { 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() { From f89bfaf22b69fa780cc2b29c251ec99fb5f3e6f7 Mon Sep 17 00:00:00 2001 From: Philzen Date: Thu, 23 May 2024 17:54:18 +0200 Subject: [PATCH 4/6] Replace stub implementation with abstract Mockito mock --- .../AbstractJavaCodegenExampleValuesTest.java | 73 ++----- .../codegen/java/AbstractJavaCodegenTest.java | 200 ++++++------------ 2 files changed, 92 insertions(+), 181 deletions(-) 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 2cbe4c623646..599b40d0b8c9 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 @@ 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 @@ void referencedEnumTakeFirstName() { 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 @@ void inlineEnum() { p.isEnum = true; p.dataType = "String"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "\"first\""); } @@ -61,7 +73,7 @@ void inlineEnumArray() { p.dataType = "List"; p.items = new CodegenProperty(); - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "Arrays.asList()"); } @@ -71,7 +83,7 @@ void dateDefault() { p.isDate = true; p.dataType = "LocalDate"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "LocalDate.now()"); } @@ -82,7 +94,7 @@ void dateGivenExample() { 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 @@ void dateTimeDefault() { p.isDateTime = true; p.dataType = "OffsetDateTime"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "OffsetDateTime.now()"); } @@ -103,7 +115,7 @@ void dateTimeGivenExample() { 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 @@ void uuidDefault() { p.isUuid = true; p.dataType = "UUID"; - fakeJavaCodegen.setParameterExampleValue(p); + codegen.setParameterExampleValue(p); Assert.assertEquals(p.example, "UUID.randomUUID()"); } @@ -124,46 +136,7 @@ void uuidGivenExample() { 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 43363b1c9319..0949bfe4afc0 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 @@ -32,10 +32,13 @@ 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; @@ -46,13 +49,23 @@ public class AbstractJavaCodegenTest { - 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 public void toEnumVarNameShouldNotShortenUnderScore() { - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_", "String"), "UNDERSCORE"); - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("__", "String"), "__"); - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("_,.", "String"), "__"); + Assert.assertEquals(codegen.toEnumVarName("_", "String"), "UNDERSCORE"); + Assert.assertEquals(codegen.toEnumVarName("__", "String"), "__"); + Assert.assertEquals(codegen.toEnumVarName("_,.", "String"), "__"); } /** @@ -60,39 +73,38 @@ public void toEnumVarNameShouldNotShortenUnderScore() { */ @Test public void toEnumVarNameShouldNotResultInSingleUnderscore() { - Assert.assertEquals(fakeJavaCodegen.toEnumVarName(" ", "String"), "SPACE"); - Assert.assertEquals(fakeJavaCodegen.toEnumVarName("==", "String"), "u"); + 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() { - Assert.assertEquals(fakeJavaCodegen.toVarName("class"), "propertyClass"); - Assert.assertEquals(fakeJavaCodegen.toVarName("_class"), "propertyClass"); - Assert.assertEquals(fakeJavaCodegen.toVarName("__class"), "propertyClass"); + Assert.assertEquals(codegen.toVarName("class"), "propertyClass"); + Assert.assertEquals(codegen.toVarName("_class"), "propertyClass"); + Assert.assertEquals(codegen.toVarName("__class"), "propertyClass"); } @Test public void toModelNameShouldNotUseProvidedMapping() { - fakeJavaCodegen.importMapping().put("json_myclass", "com.test.MyClass"); - Assert.assertEquals(fakeJavaCodegen.toModelName("json_myclass"), "JsonMyclass"); + codegen.importMapping().put("json_myclass", "com.test.MyClass"); + Assert.assertEquals(codegen.toModelName("json_myclass"), "JsonMyclass"); } @Test public void toModelNameUsesPascalCase() { - Assert.assertEquals(fakeJavaCodegen.toModelName("json_anotherclass"), "JsonAnotherclass"); + Assert.assertEquals(codegen.toModelName("json_anotherclass"), "JsonAnotherclass"); } @Test public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() { final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.getArtifactVersion(), openAPI.getInfo().getVersion()); @@ -105,8 +117,7 @@ public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() { @Test 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()); @@ -114,52 +125,54 @@ public void testPreprocessOpenAPINumVersion() { @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); @@ -180,7 +193,6 @@ public void testInitialConfigValues() throws Exception { public void testSettersForConfigValues() throws Exception { OpenAPI openAPI = TestUtils.createOpenAPI(); - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setHideGenerationTimestamp(true); codegen.setModelPackage("xyz.yyyyy.zzzzzzz.model"); @@ -207,7 +219,6 @@ public void testSettersForConfigValues() throws Exception { @Test public void testAdditionalPropertiesPutForConfigValues() throws Exception { - 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"); @@ -233,7 +244,6 @@ public void testAdditionalPropertiesPutForConfigValues() throws Exception { @Test public void testAdditionalModelTypeAnnotationsSemiColon() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar"); codegen.processOpts(); @@ -245,7 +255,6 @@ public void testAdditionalModelTypeAnnotationsSemiColon() { @Test public void testAdditionalModelTypeAnnotationsNewLineLinux() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\n@Bar"); codegen.processOpts(); @@ -257,7 +266,6 @@ public void testAdditionalModelTypeAnnotationsNewLineLinux() { @Test public void testAdditionalModelTypeAnnotationsNewLineWindows() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo\r\n@Bar"); codegen.processOpts(); @@ -269,7 +277,6 @@ public void testAdditionalModelTypeAnnotationsNewLineWindows() { @Test public void testAdditionalModelTypeAnnotationsMixed() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, " \t @Foo;\r\n@Bar ;\n @Foobar "); codegen.processOpts(); @@ -281,7 +288,6 @@ public void testAdditionalModelTypeAnnotationsMixed() { @Test public void testAdditionalModelTypeAnnotationsNoDuplicate() { - final AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(AbstractJavaCodegen.ADDITIONAL_MODEL_TYPE_ANNOTATIONS, "@Foo;@Bar;@Foo"); codegen.processOpts(); @@ -293,7 +299,6 @@ public void testAdditionalModelTypeAnnotationsNoDuplicate() { @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"); @@ -303,7 +308,6 @@ public void toEnumValue() { @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"); @@ -312,7 +316,6 @@ public void apiFileFolder() { @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"); @@ -321,7 +324,6 @@ public void apiTestFileFolder() { @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"); @@ -330,7 +332,6 @@ public void modelTestFileFolder() { @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"); @@ -339,7 +340,6 @@ public void apiTestFileFolderDirect() { @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"); @@ -348,7 +348,6 @@ public void modelTestFileFolderDirect() { @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"); @@ -357,14 +356,12 @@ public void modelFileFolder() { @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(); codegen.processOpts(); codegen.preprocessOpenAPI(TestUtils.createOpenAPI()); @@ -374,8 +371,6 @@ public void openApiVersionTest() { @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"); codegen.processOpts(); @@ -386,8 +381,6 @@ public void openApiSnapShotVersionTest() { @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"); codegen.processOpts(); @@ -398,7 +391,6 @@ public void additionalPropertyArtifactVersionTest() { @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"); @@ -411,7 +403,6 @@ public void additionalPropertyArtifactSnapShotVersionTest() { @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); @@ -424,7 +415,6 @@ public void defaultVersionTest() { @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(); @@ -438,7 +428,6 @@ public void snapshotVersionTest() { @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(); @@ -452,7 +441,6 @@ public void snapshotVersionOpenAPITest() { @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(); @@ -467,7 +455,6 @@ public void allowsProgrammaticallySettingArtifactVersionWithNullOpenApiVersion() @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(); @@ -482,7 +469,6 @@ public void allowsProgrammaticallySettingArtifactVersionWithSpecifiedOpenApiVers @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); @@ -499,7 +485,6 @@ public void usesDefaultVersionWhenAdditionalPropertiesVersionIsNull() { @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"); codegen.setArtifactVersion("4.1.2-SNAPSHOT"); @@ -512,7 +497,6 @@ public void snapshotVersionAlreadySnapshotTest() { @Test public void toDefaultValueDateTimeLegacyTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setDateLibrary("legacy"); String defaultValue; @@ -545,7 +529,6 @@ public void toDefaultValueDateTimeLegacyTest() { @Test public void toDefaultValueTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.setDateLibrary("java8"); Schema schema = new ObjectSchema().addProperty("id", new IntegerSchema().format("int32")).minItems(1); @@ -609,7 +592,6 @@ public void toDefaultValueTest() { @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(); codegen.setOpenAPI(openAPI); Set imports = new HashSet<>(); @@ -628,7 +610,6 @@ public void dateDefaultValueIsIsoDate() { @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(); codegen.setOpenAPI(openAPI); Set imports = new HashSet<>(); @@ -646,7 +627,6 @@ public void dateDefaultValueIsIsoDateTime() { @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")); @@ -658,7 +638,6 @@ public void getTypeDeclarationGivenSchemaMappingTest() { @Test public void getTypeDeclarationTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); Schema schema = new ObjectSchema().addProperty("id", new IntegerSchema().format("int32")).minItems(1); String defaultValue = codegen.getTypeDeclaration(schema); @@ -705,7 +684,6 @@ public void getTypeDeclarationTest() { @Test public void processOptsBooleanTrueFromString() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true"); codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); @@ -715,7 +693,6 @@ public void processOptsBooleanTrueFromString() { @Test public void processOptsBooleanTrueFromBoolean() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, true); codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); @@ -725,7 +702,6 @@ public void processOptsBooleanTrueFromBoolean() { @Test public void processOptsBooleanFalseFromString() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "false"); codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); @@ -735,7 +711,6 @@ public void processOptsBooleanFalseFromString() { @Test public void processOptsBooleanFalseFromBoolean() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, false); codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); @@ -745,7 +720,6 @@ public void processOptsBooleanFalseFromBoolean() { @Test public void processOptsBooleanFalseFromGarbage() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "blibb"); codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); @@ -755,7 +729,6 @@ public void processOptsBooleanFalseFromGarbage() { @Test public void processOptsBooleanFalseFromNumeric() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, 42L); codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); @@ -763,7 +736,6 @@ public void processOptsBooleanFalseFromNumeric() { @Test public void nullDefaultValueForModelWithDynamicProperties() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml"); codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true); codegen.setOpenAPI(openAPI); @@ -780,7 +752,6 @@ public void nullDefaultValueForModelWithDynamicProperties() { @Test public void maplikeDefaultValueForModelWithStringToStringMapping() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml"); codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true); codegen.setOpenAPI(openAPI); @@ -796,7 +767,6 @@ public void maplikeDefaultValueForModelWithStringToStringMapping() { @Test public void maplikeDefaultValueForModelWithStringToModelMapping() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/mapSchemas.yaml"); codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, true); codegen.setOpenAPI(openAPI); @@ -814,20 +784,19 @@ public void maplikeDefaultValueForModelWithStringToModelMapping() { 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() { 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); @@ -846,7 +815,6 @@ public void arrayParameterDefaultValueDoesNotNeedBraces() { 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() @@ -861,7 +829,6 @@ public void arrayParameterDefaultValueDoesNotNeedBraces() { @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); @@ -887,7 +854,6 @@ public void ignoreBeanValidationAnnotationsTest() { @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)); @@ -913,7 +879,6 @@ public void ignoreBeanValidationAnnotationsContainerTest() { @Test public void AnnotationsContainerTest() { - final P_AbstractJavaCodegen codegen = new P_AbstractJavaCodegen(); codegen.additionalProperties().put("useBeanValidation", true); // 1. string type @@ -997,31 +962,4 @@ public void AnnotationsContainerTest() { defaultValue = codegen.getTypeDeclaration(schema); Assert.assertEquals(defaultValue, "List<@Max(10)Integer>"); } - - 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; - } - } } From c91fac82639aac61f302ca408ca06492cfea3654 Mon Sep 17 00:00:00 2001 From: Philzen Date: Thu, 23 May 2024 18:39:23 +0200 Subject: [PATCH 5/6] Cache flat parsed openapi results for faster test execution Simply caching any calls to TestUtils.parseFlattenSpec that occur at least twice. --- .../codegen/java/AbstractJavaCodegenTest.java | 30 +++++++++++-------- 1 file changed, 18 insertions(+), 12 deletions(-) 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 0949bfe4afc0..cfc783a0e654 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 @@ -49,6 +49,12 @@ public class AbstractJavaCodegenTest { + 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; /** @@ -104,7 +110,7 @@ public void toModelNameUsesPascalCase() { @Test public void testPreprocessOpenApiIncludeAllMediaTypesInAcceptHeader() { - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml"); + final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/petstore"); codegen.preprocessOpenAPI(openAPI); Assert.assertEquals(codegen.getArtifactVersion(), openAPI.getInfo().getVersion()); @@ -591,7 +597,7 @@ public void toDefaultValueTest() { @Test public void dateDefaultValueIsIsoDate() { - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml"); + final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/spring/date-time-parameter-types-for-testing"); codegen.setOpenAPI(openAPI); Set imports = new HashSet<>(); @@ -609,7 +615,7 @@ public void dateDefaultValueIsIsoDate() { @Test public void dateDefaultValueIsIsoDateTime() { - final OpenAPI openAPI = TestUtils.parseFlattenSpec("src/test/resources/3_0/spring/date-time-parameter-types-for-testing.yml"); + final OpenAPI openAPI = FLATTENED_SPEC.get("3_0/spring/date-time-parameter-types-for-testing"); codegen.setOpenAPI(openAPI); Set imports = new HashSet<>(); @@ -686,7 +692,7 @@ public void getTypeDeclarationTest() { public void processOptsBooleanTrueFromString() { codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "true"); - codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @@ -695,7 +701,7 @@ public void processOptsBooleanTrueFromString() { public void processOptsBooleanTrueFromBoolean() { codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, true); - codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); Assert.assertTrue((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @@ -704,7 +710,7 @@ public void processOptsBooleanTrueFromBoolean() { public void processOptsBooleanFalseFromString() { codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "false"); - codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @@ -713,7 +719,7 @@ public void processOptsBooleanFalseFromString() { public void processOptsBooleanFalseFromBoolean() { codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, false); - codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @@ -722,7 +728,7 @@ public void processOptsBooleanFalseFromBoolean() { public void processOptsBooleanFalseFromGarbage() { codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, "blibb"); - codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @@ -730,13 +736,13 @@ public void processOptsBooleanFalseFromGarbage() { @Test public void processOptsBooleanFalseFromNumeric() { codegen.additionalProperties().put(CodegenConstants.SNAPSHOT_VERSION, 42L); - codegen.preprocessOpenAPI(TestUtils.parseFlattenSpec("src/test/resources/3_0/petstore.yaml")); + codegen.preprocessOpenAPI(FLATTENED_SPEC.get("3_0/petstore")); Assert.assertFalse((boolean) codegen.additionalProperties().get(CodegenConstants.SNAPSHOT_VERSION)); } @Test public void nullDefaultValueForModelWithDynamicProperties() { - 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); @@ -752,7 +758,7 @@ public void nullDefaultValueForModelWithDynamicProperties() { @Test public void maplikeDefaultValueForModelWithStringToStringMapping() { - 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); @@ -767,7 +773,7 @@ public void maplikeDefaultValueForModelWithStringToStringMapping() { @Test public void maplikeDefaultValueForModelWithStringToModelMapping() { - 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); From cbbfe248397af3526a0dbff68a63e7efd0d1b82f Mon Sep 17 00:00:00 2001 From: Philzen Date: Thu, 23 May 2024 19:02:28 +0200 Subject: [PATCH 6/6] Fix some "Raw use of parameterized class 'Schema'" warnings --- .../codegen/utils/ModelUtils.java | 2 +- .../codegen/java/AbstractJavaCodegenTest.java | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 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 c5f6422fc7a7..7cf7ce618819 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 static boolean shouldGenerateArrayModel(Schema schema) { * @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/AbstractJavaCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/AbstractJavaCodegenTest.java index cfc783a0e654..b32334953713 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 @@ -546,7 +546,7 @@ public void toDefaultValueTest() { 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); @@ -557,7 +557,7 @@ public void toDefaultValueTest() { 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); @@ -635,7 +635,7 @@ public void dateDefaultValueIsIsoDateTime() { public void getTypeDeclarationGivenSchemaMappingTest() { 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); @@ -654,7 +654,7 @@ public void getTypeDeclarationTest() { 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); @@ -665,7 +665,7 @@ public void getTypeDeclarationTest() { 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); @@ -677,7 +677,7 @@ public void getTypeDeclarationTest() { 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); @@ -746,7 +746,7 @@ public void nullDefaultValueForModelWithDynamicProperties() { 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"); @@ -762,7 +762,7 @@ public void maplikeDefaultValueForModelWithStringToStringMapping() { 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"); @@ -777,7 +777,7 @@ public void maplikeDefaultValueForModelWithStringToModelMapping() { 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"); @@ -823,7 +823,7 @@ public void arrayParameterDefaultValueDoesNotNeedBraces() { .getOpenAPI(); 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())));