diff --git a/resource-server/src/main/java/com/inhabas/api/domain/budget/repository/BudgetApplicationRepositoryImpl.java b/resource-server/src/main/java/com/inhabas/api/domain/budget/repository/BudgetApplicationRepositoryImpl.java index 50151c6d..92b4610b 100644 --- a/resource-server/src/main/java/com/inhabas/api/domain/budget/repository/BudgetApplicationRepositoryImpl.java +++ b/resource-server/src/main/java/com/inhabas/api/domain/budget/repository/BudgetApplicationRepositoryImpl.java @@ -36,8 +36,7 @@ public List search(RequestStatus status) { budgetSupportApplication.status)) .from(budgetSupportApplication) .where(sameStatus(status)) - .orderBy( - budgetSupportApplication.dateUsed.desc(), budgetSupportApplication.dateCreated.desc()) + .orderBy(budgetSupportApplication.dateCreated.desc(), budgetSupportApplication.id.desc()) .fetch(); } diff --git a/resource-server/src/test/java/com/inhabas/api/domain/budget/repository/BudgetApplicationRepositoryTest.java b/resource-server/src/test/java/com/inhabas/api/domain/budget/repository/BudgetApplicationRepositoryTest.java index ebb6ba1a..42dce81e 100644 --- a/resource-server/src/test/java/com/inhabas/api/domain/budget/repository/BudgetApplicationRepositoryTest.java +++ b/resource-server/src/test/java/com/inhabas/api/domain/budget/repository/BudgetApplicationRepositoryTest.java @@ -4,6 +4,7 @@ import java.time.LocalDateTime; import java.util.ArrayList; +import java.util.Collections; import java.util.List; import org.springframework.beans.factory.annotation.Autowired; @@ -84,6 +85,34 @@ public void searchSpecificApplicationsTest() { assertThat(dtoList).hasSize(5); } + @DisplayName("예산지원신청서는 작성 시점 기준 내림차순으로 정렬된다.") + @Test + public void searchOrderedByDateCreatedTest() { + // given : 나중에 작성한 신청서일수록 사용일은 더 과거가 되도록 저장 + List savedIds = new ArrayList<>(); + for (int i = 0; i < 5; i++) { + BudgetSupportApplication application = + new BudgetSupportApplication( + menu, + APPLICATION_TITLE, + APPLICATION_DETAILS, + LocalDateTime.now().minusDays(i + 1), + ACCOUNT_NUMBER, + APPLICATION_OUTCOME, + member, + INITIAL_REQUEST_STATUS) + .writtenBy(member, BudgetSupportApplication.class); + savedIds.add(budgetApplicationRepository.save(application).getId()); + } + + // when + List dtoList = budgetApplicationRepository.search(null); + + // then : 사용일 순서와 무관하게 최근에 작성한 신청서가 먼저 조회된다. + Collections.reverse(savedIds); + assertThat(dtoList).extracting(BudgetApplicationDto::getId).containsExactlyElementsOf(savedIds); + } + private Object getFieldValueByReflection(Object target, String fieldName) { return ReflectionTestUtils.getField(target, fieldName); }