diff --git a/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java b/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java index 7eba19de3..fef8c3b2b 100644 --- a/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java +++ b/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java @@ -14,6 +14,7 @@ import com.example.solidconnection.university.domain.UnivApplyInfo; import com.example.solidconnection.university.repository.UnivApplyInfoRepository; import com.example.solidconnection.university.repository.custom.UnivApplyInfoFilterRepositoryImpl; +import io.micrometer.common.util.StringUtils; import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -45,7 +46,8 @@ public ApplicationsResponse getApplicants(long siteUserId, String regionCode, St // 1. 대학 지원 정보 필터링 (regionCode, keyword) SiteUser siteUser = siteUserRepository.findById(siteUserId) .orElseThrow(() -> new CustomException(USER_NOT_FOUND)); - List univApplyInfos = universityFilterRepository.findAllByRegionCodeAndKeywords(regionCode, List.of(keyword)); + List keywords = StringUtils.isNotBlank(keyword) ? List.of(keyword) : List.of(); + List univApplyInfos = universityFilterRepository.findAllByRegionCodeAndKeywordsAndTerm(regionCode, keywords, term); if (univApplyInfos.isEmpty()) { return new ApplicationsResponse(List.of(), List.of(), List.of()); } diff --git a/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepository.java b/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepository.java index c8a6601e3..9efeaee17 100644 --- a/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepository.java +++ b/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepository.java @@ -6,7 +6,7 @@ public interface UnivApplyInfoFilterRepository { - List findAllByRegionCodeAndKeywords(String regionCode, List keywords); + List findAllByRegionCodeAndKeywordsAndTerm(String regionCode, List keywords, String term); List findAllByFilter(LanguageTestType testType, String testScore, String term, List countryKoreanNames); diff --git a/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepositoryImpl.java b/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepositoryImpl.java index 3786f697c..0935933df 100644 --- a/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepositoryImpl.java +++ b/src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepositoryImpl.java @@ -31,7 +31,7 @@ public UnivApplyInfoFilterRepositoryImpl(EntityManager em) { } @Override - public List findAllByRegionCodeAndKeywords(String regionCode, List keywords) { + public List findAllByRegionCodeAndKeywordsAndTerm(String regionCode, List keywords, String term) { QUnivApplyInfo univApplyInfo = QUnivApplyInfo.univApplyInfo; QUniversity university = QUniversity.university; QCountry country = QCountry.country; @@ -45,6 +45,7 @@ public List findAllByRegionCodeAndKeywords(String regionCode, Lis .where( regionCodeEq(country, regionCode) .and(countryOrUniversityContainsKeyword(country, university, keywords)) + .and(univApplyInfo.term.eq(term)) ) .distinct() .fetch(); diff --git a/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java b/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java index a53c6b6bf..6491b95ac 100644 --- a/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java @@ -249,11 +249,11 @@ class 지원자_목록_조회_테스트 { } @Test - void 이전_학기_지원자는_조회되지_않는다() { + void 현재_학기_지원서만_조회되고_이전_학기_지원서는_제외된다() { // given - Application application = applicationFixture.지원서( + applicationFixture.지원서( user1, - "nickname1", + "nickname1_past", "1988-1", gpaScore1.getGpa(), languageTestScore1.getLanguageTest(), @@ -262,6 +262,17 @@ class 지원자_목록_조회_테스트 { null ); + Application currentApplication = applicationFixture.지원서( + user1, + "nickname1", + term, + gpaScore1.getGpa(), + languageTestScore1.getLanguageTest(), + 괌대학_A_지원_정보.getId(), + null, + null + ); + // when ApplicationsResponse response = applicationQueryService.getApplicants( user1.getId(), @@ -270,10 +281,11 @@ class 지원자_목록_조회_테스트 { ); // then - assertThat(response.firstChoice()).doesNotContainAnyElementsOf(List.of( - ApplicantsResponse.of(괌대학_A_지원_정보, - List.of(application), user1) - )); + assertThat(response.firstChoice()).containsExactlyInAnyOrder( + ApplicantsResponse.of(괌대학_A_지원_정보, List.of(currentApplication), user1), + ApplicantsResponse.of(괌대학_B_지원_정보, List.of(), user1), + ApplicantsResponse.of(서던덴마크대학교_지원_정보, List.of(), user1) + ); } @Test