From 4a1413710135d5840e54b6f011c5d7651b72481f Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Thu, 20 Feb 2025 13:19:42 +0900 Subject: [PATCH 1/4] =?UTF-8?q?refactor:=20SiteUser=EC=97=90=EC=84=9C=20My?= =?UTF-8?q?Page=EB=A1=9C=20=EC=84=9C=EB=B9=84=EC=8A=A4=EB=AA=85=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=ED=95=98=EC=97=AC=20=EC=97=AD=ED=95=A0=20?= =?UTF-8?q?=EB=AA=85=ED=99=95=ED=99=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../custom/exception/ErrorCode.java | 2 +- ...rController.java => MyPageController.java} | 10 +++---- ...iteUserService.java => MyPageService.java} | 2 +- .../controller/UniversityController.java | 6 ++-- ...erviceTest.java => MyPageServiceTest.java} | 28 +++++++++---------- 5 files changed, 24 insertions(+), 24 deletions(-) rename src/main/java/com/example/solidconnection/siteuser/controller/{SiteUserController.java => MyPageController.java} (80%) rename src/main/java/com/example/solidconnection/siteuser/service/{SiteUserService.java => MyPageService.java} (99%) rename src/test/java/com/example/solidconnection/siteuser/service/{SiteUserServiceTest.java => MyPageServiceTest.java} (90%) diff --git a/src/main/java/com/example/solidconnection/custom/exception/ErrorCode.java b/src/main/java/com/example/solidconnection/custom/exception/ErrorCode.java index dff7b13f0..abc1931f2 100644 --- a/src/main/java/com/example/solidconnection/custom/exception/ErrorCode.java +++ b/src/main/java/com/example/solidconnection/custom/exception/ErrorCode.java @@ -5,7 +5,7 @@ import org.springframework.http.HttpStatus; import static com.example.solidconnection.application.service.ApplicationSubmissionService.APPLICATION_UPDATE_COUNT_LIMIT; -import static com.example.solidconnection.siteuser.service.SiteUserService.MIN_DAYS_BETWEEN_NICKNAME_CHANGES; +import static com.example.solidconnection.siteuser.service.MyPageService.MIN_DAYS_BETWEEN_NICKNAME_CHANGES; @Getter @AllArgsConstructor diff --git a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java b/src/main/java/com/example/solidconnection/siteuser/controller/MyPageController.java similarity index 80% rename from src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java rename to src/main/java/com/example/solidconnection/siteuser/controller/MyPageController.java index 2f43337ed..94bc6e8a8 100644 --- a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java +++ b/src/main/java/com/example/solidconnection/siteuser/controller/MyPageController.java @@ -3,7 +3,7 @@ import com.example.solidconnection.custom.resolver.AuthorizedUser; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.dto.MyPageResponse; -import com.example.solidconnection.siteuser.service.SiteUserService; +import com.example.solidconnection.siteuser.service.MyPageService; import lombok.RequiredArgsConstructor; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; @@ -16,15 +16,15 @@ @RequiredArgsConstructor @RequestMapping("/my") @RestController -class SiteUserController { +class MyPageController { - private final SiteUserService siteUserService; + private final MyPageService myPageService; @GetMapping public ResponseEntity getMyPageInfo( @AuthorizedUser SiteUser siteUser ) { - MyPageResponse myPageResponse = siteUserService.getMyPageInfo(siteUser); + MyPageResponse myPageResponse = myPageService.getMyPageInfo(siteUser); return ResponseEntity.ok(myPageResponse); } @@ -34,7 +34,7 @@ public ResponseEntity updateMyPageInfo( @RequestParam("file") MultipartFile imageFile, @RequestParam("nickname") String nickname ) { - siteUserService.updateMyPageInfo(siteUser, imageFile, nickname); + myPageService.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/MyPageService.java similarity index 99% rename from src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java rename to src/main/java/com/example/solidconnection/siteuser/service/MyPageService.java index 30297283a..50a020427 100644 --- a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java +++ b/src/main/java/com/example/solidconnection/siteuser/service/MyPageService.java @@ -25,7 +25,7 @@ @RequiredArgsConstructor @Service -public class SiteUserService { +public class MyPageService { public static final int MIN_DAYS_BETWEEN_NICKNAME_CHANGES = 7; public static final DateTimeFormatter NICKNAME_LAST_CHANGE_DATE_FORMAT = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm"); diff --git a/src/main/java/com/example/solidconnection/university/controller/UniversityController.java b/src/main/java/com/example/solidconnection/university/controller/UniversityController.java index 83d90f600..635693d4c 100644 --- a/src/main/java/com/example/solidconnection/university/controller/UniversityController.java +++ b/src/main/java/com/example/solidconnection/university/controller/UniversityController.java @@ -2,7 +2,7 @@ import com.example.solidconnection.custom.resolver.AuthorizedUser; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.service.SiteUserService; +import com.example.solidconnection.siteuser.service.MyPageService; import com.example.solidconnection.type.LanguageTestType; import com.example.solidconnection.university.dto.IsLikeResponse; import com.example.solidconnection.university.dto.LikeResultResponse; @@ -32,7 +32,7 @@ public class UniversityController { private final UniversityQueryService universityQueryService; private final UniversityLikeService universityLikeService; private final UniversityRecommendService universityRecommendService; - private final SiteUserService siteUserService; + private final MyPageService myPageService; @GetMapping("/recommend") public ResponseEntity getUniversityRecommends( @@ -49,7 +49,7 @@ public ResponseEntity getUniversityRecommends( public ResponseEntity> getMyWishUniversity( @AuthorizedUser SiteUser siteUser ) { - List wishUniversities = siteUserService.getWishUniversity(siteUser); + List wishUniversities = myPageService.getWishUniversity(siteUser); return ResponseEntity.ok(wishUniversities); } diff --git a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java similarity index 90% rename from src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java rename to src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java index cb256bc0f..6e897f04a 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java @@ -30,8 +30,8 @@ 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 com.example.solidconnection.siteuser.service.MyPageService.MIN_DAYS_BETWEEN_NICKNAME_CHANGES; +import static com.example.solidconnection.siteuser.service.MyPageService.NICKNAME_LAST_CHANGE_DATE_FORMAT; import static org.assertj.core.api.Assertions.assertThat; import static org.assertj.core.api.AssertionsForClassTypes.assertThatCode; import static org.mockito.BDDMockito.any; @@ -40,11 +40,11 @@ import static org.mockito.BDDMockito.never; import static org.mockito.BDDMockito.then; -@DisplayName("유저 서비스 테스트") -class SiteUserServiceTest extends BaseIntegrationTest { +@DisplayName("마이페이지 서비스 테스트") +class MyPageServiceTest extends BaseIntegrationTest { @Autowired - private SiteUserService siteUserService; + private MyPageService myPageService; @MockBean private S3Service s3Service; @@ -62,7 +62,7 @@ class SiteUserServiceTest extends BaseIntegrationTest { int likedUniversityCount = createLikedUniversities(testUser); // when - MyPageResponse response = siteUserService.getMyPageInfo(testUser); + MyPageResponse response = myPageService.getMyPageInfo(testUser); // then Assertions.assertAll( @@ -83,7 +83,7 @@ class SiteUserServiceTest extends BaseIntegrationTest { int likedUniversityCount = createLikedUniversities(testUser); // when - List response = siteUserService.getWishUniversity(testUser); + List response = myPageService.getWishUniversity(testUser); // then assertThat(response) @@ -109,7 +109,7 @@ class 프로필_이미지_수정_테스트 { .willReturn(new UploadedFileUrlResponse(expectedUrl)); // when - siteUserService.updateMyPageInfo(testUser, imageFile, "newNickname"); + myPageService.updateMyPageInfo(testUser, imageFile, "newNickname"); // then assertThat(testUser.getProfileImageUrl()).isEqualTo(expectedUrl); @@ -124,7 +124,7 @@ class 프로필_이미지_수정_테스트 { .willReturn(new UploadedFileUrlResponse("newProfileImageUrl")); // when - siteUserService.updateMyPageInfo(testUser, imageFile, "newNickname"); + myPageService.updateMyPageInfo(testUser, imageFile, "newNickname"); // then then(s3Service).should(never()).deleteExProfile(any()); @@ -139,7 +139,7 @@ class 프로필_이미지_수정_테스트 { .willReturn(new UploadedFileUrlResponse("newProfileImageUrl")); // when - siteUserService.updateMyPageInfo(testUser, imageFile, "newNickname"); + myPageService.updateMyPageInfo(testUser, imageFile, "newNickname"); // then then(s3Service).should().deleteExProfile(testUser); @@ -152,7 +152,7 @@ class 프로필_이미지_수정_테스트 { MockMultipartFile emptyFile = createEmptyImageFile(); // when & then - assertThatCode(() -> siteUserService.updateMyPageInfo(testUser, emptyFile, "newNickname")) + assertThatCode(() -> myPageService.updateMyPageInfo(testUser, emptyFile, "newNickname")) .isInstanceOf(CustomException.class) .hasMessage(PROFILE_IMAGE_NEEDED.getMessage()); } @@ -175,7 +175,7 @@ void setUp() { String newNickname = "newNickname"; // when - siteUserService.updateMyPageInfo(testUser, imageFile, newNickname); + myPageService.updateMyPageInfo(testUser, imageFile, newNickname); // then SiteUser updatedUser = siteUserRepository.findById(testUser.getId()).get(); @@ -191,7 +191,7 @@ void setUp() { MockMultipartFile imageFile = createValidImageFile(); // when & then - assertThatCode(() -> siteUserService.updateMyPageInfo(testUser, imageFile, "duplicatedNickname")) + assertThatCode(() -> myPageService.updateMyPageInfo(testUser, imageFile, "duplicatedNickname")) .isInstanceOf(CustomException.class) .hasMessage(NICKNAME_ALREADY_EXISTED.getMessage()); } @@ -208,7 +208,7 @@ void setUp() { NicknameUpdateRequest request = new NicknameUpdateRequest("newNickname"); // when & then - assertThatCode(() -> siteUserService.updateMyPageInfo(testUser, imageFile, "nickname12")) + assertThatCode(() -> myPageService.updateMyPageInfo(testUser, imageFile, "nickname12")) .isInstanceOf(CustomException.class) .hasMessage(createExpectedErrorMessage(modifiedAt)); } From 591d6cf751191d693787bc0816518a787850a0e6 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Thu, 20 Feb 2025 13:54:50 +0900 Subject: [PATCH 2/4] =?UTF-8?q?feat:=20=EB=8B=89=EB=84=A4=EC=9E=84=20?= =?UTF-8?q?=EC=A4=91=EB=B3=B5=20=EA=B2=80=EC=A6=9D=20api=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../controller/SiteUserController.java | 24 +++++++ .../siteuser/dto/NicknameExistsResponse.java | 9 +++ .../siteuser/service/SiteUserService.java | 18 +++++ .../siteuser/service/SiteUserServiceTest.java | 68 +++++++++++++++++++ 4 files changed, 119 insertions(+) create mode 100644 src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java create mode 100644 src/main/java/com/example/solidconnection/siteuser/dto/NicknameExistsResponse.java create mode 100644 src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java create mode 100644 src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java diff --git a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java b/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java new file mode 100644 index 000000000..401d43cad --- /dev/null +++ b/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java @@ -0,0 +1,24 @@ +package com.example.solidconnection.siteuser.controller; + +import com.example.solidconnection.siteuser.dto.NicknameExistsResponse; +import com.example.solidconnection.siteuser.service.SiteUserService; +import lombok.RequiredArgsConstructor; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +@RequiredArgsConstructor +@RequestMapping("/users") +@RestController +public class SiteUserController { + + private final SiteUserService siteUserService; + + @GetMapping("/exists") + public ResponseEntity existsByNickname(@RequestParam("nickname") String nickname) { + NicknameExistsResponse nicknameExistsResponse = siteUserService.existsByNickname(nickname); + return ResponseEntity.ok(nicknameExistsResponse); + } +} diff --git a/src/main/java/com/example/solidconnection/siteuser/dto/NicknameExistsResponse.java b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameExistsResponse.java new file mode 100644 index 000000000..efb53df54 --- /dev/null +++ b/src/main/java/com/example/solidconnection/siteuser/dto/NicknameExistsResponse.java @@ -0,0 +1,9 @@ +package com.example.solidconnection.siteuser.dto; + +public record NicknameExistsResponse( + boolean exists +) { + public static NicknameExistsResponse from(boolean exists) { + return new NicknameExistsResponse(exists); + } +} diff --git a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java new file mode 100644 index 000000000..59b130591 --- /dev/null +++ b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java @@ -0,0 +1,18 @@ +package com.example.solidconnection.siteuser.service; + +import com.example.solidconnection.siteuser.dto.NicknameExistsResponse; +import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import lombok.RequiredArgsConstructor; +import org.springframework.stereotype.Service; + +@RequiredArgsConstructor +@Service +public class SiteUserService { + + private final SiteUserRepository siteUserRepository; + + public NicknameExistsResponse existsByNickname(String nickname) { + boolean exists = siteUserRepository.existsByNickname(nickname); + return NicknameExistsResponse.from(exists); + } +} diff --git a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java new file mode 100644 index 000000000..127b9a1c4 --- /dev/null +++ b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java @@ -0,0 +1,68 @@ +package com.example.solidconnection.siteuser.service; + +import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.dto.NicknameExistsResponse; +import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.support.integration.BaseIntegrationTest; +import com.example.solidconnection.type.Gender; +import com.example.solidconnection.type.PreparationStatus; +import com.example.solidconnection.type.Role; +import org.junit.jupiter.api.BeforeEach; +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Nested; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; + +import static org.assertj.core.api.Assertions.assertThat; + +@DisplayName("유저 서비스 테스트") +class SiteUserServiceTest extends BaseIntegrationTest { + + @Autowired + private SiteUserService siteUserService; + + @Autowired + private SiteUserRepository siteUserRepository; + + private SiteUser siteUser; + + @BeforeEach + void setUp() { + siteUser = createSiteUser(); + } + + @Nested + class 닉네임_중복_검사 { + + @Test + void 존재하는_닉네임이면_true를_반환한다() { + // when + NicknameExistsResponse response = siteUserService.existsByNickname(siteUser.getNickname()); + + // then + assertThat(response.exists()).isTrue(); + } + + @Test + void 존재하지_않는_닉네임이면_false를_반환한다() { + // when + NicknameExistsResponse response = siteUserService.existsByNickname("nonExistingNickname"); + + // then + assertThat(response.exists()).isFalse(); + } + } + + private SiteUser createSiteUser() { + SiteUser siteUser = new SiteUser( + "test@example.com", + "nickname", + "profileImageUrl", + "1999-01-01", + PreparationStatus.CONSIDERING, + Role.MENTEE, + Gender.MALE + ); + return siteUserRepository.save(siteUser); + } +} From 64073082e4ee746666d58ddfa56b80128d4d44a0 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Thu, 20 Feb 2025 21:02:21 +0900 Subject: [PATCH 3/4] =?UTF-8?q?style:=20=EC=BB=A8=ED=8A=B8=EB=A1=A4?= =?UTF-8?q?=EB=9F=AC=20=EB=A9=94=EC=84=9C=EB=93=9C=20=EC=9D=B8=EC=9E=90=20?= =?UTF-8?q?=EA=B0=9C=ED=96=89=20=EC=BB=A8=EB=B2=A4=EC=85=98=20=EC=A0=81?= =?UTF-8?q?=EC=9A=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siteuser/controller/SiteUserController.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 401d43cad..f0e30141b 100644 --- a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java +++ b/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java @@ -17,7 +17,9 @@ public class SiteUserController { private final SiteUserService siteUserService; @GetMapping("/exists") - public ResponseEntity existsByNickname(@RequestParam("nickname") String nickname) { + public ResponseEntity existsByNickname( + @RequestParam("nickname") String nickname + ) { NicknameExistsResponse nicknameExistsResponse = siteUserService.existsByNickname(nickname); return ResponseEntity.ok(nicknameExistsResponse); } From 9094f3ac30dcd33c13fb8a31bde16f30a5bc1159 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Wed, 5 Mar 2025 15:11:11 +0900 Subject: [PATCH 4/4] =?UTF-8?q?refactor:=20checkNicknameExists=EB=A1=9C=20?= =?UTF-8?q?=ED=95=A8=EC=88=98=EB=AA=85=20=EA=B0=9C=EC=84=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siteuser/controller/SiteUserController.java | 4 ++-- .../solidconnection/siteuser/service/SiteUserService.java | 2 +- .../solidconnection/siteuser/service/SiteUserServiceTest.java | 4 ++-- 3 files changed, 5 insertions(+), 5 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 f0e30141b..64d926eca 100644 --- a/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java +++ b/src/main/java/com/example/solidconnection/siteuser/controller/SiteUserController.java @@ -17,10 +17,10 @@ public class SiteUserController { private final SiteUserService siteUserService; @GetMapping("/exists") - public ResponseEntity existsByNickname( + public ResponseEntity checkNicknameExists( @RequestParam("nickname") String nickname ) { - NicknameExistsResponse nicknameExistsResponse = siteUserService.existsByNickname(nickname); + NicknameExistsResponse nicknameExistsResponse = siteUserService.checkNicknameExists(nickname); return ResponseEntity.ok(nicknameExistsResponse); } } 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 59b130591..e67d71ab8 100644 --- a/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java +++ b/src/main/java/com/example/solidconnection/siteuser/service/SiteUserService.java @@ -11,7 +11,7 @@ public class SiteUserService { private final SiteUserRepository siteUserRepository; - public NicknameExistsResponse existsByNickname(String nickname) { + public NicknameExistsResponse checkNicknameExists(String nickname) { boolean exists = siteUserRepository.existsByNickname(nickname); return NicknameExistsResponse.from(exists); } 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 127b9a1c4..7272b3498 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java @@ -37,7 +37,7 @@ class 닉네임_중복_검사 { @Test void 존재하는_닉네임이면_true를_반환한다() { // when - NicknameExistsResponse response = siteUserService.existsByNickname(siteUser.getNickname()); + NicknameExistsResponse response = siteUserService.checkNicknameExists(siteUser.getNickname()); // then assertThat(response.exists()).isTrue(); @@ -46,7 +46,7 @@ class 닉네임_중복_검사 { @Test void 존재하지_않는_닉네임이면_false를_반환한다() { // when - NicknameExistsResponse response = siteUserService.existsByNickname("nonExistingNickname"); + NicknameExistsResponse response = siteUserService.checkNicknameExists("nonExistingNickname"); // then assertThat(response.exists()).isFalse();