Skip to content

Commit 3e30230

Browse files
committed
add java spring test and delete incorrect sample
1 parent 333143c commit 3e30230

27 files changed

Lines changed: 108 additions & 1570 deletions

File tree

bin/configs/kotlin-spring-boot-sort-validation.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ additionalProperties:
1010
serviceImplementation: "true"
1111
serializableModel: "true"
1212
useBeanValidation: "true"
13+
interfaceOnly: "true"
1314
useSpringBoot3: "true"
1415
generateSortValidation: "true"
1516
generatePageableConstraintValidation: "true"

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

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6805,6 +6805,113 @@ public void generateSortValidationNotAppliedWhenNoSortEnum() throws IOException
68056805
.doesNotContainWithName("ValidSort");
68066806
}
68076807

6808+
@Test
6809+
public void generateSortValidationWorksForArraySortEnum() throws IOException {
6810+
Map<String, Object> props = new HashMap<>();
6811+
props.put(SpringCodegen.INTERFACE_ONLY, "true");
6812+
props.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
6813+
props.put(SpringCodegen.USE_TAGS, "true");
6814+
props.put(SpringCodegen.USE_SPRING_BOOT3, "true");
6815+
props.put(SpringCodegen.GENERATE_SORT_VALIDATION, "true");
6816+
6817+
Map<String, File> files = generateFromContract(
6818+
"src/test/resources/3_0/spring/petstore-sort-validation.yaml", SPRING_BOOT, props);
6819+
6820+
// findPetsWithArraySortEnum: sort is type:array, items have inline enum → @ValidSort with Java {} syntax
6821+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6822+
.assertMethod("findPetsWithArraySortEnum")
6823+
.assertParameter("pageable")
6824+
.assertParameterAnnotations()
6825+
.containsWithName("ValidSort");
6826+
6827+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6828+
.fileContains("@ValidSort(allowedValues = {")
6829+
.fileContains("\"id,asc\"")
6830+
.fileContains("\"id,desc\"")
6831+
.fileContains("\"name,asc\"")
6832+
.fileContains("\"name,desc\"");
6833+
}
6834+
6835+
@Test
6836+
public void generateSortValidationWorksForArraySortRefEnum() throws IOException {
6837+
Map<String, Object> props = new HashMap<>();
6838+
props.put(SpringCodegen.INTERFACE_ONLY, "true");
6839+
props.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
6840+
props.put(SpringCodegen.USE_TAGS, "true");
6841+
props.put(SpringCodegen.USE_SPRING_BOOT3, "true");
6842+
props.put(SpringCodegen.GENERATE_SORT_VALIDATION, "true");
6843+
6844+
Map<String, File> files = generateFromContract(
6845+
"src/test/resources/3_0/spring/petstore-sort-validation.yaml", SPRING_BOOT, props);
6846+
6847+
// findPetsWithArraySortRefEnum: sort is type:array, items $ref to PetSort enum → @ValidSort with PetSort values
6848+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6849+
.assertMethod("findPetsWithArraySortRefEnum")
6850+
.assertParameter("pageable")
6851+
.assertParameterAnnotations()
6852+
.containsWithName("ValidSort");
6853+
6854+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6855+
.fileContains("\"id,asc\"")
6856+
.fileContains("\"id,desc\"")
6857+
.fileContains("\"createdAt,asc\"")
6858+
.fileContains("\"createdAt,desc\"");
6859+
}
6860+
6861+
@Test
6862+
public void generateSortValidationWorksForExternalParamRefArraySort() throws IOException {
6863+
Map<String, Object> props = new HashMap<>();
6864+
props.put(SpringCodegen.INTERFACE_ONLY, "true");
6865+
props.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
6866+
props.put(SpringCodegen.USE_TAGS, "true");
6867+
props.put(SpringCodegen.USE_SPRING_BOOT3, "true");
6868+
props.put(SpringCodegen.GENERATE_SORT_VALIDATION, "true");
6869+
6870+
Map<String, File> files = generateFromContract(
6871+
"src/test/resources/3_0/spring/petstore-sort-validation.yaml", SPRING_BOOT, props);
6872+
6873+
// findPetsWithExternalParamRefArraySort: sort param $ref to external components file,
6874+
// type:array with items $ref to PetSortEnum in the same external file
6875+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6876+
.assertMethod("findPetsWithExternalParamRefArraySort")
6877+
.assertParameter("pageable")
6878+
.assertParameterAnnotations()
6879+
.containsWithName("ValidSort");
6880+
6881+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6882+
.fileContains("\"name,asc\"")
6883+
.fileContains("\"name,desc\"")
6884+
.fileContains("\"id,asc\"")
6885+
.fileContains("\"id,desc\"");
6886+
}
6887+
6888+
@Test
6889+
public void generateSortValidationWorksForNonExplodedExternalParamRefArraySort() throws IOException {
6890+
Map<String, Object> props = new HashMap<>();
6891+
props.put(SpringCodegen.INTERFACE_ONLY, "true");
6892+
props.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
6893+
props.put(SpringCodegen.USE_TAGS, "true");
6894+
props.put(SpringCodegen.USE_SPRING_BOOT3, "true");
6895+
props.put(SpringCodegen.GENERATE_SORT_VALIDATION, "true");
6896+
6897+
Map<String, File> files = generateFromContract(
6898+
"src/test/resources/3_0/spring/petstore-sort-validation.yaml", SPRING_BOOT, props);
6899+
6900+
// findPetsWithNonExplodedExternalParamRefArraySort: sort param $ref to external file,
6901+
// explode: false — @ValidSort works identically since it validates the deserialized Pageable
6902+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6903+
.assertMethod("findPetsWithNonExplodedExternalParamRefArraySort")
6904+
.assertParameter("pageable")
6905+
.assertParameterAnnotations()
6906+
.containsWithName("ValidSort");
6907+
6908+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6909+
.fileContains("\"name,asc\"")
6910+
.fileContains("\"name,desc\"")
6911+
.fileContains("\"id,asc\"")
6912+
.fileContains("\"id,desc\"");
6913+
}
6914+
68086915
// -------------------------------------------------------------------------
68096916
// generatePageableConstraintValidation tests
68106917
// -------------------------------------------------------------------------

samples/server/petstore/kotlin-springboot-sort-validation/.openapi-generator-ignore

Lines changed: 0 additions & 23 deletions
This file was deleted.

samples/server/petstore/kotlin-springboot-sort-validation/.openapi-generator/FILES

Lines changed: 0 additions & 21 deletions
This file was deleted.

samples/server/petstore/kotlin-springboot-sort-validation/.openapi-generator/VERSION

Lines changed: 0 additions & 1 deletion
This file was deleted.

samples/server/petstore/kotlin-springboot-sort-validation/README.md

Lines changed: 0 additions & 21 deletions
This file was deleted.

samples/server/petstore/kotlin-springboot-sort-validation/build.gradle.kts

Lines changed: 0 additions & 44 deletions
This file was deleted.
Binary file not shown.

samples/server/petstore/kotlin-springboot-sort-validation/gradle/wrapper/gradle-wrapper.properties

Lines changed: 0 additions & 7 deletions
This file was deleted.

0 commit comments

Comments
 (0)