diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java index a6df487ef840..2b92217dffe0 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/TestUtils.java @@ -15,6 +15,7 @@ import io.swagger.v3.oas.models.media.Schema; import io.swagger.v3.oas.models.servers.Server; import io.swagger.v3.parser.core.models.ParseOptions; +import org.jetbrains.annotations.NotNull; import org.openapitools.codegen.java.assertions.JavaFileAssert; import org.openapitools.codegen.model.ModelMap; import org.openapitools.codegen.model.ModelsMap; @@ -24,12 +25,12 @@ import java.io.IOException; import java.nio.file.Files; import java.nio.file.Path; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.function.Function; import java.util.regex.Matcher; import java.util.regex.Pattern; +import java.util.stream.Collector; +import java.util.stream.Collectors; import static org.testng.Assert.*; @@ -181,8 +182,9 @@ public static void assertFileContains(Path path, String... lines) { /** * Count occurrences of the given text + * * @param content content of the file - * @param text text to find + * @param text text to find * @return */ public static int countOccurrences(String content, String text) { @@ -352,4 +354,34 @@ public static Path newTempFolder() { return tempDir; } + + + /** + * Returns a collector that collects files into a {@link TreeMap} sorted by file name, + * using case-insensitive ordering (but accepting both keys - e.g. "application" and "Application"). + * This is used to have files sorted by name (case-insensitive) to improve developer experience during test debugging. + */ + @NotNull + public static Collector> collectToCaseInsensitiveOrderedCaseSensitiveKeyMap() { + return collectToCaseInsensitiveOrderedCaseSensitiveKeyMap(File::getName); + } + + /** + * Returns a collector that collects files into a {@link TreeMap} sorted by file name, + * using case-insensitive ordering (but accepting both keys - e.g. "application" and "Application"). + * This is used to have files sorted by name (case-insensitive) to improve developer experience during test debugging. + */ + @NotNull + public static Collector> collectToCaseInsensitiveOrderedCaseSensitiveKeyMap( + Function keyMapper + ) { + return Collectors.toMap( + keyMapper, + Function.identity(), + (existing, replacement) -> { + throw new IllegalStateException("Duplicate key: " + existing); + }, + () -> new TreeMap<>(Comparator.comparing(s -> s.toLowerCase(Locale.ROOT)) + .thenComparing(Comparator.naturalOrder()))); + } } diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/config/MergedSpecBuilderTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/config/MergedSpecBuilderTest.java index 42f9e0a547d1..59d572e0f6db 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/config/MergedSpecBuilderTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/config/MergedSpecBuilderTest.java @@ -15,9 +15,8 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; +import static org.openapitools.codegen.TestUtils.collectToCaseInsensitiveOrderedCaseSensitiveKeyMap; import static org.openapitools.codegen.languages.SpringCodegen.*; public class MergedSpecBuilderTest { @@ -66,7 +65,7 @@ private void assertFilesFromMergedSpec(String mergedSpec) throws IOException { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Spec1Api.java")) .assertMethod("spec1Operation").hasReturnType("ResponseEntity") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java index b34fce2ee042..9f84c1944b63 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaClientCodegenTest.java @@ -58,7 +58,6 @@ import java.nio.file.Paths; import java.util.*; import java.util.function.Consumer; -import java.util.function.Function; import java.util.function.Predicate; import java.util.regex.Matcher; import java.util.regex.Pattern; @@ -1191,7 +1190,7 @@ public void shouldGenerateBlockingAndNoBlockingOperationsForWebClient() { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(configurator.toClientOptInput()).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("StoreApi.java")) .assertMethod("getInventory") @@ -1605,7 +1604,7 @@ public void testMicroprofileGenerateCorrectJsonbCreator_issue12622() { .setOutputDir(output.toString().replace("\\", "/")); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate() - .stream().collect(Collectors.toMap(File::getName, Function.identity())); + .stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Foo.java")) .assertConstructor("String", "Integer") @@ -1639,7 +1638,7 @@ public void testMicroprofileGenerateCorrectJacksonGenerator_issue18336() throws final ClientOptInput clientOptInput = configurator.toClientOptInput(); DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(clientOptInput).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Pet.java")) .assertConstructor("String") @@ -1662,7 +1661,7 @@ public void testJavaClientDefaultValues_issueNoNumber() { .setInputSpec("src/test/resources/bugs/java-codegen-empty-array-as-default-value/issue_wrong-default.yaml"); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate() - .stream().collect(Collectors.toMap(File::getName, Function.identity())); + .stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("DefaultValuesType.java")) .assertProperty("stringDefault") @@ -1686,7 +1685,7 @@ public void testWebClientJsonCreatorWithNullable_issue12790() { .setOutputDir(output.toString().replace("\\", "/")); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("TestObject.java")) .printFileContent() @@ -1753,7 +1752,7 @@ public void testReferencedHeader2() { .setOutputDir(output.toString().replace("\\", "/")); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("DefaultApi.java")) .assertMethod("operationWithHttpInfo") @@ -2070,7 +2069,7 @@ private static Map generateFromContract( .setOutputDir(output.toString()); consumer.accept(configurator); return new DefaultGenerator().opts(configurator.toClientOptInput()).generate() - .stream().collect(Collectors.toMap(JavaClientCodegenTest::getUniqueName, Function.identity())); + .stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap(JavaClientCodegenTest::getUniqueName)); } private static String getUniqueName(File file) { @@ -2234,7 +2233,7 @@ public void shouldNotAddAdditionalModelAnnotationsToAbstractOpenApiSchema_issue1 .setOutputDir(output.toString().replace("\\", "/")); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("AbstractOpenApiSchema.java")) .assertTypeAnnotations() @@ -2405,7 +2404,7 @@ public void testEnumCaseInsensitive_issue8084() { codegen.additionalProperties().put(USE_ENUM_CASE_INSENSITIVE, "true"); Map files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)) - .generate().stream().collect(Collectors.toMap(File::getName, Function.identity())); + .generate().stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("EnumTest.java")) .assertMethod("fromValue") @@ -2421,7 +2420,7 @@ public void testEnumCaseSensitive_issue8084() { codegen.additionalProperties().put(USE_ENUM_CASE_INSENSITIVE, "false"); Map files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)) - .generate().stream().collect(Collectors.toMap(File::getName, Function.identity())); + .generate().stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("EnumTest.java")) .assertMethod("fromValue") @@ -2436,7 +2435,7 @@ public void testMapOfInnerEnum_issue19393() { codegen.setOutputDir(newTempFolder().toString()); Map files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)) - .generate().stream().collect(Collectors.toMap(File::getName, Function.identity())); + .generate().stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("EmployeeWithMapOfEnum.java")) .assertProperty("projectRole") @@ -2478,7 +2477,7 @@ public void testHandleConstantParams() { codegen.setAutosetConstants(true); Map files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)) - .generate().stream().collect(Collectors.toMap(File::getName, Function.identity())); + .generate().stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File apiFile = files.get("HelloExampleApi.java"); Assertions.assertNotNull(apiFile); @@ -2496,7 +2495,7 @@ public void testAllOfWithSinglePrimitiveTypeRef() { codegen.setAutosetConstants(true); Map files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)) - .generate().stream().collect(Collectors.toMap(File::getName, Function.identity())); + .generate().stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); assertNull(files.get("AllOfDatetime.java")); } @@ -2512,7 +2511,7 @@ public void testOpenapiGeneratorIgnoreListOption() { codegen.openapiGeneratorIgnoreList().add("pom.xml"); Map files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)) - .generate().stream().collect(Collectors.toMap(File::getName, Function.identity())); + .generate().stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); // make sure README.md and pom.xml are not generated assertNull(files.get("README.md")); @@ -2528,7 +2527,7 @@ public void testEnumDiscriminatorDefaultValueIsNotString() { codegen.setOutputDir(output.toString()); Map files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)) - .generate().stream().collect(Collectors.toMap(File::getName, Function.identity())); + .generate().stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); Map expectedContents = Map.of( "Cat", "this.petType = PetTypeEnum.CATTY", @@ -2613,7 +2612,7 @@ private void testHandleURIEnum(String library, String[] expectedInnerEnumLines, .setOutputDir(output.toString().replace("\\", "/")); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate() - .stream().collect(Collectors.toMap(File::getName, Function.identity())); + .stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); // enum File modelFile = files.get("Metadata.java"); @@ -2806,7 +2805,7 @@ public void testRestClientJsonCreatorWithNullable_issue12790() { .setOutputDir(output.toString().replace("\\", "/")); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("TestObject.java")) .printFileContent() @@ -3321,7 +3320,7 @@ public void testRestTemplateWithCustomUserAgent() { .setOutputDir(output.toString().replace("\\", "/")); final Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate() - .stream().collect(Collectors.toMap(File::getName, Function.identity())); + .stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); final JavaFileAssert apiClient = JavaFileAssert.assertThat(files.get("ApiClient.java")) .printFileContent(); @@ -3611,7 +3610,7 @@ public void callNativeServiceWithEmptyResponseSync() throws IOException { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(clientOptInput).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File apiFile = files.get("DefaultApi.java"); assertNotNull(apiFile); @@ -3643,7 +3642,7 @@ public void annotationLibraryDoesNotCauseImportConflicts() throws IOException { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(clientOptInput).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File apiFile = files.get("Schema.java"); assertNotNull(apiFile); @@ -3672,7 +3671,7 @@ public void annotationLibraryGeneratesCorrectImports() throws IOException { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(clientOptInput).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File apiFile = files.get("Schema.java"); assertNotNull(apiFile); @@ -3707,7 +3706,7 @@ public void callNativeServiceWithEmptyResponseAsync() throws IOException { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(clientOptInput).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File apiFile = files.get("DefaultApi.java"); assertNotNull(apiFile); @@ -3728,7 +3727,7 @@ public void testEnumWithImplements() { codegen.setOutputDir(output.toString()); Map files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)) - .generate().stream().collect(Collectors.toMap(File::getName, Function.identity())); + .generate().stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Type.java")).fileContains("Type implements java.io.Serializable {"); } @@ -3752,7 +3751,7 @@ public void testClassesAreValidJavaJersey2() { .setOutputDir(output.toString().replace("\\", "/")); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File oneOfFile = files.get("ResultObjectOneOf.java"); assertNotNull(oneOfFile); @@ -3789,7 +3788,7 @@ public void testClassesAreValidJavaJersey3() { .setOutputDir(output.toString().replace("\\", "/")); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File oneOfFile = files.get("ResultObjectOneOf.java"); assertNotNull(oneOfFile); @@ -3826,7 +3825,7 @@ public void testClassesAreValidJavaOkHttpGson() { .setOutputDir(output.toString().replace("\\", "/")); Map files = new DefaultGenerator().opts(configurator.toClientOptInput()).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File oneOfFile = files.get("ResultObjectOneOf.java"); assertNotNull(oneOfFile); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaValidationArrayPrimitivesTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaValidationArrayPrimitivesTest.java index 0b707f43dec8..2e16269d2a8d 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaValidationArrayPrimitivesTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/JavaValidationArrayPrimitivesTest.java @@ -34,8 +34,8 @@ import java.util.Collections; import java.util.Map; import java.util.function.Consumer; -import java.util.function.Function; -import java.util.stream.Collectors; + +import static org.openapitools.codegen.TestUtils.collectToCaseInsensitiveOrderedCaseSensitiveKeyMap; public class JavaValidationArrayPrimitivesTest { private static Consumer> assertWithValidationWithoutJsonNullable() { @@ -225,7 +225,7 @@ public void shouldAddValidAnnotationIntoCollectionWhenBeanValidationIsEnabled_is final DefaultGenerator generator = new DefaultGenerator(); final Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); asserts.accept(files); } @@ -408,7 +408,7 @@ public void shouldNotAddValidAnnotationIntoCollectionWhenBeanValidationIsNotEnab final DefaultGenerator generator = new DefaultGenerator(); final Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); asserts.accept(files); } @@ -445,7 +445,7 @@ public void typeMappingsForCollections(Map typeMappings, String input.config(codegen); final DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); String arrayMapping = typeMappings.getOrDefault("array", "List"); // @Valid@Size(min = 5) is not nice, but not related to this fix diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSCXFCDIServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSCXFCDIServerCodegenTest.java index 33731edb6520..2d3a9d388693 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSCXFCDIServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSCXFCDIServerCodegenTest.java @@ -15,8 +15,8 @@ import java.io.File; import java.nio.file.Files; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; + +import static org.openapitools.codegen.TestUtils.collectToCaseInsensitiveOrderedCaseSensitiveKeyMap; public class JavaJAXRSCXFCDIServerCodegenTest extends JavaJaxrsBaseTest { @@ -42,7 +42,7 @@ public void testHandleDefaultValue_issue8535() throws Exception { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("TestHeadersApi.java")) .assertMethod("headersTest") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java index 246366ec84ea..a722f2f6e0c1 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJAXRSSpecServerCodegenTest.java @@ -25,8 +25,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; import static org.openapitools.codegen.TestUtils.*; import static org.openapitools.codegen.languages.JavaJAXRSSpecServerCodegen.*; @@ -676,7 +674,7 @@ public void testHandleDefaultValue_issue8535() throws Exception { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("TestHeadersApi.java")) .assertMethod("headersTest") @@ -747,7 +745,7 @@ public void testValidAnnotation_issue14432() throws Exception { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("ComplexObject.java")) .fileContains("private @Valid List dates") @@ -938,7 +936,7 @@ public void testHandleRequiredAndReadOnlyPropertiesCorrectly() throws Exception DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("ReadonlyAndRequiredProperties.java")) .assertProperty("requiredYesReadonlyYes") @@ -1185,7 +1183,7 @@ public void testEnumUnknownDefaultCaseDeserializationTrue_issue13444() throws Ex DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Color.java")) .assertMethod("fromValue").bodyContainsLines("return UNKNOWN_DEFAULT_OPEN_API"); @@ -1208,7 +1206,7 @@ public void testEnumUnknownDefaultCaseDeserializationNotSet_issue13444() throws DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Color.java")) .assertMethod("fromValue").bodyContainsLines("throw new IllegalArgumentException(\"Unexpected value '\" + value + \"'\");"); @@ -1232,7 +1230,7 @@ public void disableGenerateJsonCreator() throws Exception { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); assertFileNotContains(files.get("RequiredProperties.java").toPath(), "@JsonCreator"); } @@ -1253,7 +1251,7 @@ public void testDiscriminatorMappingUsedInJsonTypeName() throws Exception { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); // Parent model uses its own name JavaFileAssert.assertThat(files.get("PetRequest.java")) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsBaseTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsBaseTest.java index e1e77d5a53f8..4dfcd9b15669 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsBaseTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsBaseTest.java @@ -17,11 +17,8 @@ import java.nio.file.Paths; import java.util.List; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; -import static org.openapitools.codegen.TestUtils.assertFileContains; -import static org.openapitools.codegen.TestUtils.assertFileNotContains; +import static org.openapitools.codegen.TestUtils.*; import static org.openapitools.codegen.languages.AbstractJavaCodegen.JACKSON; public abstract class JavaJaxrsBaseTest { @@ -318,7 +315,7 @@ public void testClassInheritanceEqualsHashCode() throws Exception { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input) .generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); // Assert that the base class does not call super.equals() or super.hashCode() JavaFileAssert.assertThat(files.get("BaseClass.java")).assertMethod("equals").bodyNotContainsLines("super"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsResteasyServerCodegenModelTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsResteasyServerCodegenModelTest.java index 66b9cd5e4734..66f4153bd9f4 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsResteasyServerCodegenModelTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJaxrsResteasyServerCodegenModelTest.java @@ -18,9 +18,8 @@ import java.io.File; import java.nio.file.Files; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; +import static org.openapitools.codegen.TestUtils.collectToCaseInsensitiveOrderedCaseSensitiveKeyMap; import static org.testng.Assert.assertEquals; import static org.testng.Assert.assertTrue; @@ -86,7 +85,7 @@ public void testHandleDefaultValue_issue8535() throws Exception { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("TestHeadersApi.java")) .assertMethod("headersTest") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJerseyServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJerseyServerCodegenTest.java index 8e4bc1c9f9d3..8300122d507c 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJerseyServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/jaxrs/JavaJerseyServerCodegenTest.java @@ -29,6 +29,7 @@ import java.util.stream.Collectors; import static org.openapitools.codegen.TestUtils.assertFileContains; +import static org.openapitools.codegen.TestUtils.collectToCaseInsensitiveOrderedCaseSensitiveKeyMap; public class JavaJerseyServerCodegenTest extends JavaJaxrsBaseTest { @@ -232,7 +233,7 @@ public void testHandleDefaultValue_issue8535() throws Exception { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("TestHeadersApi.java")) .assertMethod("headersTest") diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/microprofile/JavaMicroprofileServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/microprofile/JavaMicroprofileServerCodegenTest.java index bdd62ed6fdd5..7ead8eb5928e 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/microprofile/JavaMicroprofileServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/microprofile/JavaMicroprofileServerCodegenTest.java @@ -16,9 +16,8 @@ import java.nio.file.Files; import java.util.List; import java.util.Map; -import java.util.function.Function; -import java.util.stream.Collectors; +import static org.openapitools.codegen.TestUtils.collectToCaseInsensitiveOrderedCaseSensitiveKeyMap; import static org.openapitools.codegen.TestUtils.validateJavaSourceFiles; public class JavaMicroprofileServerCodegenTest { @@ -47,7 +46,7 @@ public void testEnumUnknownDefaultCaseDeserializationTrue_issue19674() throws Ex DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Color.java")) .assertMethod("fromValue").bodyContainsLines("return UNKNOWN_DEFAULT_OPEN_API"); @@ -70,7 +69,7 @@ public void testEnumUnknownDefaultCaseDeserializationNotSet_issue19674() throws DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Color.java")) .assertMethod("fromValue").bodyContainsLines("throw new IllegalArgumentException(\"Unexpected value '\" + text + \"'\");"); @@ -94,7 +93,7 @@ public void testMicroprofileCanHandleCookieParams() throws Exception { List files = new DefaultGenerator().opts(input).generate(); Map filesMap = files.stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); validateJavaSourceFiles(files); @@ -120,7 +119,7 @@ public void testMicroprofileCanHandleCookieParamsSingleRequest() throws Exceptio List files = new DefaultGenerator().opts(input).generate(); Map filesMap = files.stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); validateJavaSourceFiles(files); @@ -146,7 +145,7 @@ public void testGeneratedApiHasApiExceptionMapperRegisteredWhenUsingDefaultConfi List files = new DefaultGenerator().opts(input).generate(); Map filesMap = files.stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); validateJavaSourceFiles(files); @@ -174,7 +173,7 @@ public void testGeneratedApiDoesNotHaveApiExceptionMapperRegisteredWhenDisabling List files = new DefaultGenerator().opts(input).generate(); Map filesMap = files.stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); validateJavaSourceFiles(files); @@ -200,7 +199,7 @@ public void testGeneratedApiExceptionMapperHasProviderAnnotationWhenUsingDefault List files = new DefaultGenerator().opts(input).generate(); Map filesMap = files.stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); validateJavaSourceFiles(files); @@ -227,7 +226,7 @@ public void testGeneratedApiExceptionMapperDoesNotHaveProviderAnnotationWhenDisa List files = new DefaultGenerator().opts(input).generate(); Map filesMap = files.stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); validateJavaSourceFiles(files); @@ -254,7 +253,7 @@ public void testClientCanAccessFieldInParent() throws Exception { List files = new DefaultGenerator().opts(input).generate(); Map filesMap = files.stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); validateJavaSourceFiles(files); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java index 96444d9aee77..33910c875ade 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java @@ -54,8 +54,6 @@ import java.util.List; import java.util.Map; import java.util.function.Consumer; -import java.util.function.Function; -import java.util.stream.Collectors; import static java.util.stream.Collectors.groupingBy; import static org.assertj.core.api.Assertions.assertThat; @@ -66,9 +64,7 @@ import static org.openapitools.codegen.languages.SpringCodegen.*; import static org.openapitools.codegen.languages.features.DocumentationProviderFeatures.ANNOTATION_LIBRARY; import static org.openapitools.codegen.languages.features.DocumentationProviderFeatures.DOCUMENTATION_PROVIDER; -import static org.testng.Assert.assertEquals; -import static org.testng.Assert.assertNotNull; -import static org.testng.Assert.fail; +import static org.testng.Assert.*; public class SpringCodegenTest { @@ -491,7 +487,7 @@ public void testJavaClientCorrectConstructorOrderForRequiredFields_issue15825() generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(clientOptInput).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("SubType.java")) .assertConstructor("TypeEnum", "SchemaVersion", "UUID", "Boolean", "Boolean", "SomeEnum") @@ -1041,7 +1037,7 @@ public void shouldAddParameterWithInHeaderWhenImplicitHeadersIsTrue_issue14418() DefaultGenerator generator = new DefaultGenerator(); generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("TestApi.java")) .isInterface() @@ -1078,7 +1074,7 @@ public void shouldApiNameSuffixForApiClassname() throws IOException { DefaultGenerator generator = new DefaultGenerator(); generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("PetController.java")) .isInterface(); @@ -1108,7 +1104,7 @@ public void shouldGenerateExclusiveMinMaxForOAS31() throws IOException { DefaultGenerator generator = new DefaultGenerator(); generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); System.out.println("Generated files:"); files.keySet().stream().sorted().forEach(System.out::println); @@ -1166,7 +1162,7 @@ public void shouldUseTagsForClassname() throws IOException { generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("PetTagApi.java")) .isInterface(); @@ -1199,7 +1195,7 @@ public void shouldNotUseTagsForClassname() throws IOException { DefaultGenerator generator = new DefaultGenerator(); generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("PetApi.java")) .isInterface(); @@ -1232,7 +1228,7 @@ public void shouldAddValidAnnotationIntoCollectionWhenBeanValidationIsEnabled_is generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("ResponseTest.java")) .isNormalClass() @@ -1292,7 +1288,7 @@ public void shouldAddValidAnnotationIntoCollectionWhenBeanValidationIsEnabled_is generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Foo.java")) .isNormalClass() @@ -1380,7 +1376,7 @@ private Map generateFiles(SpringCodegen codegen, String filePath) generator.setGenerateMetadata(false); // skip metadata generation List files = generator.opts(input).generate(); - return files.stream().collect(Collectors.toMap(e -> e.getName().replace(outputPath, ""), i -> i)); + return files.stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); } /* @@ -1577,7 +1573,7 @@ private void beanValidationForFormatEmail(boolean useBeanValidation, boolean per generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("PersonWithEmail.java")); if (useBeanValidation) @@ -1689,7 +1685,7 @@ public void shouldGenerateValidCodeForReactiveControllerWithoutParams_issue14907 generator.setGenerateMetadata(false); // skip metadata Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("ConsentControllerApi.java")) .assertMethod("readAgreements", "ServerWebExchange"); @@ -1721,7 +1717,7 @@ public void shouldGenerateValidCodeWithPaginated_reactive_issue15265() throws IO generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("ConsentControllerApi.java")) .assertMethod("paginated", "ServerWebExchange", "Pageable") @@ -1754,7 +1750,7 @@ public void shouldGenerateValidCodeWithPaginated_nonReactive_issue15265() throws generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("ConsentControllerApi.java")) .assertMethod("paginated", "Pageable") @@ -2295,7 +2291,7 @@ public void shouldGenerateExternalDocs() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("PetApi.java")) .hasImports("io.swagger.v3.oas.annotations.ExternalDocumentation") @@ -2735,7 +2731,7 @@ public void shouldGenerateBeanValidationOnHeaderParams() throws IOException { generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("SomeMethodApi.java")) .assertMethod("methodWithValidation") @@ -2910,7 +2906,7 @@ public void shouldUseEqualsNullableForArrayWhenSetInConfig_issue13385() throws I generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("TestObject.java")) .assertMethod("equals") @@ -2942,7 +2938,7 @@ public void shouldNotUseEqualsNullableForArrayWhenNotSetInConfig_issue13385() th generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("TestObject.java")) .assertMethod("equals") @@ -2971,7 +2967,7 @@ public void useBeanValidationGenerateAnnotationsForRequestBody_issue13932() thro DefaultGenerator generator = new DefaultGenerator(); generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("AddApi.java")) .assertMethod("addPost") @@ -3002,7 +2998,7 @@ public void useBeanValidationGenerateAnnotationsForFormsRequestBody() throws IOE DefaultGenerator generator = new DefaultGenerator(); generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("AddApi.java")) .assertMethod("addPost") @@ -3042,7 +3038,7 @@ public void shouldHandleSeparatelyInterfaceAndModelAdditionalAnnotations() throw generator.setGenerateMetadata(false); // skip metadata and ↓ only generate models generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("PatchRequestInner.java")) .isInterface() @@ -3089,7 +3085,7 @@ public void contractWithResolvedInnerEnumContainsEnumConverter() throws IOExcept generator.setGenerateMetadata(false); Map files = generator.opts(clientOptInput).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("EnumConverterConfiguration.java")) .assertMethod("ponyTypeConverter"); @@ -3168,7 +3164,7 @@ private Map generateFromContract(String url, String library, Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("ResponseObjectWithDifferentFieldNames.java")) .assertProperty("normalPropertyName") @@ -3302,7 +3298,7 @@ public void testReturnTypeVoidWithResponseEntity_issue12341() throws IOException generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3347,7 +3343,7 @@ public void testReturnTypeVoidWithoutResponseEntityWithDelegate_issue12341() thr generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3394,7 +3390,7 @@ public void testReturnTypeVoidWithoutResponseEntityWithoutDelegateWithAsync_issu generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3433,7 +3429,7 @@ public void testReturnTypeVoidWithoutResponseEntityWithoutDelegateWithoutAsync_i generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3472,7 +3468,7 @@ public void testHasRestControllerDoesNotHaveController_issue15264() throws IOExc generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3510,7 +3506,7 @@ public void testDoesNotHasRestControllerHaveController_issue15264() throws IOExc generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3546,7 +3542,7 @@ public void testXPatternMessage_issue5857() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("ObjTest.java")); javaFileAssert @@ -3590,7 +3586,7 @@ public void testXPatternMessage_issue18959() throws IOException { generator.setGenerateMetadata(false); // skip metadata generation Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3644,7 +3640,7 @@ public void testEnumCaseInsensitive_issue8084() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("EnumTest.java")); javaFileAssert @@ -3677,7 +3673,7 @@ public void testEnumCaseSensitive_issue8084() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("EnumTest.java")); javaFileAssert @@ -3711,7 +3707,7 @@ public void testHasOperationParameterExtraAnnotation_issue18224() throws IOExcep generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3756,7 +3752,7 @@ public void testModelHasParameterExtraAnnotations_issue19953() { generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("ObjTest.java")); javaFileAssert.assertProperty("field3") @@ -3791,7 +3787,7 @@ public void testHasOperationExtraAnnotation_issue15822() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3826,7 +3822,7 @@ public void testHasOperationExtraAnnotation_issue12219() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -3863,7 +3859,7 @@ public void testHasOperationExtraAnnotation_issue12219_array() throws IOExceptio generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -4953,7 +4949,7 @@ public void testSSEOperationSupport() throws Exception { generator.setGenerateMetadata(false); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); MapAssert.assertThatMap(files).isNotEmpty(); File api = files.get("PathApi.java"); @@ -5311,7 +5307,7 @@ public void optionalListShouldBeEmpty() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("PetDto.java")) .fileContains("private List<@Valid TagDto> tags = new ArrayList<>();") @@ -5345,7 +5341,7 @@ public void testCollectionTypesWithDefaults_issue_18102() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("PetDto.java")) .fileContains("private @Nullable List<@Valid TagDto> tags") @@ -5760,7 +5756,7 @@ public void testEnumWithImplements() { codegen.setOutputDir(output.toString()); Map files = new DefaultGenerator().opts(new ClientOptInput().openAPI(openAPI).config(codegen)) - .generate().stream().collect(Collectors.toMap(File::getName, Function.identity())); + .generate().stream().collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Type.java")).fileContains("Type implements java.io.Serializable {"); } @@ -5905,7 +5901,7 @@ public void testCollectionTypesWithDefaults_issue_collection() throws IOExceptio DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("PetDto.java")) .fileContains("private @Nullable List<@Valid TagDto> tags;") @@ -5932,7 +5928,7 @@ public void testDefaultForRequiredNonNullableMap() throws IOException { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(files.get("Pet.java")) .fileContains("private Map requiredNonNullableMap = new HashMap<>();"); @@ -6001,7 +5997,7 @@ public void testHasRestControllerDoesNotHaveController_issue21156() throws IOExc generator.setGeneratorPropertyDefault(CodegenConstants.APIS, "true"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApiDelegate.java")); javaFileAssert @@ -6373,7 +6369,7 @@ public void annotationLibraryDoesNotCauseImportConflictsInSpring() throws IOExce DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File apiFile = files.get("Schema.java"); assertNotNull(apiFile); @@ -6407,7 +6403,7 @@ public void annotationLibraryDoesNotCauseImportConflictsInSpringWithAnnotationLi DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); File apiFile = files.get("Schema.java"); assertNotNull(apiFile); @@ -6443,7 +6439,7 @@ public void testExtensionsOnSchema_issue9183() throws IOException { generator.setGenerateMetadata(false); // skip metadata generation Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert javaFileAssert = JavaFileAssert.assertThat(files.get("TestApi.java")); javaFileAssert @@ -6488,7 +6484,7 @@ public void shouldAddNullableImportForArrayTypeModels() throws IOException { generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false"); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); // AnimalFarm is an array-type model with no properties (issue #22788) JavaFileAssert.assertThat(files.get("AnimalFarm.java")) @@ -6543,7 +6539,7 @@ public void shouldImportJackson2JsonDeserializeForUniqueItemsWhenJackson3NotSet( generator.setGenerateMetadata(false); // skip metadata generation Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Pet.java")) .hasImports("com.fasterxml.jackson.databind.annotation.JsonDeserialize"); @@ -6572,7 +6568,7 @@ public void shouldImportJackson3JsonDeserializeForUniqueItemsWhenJackson3Set() t generator.setGenerateMetadata(false); // skip metadata generation Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/model/Pet.java")) .hasImports("tools.jackson.databind.annotation.JsonDeserialize"); @@ -6601,7 +6597,7 @@ public void shouldNotHaveDocumentationAnnotationWhenUsingLibrarySpringHttpInterf generator.setGenerateMetadata(false); // skip metadata generation Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); JavaFileAssert.assertThat(Paths.get(outputPath + "/src/main/java/org/openapitools/api/PetApi.java")) .assertMethod("addPet").assertParameter("pet").assertParameterAnnotations().doesNotContainWithName("Parameter"); diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java index 504583c759dd..fb16af54427e 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java @@ -45,8 +45,7 @@ import java.util.stream.Stream; import static org.assertj.core.api.Assertions.assertThat; -import static org.openapitools.codegen.TestUtils.assertFileContains; -import static org.openapitools.codegen.TestUtils.assertFileNotContains; +import static org.openapitools.codegen.TestUtils.*; import static org.openapitools.codegen.languages.KotlinSpringServerCodegen.*; import static org.openapitools.codegen.languages.SpringCodegen.REACTIVE; import static org.openapitools.codegen.languages.SpringCodegen.SPRING_BOOT; @@ -856,7 +855,7 @@ public void useBeanValidationGenerateAnnotationsForRequestBody() throws IOExcept DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); assertFileContains( Paths.get(files.get("AddApi.kt").getAbsolutePath()), @@ -4157,7 +4156,7 @@ private Map generateFromContract( generatorPropertyDefaults.forEach(generator::setGeneratorPropertyDefault); return generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); } // ========== AUTO X-SPRING-PAGINATED TESTS ========== diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpClientCodegenTest.java index 991dd174515c..386e97cc2702 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpClientCodegenTest.java @@ -30,9 +30,10 @@ import java.nio.file.Files; import java.util.List; import java.util.Map; -import java.util.function.Function; import java.util.stream.Collectors; +import static org.openapitools.codegen.TestUtils.collectToCaseInsensitiveOrderedCaseSensitiveKeyMap; + public class PhpClientCodegenTest { protected PhpClientCodegen codegen; @@ -123,7 +124,7 @@ public void testEnumUnknownDefaultCaseDeserializationEnabled() throws Exception DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); List modelContent = Files .readAllLines(files.get("Pet.php").toPath()) @@ -151,7 +152,7 @@ public void testEnumUnknownDefaultCaseDeserializationDisabled() throws Exception DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); List modelContent = Files .readAllLines(files.get("Pet.php").toPath()) diff --git a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpNextgenClientCodegenTest.java b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpNextgenClientCodegenTest.java index 88ad980ac167..dd73810ab253 100644 --- a/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpNextgenClientCodegenTest.java +++ b/modules/openapi-generator/src/test/java/org/openapitools/codegen/php/PhpNextgenClientCodegenTest.java @@ -33,9 +33,10 @@ import java.nio.file.Files; import java.util.List; import java.util.Map; -import java.util.function.Function; import java.util.stream.Collectors; +import static org.openapitools.codegen.TestUtils.collectToCaseInsensitiveOrderedCaseSensitiveKeyMap; + public class PhpNextgenClientCodegenTest { protected PhpNextgenClientCodegen codegen; @@ -108,7 +109,7 @@ public void testEnumUnknownDefaultCaseDeserializationEnabled() throws Exception DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); List modelContent = Files .readAllLines(files.get("Pet.php").toPath()) @@ -141,7 +142,7 @@ public void testDiscriminatorUsesModelPackageNamespace() throws Exception { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); List objectSerializerContent = Files .readAllLines(files.get("ObjectSerializer.php").toPath()) @@ -175,7 +176,7 @@ public void testEnumUnknownDefaultCaseDeserializationDisabled() throws Exception DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); List modelContent = Files .readAllLines(files.get("Pet.php").toPath()) @@ -204,7 +205,7 @@ public void testDifferentResponseSchemasWithEmpty() throws IOException { DefaultGenerator generator = new DefaultGenerator(); Map files = generator.opts(input).generate().stream() - .collect(Collectors.toMap(File::getName, Function.identity())); + .collect(collectToCaseInsensitiveOrderedCaseSensitiveKeyMap()); List modelContent = Files .readAllLines(files.get("DefaultApi.php").toPath())