Skip to content

Commit d08e6f8

Browse files
committed
test: 회원 삭제 테스트 코드 작성 (#205)
1 parent beefa1e commit d08e6f8

2 files changed

Lines changed: 67 additions & 0 deletions

File tree

src/main/java/com/sudo/railo/member/infrastructure/MemberRepository.java

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.sudo.railo.member.infrastructure;
22

33
import java.util.List;
4+
import java.util.Optional;
45

56
import org.springframework.data.jpa.repository.JpaRepository;
67
import org.springframework.data.jpa.repository.Modifying;
@@ -19,4 +20,7 @@ public interface MemberRepository extends JpaRepository<Member, Long>, MemberRep
1920
@Modifying
2021
@Query(value = "delete from member where id in (:memberIds)", nativeQuery = true)
2122
void deleteAllByIdInBatch(@Param("memberIds") List<Long> memberIds);
23+
24+
@Query(value = "SELECT * FROM member m WHERE m.member_no = :memberNo", nativeQuery = true)
25+
Optional<Member> findByMemberNoIgnoreIsDeleted(@Param("memberNo") String memberNo);
2226
}

src/test/java/com/sudo/railo/member/application/MemberServiceTest.java

Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,9 @@
99
import org.springframework.beans.factory.annotation.Autowired;
1010
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
1111

12+
import com.sudo.railo.auth.application.AuthService;
13+
import com.sudo.railo.auth.application.dto.request.LoginRequest;
14+
import com.sudo.railo.auth.application.dto.response.TokenResponse;
1215
import com.sudo.railo.global.exception.error.BusinessException;
1316
import com.sudo.railo.member.application.dto.request.GuestRegisterRequest;
1417
import com.sudo.railo.member.application.dto.response.GuestRegisterResponse;
@@ -26,6 +29,9 @@ class MemberServiceTest {
2629
@Autowired
2730
private MemberService memberService;
2831

32+
@Autowired
33+
private AuthService authService;
34+
2935
@Autowired
3036
private MemberRepository memberRepository;
3137

@@ -74,6 +80,47 @@ void guestRegister_fail() {
7480
assertThat(exception.getErrorCode()).isEqualTo(MemberError.DUPLICATE_GUEST_INFO));
7581
}
7682

83+
@Test
84+
@DisplayName("회원 삭제에 성공한다.")
85+
void deleteMember_success() {
86+
//given
87+
Member member = createMemberWithEncryptedPassword();
88+
String memberNo = member.getMemberDetail().getMemberNo();
89+
90+
LoginRequest request = new LoginRequest(memberNo, "testPassword");
91+
TokenResponse response = authService.login(request);
92+
93+
String accessToken = response.accessToken();
94+
95+
//when
96+
memberService.memberDelete(accessToken, memberNo);
97+
98+
//then
99+
Member deletedMember = memberRepository.findByMemberNoIgnoreIsDeleted(memberNo)
100+
.orElseThrow(() -> new AssertionError("회원을 찾을 수 없습니다."));
101+
assertThat(deletedMember.isDeleted()).isTrue();
102+
}
103+
104+
@Test
105+
@DisplayName("존재하지 않는 회원 삭제 시 예외가 발생해 실패한다.")
106+
void deleteMember_fail_when_user_not_found() {
107+
//given
108+
Member member = createMemberWithEncryptedPassword();
109+
String memberNo = member.getMemberDetail().getMemberNo();
110+
111+
LoginRequest request = new LoginRequest(memberNo, "testPassword");
112+
TokenResponse response = authService.login(request);
113+
114+
String accessToken = response.accessToken();
115+
String nonExistMemberNo = "202507309999";
116+
117+
//when & then
118+
assertThatExceptionOfType(BusinessException.class)
119+
.isThrownBy(() -> memberService.memberDelete(accessToken, nonExistMemberNo))
120+
.satisfies(exception ->
121+
assertThat(exception.getErrorCode()).isEqualTo(MemberError.USER_NOT_FOUND));
122+
}
123+
77124
@Test
78125
@DisplayName("회원의 정보 조회에 성공한다.")
79126
void getMemberInfo_success() {
@@ -141,4 +188,20 @@ void getMemberEmail_fail() {
141188
.satisfies(exception ->
142189
assertThat(exception.getErrorCode()).isEqualTo(MemberError.USER_NOT_FOUND));
143190
}
191+
192+
private Member createMemberWithEncryptedPassword() {
193+
Member member = MemberFixture.createStandardMember();
194+
String plainPwd = member.getPassword();
195+
String encodedPwd = passwordEncoder.encode(plainPwd);
196+
197+
Member saveMember = Member.create(
198+
member.getName(),
199+
member.getPhoneNumber(),
200+
encodedPwd,
201+
member.getRole(),
202+
member.getMemberDetail()
203+
);
204+
205+
return memberRepository.save(saveMember);
206+
}
144207
}

0 commit comments

Comments
 (0)