Skip to content

Commit 99ee787

Browse files
committed
[feat] 회원가입 및 탈퇴 테스트 코드 작성 #49
1 parent 9db7980 commit 99ee787

File tree

1 file changed

+59
-0
lines changed

1 file changed

+59
-0
lines changed

src/test/java/org/dfbf/soundlink/domain/user/UserServiceTest.java

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,28 @@
11
package org.dfbf.soundlink.domain.user;
22

3+
import org.dfbf.soundlink.domain.emotionRecord.repository.EmotionRecordRepository;
34
import org.dfbf.soundlink.domain.emotionRecord.repository.SpotifyMusicRepository;
5+
import org.dfbf.soundlink.domain.user.dto.request.UserSignUpDto;
6+
import org.dfbf.soundlink.domain.user.entity.User;
47
import org.dfbf.soundlink.domain.user.repository.UserRepository;
58
import org.dfbf.soundlink.domain.user.service.UserService;
9+
import org.dfbf.soundlink.global.exception.ErrorCode;
10+
import org.dfbf.soundlink.global.exception.ResponseResult;
11+
import org.junit.jupiter.api.DisplayName;
12+
import org.junit.jupiter.api.Test;
613
import org.junit.jupiter.api.extension.ExtendWith;
714
import org.mockito.InjectMocks;
815
import org.mockito.Mock;
916
import org.mockito.junit.jupiter.MockitoExtension;
1017
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
1118

19+
import java.util.Optional;
20+
21+
import static org.dfbf.soundlink.global.comm.enums.SocialType.KAKAO;
22+
import static org.mockito.Mockito.*;
23+
import static org.mockito.ArgumentMatchers.any;
24+
import static org.junit.jupiter.api.Assertions.assertEquals;
25+
1226
@ExtendWith(MockitoExtension.class)
1327
public class UserServiceTest {
1428
@InjectMocks
@@ -23,6 +37,9 @@ public class UserServiceTest {
2337
@Mock
2438
private BCryptPasswordEncoder passwordEncoder;
2539

40+
@Mock
41+
private EmotionRecordRepository emotionRecordRepository;
42+
2643
// 회원 정보 수정
2744
// @Test
2845
// public void testUpdateUser() {
@@ -50,4 +67,46 @@ public class UserServiceTest {
5067
// verify(existingUser).update(eq(userUpdateDto), any(BCryptPasswordEncoder.class), eq(spotifyMusic));
5168
// }
5269

70+
@Test
71+
@DisplayName("회원가입 테스트 성공 - 비밀번호 암호화 및 저장")
72+
void signUp_Success(){
73+
//given
74+
UserSignUpDto userSignUpDto = new UserSignUpDto(
75+
"testNickname", 12345L, KAKAO, "testLoginId", "password123", "[email protected]"
76+
);
77+
//when
78+
//save 메소드 호출 시 모킹 처리
79+
when(passwordEncoder.encode(userSignUpDto.password())).thenReturn("encodedPassword");
80+
81+
ResponseResult result = userService.signUp(userSignUpDto);
82+
//then
83+
assertEquals(200, result.getCode());
84+
85+
verify(userRepository, times(1)).save(any(User.class));
86+
87+
verify(passwordEncoder, times(1)).encode(userSignUpDto.password());
88+
}
89+
90+
@Test
91+
@DisplayName("회원삭제 성공")
92+
void deleteUser_Success(){
93+
//given
94+
Long userId = 1L;
95+
User user = mock(User.class);
96+
97+
// 유저를 찾기
98+
when(userRepository.findByUserIdWithCache(userId)).thenReturn(Optional.of(user));
99+
// 감정 기록 삭제, doNotion()-> 단지 메소드가 호출되었는지만 확인
100+
doNothing().when(emotionRecordRepository).deleteByUser(user);
101+
// 유저 삭제
102+
doNothing().when(userRepository).deleteById(userId);
103+
104+
//when
105+
ResponseResult result = userService.deleteUser(userId);
106+
107+
//then
108+
assertEquals(200, result.getCode());
109+
verify(emotionRecordRepository, times(1)).deleteByUser(user); //(1): 1번 호출되었는지 확인 = 감정기록이 삭제 됨.
110+
// verify(userRepository, times(0)).deleteById(userId);//(0):호출되지 않았는지 확인 = 사용자가 삭제 되지 않음.(1):성공적으로 삭제됨.
111+
}
53112
}

0 commit comments

Comments
 (0)