@@ -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