diff --git a/application/src/main/java/run/halo/app/theme/finders/impl/PostFinderImpl.java b/application/src/main/java/run/halo/app/theme/finders/impl/PostFinderImpl.java index 0af92012c..2e2b5950c 100644 --- a/application/src/main/java/run/halo/app/theme/finders/impl/PostFinderImpl.java +++ b/application/src/main/java/run/halo/app/theme/finders/impl/PostFinderImpl.java @@ -85,7 +85,7 @@ public class PostFinderImpl implements PostFinder { return Sort.by(Sort.Order.desc("spec.pinned"), Sort.Order.desc("spec.priority"), Sort.Order.desc("spec.publishTime"), - Sort.Order.desc("metadata.name") + Sort.Order.asc("metadata.name") ); } @@ -337,11 +337,8 @@ public class PostFinderImpl implements PostFinder { } public PageRequest toPageRequest() { - var resolvedSort = Optional.of(SortUtils.resolve(sort)) - .filter(Sort::isUnsorted) - .orElse(defaultSort()); return PageRequestImpl.of(pageNullSafe(getPage()), - sizeNullSafe(getSize()), resolvedSort); + sizeNullSafe(getSize()), SortUtils.resolve(sort).and(defaultSort())); } } } diff --git a/application/src/test/java/run/halo/app/theme/finders/impl/PostFinderImplTest.java b/application/src/test/java/run/halo/app/theme/finders/impl/PostFinderImplTest.java index 405d5b6dd..b6d383cf1 100644 --- a/application/src/test/java/run/halo/app/theme/finders/impl/PostFinderImplTest.java +++ b/application/src/test/java/run/halo/app/theme/finders/impl/PostFinderImplTest.java @@ -10,11 +10,13 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.function.Predicate; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.InjectMocks; import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; +import org.springframework.data.domain.Sort; import reactor.core.publisher.Mono; import run.halo.app.content.PostService; import run.halo.app.core.extension.content.Post; @@ -214,4 +216,21 @@ class PostFinderImplTest { post.setStatus(postStatus); return post; } + + @Nested + class PostQueryTest { + + @Test + void toPageRequestTest() { + var query = new PostFinderImpl.PostQuery(); + var result = query.toPageRequest(); + assertThat(result.getSort()).isEqualTo(PostFinderImpl.defaultSort()); + + query.setSort(List.of("spec.publishTime,desc")); + result = query.toPageRequest(); + assertThat(result.getSort()) + .isEqualTo(Sort.by(Sort.Order.desc("spec.publishTime")) + .and(PostFinderImpl.defaultSort())); + } + } } \ No newline at end of file