From 8103f3ca8481a2a9428f15eba1c03031a5c7bda5 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 18 Feb 2025 00:07:14 +0900 Subject: [PATCH 1/3] =?UTF-8?q?fix:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=88=98=EC=A0=95=20API=EC=97=90=EC=84=9C=20=EB=8B=89=EB=84=A4?= =?UTF-8?q?=EC=9E=84,=20=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=B6=80=EB=B6=84?= =?UTF-8?q?=20=EC=97=85=EB=8D=B0=EC=9D=B4=ED=8A=B8=20=EA=B0=80=EB=8A=A5?= =?UTF-8?q?=ED=95=98=EB=8F=84=EB=A1=9D=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SiteUserController.java | 4 +-- .../siteuser/service/SiteUserService.java | 30 ++++++++----------- .../siteuser/service/SiteUserServiceTest.java | 21 ------------- 3 files changed, 15 insertions(+), 40 deletions(-) diff --git a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java b/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java index 2f43337ed..46f1555f1 100644 --- a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java +++ b/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java @@ -31,8 +31,8 @@ public ResponseEntity getMyPageInfo( @PatchMapping public ResponseEntity updateMyPageInfo( @AuthorizedUser SiteUser siteUser, - @RequestParam("file") MultipartFile imageFile, - @RequestParam("nickname") String nickname + @RequestParam(value = "file", required = false) MultipartFile imageFile, + @RequestParam(value = "nickname", required = false) String nickname ) { siteUserService.updateMyPageInfo(siteUser, imageFile, nickname); return ResponseEntity.ok().build(); 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 30297283a..1eb417ddb 100644 --- a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java +++ b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java @@ -48,19 +48,21 @@ public MyPageResponse getMyPageInfo(SiteUser siteUser) { * */ @Transactional public void updateMyPageInfo(SiteUser siteUser, MultipartFile imageFile, String nickname) { - validateNicknameUnique(nickname); - validateNicknameNotChangedRecently(siteUser.getNicknameModifiedAt()); - validateProfileImageNotEmpty(imageFile); - - if (!isDefaultProfileImage(siteUser.getProfileImageUrl())) { - s3Service.deleteExProfile(siteUser); + if (nickname != null) { + validateNicknameUnique(nickname); + validateNicknameNotChangedRecently(siteUser.getNicknameModifiedAt()); + siteUser.setNickname(nickname); + siteUser.setNicknameModifiedAt(LocalDateTime.now()); } - UploadedFileUrlResponse uploadedFile = s3Service.uploadFile(imageFile, ImgType.PROFILE); - String profileImageUrl = uploadedFile.fileUrl(); - siteUser.setProfileImageUrl(profileImageUrl); - siteUser.setNickname(nickname); - siteUser.setNicknameModifiedAt(LocalDateTime.now()); + if (imageFile != null && !imageFile.isEmpty()) { + if (!isDefaultProfileImage(siteUser.getProfileImageUrl())) { + s3Service.deleteExProfile(siteUser); + } + UploadedFileUrlResponse uploadedFile = s3Service.uploadFile(imageFile, ImgType.PROFILE); + String profileImageUrl = uploadedFile.fileUrl(); + siteUser.setProfileImageUrl(profileImageUrl); + } siteUserRepository.save(siteUser); } @@ -81,12 +83,6 @@ private void validateNicknameNotChangedRecently(LocalDateTime lastModifiedAt) { } } - private void validateProfileImageNotEmpty(MultipartFile imageFile) { - if (imageFile == null || imageFile.isEmpty()) { - throw new CustomException(PROFILE_IMAGE_NEEDED); - } - } - private boolean isDefaultProfileImage(String profileImageUrl) { String prefix = "profile/"; return profileImageUrl == null || !profileImageUrl.startsWith(prefix); diff --git a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java index c6236aedf..580685a96 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java @@ -145,18 +145,6 @@ class 프로필_이미지_수정_테스트 { // then then(s3Service).should().deleteExProfile(testUser); } - - @Test - void 빈_이미지_파일로_프로필을_수정하면_예외_응답을_반환한다() { - // given - SiteUser testUser = createSiteUser(); - MockMultipartFile emptyFile = createEmptyImageFile(); - - // when & then - assertThatCode(() -> siteUserService.updateMyPageInfo(testUser, emptyFile, "newNickname")) - .isInstanceOf(CustomException.class) - .hasMessage(PROFILE_IMAGE_NEEDED.getMessage()); - } } @Nested @@ -274,15 +262,6 @@ private MockMultipartFile createValidImageFile() { ); } - private MockMultipartFile createEmptyImageFile() { - return new MockMultipartFile( - "image", - "empty.jpg", - "image/jpeg", - new byte[0] - ); - } - private String createExpectedErrorMessage(LocalDateTime modifiedAt) { String formatLastModifiedAt = String.format( "(마지막 수정 시간 : %s)", From 04fdef19cf9cb8041b16bb2f7097852ddeb4fb27 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 18 Feb 2025 00:12:33 +0900 Subject: [PATCH 2/3] =?UTF-8?q?chore:=20=EB=B6=88=ED=95=84=EC=9A=94?= =?UTF-8?q?=ED=95=9C=20import=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solidconnection/siteuser/service/SiteUserServiceTest.java | 1 - 1 file changed, 1 deletion(-) diff --git a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java index 580685a96..819f33156 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java @@ -29,7 +29,6 @@ import static com.example.solidconnection.custom.exception.ErrorCode.CAN_NOT_CHANGE_NICKNAME_YET; import static com.example.solidconnection.custom.exception.ErrorCode.NICKNAME_ALREADY_EXISTED; -import static com.example.solidconnection.custom.exception.ErrorCode.PROFILE_IMAGE_NEEDED; import static com.example.solidconnection.siteuser.service.SiteUserService.MIN_DAYS_BETWEEN_NICKNAME_CHANGES; import static com.example.solidconnection.siteuser.service.SiteUserService.NICKNAME_LAST_CHANGE_DATE_FORMAT; import static org.assertj.core.api.Assertions.assertThat; From 7604aa328750b5cec2bdaaa8e2175330e48219d7 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 18 Feb 2025 09:11:59 +0900 Subject: [PATCH 3/3] =?UTF-8?q?fix:=20=ED=94=84=EB=A1=9C=ED=95=84=20?= =?UTF-8?q?=EC=9D=B4=EB=AF=B8=EC=A7=80=20=EB=B3=80=EA=B2=BD=20=EC=8B=9C=20?= =?UTF-8?q?=EC=97=85=EB=A1=9C=EB=93=9C=20=EC=8B=A4=ED=8C=A8=20=EB=8C=80?= =?UTF-8?q?=EB=B9=84=ED=95=98=EC=97=AC=20=EC=82=AD=EC=A0=9C=20=EC=88=9C?= =?UTF-8?q?=EC=84=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solidconnection/siteuser/service/SiteUserService.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 1eb417ddb..c2ee4ded7 100644 --- a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java +++ b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java @@ -56,10 +56,10 @@ public void updateMyPageInfo(SiteUser siteUser, MultipartFile imageFile, String } if (imageFile != null && !imageFile.isEmpty()) { + UploadedFileUrlResponse uploadedFile = s3Service.uploadFile(imageFile, ImgType.PROFILE); if (!isDefaultProfileImage(siteUser.getProfileImageUrl())) { s3Service.deleteExProfile(siteUser); } - UploadedFileUrlResponse uploadedFile = s3Service.uploadFile(imageFile, ImgType.PROFILE); String profileImageUrl = uploadedFile.fileUrl(); siteUser.setProfileImageUrl(profileImageUrl); }