diff --git a/api/src/main/java/run/halo/app/extension/PageRequestImpl.java b/api/src/main/java/run/halo/app/extension/PageRequestImpl.java index 1d45455e23..62da5661df 100644 --- a/api/src/main/java/run/halo/app/extension/PageRequestImpl.java +++ b/api/src/main/java/run/halo/app/extension/PageRequestImpl.java @@ -13,8 +13,12 @@ public class PageRequestImpl implements PageRequest { public PageRequestImpl(int pageNumber, int pageSize, Sort sort) { Assert.notNull(sort, "Sort must not be null"); - Assert.isTrue(pageNumber >= 0, "Page index must not be less than zero!"); - Assert.isTrue(pageSize >= 0, "Page size must not be less than one!"); + if (pageNumber < 1) { + pageNumber = 1; + } + if (pageSize < 0) { + pageSize = 0; + } this.pageNumber = pageNumber; this.pageSize = pageSize; this.sort = sort; diff --git a/api/src/test/java/run/halo/app/extension/PageRequestImplTest.java b/api/src/test/java/run/halo/app/extension/PageRequestImplTest.java new file mode 100644 index 0000000000..4149ad10ff --- /dev/null +++ b/api/src/test/java/run/halo/app/extension/PageRequestImplTest.java @@ -0,0 +1,27 @@ +package run.halo.app.extension; + +import static org.junit.jupiter.api.Assertions.assertEquals; + +import java.util.Random; +import org.junit.jupiter.api.RepeatedTest; +import org.springframework.data.domain.Sort; + +class PageRequestImplTest { + + @RepeatedTest(10) + void shouldBeCompatibleZeroAndNegativePageNumber() { + var randomPageNumber = -(new Random().nextInt(0, Integer.MAX_VALUE)); + var page = new PageRequestImpl(randomPageNumber, 10, Sort.unsorted()); + assertEquals(1, page.getPageNumber()); + assertEquals(10, page.getPageSize()); + } + + @RepeatedTest(10) + void shouldBeCompatibleNegativePageSize() { + var randomPageSize = -(new Random().nextInt(1, Integer.MAX_VALUE)); + var page = new PageRequestImpl(10, randomPageSize, Sort.unsorted()); + assertEquals(10, page.getPageNumber()); + assertEquals(0, page.getPageSize()); + } + +} \ No newline at end of file