From faba35ccfdf77152deac4d29db62982a2a1f23ec Mon Sep 17 00:00:00 2001 From: sukangpunch Date: Mon, 2 Feb 2026 21:23:44 +0900 Subject: [PATCH] =?UTF-8?q?fix:=20=EB=A9=98=ED=86=A0=20=EC=A7=80=EC=9B=90?= =?UTF-8?q?=EC=84=9C=20=EC=8A=B9=EC=9D=B8=20=EC=8B=9C=20=EC=9C=A0=EC=A0=80?= =?UTF-8?q?=20Role=20=EC=9D=84=20Mentor=EB=A1=9C=20=EC=8A=B9=EA=B2=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../AdminMentorApplicationService.java | 5 +++ .../siteuser/domain/SiteUser.java | 4 +++ .../AdminMentorApplicationServiceTest.java | 33 +++++++++++-------- 3 files changed, 29 insertions(+), 13 deletions(-) diff --git a/src/main/java/com/example/solidconnection/admin/service/AdminMentorApplicationService.java b/src/main/java/com/example/solidconnection/admin/service/AdminMentorApplicationService.java index 48249f7d..6124ad4f 100644 --- a/src/main/java/com/example/solidconnection/admin/service/AdminMentorApplicationService.java +++ b/src/main/java/com/example/solidconnection/admin/service/AdminMentorApplicationService.java @@ -46,6 +46,11 @@ public void approveMentorApplication(Long mentorApplicationId) { .orElseThrow(() -> new CustomException(MENTOR_APPLICATION_NOT_FOUND)); mentorApplication.approve(); + + SiteUser siteUser = siteUserRepository.findById(mentorApplication.getSiteUserId()) + .orElseThrow(() -> new CustomException(USER_NOT_FOUND)); + + siteUser.becomeMentor(); } @Transactional diff --git a/src/main/java/com/example/solidconnection/siteuser/domain/SiteUser.java b/src/main/java/com/example/solidconnection/siteuser/domain/SiteUser.java index a82291d7..f6c3f3b3 100644 --- a/src/main/java/com/example/solidconnection/siteuser/domain/SiteUser.java +++ b/src/main/java/com/example/solidconnection/siteuser/domain/SiteUser.java @@ -130,4 +130,8 @@ public void updatePassword(String newEncodedPassword) { public void updateUserStatus(UserStatus status) { this.userStatus = status; } + + public void becomeMentor() { + this.role = Role.MENTOR; + } } diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminMentorApplicationServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminMentorApplicationServiceTest.java index 5160b283..c763fd7b 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminMentorApplicationServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminMentorApplicationServiceTest.java @@ -21,8 +21,10 @@ import com.example.solidconnection.mentor.domain.UniversitySelectType; import com.example.solidconnection.mentor.fixture.MentorApplicationFixture; import com.example.solidconnection.mentor.repository.MentorApplicationRepository; +import com.example.solidconnection.siteuser.domain.Role; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; +import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.university.domain.HostUniversity; import com.example.solidconnection.university.fixture.UniversityFixture; @@ -56,6 +58,9 @@ class AdminMentorApplicationServiceTest { @Autowired private MentorApplicationRepository mentorApplicationRepository; + @Autowired + private SiteUserRepository siteUserRepository; + private MentorApplication mentorApplication1; private MentorApplication mentorApplication2; private MentorApplication mentorApplication3; @@ -100,7 +105,7 @@ class 멘토_승격_지원서_목록_조회 { @Test void 멘토_승격_상태를_조건으로_페이징하여_조회한다() { // given - MentorApplicationSearchCondition condition = new MentorApplicationSearchCondition(MentorApplicationStatus.PENDING,null, null, null); + MentorApplicationSearchCondition condition = new MentorApplicationSearchCondition(MentorApplicationStatus.PENDING, null, null, null); Pageable pageable = PageRequest.of(0, 10); List expectedMentorApplications = List.of(mentorApplication2, mentorApplication5, mentorApplication7); @@ -122,7 +127,7 @@ class 멘토_승격_지원서_목록_조회 { } @Test - void 닉네임_keyword_에_맞는_멘토_지원서를_페이징하여_조회한다(){ + void 닉네임_keyword_에_맞는_멘토_지원서를_페이징하여_조회한다() { // given String nickname = "test1"; MentorApplicationSearchCondition condition = new MentorApplicationSearchCondition(null, nickname, null, null); @@ -147,7 +152,7 @@ class 멘토_승격_지원서_목록_조회 { } @Test - void 대학명_keyword_에_맞는_멘토_지원서를_페이징하여_조회한다(){ + void 대학명_keyword_에_맞는_멘토_지원서를_페이징하여_조회한다() { // given String universityKoreanName = "메이지 대학"; MentorApplicationSearchCondition condition = new MentorApplicationSearchCondition(null, universityKoreanName, null, null); @@ -172,7 +177,7 @@ class 멘토_승격_지원서_목록_조회 { } @Test - void 지역명_keyword_에_맞는_멘토_지원서를_페이징하여_조회한다(){ + void 지역명_keyword_에_맞는_멘토_지원서를_페이징하여_조회한다() { // given String regionKoreanName = "유럽"; MentorApplicationSearchCondition condition = new MentorApplicationSearchCondition(null, regionKoreanName, null, null); @@ -197,10 +202,10 @@ class 멘토_승격_지원서_목록_조회 { } @Test - void 나라명_keyword_에_맞는_멘토_지원서를_페이징하여_조회한다(){ + void 나라명_keyword_에_맞는_멘토_지원서를_페이징하여_조회한다() { // given String countryKoreanName = "오스트리아"; - MentorApplicationSearchCondition condition = new MentorApplicationSearchCondition(null, countryKoreanName, null,null); + MentorApplicationSearchCondition condition = new MentorApplicationSearchCondition(null, countryKoreanName, null, null); Pageable pageable = PageRequest.of(0, 10); List expectedMentorApplications = List.of(mentorApplication3, mentorApplication4); @@ -302,7 +307,7 @@ class 멘토_승격_지원서_목록_조회 { } @Nested - class 멘토_승격_지원서_승인{ + class 멘토_승격_지원서_승인 { @Test void 대기중인_멘토_지원서를_승인한다() { @@ -314,14 +319,16 @@ class 멘토_승격_지원서_승인{ // then MentorApplication result = mentorApplicationRepository.findById(mentorApplication2.getId()).get(); + SiteUser mentor = siteUserRepository.findById(result.getSiteUserId()).get(); assertAll( () -> assertThat(result.getMentorApplicationStatus()).isEqualTo(MentorApplicationStatus.APPROVED), - () -> assertThat(result.getApprovedAt()).isNotNull() + () -> assertThat(result.getApprovedAt()).isNotNull(), + () -> assertThat(mentor.getRole()).isEqualTo(Role.MENTOR) ); } @Test - void 대학이_선택되지_않은_멘토_지원서를_승인하면_예외가_발생한다(){ + void 대학이_선택되지_않은_멘토_지원서를_승인하면_예외가_발생한다() { // given SiteUser user = siteUserFixture.사용자(); MentorApplication noUniversityIdMentorApplication = mentorApplicationFixture.대기중_멘토신청(user.getId(), UniversitySelectType.OTHER, null); @@ -367,7 +374,7 @@ class 멘토_승격_지원서_승인{ } @Nested - class 멘토_승격_지원서_거절{ + class 멘토_승격_지원서_거절 { @Test void 대기중인_멘토_지원서를_거절한다() { @@ -517,7 +524,7 @@ class 멘토_지원서에_대학_매핑 { .hasMessage(UNIVERSITY_NOT_FOUND.getMessage()); } } - + @Nested class 멘토_지원서_이력_조회 { @@ -539,7 +546,7 @@ class 멘토_지원서_이력_조회 { .containsExactly(app3.getId(), app2.getId(), app1.getId()), () -> assertThat(response) .extracting(MentorApplicationHistoryResponse::applicationOrder) - .containsExactly(3,2,1) + .containsExactly(3, 2, 1) ); } @@ -565,7 +572,7 @@ class 멘토_지원서_이력_조회 { .containsExactly(app7.getId(), app6.getId(), app5.getId(), app4.getId(), app3.getId()), () -> assertThat(response) .extracting(MentorApplicationHistoryResponse::applicationOrder) - .containsExactly(7,6,5,4,3) + .containsExactly(7, 6, 5, 4, 3) ); }