Skip to content

Commit e4f8285

Browse files
committed
add missing tests for autoXSpringPaginated in java spring
1 parent 204b9f6 commit e4f8285

1 file changed

Lines changed: 119 additions & 0 deletions

File tree

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

Lines changed: 119 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6720,6 +6720,125 @@ public void autoXSpringPaginatedCaseSensitiveMatching() throws IOException {
67206720
.doesNotHaveParameter("pageable");
67216721
}
67226722

6723+
@Test
6724+
public void autoXSpringPaginatedNoDetectionWhenMissingPage() throws IOException {
6725+
Map<String, Object> props = new HashMap<>();
6726+
props.put(SpringCodegen.INTERFACE_ONLY, "true");
6727+
props.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
6728+
props.put(SpringCodegen.USE_TAGS, "true");
6729+
props.put(SpringCodegen.AUTO_X_SPRING_PAGINATED, "true");
6730+
6731+
Map<String, File> files = generateFromContract(
6732+
"src/test/resources/3_0/spring/petstore-auto-paginated.yaml", SPRING_BOOT, props);
6733+
6734+
// findPetsMissingPage: missing 'page' param → Pageable must NOT be injected
6735+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6736+
.assertMethod("findPetsMissingPage")
6737+
.doesNotHaveParameter("pageable");
6738+
}
6739+
6740+
@Test
6741+
public void autoXSpringPaginatedNoDetectionWhenMissingSize() throws IOException {
6742+
Map<String, Object> props = new HashMap<>();
6743+
props.put(SpringCodegen.INTERFACE_ONLY, "true");
6744+
props.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
6745+
props.put(SpringCodegen.USE_TAGS, "true");
6746+
props.put(SpringCodegen.AUTO_X_SPRING_PAGINATED, "true");
6747+
6748+
Map<String, File> files = generateFromContract(
6749+
"src/test/resources/3_0/spring/petstore-auto-paginated.yaml", SPRING_BOOT, props);
6750+
6751+
// findPetsMissingSize: missing 'size' param → Pageable must NOT be injected
6752+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6753+
.assertMethod("findPetsMissingSize")
6754+
.doesNotHaveParameter("pageable");
6755+
}
6756+
6757+
@Test
6758+
public void autoXSpringPaginatedNoDetectionWhenMissingSort() throws IOException {
6759+
Map<String, Object> props = new HashMap<>();
6760+
props.put(SpringCodegen.INTERFACE_ONLY, "true");
6761+
props.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
6762+
props.put(SpringCodegen.USE_TAGS, "true");
6763+
props.put(SpringCodegen.AUTO_X_SPRING_PAGINATED, "true");
6764+
6765+
Map<String, File> files = generateFromContract(
6766+
"src/test/resources/3_0/spring/petstore-auto-paginated.yaml", SPRING_BOOT, props);
6767+
6768+
// findPetsMissingSort: missing 'sort' param → Pageable must NOT be injected
6769+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6770+
.assertMethod("findPetsMissingSort")
6771+
.doesNotHaveParameter("pageable");
6772+
}
6773+
6774+
@Test
6775+
public void autoXSpringPaginatedOnlyForSpringBoot() throws IOException {
6776+
Map<String, Object> props = new HashMap<>();
6777+
props.put(SpringCodegen.USE_TAGS, "true");
6778+
props.put(SpringCodegen.AUTO_X_SPRING_PAGINATED, "true");
6779+
6780+
// spring-cloud generates a Feign client — auto-detect should not apply there
6781+
Map<String, File> files = generateFromContract(
6782+
"src/test/resources/3_0/spring/petstore-auto-paginated.yaml", "spring-cloud", props);
6783+
6784+
File petApiClient = files.get("PetApiClient.java");
6785+
if (petApiClient != null) {
6786+
String content = java.nio.file.Files.readString(petApiClient.toPath());
6787+
assertThat(content).doesNotContain("Pageable pageable");
6788+
}
6789+
}
6790+
6791+
@Test
6792+
public void autoXSpringPaginatedDisabledByDefault() throws IOException {
6793+
Map<String, Object> props = new HashMap<>();
6794+
props.put(SpringCodegen.INTERFACE_ONLY, "true");
6795+
props.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
6796+
props.put(SpringCodegen.USE_TAGS, "true");
6797+
// NOT setting AUTO_X_SPRING_PAGINATED (defaults to false)
6798+
6799+
Map<String, File> files = generateFromContract(
6800+
"src/test/resources/3_0/spring/petstore-auto-paginated.yaml", SPRING_BOOT, props);
6801+
6802+
// findPetsWithAutoDetect: should NOT get Pageable when autoXSpringPaginated is not enabled
6803+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6804+
.assertMethod("findPetsWithAutoDetect")
6805+
.doesNotHaveParameter("pageable");
6806+
}
6807+
6808+
@Test
6809+
public void autoXSpringPaginatedWorksWithManualTrue() 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.AUTO_X_SPRING_PAGINATED, "true");
6815+
6816+
Map<String, File> files = generateFromContract(
6817+
"src/test/resources/3_0/spring/petstore-auto-paginated.yaml", SPRING_BOOT, props);
6818+
6819+
// findPetsManualTrue: explicit x-spring-paginated: true → Pageable must be injected
6820+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6821+
.assertMethod("findPetsManualTrue")
6822+
.assertParameter("pageable").hasType("Pageable");
6823+
}
6824+
6825+
@Test
6826+
public void autoXSpringPaginatedNoParamsDoesNotDetect() throws IOException {
6827+
Map<String, Object> props = new HashMap<>();
6828+
props.put(SpringCodegen.INTERFACE_ONLY, "true");
6829+
props.put(SpringCodegen.SKIP_DEFAULT_INTERFACE, "true");
6830+
props.put(SpringCodegen.USE_TAGS, "true");
6831+
props.put(SpringCodegen.AUTO_X_SPRING_PAGINATED, "true");
6832+
6833+
Map<String, File> files = generateFromContract(
6834+
"src/test/resources/3_0/spring/petstore-auto-paginated.yaml", SPRING_BOOT, props);
6835+
6836+
// findPetsNoParams: no params at all → Pageable must NOT be injected
6837+
JavaFileAssert.assertThat(files.get("PetApi.java"))
6838+
.assertMethod("findPetsNoParams")
6839+
.doesNotHaveParameter("pageable");
6840+
}
6841+
67236842
// -------------------------------------------------------------------------
67246843
// generateSortValidation tests
67256844
// -------------------------------------------------------------------------

0 commit comments

Comments
 (0)