Skip to content

Commit 13537ad

Browse files
committed
[feat] : 회원 수정 테스트코드 작성 #49
1 parent 99ee787 commit 13537ad

File tree

1 file changed

+43
-27
lines changed

1 file changed

+43
-27
lines changed

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

Lines changed: 43 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package org.dfbf.soundlink.domain.user;
22

3+
import org.dfbf.soundlink.domain.emotionRecord.entity.SpotifyMusic;
34
import org.dfbf.soundlink.domain.emotionRecord.repository.EmotionRecordRepository;
45
import org.dfbf.soundlink.domain.emotionRecord.repository.SpotifyMusicRepository;
56
import org.dfbf.soundlink.domain.user.dto.request.UserSignUpDto;
7+
import org.dfbf.soundlink.domain.user.dto.request.UserUpdateDto;
68
import org.dfbf.soundlink.domain.user.entity.User;
9+
import org.dfbf.soundlink.domain.user.repository.ProfileMusicRepository;
710
import org.dfbf.soundlink.domain.user.repository.UserRepository;
811
import org.dfbf.soundlink.domain.user.service.UserService;
12+
import org.dfbf.soundlink.global.comm.enums.SocialType;
913
import org.dfbf.soundlink.global.exception.ErrorCode;
1014
import org.dfbf.soundlink.global.exception.ResponseResult;
1115
import org.junit.jupiter.api.DisplayName;
@@ -28,44 +32,56 @@ public class UserServiceTest {
2832
@InjectMocks
2933
private UserService userService;
3034

31-
@Mock
35+
@Mock(lenient = true)
3236
private UserRepository userRepository;
3337

3438
@Mock
3539
private SpotifyMusicRepository spotifyMusicRepository;
3640

37-
@Mock
41+
@Mock(lenient = true)
3842
private BCryptPasswordEncoder passwordEncoder;
3943

4044
@Mock
4145
private EmotionRecordRepository emotionRecordRepository;
4246

47+
@Mock
48+
private ProfileMusicRepository profileMusicRepository;
49+
4350
// 회원 정보 수정
44-
// @Test
45-
// public void testUpdateUser() {
46-
// // Given
47-
// Long userId = 1L;
48-
// UserUpdateDto userUpdateDto = mock(UserUpdateDto.class);
49-
// User existingUser = mock(User.class);
50-
// SpotifyMusic spotifyMusic = mock(SpotifyMusic.class);
51-
//
52-
//
53-
// // When
54-
// when(userRepository.findById(userId)).thenReturn(Optional.of(existingUser));
55-
// when(userUpdateDto.spotifyId()).thenReturn(123L);
56-
// when(spotifyMusicRepository.findById(123L)).thenReturn(Optional.of(spotifyMusic));
57-
//
58-
// ResponseResult result = userService.updateUser(userId, userUpdateDto);
59-
//
60-
//
61-
// // Then
62-
// assertEquals(200, result.getCode());
63-
// assertEquals("성공", result.getMessage());
64-
//
65-
// verify(spotifyMusicRepository).save(any(SpotifyMusic.class));
66-
//
67-
// verify(existingUser).update(eq(userUpdateDto), any(BCryptPasswordEncoder.class), eq(spotifyMusic));
68-
// }
51+
@Test
52+
void updateUser_Success() {
53+
// Given
54+
Long userId = 1L;
55+
User user = mock(User.class);
56+
57+
UserUpdateDto updateDto = new UserUpdateDto( //dto는 mock객체로 사용하지 않음.
58+
Optional.of("[email protected]"),
59+
Optional.of("newLoginId"),
60+
Optional.of("newNickName"),
61+
Optional.of("newPassword"),
62+
Optional.of("spotify123"), // Spotify ID 존재
63+
Optional.of("New Title"),
64+
Optional.of("New Artist"),
65+
Optional.of("New Album Image")
66+
);
67+
68+
SpotifyMusic spotifyMusic = new SpotifyMusic(updateDto);
69+
70+
// Mocking
71+
when(userRepository.findByUserIdWithCache(userId)).thenReturn(Optional.of(user));
72+
when(spotifyMusicRepository.findBySpotifyId("spotify123")).thenReturn(Optional.of(spotifyMusic));
73+
when(passwordEncoder.encode(anyString())).thenReturn("encodedPassword");
74+
75+
// When
76+
ResponseResult result = userService.updateUser(userId, updateDto);
77+
78+
// Then
79+
assertEquals(200, result.getCode());
80+
verify(userRepository).saveWithCache(any(User.class)); //수정 저장 확인(유저,캐시)
81+
verify(profileMusicRepository).save(any()); //스포티파이 저장 확인
82+
}
83+
84+
6985

7086
@Test
7187
@DisplayName("회원가입 테스트 성공 - 비밀번호 암호화 및 저장")

0 commit comments

Comments
 (0)