Skip to content

Commit cfe71a2

Browse files
authored
fix: 대학교 중복 오류 수정 (#510)
* fix : 대학교 중복 오류 수정 - findAllByRegionCodeAnKeywords 메서드에서 term을 고려하여 조회하도록 수정 * fix : keyword에서 NPE이 발생하지 않도록 검증로직 추가 * refactor : 메서드명 수정 - 메서드명에 Term 추가 - 컨벤션 수정 * refactor: 테스트 코드 수정 - 명칭 변경 - 정확하게 현재 학기만 조회되는지 확인하도록 로직 수정
1 parent e4ff858 commit cfe71a2

4 files changed

Lines changed: 25 additions & 10 deletions

File tree

src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,7 @@
1414
import com.example.solidconnection.university.domain.UnivApplyInfo;
1515
import com.example.solidconnection.university.repository.UnivApplyInfoRepository;
1616
import com.example.solidconnection.university.repository.custom.UnivApplyInfoFilterRepositoryImpl;
17+
import io.micrometer.common.util.StringUtils;
1718
import java.util.ArrayList;
1819
import java.util.HashMap;
1920
import java.util.List;
@@ -45,7 +46,8 @@ public ApplicationsResponse getApplicants(long siteUserId, String regionCode, St
4546
// 1. 대학 지원 정보 필터링 (regionCode, keyword)
4647
SiteUser siteUser = siteUserRepository.findById(siteUserId)
4748
.orElseThrow(() -> new CustomException(USER_NOT_FOUND));
48-
List<UnivApplyInfo> univApplyInfos = universityFilterRepository.findAllByRegionCodeAndKeywords(regionCode, List.of(keyword));
49+
List<String> keywords = StringUtils.isNotBlank(keyword) ? List.of(keyword) : List.of();
50+
List<UnivApplyInfo> univApplyInfos = universityFilterRepository.findAllByRegionCodeAndKeywordsAndTerm(regionCode, keywords, term);
4951
if (univApplyInfos.isEmpty()) {
5052
return new ApplicationsResponse(List.of(), List.of(), List.of());
5153
}

src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepository.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66

77
public interface UnivApplyInfoFilterRepository {
88

9-
List<UnivApplyInfo> findAllByRegionCodeAndKeywords(String regionCode, List<String> keywords);
9+
List<UnivApplyInfo> findAllByRegionCodeAndKeywordsAndTerm(String regionCode, List<String> keywords, String term);
1010

1111
List<UnivApplyInfo> findAllByFilter(LanguageTestType testType, String testScore, String term, List<String> countryKoreanNames);
1212

src/main/java/com/example/solidconnection/university/repository/custom/UnivApplyInfoFilterRepositoryImpl.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ public UnivApplyInfoFilterRepositoryImpl(EntityManager em) {
3131
}
3232

3333
@Override
34-
public List<UnivApplyInfo> findAllByRegionCodeAndKeywords(String regionCode, List<String> keywords) {
34+
public List<UnivApplyInfo> findAllByRegionCodeAndKeywordsAndTerm(String regionCode, List<String> keywords, String term) {
3535
QUnivApplyInfo univApplyInfo = QUnivApplyInfo.univApplyInfo;
3636
QUniversity university = QUniversity.university;
3737
QCountry country = QCountry.country;
@@ -45,6 +45,7 @@ public List<UnivApplyInfo> findAllByRegionCodeAndKeywords(String regionCode, Lis
4545
.where(
4646
regionCodeEq(country, regionCode)
4747
.and(countryOrUniversityContainsKeyword(country, university, keywords))
48+
.and(univApplyInfo.term.eq(term))
4849
)
4950
.distinct()
5051
.fetch();

src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java

Lines changed: 19 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -249,11 +249,11 @@ class 지원자_목록_조회_테스트 {
249249
}
250250

251251
@Test
252-
void 이전_학기_지원자는_조회되지_않는다() {
252+
void 현재_학기_지원서만_조회되고_이전_학기_지원서는_제외된다() {
253253
// given
254-
Application application = applicationFixture.지원서(
254+
applicationFixture.지원서(
255255
user1,
256-
"nickname1",
256+
"nickname1_past",
257257
"1988-1",
258258
gpaScore1.getGpa(),
259259
languageTestScore1.getLanguageTest(),
@@ -262,6 +262,17 @@ class 지원자_목록_조회_테스트 {
262262
null
263263
);
264264

265+
Application currentApplication = applicationFixture.지원서(
266+
user1,
267+
"nickname1",
268+
term,
269+
gpaScore1.getGpa(),
270+
languageTestScore1.getLanguageTest(),
271+
괌대학_A_지원_정보.getId(),
272+
null,
273+
null
274+
);
275+
265276
// when
266277
ApplicationsResponse response = applicationQueryService.getApplicants(
267278
user1.getId(),
@@ -270,10 +281,11 @@ class 지원자_목록_조회_테스트 {
270281
);
271282

272283
// then
273-
assertThat(response.firstChoice()).doesNotContainAnyElementsOf(List.of(
274-
ApplicantsResponse.of(괌대학_A_지원_정보,
275-
List.of(application), user1)
276-
));
284+
assertThat(response.firstChoice()).containsExactlyInAnyOrder(
285+
ApplicantsResponse.of(괌대학_A_지원_정보, List.of(currentApplication), user1),
286+
ApplicantsResponse.of(괌대학_B_지원_정보, List.of(), user1),
287+
ApplicantsResponse.of(서던덴마크대학교_지원_정보, List.of(), user1)
288+
);
277289
}
278290

279291
@Test

0 commit comments

Comments
 (0)