From 608b95a9dcca181b4c62d2f7a69c7daef9dc3f73 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Wed, 19 Feb 2025 17:25:37 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EC=B5=9C=EC=8B=A0=20=EC=A7=80=EC=9B=90?= =?UTF-8?q?=EC=84=9C=EB=A7=8C=20=EC=A1=B0=ED=9A=8C=EB=90=98=EB=8F=84?= =?UTF-8?q?=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/ApplicationRepository.java | 6 +- .../service/ApplicationQueryService.java | 6 +- .../service/ApplicationQueryServiceTest.java | 76 +++++++++++++++++++ 3 files changed, 82 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java b/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java index 1a06ec321..5aeb972bf 100644 --- a/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java +++ b/src/main/java/com/example/solidconnection/application/repository/ApplicationRepository.java @@ -20,13 +20,13 @@ public interface ApplicationRepository extends JpaRepository boolean existsByNicknameForApply(String nicknameForApply); - List findAllByFirstChoiceUniversityAndVerifyStatusAndTerm( + List findAllByFirstChoiceUniversityAndVerifyStatusAndTermAndIsDeleteFalse( UniversityInfoForApply firstChoiceUniversity, VerifyStatus verifyStatus, String term); - List findAllBySecondChoiceUniversityAndVerifyStatusAndTerm( + List findAllBySecondChoiceUniversityAndVerifyStatusAndTermAndIsDeleteFalse( UniversityInfoForApply secondChoiceUniversity, VerifyStatus verifyStatus, String term); - List findAllByThirdChoiceUniversityAndVerifyStatusAndTerm( + List findAllByThirdChoiceUniversityAndVerifyStatusAndTermAndIsDeleteFalse( UniversityInfoForApply thirdChoiceUniversity, VerifyStatus verifyStatus, String term); @Query(""" 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 3208d24af..157c6adcd 100644 --- a/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java +++ b/src/main/java/com/example/solidconnection/application/service/ApplicationQueryService.java @@ -97,7 +97,7 @@ private List getFirstChoiceApplicants(List applicationRepository.findAllByFirstChoiceUniversityAndVerifyStatusAndTerm(uia, VerifyStatus.APPROVED, term) + uia -> applicationRepository.findAllByFirstChoiceUniversityAndVerifyStatusAndTermAndIsDeleteFalse(uia, VerifyStatus.APPROVED, term) ); } @@ -105,7 +105,7 @@ private List getSecondChoiceApplicants(List applicationRepository.findAllBySecondChoiceUniversityAndVerifyStatusAndTerm(uia, VerifyStatus.APPROVED, term) + uia -> applicationRepository.findAllBySecondChoiceUniversityAndVerifyStatusAndTermAndIsDeleteFalse(uia, VerifyStatus.APPROVED, term) ); } @@ -113,7 +113,7 @@ private List getThirdChoiceApplicants(List applicationRepository.findAllByThirdChoiceUniversityAndVerifyStatusAndTerm(uia, VerifyStatus.APPROVED, term) + uia -> applicationRepository.findAllByThirdChoiceUniversityAndVerifyStatusAndTermAndIsDeleteFalse(uia, VerifyStatus.APPROVED, term) ); } 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 f06116ebb..583c31d80 100644 --- a/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/application/service/ApplicationQueryServiceTest.java @@ -1,9 +1,21 @@ package com.example.solidconnection.application.service; +import com.example.solidconnection.application.domain.Application; +import com.example.solidconnection.application.domain.Gpa; +import com.example.solidconnection.application.domain.LanguageTest; import com.example.solidconnection.application.dto.ApplicantResponse; import com.example.solidconnection.application.dto.ApplicationsResponse; import com.example.solidconnection.application.dto.UniversityApplicantsResponse; +import com.example.solidconnection.application.repository.ApplicationRepository; +import com.example.solidconnection.score.domain.GpaScore; +import com.example.solidconnection.score.domain.LanguageTestScore; +import com.example.solidconnection.score.repository.GpaScoreRepository; +import com.example.solidconnection.score.repository.LanguageTestScoreRepository; +import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.support.integration.BaseIntegrationTest; +import com.example.solidconnection.type.LanguageTestType; +import com.example.solidconnection.type.VerifyStatus; +import com.example.solidconnection.university.domain.UniversityInfoForApply; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -19,6 +31,15 @@ class ApplicationQueryServiceTest extends BaseIntegrationTest { @Autowired private ApplicationQueryService applicationQueryService; + @Autowired + private ApplicationRepository applicationRepository; + + @Autowired + private GpaScoreRepository gpaScoreRepository; + + @Autowired + private LanguageTestScoreRepository languageTestScoreRepository; + @Nested class 지원자_목록_조회_테스트 { @@ -143,6 +164,26 @@ class 지원자_목록_조회_테스트 { List.of(ApplicantResponse.of(이전학기_지원서, false))) )); } + + @Test + void 동일_유저의_여러_지원서_중_최신_지원서만_조회된다() { + // given + Application firstApplication = createApplication(테스트유저_1, 괌대학_A_지원_정보); + firstApplication.setIsDeleteTrue(); + applicationRepository.save(firstApplication); + Application secondApplication = createApplication(테스트유저_1, 네바다주립대학_라스베이거스_지원_정보); + + + // when + ApplicationsResponse response = applicationQueryService.getApplicants( + 테스트유저_1, "", ""); + + // then + assertThat(response.firstChoice().stream() + .flatMap(univ -> univ.applicants().stream()) + .filter(ApplicantResponse::isMine)) + .containsExactly(ApplicantResponse.of(secondApplication, true)); + } } @Nested @@ -211,4 +252,39 @@ class 경쟁자_목록_조회_테스트 { assertThat(response.thirdChoice()).isEmpty(); } } + + private GpaScore createApprovedGpaScore(SiteUser siteUser) { + GpaScore gpaScore = new GpaScore( + new Gpa(4.0, 4.5, "/gpa-report.pdf"), + siteUser + ); + gpaScore.setVerifyStatus(VerifyStatus.APPROVED); + return gpaScoreRepository.save(gpaScore); + } + + private LanguageTestScore createApprovedLanguageTestScore(SiteUser siteUser) { + LanguageTestScore languageTestScore = new LanguageTestScore( + new LanguageTest(LanguageTestType.TOEIC, "100", "/gpa-report.pdf"), + siteUser + ); + languageTestScore.setVerifyStatus(VerifyStatus.APPROVED); + return languageTestScoreRepository.save(languageTestScore); + } + + private Application createApplication( + SiteUser siteUser, + UniversityInfoForApply universityInfoForApply) { + Application application = new Application( + siteUser, + createApprovedGpaScore(siteUser).getGpa(), + createApprovedLanguageTestScore(siteUser).getLanguageTest(), + term, + universityInfoForApply, + null, + null, + null + ); + application.setVerifyStatus(VerifyStatus.APPROVED); + return applicationRepository.save(application); + } }