From 0b800b963654a24cbdd0c4d492f23ecc1d9691b1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EC=9D=B4=EC=84=B8=EC=9B=90?= <107756067+leesewon00@users.noreply.github.com> Date: Tue, 27 Aug 2024 20:17:34 +0900 Subject: [PATCH] =?UTF-8?q?=EC=B4=88=EA=B8=B0=20=ED=94=84=EB=A1=9C?= =?UTF-8?q?=ED=95=84=20=EC=82=AC=EC=A7=84=20=EC=88=98=EC=A0=95=EC=8B=9C=20?= =?UTF-8?q?=EC=98=A4=EB=A5=98=20=ED=95=B4=EA=B2=B0=20(#76)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: 초기 프로필 이미지를 수정의 경우 파일 삭제하지 않도록 수정 * test: 초기 프로필 이미지 수정 테스트코드 추가 * fix: 초기 프로필 이미지 경로가 null이 될 수 있음을 고려하여 수정 * test: 초기 프로필 이미지 경로가 null일때 테스트코드 추가 --- .../siteuser/service/SiteUserService.java | 10 ++++- .../unit/service/SiteUserServiceTest.java | 37 ++++++++++++++++++- 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java index 71436ff87..0ab6aa0d2 100644 --- a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java +++ b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java @@ -88,7 +88,10 @@ public ProfileImageUpdateResponse updateProfileImage(String email, MultipartFile SiteUser siteUser = siteUserRepository.getByEmail(email); validateProfileImage(imageFile); - s3Service.deleteExProfile(email); + // 프로필 이미지를 처음 수정하는 경우에는 deleteExProfile 수행하지 않음 + if(!isDefaultProfileImage(siteUser.getProfileImageUrl())){ + s3Service.deleteExProfile(email); + } UploadedFileUrlResponse uploadedFileUrlResponse = s3Service.uploadFile(imageFile, ImgType.PROFILE); siteUser.setProfileImageUrl(uploadedFileUrlResponse.fileUrl()); siteUserRepository.save(siteUser); @@ -102,6 +105,11 @@ private void validateProfileImage(MultipartFile imageFile) { } } + private boolean isDefaultProfileImage(String profileImageUrl) { + String prefix = "https://solid-connection-uploaded.s3.ap-northeast-2.amazonaws.com/profile/"; + return profileImageUrl == null || !profileImageUrl.startsWith(prefix); + } + /* * 닉네임을 수정한다. * */ diff --git a/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java b/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java index f6a330348..7cfeb94c6 100644 --- a/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/unit/service/SiteUserServiceTest.java @@ -49,6 +49,7 @@ public class SiteUserServiceTest { private SiteUser siteUser; private MultipartFile imageFile; private UploadedFileUrlResponse uploadedFileUrlResponse; + private final String defaultProfileImageUrl = "http://k.kakaocdn.net/dn/o2c5A/btsASaNh2Lr/Xum5kRyuErD8LIuLQEWfC0/img_640x640.jpg"; @BeforeEach void setUp() { @@ -62,7 +63,7 @@ private SiteUser createSiteUser() { return new SiteUser( "test@example.com", "nickname", - "http://example.com/profile.jpg", + "https://solid-connection-uploaded.s3.ap-northeast-2.amazonaws.com/profile/abcd", "1999-01-01", PreparationStatus.CONSIDERING, Role.MENTEE, @@ -80,6 +81,40 @@ private UploadedFileUrlResponse createUploadedFileUrlResponse() { return new UploadedFileUrlResponse("https://s3.example.com/test1.png"); } + @Test + void 초기_프로필_이미지를_수정한다_kakao() { + siteUser.setProfileImageUrl(defaultProfileImageUrl); + when(siteUserRepository.getByEmail(siteUser.getEmail())).thenReturn(siteUser); + when(s3Service.uploadFile(imageFile, ImgType.PROFILE)).thenReturn(uploadedFileUrlResponse); + + // When + ProfileImageUpdateResponse profileImageUpdateResponse = + siteUserService.updateProfileImage(siteUser.getEmail(), imageFile); + // Then + assertEquals(profileImageUpdateResponse, ProfileImageUpdateResponse.from(siteUser)); + verify(siteUserRepository, times(1)).getByEmail(siteUser.getEmail()); + verify(s3Service, times(0)).deleteExProfile(siteUser.getEmail()); + verify(s3Service, times(1)).uploadFile(imageFile, ImgType.PROFILE); + verify(siteUserRepository, times(1)).save(any(SiteUser.class)); + } + + @Test + void 초기_프로필_이미지를_수정한다_null() { + siteUser.setProfileImageUrl(null); + when(siteUserRepository.getByEmail(siteUser.getEmail())).thenReturn(siteUser); + when(s3Service.uploadFile(imageFile, ImgType.PROFILE)).thenReturn(uploadedFileUrlResponse); + + // When + ProfileImageUpdateResponse profileImageUpdateResponse = + siteUserService.updateProfileImage(siteUser.getEmail(), imageFile); + // Then + assertEquals(profileImageUpdateResponse, ProfileImageUpdateResponse.from(siteUser)); + verify(siteUserRepository, times(1)).getByEmail(siteUser.getEmail()); + verify(s3Service, times(0)).deleteExProfile(siteUser.getEmail()); + verify(s3Service, times(1)).uploadFile(imageFile, ImgType.PROFILE); + verify(siteUserRepository, times(1)).save(any(SiteUser.class)); + } + @Test void 프로필_이미지를_수정한다() { // Given