From 0ff5c5197df8966d7081ef305d2a1511e72ece5c Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 13 May 2025 03:02:33 +0900 Subject: [PATCH 01/15] =?UTF-8?q?feat:=20SiteUserFixture=EC=97=90=20?= =?UTF-8?q?=EC=9C=A0=EC=A0=80=20=EC=83=9D=EC=84=B1=20=EB=A9=94=EC=84=9C?= =?UTF-8?q?=EB=93=9C=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siteuser/fixture/SiteUserFixture.java | 93 +++++++++++++++++++ .../fixture/SiteUserFixtureBuilder.java | 70 ++++++++++++++ 2 files changed, 163 insertions(+) create mode 100644 src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java create mode 100644 src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixtureBuilder.java diff --git a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java new file mode 100644 index 000000000..98d5ee8a0 --- /dev/null +++ b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java @@ -0,0 +1,93 @@ +package com.example.solidconnection.siteuser.fixture; + +import com.example.solidconnection.siteuser.domain.AuthType; +import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.type.Role; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; +import org.springframework.security.crypto.password.PasswordEncoder; + +@TestComponent +@RequiredArgsConstructor +public class SiteUserFixture { + + private final SiteUserFixtureBuilder siteUserFixtureBuilder; + private final PasswordEncoder passwordEncoder; + + public SiteUser 테스트_유저() { + return siteUserFixtureBuilder.siteUser() + .email("test@example.com") + .authType(AuthType.EMAIL) + .nickname("테스트유저") + .profileImageUrl("profileImageUrl") + .role(Role.MENTEE) + .password("password123") + .create(); + } + + public SiteUser 테스트_유저(int index, String nickname) { + return siteUserFixtureBuilder.siteUser() + .email("test" + index + " @example.com") + .authType(AuthType.EMAIL) + .nickname(nickname) + .profileImageUrl("profileImageUrl") + .role(Role.MENTEE) + .password("password123") + .create(); + } + + public SiteUser 테스트_유저(String email, AuthType authType) { + return siteUserFixtureBuilder.siteUser() + .email(email) + .authType(authType) + .nickname("테스트유저") + .profileImageUrl("profileImageUrl") + .role(Role.MENTEE) + .password("password123") + .create(); + } + + public SiteUser 테스트_유저(String email, String password) { + return siteUserFixtureBuilder.siteUser() + .email(email) + .authType(AuthType.EMAIL) + .nickname("테스트유저") + .profileImageUrl("profileImageUrl") + .role(Role.MENTEE) + .password(passwordEncoder.encode(password)) + .create(); + } + + public SiteUser 중복_닉네임_테스트_유저() { + return siteUserFixtureBuilder.siteUser() + .email("duplicated@example.com") + .authType(AuthType.EMAIL) + .nickname("중복닉네임") + .profileImageUrl("profileImageUrl") + .role(Role.MENTEE) + .password("password123") + .create(); + } + + public SiteUser 커스텀_프로필_테스트_유저() { + return siteUserFixtureBuilder.siteUser() + .email("customProfile@example.com") + .authType(AuthType.EMAIL) + .nickname("커스텀프로필") + .profileImageUrl("profile/profileImageUrl") + .role(Role.MENTEE) + .password("customPassword123") + .create(); + } + + public SiteUser 테스트_어드민() { + return siteUserFixtureBuilder.siteUser() + .email("admin@example.com") + .authType(AuthType.EMAIL) + .nickname("테스트어드민") + .profileImageUrl("profileImageUrl") + .role(Role.ADMIN) + .password("admin123") + .create(); + } +} diff --git a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixtureBuilder.java b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixtureBuilder.java new file mode 100644 index 000000000..b510b263c --- /dev/null +++ b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixtureBuilder.java @@ -0,0 +1,70 @@ +package com.example.solidconnection.siteuser.fixture; + +import com.example.solidconnection.siteuser.domain.AuthType; +import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.type.PreparationStatus; +import com.example.solidconnection.type.Role; +import lombok.RequiredArgsConstructor; +import org.springframework.boot.test.context.TestComponent; + +@TestComponent +@RequiredArgsConstructor +public class SiteUserFixtureBuilder { + + private final SiteUserRepository siteUserRepository; + + private String email; + private AuthType authType; + private String nickname; + private String profileImageUrl; + private Role role; + private String password; + + public SiteUserFixtureBuilder siteUser() { + return new SiteUserFixtureBuilder(siteUserRepository); + } + + public SiteUserFixtureBuilder email(String email) { + this.email = email; + return this; + } + + public SiteUserFixtureBuilder authType(AuthType authType) { + this.authType = authType; + return this; + } + + public SiteUserFixtureBuilder nickname(String nickname) { + this.nickname = nickname; + return this; + } + + public SiteUserFixtureBuilder profileImageUrl(String profileImageUrl) { + this.profileImageUrl = profileImageUrl; + return this; + } + + public SiteUserFixtureBuilder role(Role role) { + this.role = role; + return this; + } + + public SiteUserFixtureBuilder password(String password) { + this.password = password; + return this; + } + + public SiteUser create() { + SiteUser siteUser = new SiteUser( + email, + nickname, + profileImageUrl, + PreparationStatus.CONSIDERING, + role, + authType, + password + ); + return siteUserRepository.save(siteUser); + } +} From f7436aefb6a24397b8d78a3e3b9db87eeae60299 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 13 May 2025 03:05:38 +0900 Subject: [PATCH 02/15] =?UTF-8?q?refactor:=20=EB=8C=80=ED=95=99=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20Fixture=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/UniversityLikeServiceTest.java | 48 ++++++----------- .../UniversityRecommendServiceTest.java | 54 +++++++------------ 2 files changed, 35 insertions(+), 67 deletions(-) diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityLikeServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityLikeServiceTest.java index 3b2ab8c22..429b2a020 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityLikeServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityLikeServiceTest.java @@ -2,11 +2,9 @@ import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.siteuser.repository.LikedUniversityRepository; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import com.example.solidconnection.university.domain.LikedUniversity; import com.example.solidconnection.university.domain.UniversityInfoForApply; import com.example.solidconnection.university.dto.IsLikeResponse; @@ -38,17 +36,17 @@ class UniversityLikeServiceTest { private LikedUniversityRepository likedUniversityRepository; @Autowired - private SiteUserRepository siteUserRepository; + private SiteUserFixture siteUserFixture; @Autowired private UniversityInfoForApplyFixture universityInfoForApplyFixture; - private SiteUser testUser; + private SiteUser 테스트_유저; private UniversityInfoForApply 괌대학_A_지원_정보; @BeforeEach void setUp() { - testUser = createSiteUser(); + 테스트_유저 = siteUserFixture.테스트_유저(); 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); } @@ -58,13 +56,13 @@ class 대학_좋아요를_등록한다 { @Test void 성공적으로_좋아요를_등록한다() { // when - LikeResultResponse response = universityLikeService.likeUniversity(testUser, 괌대학_A_지원_정보.getId()); + LikeResultResponse response = universityLikeService.likeUniversity(테스트_유저, 괌대학_A_지원_정보.getId()); // then assertAll( () -> assertThat(response.result()).isEqualTo(LIKE_SUCCESS_MESSAGE), () -> assertThat(likedUniversityRepository.findBySiteUserAndUniversityInfoForApply( - testUser, 괌대학_A_지원_정보 + 테스트_유저, 괌대학_A_지원_정보 )).isPresent() ); } @@ -72,10 +70,10 @@ class 대학_좋아요를_등록한다 { @Test void 이미_좋아요한_대학이면_예외_응답을_반환한다() { // given - saveLikedUniversity(testUser, 괌대학_A_지원_정보); + saveLikedUniversity(테스트_유저, 괌대학_A_지원_정보); // when & then - assertThatCode(() -> universityLikeService.likeUniversity(testUser, 괌대학_A_지원_정보.getId())) + assertThatCode(() -> universityLikeService.likeUniversity(테스트_유저, 괌대학_A_지원_정보.getId())) .isInstanceOf(CustomException.class) .hasMessage(ALREADY_LIKED_UNIVERSITY.getMessage()); } @@ -87,16 +85,16 @@ class 대학_좋아요를_취소한다 { @Test void 성공적으로_좋아요를_취소한다() { // given - saveLikedUniversity(testUser, 괌대학_A_지원_정보); + saveLikedUniversity(테스트_유저, 괌대학_A_지원_정보); // when - LikeResultResponse response = universityLikeService.cancelLikeUniversity(testUser, 괌대학_A_지원_정보.getId()); + LikeResultResponse response = universityLikeService.cancelLikeUniversity(테스트_유저, 괌대학_A_지원_정보.getId()); // then assertAll( () -> assertThat(response.result()).isEqualTo(LIKE_CANCELED_MESSAGE), () -> assertThat(likedUniversityRepository.findBySiteUserAndUniversityInfoForApply( - testUser, 괌대학_A_지원_정보 + 테스트_유저, 괌대학_A_지원_정보 )).isEmpty() ); } @@ -104,7 +102,7 @@ class 대학_좋아요를_취소한다 { @Test void 좋아요하지_않은_대학이면_예외_응답을_반환한다() { // when & then - assertThatCode(() -> universityLikeService.cancelLikeUniversity(testUser, 괌대학_A_지원_정보.getId())) + assertThatCode(() -> universityLikeService.cancelLikeUniversity(테스트_유저, 괌대학_A_지원_정보.getId())) .isInstanceOf(CustomException.class) .hasMessage(NOT_LIKED_UNIVERSITY.getMessage()); } @@ -116,7 +114,7 @@ class 대학_좋아요를_취소한다 { Long invalidUniversityId = 9999L; // when & then - assertThatCode(() -> universityLikeService.likeUniversity(testUser, invalidUniversityId)) + assertThatCode(() -> universityLikeService.likeUniversity(테스트_유저, invalidUniversityId)) .isInstanceOf(CustomException.class) .hasMessage(UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND.getMessage()); } @@ -124,10 +122,10 @@ class 대학_좋아요를_취소한다 { @Test void 좋아요한_대학인지_확인한다() { // given - saveLikedUniversity(testUser, 괌대학_A_지원_정보); + saveLikedUniversity(테스트_유저, 괌대학_A_지원_정보); // when - IsLikeResponse response = universityLikeService.getIsLiked(testUser, 괌대학_A_지원_정보.getId()); + IsLikeResponse response = universityLikeService.getIsLiked(테스트_유저, 괌대학_A_지원_정보.getId()); // then assertThat(response.isLike()).isTrue(); @@ -136,7 +134,7 @@ class 대학_좋아요를_취소한다 { @Test void 좋아요하지_않은_대학인지_확인한다() { // when - IsLikeResponse response = universityLikeService.getIsLiked(testUser, 괌대학_A_지원_정보.getId()); + IsLikeResponse response = universityLikeService.getIsLiked(테스트_유저, 괌대학_A_지원_정보.getId()); // then assertThat(response.isLike()).isFalse(); @@ -148,23 +146,11 @@ class 대학_좋아요를_취소한다 { Long invalidUniversityId = 9999L; // when & then - assertThatCode(() -> universityLikeService.getIsLiked(testUser, invalidUniversityId)) + assertThatCode(() -> universityLikeService.getIsLiked(테스트_유저, invalidUniversityId)) .isInstanceOf(CustomException.class) .hasMessage(UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND.getMessage()); } - // todo : 추후 Fixture로 대체 필요 - private SiteUser createSiteUser() { - SiteUser siteUser = new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } - private void saveLikedUniversity(SiteUser siteUser, UniversityInfoForApply universityInfoForApply) { LikedUniversity likedUniversity = LikedUniversity.builder() .siteUser(siteUser) diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java index 7645794bf..c77b06f5c 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java @@ -7,10 +7,8 @@ import com.example.solidconnection.repositories.InterestedCountyRepository; import com.example.solidconnection.repositories.InterestedRegionRepository; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import com.example.solidconnection.university.domain.UniversityInfoForApply; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponse; import com.example.solidconnection.university.dto.UniversityRecommendsResponse; @@ -32,9 +30,6 @@ class UniversityRecommendServiceTest { @Autowired private UniversityRecommendService universityRecommendService; - @Autowired - private SiteUserRepository siteUserRepository; - @Autowired private InterestedRegionRepository interestedRegionRepository; @@ -44,6 +39,9 @@ class UniversityRecommendServiceTest { @Autowired private GeneralUniversityRecommendService generalUniversityRecommendService; + @Autowired + private SiteUserFixture siteUserFixture; + @Autowired private RegionFixture regionFixture; @@ -53,41 +51,37 @@ class UniversityRecommendServiceTest { @Autowired private UniversityInfoForApplyFixture universityInfoForApplyFixture; - private SiteUser testUser; + private SiteUser 테스트_유저; private UniversityInfoForApply 괌대학_A_지원_정보; private UniversityInfoForApply 괌대학_B_지원_정보; private UniversityInfoForApply 네바다주립대학_라스베이거스_지원_정보; private UniversityInfoForApply 메모리얼대학_세인트존스_A_지원_정보; private UniversityInfoForApply 서던덴마크대학교_지원_정보; private UniversityInfoForApply 코펜하겐IT대학_지원_정보; - private UniversityInfoForApply 그라츠대학_지원_정보; - private UniversityInfoForApply 그라츠공과대학_지원_정보; - private UniversityInfoForApply 린츠_카톨릭대학_지원_정보; - private UniversityInfoForApply 메이지대학_지원_정보; @BeforeEach void setUp() { - testUser = createSiteUser(); + 테스트_유저 = siteUserFixture.테스트_유저(); 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); 괌대학_B_지원_정보 = universityInfoForApplyFixture.괌대학_B_지원_정보(); 네바다주립대학_라스베이거스_지원_정보 = universityInfoForApplyFixture.네바다주립대학_라스베이거스_지원_정보(); 메모리얼대학_세인트존스_A_지원_정보 = universityInfoForApplyFixture.메모리얼대학_세인트존스_A_지원_정보(); 서던덴마크대학교_지원_정보 = universityInfoForApplyFixture.서던덴마크대학교_지원_정보(); 코펜하겐IT대학_지원_정보 = universityInfoForApplyFixture.코펜하겐IT대학_지원_정보(); - 그라츠대학_지원_정보 = universityInfoForApplyFixture.그라츠대학_지원_정보(); - 그라츠공과대학_지원_정보 = universityInfoForApplyFixture.그라츠공과대학_지원_정보(); - 린츠_카톨릭대학_지원_정보 = universityInfoForApplyFixture.린츠_카톨릭대학_지원_정보(); - 메이지대학_지원_정보 = universityInfoForApplyFixture.메이지대학_지원_정보(); + universityInfoForApplyFixture.그라츠대학_지원_정보(); + universityInfoForApplyFixture.그라츠공과대학_지원_정보(); + universityInfoForApplyFixture.린츠_카톨릭대학_지원_정보(); + universityInfoForApplyFixture.메이지대학_지원_정보(); generalUniversityRecommendService.init(); } @Test void 관심_지역_설정한_사용자의_맞춤_추천_대학을_조회한다() { // given - interestedRegionRepository.save(new InterestedRegion(testUser, regionFixture.영미권())); + interestedRegionRepository.save(new InterestedRegion(테스트_유저, regionFixture.영미권())); // when - UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(testUser); + UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(테스트_유저); // then assertThat(response.recommendedUniversities()) @@ -103,10 +97,10 @@ void setUp() { @Test void 관심_국가_설정한_사용자의_맞춤_추천_대학을_조회한다() { // given - interestedCountyRepository.save(new InterestedCountry(testUser, countryFixture.덴마크())); + interestedCountyRepository.save(new InterestedCountry(테스트_유저, countryFixture.덴마크())); // when - UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(testUser); + UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(테스트_유저); // then assertThat(response.recommendedUniversities()) @@ -120,11 +114,11 @@ void setUp() { @Test void 관심_지역과_국가_모두_설정한_사용자의_맞춤_추천_대학을_조회한다() { // given - interestedRegionRepository.save(new InterestedRegion(testUser, regionFixture.영미권())); - interestedCountyRepository.save(new InterestedCountry(testUser, countryFixture.덴마크())); + interestedRegionRepository.save(new InterestedRegion(테스트_유저, regionFixture.영미권())); + interestedCountyRepository.save(new InterestedCountry(테스트_유저, countryFixture.덴마크())); // when - UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(testUser); + UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(테스트_유저); // then assertThat(response.recommendedUniversities()) @@ -142,7 +136,7 @@ void setUp() { @Test void 관심사_미설정_사용자는_일반_추천_대학을_조회한다() { // when - UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(testUser); + UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(테스트_유저); // then assertThat(response.recommendedUniversities()) @@ -168,16 +162,4 @@ void setUp() { .toList() ); } - - // todo : 추후 Fixture로 대체 필요 - private SiteUser createSiteUser() { - SiteUser siteUser = new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } } From 0ea67a9bc220eb4c446cc8ba5185ac8b7851eacc Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 13 May 2025 03:06:25 +0900 Subject: [PATCH 03/15] =?UTF-8?q?refactor:=20=EC=9C=A0=EC=A0=80=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20Fixture=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/SiteUserRepositoryTest.java | 37 ++---- .../siteuser/service/MyPageServiceTest.java | 123 ++++++------------ .../siteuser/service/SiteUserServiceTest.java | 28 ++-- 3 files changed, 63 insertions(+), 125 deletions(-) diff --git a/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java b/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java index c3d9d240e..1f213e904 100644 --- a/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java @@ -1,10 +1,9 @@ package com.example.solidconnection.siteuser.repository; import com.example.solidconnection.siteuser.domain.AuthType; -import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.support.TestContainerDataJpaTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; +import com.example.solidconnection.support.TestContainerSpringBootTest; +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; @@ -12,11 +11,14 @@ import static org.assertj.core.api.Assertions.assertThatCode; -@TestContainerDataJpaTest +// @TestContainerDataJpaTest + @Import 쓰기 vs @TestContainerSpringBootTest 검토 필요 +@TestContainerSpringBootTest +//@Import({SiteUserFixture.class, SiteUserFixtureBuilder.class, PasswordEncoder.class}) +@DisplayName("유저 레포지토리 테스트") class SiteUserRepositoryTest { @Autowired - private SiteUserRepository siteUserRepository; + private SiteUserFixture siteUserFixture; @Nested class 이메일과_인증_유형이_동일한_사용자는_저장할_수_없다 { @@ -24,36 +26,21 @@ class 이메일과_인증_유형이_동일한_사용자는_저장할_수_없다 @Test void 이메일과_인증_유형이_동일한_사용자를_저장하면_예외_응답을_반환한다() { // given - SiteUser user1 = createSiteUser("email", AuthType.KAKAO); - SiteUser user2 = createSiteUser("email", AuthType.KAKAO); - siteUserRepository.save(user1); + siteUserFixture.테스트_유저("email", AuthType.KAKAO); // when, then - assertThatCode(() -> siteUserRepository.save(user2)) + assertThatCode(() -> siteUserFixture.테스트_유저("email", AuthType.KAKAO)) .isInstanceOf(DataIntegrityViolationException.class); } @Test void 이메일이_같더라도_인증_유형이_다른_사용자는_정상_저장한다() { // given - SiteUser user1 = createSiteUser("email", AuthType.KAKAO); - SiteUser user2 = createSiteUser("email", AuthType.APPLE); - siteUserRepository.save(user1); + siteUserFixture.테스트_유저("email", AuthType.KAKAO); // when, then - assertThatCode(() -> siteUserRepository.save(user2)) + assertThatCode(() -> siteUserFixture.테스트_유저("email", AuthType.APPLE)) .doesNotThrowAnyException(); } } - - private SiteUser createSiteUser(String email, AuthType authType) { - return new SiteUser( - email, - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE, - authType - ); - } } diff --git a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java index 95a887736..c919abd47 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java @@ -5,15 +5,14 @@ import com.example.solidconnection.s3.UploadedFileUrlResponse; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.dto.MyPageResponse; -import com.example.solidconnection.siteuser.dto.NicknameUpdateRequest; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.siteuser.repository.LikedUniversityRepository; import com.example.solidconnection.siteuser.repository.SiteUserRepository; -import com.example.solidconnection.support.integration.BaseIntegrationTest; +import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.type.ImgType; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import com.example.solidconnection.university.domain.LikedUniversity; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponse; +import com.example.solidconnection.university.fixture.UniversityInfoForApplyFixture; import org.junit.jupiter.api.Assertions; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -38,8 +37,9 @@ import static org.mockito.BDDMockito.never; import static org.mockito.BDDMockito.then; +@TestContainerSpringBootTest @DisplayName("마이페이지 서비스 테스트") -class MyPageServiceTest extends BaseIntegrationTest { +class MyPageServiceTest { @Autowired private MyPageService myPageService; @@ -53,22 +53,34 @@ class MyPageServiceTest extends BaseIntegrationTest { @Autowired private LikedUniversityRepository likedUniversityRepository; + @Autowired + private SiteUserFixture siteUserFixture; + + @Autowired + private UniversityInfoForApplyFixture universityInfoForApplyFixture; + + private SiteUser 테스트_유저; + + @BeforeEach + void setUp() { + 테스트_유저 = siteUserFixture.테스트_유저(); + } + @Test void 마이페이지_정보를_조회한다() { // given - SiteUser testUser = createSiteUser(); - int likedUniversityCount = createLikedUniversities(testUser); + int likedUniversityCount = createLikedUniversities(테스트_유저); // when - MyPageResponse response = myPageService.getMyPageInfo(testUser); + MyPageResponse response = myPageService.getMyPageInfo(테스트_유저); // then Assertions.assertAll( - () -> assertThat(response.nickname()).isEqualTo(testUser.getNickname()), - () -> assertThat(response.profileImageUrl()).isEqualTo(testUser.getProfileImageUrl()), - () -> assertThat(response.role()).isEqualTo(testUser.getRole()), - () -> assertThat(response.email()).isEqualTo(testUser.getEmail()), - () -> assertThat(response.likedPostCount()).isEqualTo(testUser.getPostLikeList().size()), + () -> assertThat(response.nickname()).isEqualTo(테스트_유저.getNickname()), + () -> assertThat(response.profileImageUrl()).isEqualTo(테스트_유저.getProfileImageUrl()), + () -> assertThat(response.role()).isEqualTo(테스트_유저.getRole()), + () -> assertThat(response.email()).isEqualTo(테스트_유저.getEmail()), + () -> assertThat(response.likedPostCount()).isEqualTo(테스트_유저.getPostLikeList().size()), () -> assertThat(response.likedUniversityCount()).isEqualTo(likedUniversityCount) ); } @@ -76,21 +88,13 @@ class MyPageServiceTest extends BaseIntegrationTest { @Test void 관심_대학교_목록을_조회한다() { // given - SiteUser testUser = createSiteUser(); - int likedUniversityCount = createLikedUniversities(testUser); + int likedUniversityCount = createLikedUniversities(테스트_유저); // when - List response = myPageService.getWishUniversity(testUser); + List response = myPageService.getWishUniversity(테스트_유저); // then - assertThat(response) - .hasSize(likedUniversityCount) - .usingRecursiveFieldByFieldElementComparatorIgnoringFields("id") - .containsAll(List.of( - UniversityInfoForApplyPreviewResponse.from(괌대학_A_지원_정보), - UniversityInfoForApplyPreviewResponse.from(메이지대학_지원_정보), - UniversityInfoForApplyPreviewResponse.from(코펜하겐IT대학_지원_정보) - )); + assertThat(response).hasSize(likedUniversityCount); } @Nested @@ -99,29 +103,27 @@ class 프로필_이미지_수정_테스트 { @Test void 새로운_이미지로_성공적으로_업데이트한다() { // given - SiteUser testUser = createSiteUser(); String expectedUrl = "newProfileImageUrl"; MockMultipartFile imageFile = createValidImageFile(); given(s3Service.uploadFile(any(), eq(ImgType.PROFILE))) .willReturn(new UploadedFileUrlResponse(expectedUrl)); // when - myPageService.updateMyPageInfo(testUser, imageFile, "newNickname"); + myPageService.updateMyPageInfo(테스트_유저, imageFile, "newNickname"); // then - assertThat(testUser.getProfileImageUrl()).isEqualTo(expectedUrl); + assertThat(테스트_유저.getProfileImageUrl()).isEqualTo(expectedUrl); } @Test void 프로필을_처음_수정하는_것이면_이전_이미지를_삭제하지_않는다() { // given - SiteUser testUser = createSiteUser(); MockMultipartFile imageFile = createValidImageFile(); given(s3Service.uploadFile(any(), eq(ImgType.PROFILE))) .willReturn(new UploadedFileUrlResponse("newProfileImageUrl")); // when - myPageService.updateMyPageInfo(testUser, imageFile, "newNickname"); + myPageService.updateMyPageInfo(테스트_유저, imageFile, "newNickname"); // then then(s3Service).should(never()).deleteExProfile(any()); @@ -130,16 +132,16 @@ class 프로필_이미지_수정_테스트 { @Test void 프로필을_처음_수정하는_것이_아니라면_이전_이미지를_삭제한다() { // given - SiteUser testUser = createSiteUserWithCustomProfile(); + SiteUser 커스텀_프로필_테스트_유저 = siteUserFixture.커스텀_프로필_테스트_유저(); MockMultipartFile imageFile = createValidImageFile(); given(s3Service.uploadFile(any(), eq(ImgType.PROFILE))) .willReturn(new UploadedFileUrlResponse("newProfileImageUrl")); // when - myPageService.updateMyPageInfo(testUser, imageFile, "newNickname"); + myPageService.updateMyPageInfo(커스텀_프로필_테스트_유저, imageFile, "newNickname"); // then - then(s3Service).should().deleteExProfile(testUser); + then(s3Service).should().deleteExProfile(커스텀_프로필_테스트_유저); } } @@ -155,15 +157,14 @@ void setUp() { @Test void 닉네임을_성공적으로_수정한다() { // given - SiteUser testUser = createSiteUser(); MockMultipartFile imageFile = createValidImageFile(); String newNickname = "newNickname"; // when - myPageService.updateMyPageInfo(testUser, imageFile, newNickname); + myPageService.updateMyPageInfo(테스트_유저, imageFile, newNickname); // then - SiteUser updatedUser = siteUserRepository.findById(testUser.getId()).get(); + SiteUser updatedUser = siteUserRepository.findById(테스트_유저.getId()).get(); assertThat(updatedUser.getNicknameModifiedAt()).isNotNull(); assertThat(updatedUser.getNickname()).isEqualTo(newNickname); } @@ -171,12 +172,11 @@ void setUp() { @Test void 중복된_닉네임으로_변경하면_예외_응답을_반환한다() { // given - createDuplicatedSiteUser(); - SiteUser testUser = createSiteUser(); + SiteUser 중복_닉네임_테스트_유저 = siteUserFixture.중복_닉네임_테스트_유저(); MockMultipartFile imageFile = createValidImageFile(); // when & then - assertThatCode(() -> myPageService.updateMyPageInfo(testUser, imageFile, "duplicatedNickname")) + assertThatCode(() -> myPageService.updateMyPageInfo(테스트_유저, imageFile, 중복_닉네임_테스트_유저.getNickname())) .isInstanceOf(CustomException.class) .hasMessage(NICKNAME_ALREADY_EXISTED.getMessage()); } @@ -184,58 +184,21 @@ void setUp() { @Test void 최소_대기기간이_지나지_않은_상태에서_변경하면_예외_응답을_반환한다() { // given - SiteUser testUser = createSiteUser(); MockMultipartFile imageFile = createValidImageFile(); LocalDateTime modifiedAt = LocalDateTime.now().minusDays(MIN_DAYS_BETWEEN_NICKNAME_CHANGES - 1); - testUser.setNicknameModifiedAt(modifiedAt); - siteUserRepository.save(testUser); - - NicknameUpdateRequest request = new NicknameUpdateRequest("newNickname"); + 테스트_유저.setNicknameModifiedAt(modifiedAt); // when & then - assertThatCode(() -> myPageService.updateMyPageInfo(testUser, imageFile, "nickname12")) + assertThatCode(() -> myPageService.updateMyPageInfo(테스트_유저, imageFile, "nickname12")) .isInstanceOf(CustomException.class) .hasMessage(createExpectedErrorMessage(modifiedAt)); } } - private SiteUser createSiteUser() { - SiteUser siteUser = new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } - - private SiteUser createSiteUserWithCustomProfile() { - SiteUser siteUser = new SiteUser( - "test@example.com", - "nickname", - "profile/profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } - - private void createDuplicatedSiteUser() { - SiteUser siteUser = new SiteUser( - "duplicated@example.com", - "duplicatedNickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - siteUserRepository.save(siteUser); - } - private int createLikedUniversities(SiteUser testUser) { - LikedUniversity likedUniversity1 = new LikedUniversity(null, 괌대학_A_지원_정보, testUser); - LikedUniversity likedUniversity2 = new LikedUniversity(null, 메이지대학_지원_정보, testUser); - LikedUniversity likedUniversity3 = new LikedUniversity(null, 코펜하겐IT대학_지원_정보, testUser); + LikedUniversity likedUniversity1 = new LikedUniversity(null, universityInfoForApplyFixture.괌대학_A_지원_정보(), testUser); + LikedUniversity likedUniversity2 = new LikedUniversity(null, universityInfoForApplyFixture.메이지대학_지원_정보(), testUser); + LikedUniversity likedUniversity3 = new LikedUniversity(null, universityInfoForApplyFixture.코펜하겐IT대학_지원_정보(), testUser); likedUniversityRepository.save(likedUniversity1); likedUniversityRepository.save(likedUniversity2); 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 6c9736198..d4ab2f27c 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java @@ -2,10 +2,8 @@ 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.PreparationStatus; -import com.example.solidconnection.type.Role; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; +import com.example.solidconnection.support.TestContainerSpringBootTest; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; @@ -14,20 +12,21 @@ import static org.assertj.core.api.Assertions.assertThat; +@TestContainerSpringBootTest @DisplayName("유저 서비스 테스트") -class SiteUserServiceTest extends BaseIntegrationTest { +class SiteUserServiceTest { @Autowired private SiteUserService siteUserService; @Autowired - private SiteUserRepository siteUserRepository; + private SiteUserFixture siteUserFixture; - private SiteUser siteUser; + private SiteUser 테스트_유저; @BeforeEach void setUp() { - siteUser = createSiteUser(); + 테스트_유저 = siteUserFixture.테스트_유저(); } @Nested @@ -36,7 +35,7 @@ class 닉네임_중복_검사 { @Test void 존재하는_닉네임이면_true를_반환한다() { // when - NicknameExistsResponse response = siteUserService.checkNicknameExists(siteUser.getNickname()); + NicknameExistsResponse response = siteUserService.checkNicknameExists(테스트_유저.getNickname()); // then assertThat(response.exists()).isTrue(); @@ -51,15 +50,4 @@ class 닉네임_중복_검사 { assertThat(response.exists()).isFalse(); } } - - private SiteUser createSiteUser() { - SiteUser siteUser = new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } } From 82e812682d87a35f47edd13def8cfbeaa3ed32a7 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 13 May 2025 03:07:33 +0900 Subject: [PATCH 04/15] =?UTF-8?q?refactor:=20=EC=A0=90=EC=88=98=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20Fixture=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../score/service/ScoreServiceTest.java | 57 ++++++++----------- 1 file changed, 23 insertions(+), 34 deletions(-) diff --git a/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java b/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java index a8b1ac3d8..b4ca53d0e 100644 --- a/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java @@ -15,13 +15,13 @@ import com.example.solidconnection.score.repository.GpaScoreRepository; import com.example.solidconnection.score.repository.LanguageTestScoreRepository; import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.support.integration.BaseIntegrationTest; import com.example.solidconnection.type.ImgType; import com.example.solidconnection.type.LanguageTestType; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import com.example.solidconnection.type.VerifyStatus; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -52,17 +52,26 @@ class ScoreServiceTest extends BaseIntegrationTest { @MockBean private S3Service s3Service; + @Autowired + private SiteUserFixture siteUserFixture; + + private SiteUser 테스트_유저; + + @BeforeEach + void setUp() { + 테스트_유저 = siteUserFixture.테스트_유저(); + } + @Test void GPA_점수_상태를_조회한다() { // given - SiteUser testUser = createSiteUser(); List scores = List.of( - createGpaScore(testUser, 3.5, 4.5), - createGpaScore(testUser, 3.8, 4.5) + createGpaScore(테스트_유저, 3.5, 4.5), + createGpaScore(테스트_유저, 3.8, 4.5) ); // when - GpaScoreStatusesResponse response = scoreService.getGpaScoreStatus(testUser); + GpaScoreStatusesResponse response = scoreService.getGpaScoreStatus(테스트_유저); // then assertThat(response.gpaScoreStatusResponseList()) @@ -76,11 +85,8 @@ class ScoreServiceTest extends BaseIntegrationTest { @Test void GPA_점수가_없는_경우_빈_리스트를_반환한다() { - // given - SiteUser testUser = createSiteUser(); - // when - GpaScoreStatusesResponse response = scoreService.getGpaScoreStatus(testUser); + GpaScoreStatusesResponse response = scoreService.getGpaScoreStatus(테스트_유저); // then assertThat(response.gpaScoreStatusResponseList()).isEmpty(); @@ -89,15 +95,14 @@ class ScoreServiceTest extends BaseIntegrationTest { @Test void 어학_시험_점수_상태를_조회한다() { // given - SiteUser testUser = createSiteUser(); List scores = List.of( - createLanguageTestScore(testUser, LanguageTestType.TOEIC, "100"), - createLanguageTestScore(testUser, LanguageTestType.TOEFL_IBT, "7.5") + createLanguageTestScore(테스트_유저, LanguageTestType.TOEIC, "100"), + createLanguageTestScore(테스트_유저, LanguageTestType.TOEFL_IBT, "7.5") ); - siteUserRepository.save(testUser); + siteUserRepository.save(테스트_유저); // when - LanguageTestScoreStatusesResponse response = scoreService.getLanguageTestScoreStatus(testUser); + LanguageTestScoreStatusesResponse response = scoreService.getLanguageTestScoreStatus(테스트_유저); // then assertThat(response.languageTestScoreStatusResponseList()) @@ -111,11 +116,8 @@ class ScoreServiceTest extends BaseIntegrationTest { @Test void 어학_시험_점수가_없는_경우_빈_리스트를_반환한다() { - // given - SiteUser testUser = createSiteUser(); - // when - LanguageTestScoreStatusesResponse response = scoreService.getLanguageTestScoreStatus(testUser); + LanguageTestScoreStatusesResponse response = scoreService.getLanguageTestScoreStatus(테스트_유저); // then assertThat(response.languageTestScoreStatusResponseList()).isEmpty(); @@ -124,14 +126,13 @@ class ScoreServiceTest extends BaseIntegrationTest { @Test void GPA_점수를_등록한다() { // given - SiteUser testUser = createSiteUser(); GpaScoreRequest request = createGpaScoreRequest(); MockMultipartFile file = createFile(); String fileUrl = "/gpa-report.pdf"; given(s3Service.uploadFile(file, ImgType.GPA)).willReturn(new UploadedFileUrlResponse(fileUrl)); // when - long scoreId = scoreService.submitGpaScore(testUser, request, file); + long scoreId = scoreService.submitGpaScore(테스트_유저, request, file); GpaScore savedScore = gpaScoreRepository.findById(scoreId).orElseThrow(); // then @@ -147,14 +148,13 @@ class ScoreServiceTest extends BaseIntegrationTest { @Test void 어학_시험_점수를_등록한다() { // given - SiteUser testUser = createSiteUser(); LanguageTestScoreRequest request = createLanguageTestScoreRequest(); MockMultipartFile file = createFile(); String fileUrl = "/gpa-report.pdf"; given(s3Service.uploadFile(file, ImgType.LANGUAGE_TEST)).willReturn(new UploadedFileUrlResponse(fileUrl)); // when - long scoreId = scoreService.submitLanguageTestScore(testUser, request, file); + long scoreId = scoreService.submitLanguageTestScore(테스트_유저, request, file); LanguageTestScore savedScore = languageTestScoreRepository.findById(scoreId).orElseThrow(); // then @@ -167,17 +167,6 @@ class ScoreServiceTest extends BaseIntegrationTest { ); } - private SiteUser createSiteUser() { - SiteUser siteUser = new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } - private GpaScore createGpaScore(SiteUser siteUser, double gpa, double gpaCriteria) { GpaScore gpaScore = new GpaScore( new Gpa(gpa, gpaCriteria, "/gpa-report.pdf"), From 0e6c5855bdca3c1aceff984bbd1a5d88bb8cb881 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 13 May 2025 03:09:04 +0900 Subject: [PATCH 05/15] =?UTF-8?q?refactor:=20=EB=8F=99=EC=8B=9C=EC=84=B1?= =?UTF-8?q?=20=EA=B4=80=EB=A0=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20Fixture=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../PostLikeCountConcurrencyTest.java | 27 +++++------ .../PostViewCountConcurrencyTest.java | 48 ++++++++----------- .../concurrency/ThunderingHerdTest.java | 33 +++++-------- 3 files changed, 43 insertions(+), 65 deletions(-) diff --git a/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java b/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java index fdcf0ec8d..9e3c3eb9c 100644 --- a/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java @@ -6,11 +6,10 @@ import com.example.solidconnection.community.post.repository.PostRepository; import com.example.solidconnection.community.post.service.PostLikeService; import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.type.PostCategory; -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.Test; @@ -31,43 +30,39 @@ class PostLikeCountConcurrencyTest { @Autowired private PostLikeService postLikeService; + @Autowired private PostRepository postRepository; + @Autowired private BoardRepository boardRepository; + @Autowired private SiteUserRepository siteUserRepository; + @Autowired + private SiteUserFixture siteUserFixture; + @Value("${view.count.scheduling.delay}") private int SCHEDULING_DELAY_MS; + private int THREAD_NUMS = 1000; private int THREAD_POOL_SIZE = 200; private int TIMEOUT_SECONDS = 10; private Post post; private Board board; - private SiteUser siteUser; + private SiteUser 테스트_유저; @BeforeEach void setUp() { board = createBoard(); boardRepository.save(board); - siteUser = createSiteUser(); - siteUserRepository.save(siteUser); - post = createPost(board, siteUser); + 테스트_유저 = siteUserFixture.테스트_유저(); + post = createPost(board, 테스트_유저); postRepository.save(post); } - private SiteUser createSiteUser() { - return new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - } - private Board createBoard() { return new Board( "FREE", "자유게시판"); diff --git a/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java b/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java index beeb8b046..74746e92c 100644 --- a/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java @@ -6,11 +6,9 @@ import com.example.solidconnection.community.post.repository.PostRepository; import com.example.solidconnection.service.RedisService; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.type.PostCategory; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import com.example.solidconnection.util.RedisUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -23,54 +21,48 @@ import java.util.concurrent.Executors; import java.util.concurrent.TimeUnit; -import static com.example.solidconnection.type.RedisConstants.*; +import static com.example.solidconnection.type.RedisConstants.VALIDATE_VIEW_COUNT_TTL; import static org.junit.jupiter.api.Assertions.assertEquals; @TestContainerSpringBootTest @DisplayName("게시글 조회수 동시성 테스트") -public class PostViewCountConcurrencyTest { +class PostViewCountConcurrencyTest { @Autowired private RedisService redisService; + @Autowired private PostRepository postRepository; + @Autowired private BoardRepository boardRepository; - @Autowired - private SiteUserRepository siteUserRepository; + @Autowired private RedisUtils redisUtils; + @Autowired + private SiteUserFixture siteUserFixture; + @Value("${view.count.scheduling.delay}") private int SCHEDULING_DELAY_MS; + private int THREAD_NUMS = 1000; private int THREAD_POOL_SIZE = 200; private int TIMEOUT_SECONDS = 10; private Post post; private Board board; - private SiteUser siteUser; + private SiteUser 테스트_유저; @BeforeEach - public void setUp() { + void setUp() { board = createBoard(); boardRepository.save(board); - siteUser = createSiteUser(); - siteUserRepository.save(siteUser); - post = createPost(board, siteUser); + 테스트_유저 = siteUserFixture.테스트_유저(); + post = createPost(board, 테스트_유저); postRepository.save(post); } - private SiteUser createSiteUser() { - return new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - } - private Board createBoard() { return new Board( "FREE", "자유게시판"); @@ -91,9 +83,9 @@ private Post createPost(Board board, SiteUser siteUser) { } @Test - public void 게시글을_조회할_때_조회수_동시성_문제를_해결한다() throws InterruptedException { + void 게시글을_조회할_때_조회수_동시성_문제를_해결한다() throws InterruptedException { - redisService.deleteKey(redisUtils.getValidatePostViewCountRedisKey(siteUser.getId(), post.getId())); + redisService.deleteKey(redisUtils.getValidatePostViewCountRedisKey(테스트_유저.getId(), post.getId())); ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE); CountDownLatch doneSignal = new CountDownLatch(THREAD_NUMS); @@ -121,9 +113,9 @@ private Post createPost(Board board, SiteUser siteUser) { } @Test - public void 게시글을_조회할_때_조회수_조작_문제를_해결한다() throws InterruptedException { + void 게시글을_조회할_때_조회수_조작_문제를_해결한다() throws InterruptedException { - redisService.deleteKey(redisUtils.getValidatePostViewCountRedisKey(siteUser.getId(), post.getId())); + redisService.deleteKey(redisUtils.getValidatePostViewCountRedisKey(테스트_유저.getId(), post.getId())); ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE); CountDownLatch doneSignal = new CountDownLatch(THREAD_NUMS); @@ -131,7 +123,7 @@ private Post createPost(Board board, SiteUser siteUser) { for (int i = 0; i < THREAD_NUMS; i++) { executorService.submit(() -> { try { - boolean isFirstTime = redisService.isPresent(redisUtils.getValidatePostViewCountRedisKey(siteUser.getId(), post.getId())); + boolean isFirstTime = redisService.isPresent(redisUtils.getValidatePostViewCountRedisKey(테스트_유저.getId(), post.getId())); if (isFirstTime) { redisService.increaseViewCount(redisUtils.getPostViewCountRedisKey(post.getId())); } @@ -144,7 +136,7 @@ private Post createPost(Board board, SiteUser siteUser) { for (int i = 0; i < THREAD_NUMS; i++) { executorService.submit(() -> { try { - boolean isFirstTime = redisService.isPresent(redisUtils.getValidatePostViewCountRedisKey(siteUser.getId(), post.getId())); + boolean isFirstTime = redisService.isPresent(redisUtils.getValidatePostViewCountRedisKey(테스트_유저.getId(), post.getId())); if (isFirstTime) { redisService.increaseViewCount(redisUtils.getPostViewCountRedisKey(post.getId())); } diff --git a/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java b/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java index 4800a0153..d5c2fb327 100644 --- a/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java @@ -2,10 +2,8 @@ import com.example.solidconnection.application.service.ApplicationQueryService; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -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.Test; @@ -22,32 +20,25 @@ @TestContainerSpringBootTest @DisplayName("ThunderingHerd 테스트") -public class ThunderingHerdTest { +class ThunderingHerdTest { + @Autowired private ApplicationQueryService applicationQueryService; + @Autowired private RedisTemplate redisTemplate; + @Autowired - private SiteUserRepository siteUserRepository; + private SiteUserFixture siteUserFixture; + private int THREAD_NUMS = 1000; private int THREAD_POOL_SIZE = 200; private int TIMEOUT_SECONDS = 10; - private SiteUser siteUser; + private SiteUser 테스트_유저; @BeforeEach public void setUp() { - siteUser = createSiteUser(); - siteUserRepository.save(siteUser); - } - - private SiteUser createSiteUser() { - return new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); + 테스트_유저 = siteUserFixture.테스트_유저(); } @Test @@ -63,9 +54,9 @@ private SiteUser createSiteUser() { executorService.submit(() -> { try { List tasks = Arrays.asList( - () -> applicationQueryService.getApplicants(siteUser, "", ""), - () -> applicationQueryService.getApplicants(siteUser, "ASIA", ""), - () -> applicationQueryService.getApplicants(siteUser, "", "추오") + () -> applicationQueryService.getApplicants(테스트_유저, "", ""), + () -> applicationQueryService.getApplicants(테스트_유저, "ASIA", ""), + () -> applicationQueryService.getApplicants(테스트_유저, "", "추오") ); Collections.shuffle(tasks); tasks.forEach(Runnable::run); From 6e13ea6cb4319bac6a6fc7b355bd94063b080b61 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 13 May 2025 03:10:21 +0900 Subject: [PATCH 06/15] =?UTF-8?q?refactor:=20=EC=9D=B8=EC=A6=9D=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20Fixture=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../auth/service/AuthServiceTest.java | 27 ++++---------- .../auth/service/EmailSignInServiceTest.java | 30 ++------------- .../auth/service/SignInServiceTest.java | 37 +++++-------------- 3 files changed, 21 insertions(+), 73 deletions(-) diff --git a/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java index 18c7c4ef0..2c9050a50 100644 --- a/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java @@ -5,10 +5,8 @@ import com.example.solidconnection.auth.dto.ReissueResponse; import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -33,10 +31,10 @@ class AuthServiceTest { private AuthTokenProvider authTokenProvider; @Autowired - private SiteUserRepository siteUserRepository; + private RedisTemplate redisTemplate; @Autowired - private RedisTemplate redisTemplate; + private SiteUserFixture siteUserFixture; @Test void 로그아웃한다() { @@ -58,18 +56,18 @@ class AuthServiceTest { @Test void 탈퇴한다() { // given - SiteUser siteUser = createSiteUser(); - Subject subject = authTokenProvider.toSubject(siteUser); + SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); + Subject subject = authTokenProvider.toSubject(테스트_유저); AccessToken accessToken = authTokenProvider.generateAccessToken(subject); // todo: #296 // when - authService.quit(siteUser, accessToken.token()); + authService.quit(테스트_유저, accessToken.token()); // then LocalDate tomorrow = LocalDate.now().plusDays(1); String refreshTokenKey = TokenType.REFRESH.addPrefix(subject.value()); assertAll( - () -> assertThat(siteUser.getQuitedAt()).isEqualTo(tomorrow), + () -> assertThat(테스트_유저.getQuitedAt()).isEqualTo(tomorrow), () -> assertThat(redisTemplate.opsForValue().get(refreshTokenKey)).isNull(), () -> assertThat(authTokenProvider.isTokenBlacklisted(accessToken.token())).isTrue() ); @@ -105,15 +103,4 @@ class 토큰을_재발급한다 { .hasMessage(REFRESH_TOKEN_EXPIRED.getMessage()); } } - - private SiteUser createSiteUser() { - SiteUser siteUser = new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } } diff --git a/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java index 5a32ef362..c83a95b77 100644 --- a/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java @@ -4,18 +4,14 @@ import com.example.solidconnection.auth.dto.SignInResponse; import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.custom.exception.ErrorCode; -import com.example.solidconnection.siteuser.domain.AuthType; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import org.assertj.core.api.Assertions; 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 org.springframework.security.crypto.password.PasswordEncoder; import static org.assertj.core.api.Assertions.assertThatCode; import static org.junit.jupiter.api.Assertions.assertAll; @@ -28,18 +24,14 @@ class EmailSignInServiceTest { private EmailSignInService emailSignInService; @Autowired - private SiteUserRepository siteUserRepository; - - @Autowired - private PasswordEncoder passwordEncoder; + private SiteUserFixture siteUserFixture; @Test void 로그인에_성공한다() { // given String email = "testEmail"; String rawPassword = "testPassword"; - SiteUser siteUser = createSiteUser(email, rawPassword); - siteUserRepository.save(siteUser); + SiteUser siteUser = siteUserFixture.테스트_유저(email, rawPassword); EmailSignInRequest signInRequest = new EmailSignInRequest(siteUser.getEmail(), rawPassword); // when @@ -70,8 +62,7 @@ class 로그인에_실패한다 { void 비밀번호가_일치하지_않으면_예외_응답을_반환한다() { // given String email = "testEmail"; - SiteUser siteUser = createSiteUser(email, "testPassword"); - siteUserRepository.save(siteUser); + siteUserFixture.테스트_유저(email, "testPassword"); EmailSignInRequest signInRequest = new EmailSignInRequest(email, "틀린비밀번호"); // when & then @@ -80,17 +71,4 @@ class 로그인에_실패한다 { .hasMessageContaining(ErrorCode.USER_NOT_FOUND.getMessage()); } } - - private SiteUser createSiteUser(String email, String rawPassword) { - String encodedPassword = passwordEncoder.encode(rawPassword); - return new SiteUser( - email, - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE, - AuthType.EMAIL, - encodedPassword - ); - } } diff --git a/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java index e40f20b7a..f71f1f1da 100644 --- a/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java @@ -4,10 +4,8 @@ import com.example.solidconnection.auth.dto.SignInResponse; import com.example.solidconnection.config.security.JwtProperties; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import com.example.solidconnection.util.JwtUtils; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -31,28 +29,24 @@ class SignInServiceTest { private JwtProperties jwtProperties; @Autowired - private AuthTokenProvider authTokenProvider; - - @Autowired - private SiteUserRepository siteUserRepository; + private RedisTemplate redisTemplate; @Autowired - private RedisTemplate redisTemplate; + private SiteUserFixture siteUserFixture; - private SiteUser siteUser; + private SiteUser 테스트_유저; private String subject; @BeforeEach void setUp() { - siteUser = createSiteUser(); - siteUserRepository.save(siteUser); - subject = siteUser.getId().toString(); + 테스트_유저 = siteUserFixture.테스트_유저(); + subject = 테스트_유저.getId().toString(); } @Test void 성공적으로_로그인한다() { // when - SignInResponse signInResponse = signInService.signIn(siteUser); + SignInResponse signInResponse = signInService.signIn(테스트_유저); // then String accessTokenSubject = JwtUtils.parseSubject(signInResponse.accessToken(), jwtProperties.secret()); @@ -67,23 +61,12 @@ void setUp() { @Test void 탈퇴한_이력이_있으면_초기화한다() { // given - siteUser.setQuitedAt(LocalDate.now().minusDays(1)); - siteUserRepository.save(siteUser); + 테스트_유저.setQuitedAt(LocalDate.now().minusDays(1)); // when - signInService.signIn(siteUser); + signInService.signIn(테스트_유저); // then - assertThat(siteUser.getQuitedAt()).isNull(); - } - - private SiteUser createSiteUser() { - return new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); + assertThat(테스트_유저.getQuitedAt()).isNull(); } } From 64627fd6f0d1dbf9ba2e1b476355f0e0bfa37308 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 13 May 2025 03:11:12 +0900 Subject: [PATCH 07/15] =?UTF-8?q?refactor:=20=EC=96=B4=EB=93=9C=EB=AF=BC?= =?UTF-8?q?=20=EA=B4=80=EB=A0=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20Fixture=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/AdminGpaScoreServiceTest.java | 34 +++++-------------- .../AdminLanguageTestScoreServiceTest.java | 34 +++++-------------- 2 files changed, 18 insertions(+), 50 deletions(-) diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java index add4115ef..5da233a2f 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java @@ -9,10 +9,8 @@ import com.example.solidconnection.score.domain.GpaScore; import com.example.solidconnection.score.repository.GpaScoreRepository; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.integration.BaseIntegrationTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import com.example.solidconnection.type.VerifyStatus; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -38,26 +36,23 @@ class AdminGpaScoreServiceTest extends BaseIntegrationTest { private AdminGpaScoreService adminGpaScoreService; @Autowired - private SiteUserRepository siteUserRepository; + private GpaScoreRepository gpaScoreRepository; @Autowired - private GpaScoreRepository gpaScoreRepository; + private SiteUserFixture siteUserFixture; - private SiteUser siteUser1; - private SiteUser siteUser2; - private SiteUser siteUser3; private GpaScore gpaScore1; private GpaScore gpaScore2; private GpaScore gpaScore3; @BeforeEach void setUp() { - siteUser1 = createSiteUser(1, "test1"); - siteUser2 = createSiteUser(2, "test2"); - siteUser3 = createSiteUser(3, "test3"); - gpaScore3 = createGpaScore(siteUser3, VerifyStatus.REJECTED); - gpaScore2 = createGpaScore(siteUser2, VerifyStatus.PENDING); - gpaScore1 = createGpaScore(siteUser1, VerifyStatus.PENDING); + SiteUser 테스트_유저_1 = siteUserFixture.테스트_유저(1, "test1"); + SiteUser 테스트_유저_2 = siteUserFixture.테스트_유저(2, "test2"); + SiteUser 테스트_유저_3 = siteUserFixture.테스트_유저(3, "test3"); + gpaScore3 = createGpaScore(테스트_유저_3, VerifyStatus.REJECTED); + gpaScore2 = createGpaScore(테스트_유저_2, VerifyStatus.PENDING); + gpaScore1 = createGpaScore(테스트_유저_1, VerifyStatus.PENDING); } @Nested @@ -209,17 +204,6 @@ class GPA_점수_검증_및_수정 { } } - private SiteUser createSiteUser(int index, String nickname) { - SiteUser siteUser = new SiteUser( - "test" + index + " @example.com", - nickname, - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } - private GpaScore createGpaScore(SiteUser siteUser, VerifyStatus status) { GpaScore gpaScore = new GpaScore( new Gpa(4.0, 4.5, "/gpa-report.pdf"), diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java index a3d00457e..17691e703 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java @@ -9,10 +9,8 @@ import com.example.solidconnection.score.domain.LanguageTestScore; import com.example.solidconnection.score.repository.LanguageTestScoreRepository; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.integration.BaseIntegrationTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import com.example.solidconnection.type.VerifyStatus; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; @@ -39,26 +37,23 @@ class AdminLanguageTestScoreServiceTest extends BaseIntegrationTest { private AdminLanguageTestScoreService adminLanguageTestScoreService; @Autowired - private SiteUserRepository siteUserRepository; + private LanguageTestScoreRepository languageTestScoreRepository; @Autowired - private LanguageTestScoreRepository languageTestScoreRepository; + private SiteUserFixture siteUserFixture; - private SiteUser siteUser1; - private SiteUser siteUser2; - private SiteUser siteUser3; private LanguageTestScore languageTestScore1; private LanguageTestScore languageTestScore2; private LanguageTestScore languageTestScore3; @BeforeEach void setUp() { - siteUser1 = createSiteUser(1, "test1"); - siteUser2 = createSiteUser(2, "test2"); - siteUser3 = createSiteUser(3, "test3"); - languageTestScore3 = createLanguageTestScore(siteUser3, VerifyStatus.REJECTED); - languageTestScore2 = createLanguageTestScore(siteUser2, VerifyStatus.PENDING); - languageTestScore1 = createLanguageTestScore(siteUser1, VerifyStatus.PENDING); + SiteUser 테스트_유저_1 = siteUserFixture.테스트_유저(1, "test1"); + SiteUser 테스트_유저_2 = siteUserFixture.테스트_유저(2, "test2"); + SiteUser 테스트_유저_3 = siteUserFixture.테스트_유저(3, "test3"); + languageTestScore3 = createLanguageTestScore(테스트_유저_3, VerifyStatus.REJECTED); + languageTestScore2 = createLanguageTestScore(테스트_유저_2, VerifyStatus.PENDING); + languageTestScore1 = createLanguageTestScore(테스트_유저_1, VerifyStatus.PENDING); } @Nested @@ -219,17 +214,6 @@ class 어학점수_검증_및_수정 { } } - private SiteUser createSiteUser(int index, String nickname) { - SiteUser siteUser = new SiteUser( - "test" + index + " @example.com", - nickname, - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } - private LanguageTestScore createLanguageTestScore(SiteUser siteUser, VerifyStatus status) { LanguageTestScore languageTestScore = new LanguageTestScore( new LanguageTest(TOEIC, "500", "/toeic-report.pdf"), From 94037f54d0049dc2331a47bc75de594a77928b85 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 13 May 2025 03:12:42 +0900 Subject: [PATCH 08/15] =?UTF-8?q?refactor:=20=EC=BB=A4=EC=8A=A4=ED=85=80?= =?UTF-8?q?=20=EA=B4=80=EB=A0=A8=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=9C=A0?= =?UTF-8?q?=EC=A0=80=20=EB=8D=B0=EC=9D=B4=ED=84=B0=20Fixture=20=EB=A9=94?= =?UTF-8?q?=EC=84=9C=EB=93=9C=EB=A1=9C=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../resolver/AuthorizedUserResolverTest.java | 24 +++----------- .../aspect/AdminAuthorizationAspectTest.java | 32 +++++++------------ .../SiteUserAuthenticationProviderTest.java | 27 ++++------------ .../SiteUserDetailsServiceTest.java | 30 +++++++---------- .../userdetails/SiteUserDetailsTest.java | 22 +++---------- 5 files changed, 40 insertions(+), 95 deletions(-) diff --git a/src/test/java/com/example/solidconnection/custom/resolver/AuthorizedUserResolverTest.java b/src/test/java/com/example/solidconnection/custom/resolver/AuthorizedUserResolverTest.java index b517681aa..ac230f9a0 100644 --- a/src/test/java/com/example/solidconnection/custom/resolver/AuthorizedUserResolverTest.java +++ b/src/test/java/com/example/solidconnection/custom/resolver/AuthorizedUserResolverTest.java @@ -1,14 +1,11 @@ package com.example.solidconnection.custom.resolver; - import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.custom.security.authentication.SiteUserAuthentication; import com.example.solidconnection.custom.security.userdetails.SiteUserDetails; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -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; @@ -32,7 +29,7 @@ class AuthorizedUserResolverTest { private AuthorizedUserResolver authorizedUserResolver; @Autowired - private SiteUserRepository siteUserRepository; + private SiteUserFixture siteUserFixture; @BeforeEach void setUp() { @@ -42,8 +39,8 @@ void setUp() { @Test void security_context_에_저장된_인증된_사용자를_반환한다() { // given - SiteUser siteUser = createAndSaveSiteUser(); - Authentication authentication = createAuthenticationWithUser(siteUser); + SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); + Authentication authentication = createAuthenticationWithUser(테스트_유저); SecurityContextHolder.getContext().setAuthentication(authentication); MethodParameter parameter = mock(MethodParameter.class); @@ -55,7 +52,7 @@ void setUp() { SiteUser resolveSiteUser = (SiteUser) authorizedUserResolver.resolveArgument(parameter, null, null, null); // then - assertThat(resolveSiteUser).isEqualTo(siteUser); + assertThat(resolveSiteUser).isEqualTo(테스트_유저); } @Nested @@ -90,17 +87,6 @@ class security_context_에_저장된_사용자가_없는_경우 { } } - private SiteUser createAndSaveSiteUser() { - SiteUser siteUser = new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - return siteUserRepository.save(siteUser); - } - private SiteUserAuthentication createAuthenticationWithUser(SiteUser siteUser) { SiteUserDetails userDetails = new SiteUserDetails(siteUser); return new SiteUserAuthentication("token", userDetails); diff --git a/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java b/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java index 0104c9ccd..911b21fd1 100644 --- a/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java +++ b/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java @@ -3,9 +3,8 @@ import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.custom.security.annotation.RequireAdminAccess; import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -24,13 +23,16 @@ class AdminAuthorizationAspectTest { @Autowired private TestService testService; + @Autowired + private SiteUserFixture siteUserFixture; + @Test void 어드민_사용자는_어드민_전용_메소드에_접근할_수_있다() { // given - SiteUser adminUser = createSiteUser(Role.ADMIN); + SiteUser 테스트_어드민 = siteUserFixture.테스트_어드민(); // when - boolean response = testService.adminOnlyMethod(adminUser); + boolean response = testService.adminOnlyMethod(테스트_어드민); // then assertThat(response).isTrue(); @@ -39,10 +41,10 @@ class AdminAuthorizationAspectTest { @Test void 일반_사용자가_어드민_전용_메소드에_접근하면_예외_응답을_반환한다() { // given - SiteUser mentorUser = createSiteUser(Role.MENTOR); + SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); // when & then - assertThatCode(() -> testService.adminOnlyMethod(mentorUser)) + assertThatCode(() -> testService.adminOnlyMethod(테스트_유저)) .isInstanceOf(CustomException.class) .hasMessage(ACCESS_DENIED.getMessage()); } @@ -50,28 +52,18 @@ class AdminAuthorizationAspectTest { @Test void 어드민_어노테이션이_없는_메소드는_모두_접근_가능하다() { // given - SiteUser menteeUser = createSiteUser(Role.MENTEE); - SiteUser adminUser = createSiteUser(Role.ADMIN); + SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); + SiteUser 테스트_어드민 = siteUserFixture.테스트_어드민(); // when - boolean menteeResponse = testService.publicMethod(menteeUser); - boolean adminResponse = testService.publicMethod(adminUser); + boolean menteeResponse = testService.publicMethod(테스트_유저); + boolean adminResponse = testService.publicMethod(테스트_어드민); // then assertThat(menteeResponse).isTrue(); assertThat(adminResponse).isTrue(); } - private SiteUser createSiteUser(Role role) { - return new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - role - ); - } - @TestConfiguration static class TestConfig { diff --git a/src/test/java/com/example/solidconnection/custom/security/provider/SiteUserAuthenticationProviderTest.java b/src/test/java/com/example/solidconnection/custom/security/provider/SiteUserAuthenticationProviderTest.java index 423bec415..76a0db5f4 100644 --- a/src/test/java/com/example/solidconnection/custom/security/provider/SiteUserAuthenticationProviderTest.java +++ b/src/test/java/com/example/solidconnection/custom/security/provider/SiteUserAuthenticationProviderTest.java @@ -5,10 +5,8 @@ import com.example.solidconnection.custom.security.authentication.SiteUserAuthentication; import com.example.solidconnection.custom.security.userdetails.SiteUserDetails; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import io.jsonwebtoken.Jwts; import io.jsonwebtoken.SignatureAlgorithm; import org.junit.jupiter.api.BeforeEach; @@ -38,14 +36,13 @@ class SiteUserAuthenticationProviderTest { private JwtProperties jwtProperties; @Autowired - private SiteUserRepository siteUserRepository; + private SiteUserFixture siteUserFixture; - private SiteUser siteUser; + private SiteUser 테스트_유저; @BeforeEach void setUp() { - siteUser = createSiteUser(); - siteUserRepository.save(siteUser); + 테스트_유저 = siteUserFixture.테스트_유저(); } @Test @@ -64,7 +61,7 @@ void setUp() { @Test void 유효한_토큰이면_정상적으로_인증_정보를_반환한다() { // given - String token = createValidToken(siteUser.getId()); + String token = createValidToken(테스트_유저.getId()); SiteUserAuthentication auth = new SiteUserAuthentication(token); // when @@ -106,7 +103,7 @@ class 예외_응답을_반환하다 { @Test void 유효한_토큰이지만_해당되는_사용자가_없으면_예외_응답을_반환한다() { // given - long notExistingUserId = siteUser.getId() + 100; + long notExistingUserId = 테스트_유저.getId() + 100; String token = createValidToken(notExistingUserId); SiteUserAuthentication auth = new SiteUserAuthentication(token); @@ -128,7 +125,7 @@ private String createValidToken(long id) { private String createExpiredToken() { return Jwts.builder() - .setSubject(String.valueOf(siteUser.getId())) + .setSubject(String.valueOf(테스트_유저.getId())) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() - 1000)) .signWith(SignatureAlgorithm.HS256, jwtProperties.secret()) @@ -143,14 +140,4 @@ private String createWrongSubjectTypeToken() { .signWith(SignatureAlgorithm.HS256, jwtProperties.secret()) .compact(); } - - private SiteUser createSiteUser() { - return new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - } } diff --git a/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsServiceTest.java b/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsServiceTest.java index 0b2a0db73..75eeeafad 100644 --- a/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsServiceTest.java +++ b/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsServiceTest.java @@ -2,10 +2,9 @@ import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -26,14 +25,17 @@ class SiteUserDetailsServiceTest { @Autowired private SiteUserDetailsService userDetailsService; + @Autowired + private SiteUserFixture siteUserFixture; + @Autowired private SiteUserRepository siteUserRepository; @Test void 사용자_인증_정보를_반환한다() { // given - SiteUser siteUser = siteUserRepository.save(createSiteUser()); - String username = getUserName(siteUser); + SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); + String username = getUserName(테스트_유저); // when SiteUserDetails userDetails = (SiteUserDetails) userDetailsService.loadUserByUsername(username); @@ -41,7 +43,7 @@ class SiteUserDetailsServiceTest { // then assertAll( () -> assertThat(userDetails.getUsername()).isEqualTo(username), - () -> assertThat(userDetails.getSiteUser()).extracting("id").isEqualTo(siteUser.getId()) + () -> assertThat(userDetails.getSiteUser()).extracting("id").isEqualTo(테스트_유저.getId()) ); } @@ -73,10 +75,10 @@ class 예외_응답을_반환한다 { @Test void 탈퇴한_사용자이면_예외_응답을_반환한다() { // given - SiteUser siteUser = createSiteUser(); - siteUser.setQuitedAt(LocalDate.now()); - siteUserRepository.save(siteUser); - String username = getUserName(siteUser); + SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); + 테스트_유저.setQuitedAt(LocalDate.now()); + siteUserRepository.save(테스트_유저); + String username = getUserName(테스트_유저); // when & then assertThatCode(() -> userDetailsService.loadUserByUsername(username)) @@ -85,16 +87,6 @@ class 예외_응답을_반환한다 { } } - private SiteUser createSiteUser() { - return new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); - } - private String getUserName(SiteUser siteUser) { return siteUser.getId().toString(); } diff --git a/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsTest.java b/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsTest.java index b49b9cf27..86cd0506b 100644 --- a/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsTest.java +++ b/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsTest.java @@ -1,10 +1,8 @@ package com.example.solidconnection.custom.security.userdetails; import com.example.solidconnection.siteuser.domain.SiteUser; -import com.example.solidconnection.siteuser.repository.SiteUserRepository; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.TestContainerSpringBootTest; -import com.example.solidconnection.type.PreparationStatus; -import com.example.solidconnection.type.Role; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -19,13 +17,13 @@ class SiteUserDetailsTest { @Autowired - private SiteUserRepository siteUserRepository; + private SiteUserFixture siteUserFixture; @Test void 사용자_권한을_정상적으로_반환한다() { // given - SiteUser siteUser = siteUserRepository.save(createSiteUser()); - SiteUserDetails siteUserDetails = new SiteUserDetails(siteUser); + SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); + SiteUserDetails siteUserDetails = new SiteUserDetails(테스트_유저); // when Collection authorities = siteUserDetails.getAuthorities(); @@ -33,16 +31,6 @@ class SiteUserDetailsTest { // then assertThat(authorities) .extracting("authority") - .containsExactly("ROLE_" + siteUser.getRole().name()); - } - - private SiteUser createSiteUser() { - return new SiteUser( - "test@example.com", - "nickname", - "profileImageUrl", - PreparationStatus.CONSIDERING, - Role.MENTEE - ); + .containsExactly("ROLE_" + 테스트_유저.getRole().name()); } } From 313cf655773862444d0fa075c138641202287bb7 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Tue, 13 May 2025 13:26:49 +0900 Subject: [PATCH 09/15] =?UTF-8?q?refactor:=20SiteUserFixtureBuilder?= =?UTF-8?q?=EC=97=90=EC=84=9C=20=EB=B9=84=EB=B0=80=EB=B2=88=ED=98=B8=20?= =?UTF-8?q?=EC=9D=B8=EC=BD=94=EB=94=A9=20=EC=B2=98=EB=A6=AC=20=ED=86=B5?= =?UTF-8?q?=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../solidconnection/siteuser/fixture/SiteUserFixture.java | 6 ++---- .../siteuser/fixture/SiteUserFixtureBuilder.java | 6 ++++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java index 98d5ee8a0..4b1ebd383 100644 --- a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java +++ b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java @@ -5,14 +5,12 @@ import com.example.solidconnection.type.Role; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; -import org.springframework.security.crypto.password.PasswordEncoder; @TestComponent @RequiredArgsConstructor public class SiteUserFixture { private final SiteUserFixtureBuilder siteUserFixtureBuilder; - private final PasswordEncoder passwordEncoder; public SiteUser 테스트_유저() { return siteUserFixtureBuilder.siteUser() @@ -27,7 +25,7 @@ public class SiteUserFixture { public SiteUser 테스트_유저(int index, String nickname) { return siteUserFixtureBuilder.siteUser() - .email("test" + index + " @example.com") + .email("test" + index + "@example.com") .authType(AuthType.EMAIL) .nickname(nickname) .profileImageUrl("profileImageUrl") @@ -54,7 +52,7 @@ public class SiteUserFixture { .nickname("테스트유저") .profileImageUrl("profileImageUrl") .role(Role.MENTEE) - .password(passwordEncoder.encode(password)) + .password(password) .create(); } diff --git a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixtureBuilder.java b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixtureBuilder.java index b510b263c..f0d8bd406 100644 --- a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixtureBuilder.java +++ b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixtureBuilder.java @@ -7,12 +7,14 @@ import com.example.solidconnection.type.Role; import lombok.RequiredArgsConstructor; import org.springframework.boot.test.context.TestComponent; +import org.springframework.security.crypto.password.PasswordEncoder; @TestComponent @RequiredArgsConstructor public class SiteUserFixtureBuilder { private final SiteUserRepository siteUserRepository; + private final PasswordEncoder passwordEncoder; private String email; private AuthType authType; @@ -22,7 +24,7 @@ public class SiteUserFixtureBuilder { private String password; public SiteUserFixtureBuilder siteUser() { - return new SiteUserFixtureBuilder(siteUserRepository); + return new SiteUserFixtureBuilder(siteUserRepository, passwordEncoder); } public SiteUserFixtureBuilder email(String email) { @@ -63,7 +65,7 @@ public SiteUser create() { PreparationStatus.CONSIDERING, role, authType, - password + passwordEncoder.encode(password) ); return siteUserRepository.save(siteUser); } From 05e97338c5b5b18a9105e2bd04ca1644656f44b0 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sun, 18 May 2025 12:19:15 +0900 Subject: [PATCH 10/15] =?UTF-8?q?refactor:=20=EC=9E=AC=EC=82=AC=EC=9A=A9?= =?UTF-8?q?=EC=84=B1=20=EC=97=86=EB=8A=94=20fixture=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../siteuser/fixture/SiteUserFixture.java | 22 ----------------- .../siteuser/service/MyPageServiceTest.java | 24 +++++++++++++++---- 2 files changed, 20 insertions(+), 26 deletions(-) diff --git a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java index 4b1ebd383..3e50bfb6c 100644 --- a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java +++ b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java @@ -56,28 +56,6 @@ public class SiteUserFixture { .create(); } - public SiteUser 중복_닉네임_테스트_유저() { - return siteUserFixtureBuilder.siteUser() - .email("duplicated@example.com") - .authType(AuthType.EMAIL) - .nickname("중복닉네임") - .profileImageUrl("profileImageUrl") - .role(Role.MENTEE) - .password("password123") - .create(); - } - - public SiteUser 커스텀_프로필_테스트_유저() { - return siteUserFixtureBuilder.siteUser() - .email("customProfile@example.com") - .authType(AuthType.EMAIL) - .nickname("커스텀프로필") - .profileImageUrl("profile/profileImageUrl") - .role(Role.MENTEE) - .password("customPassword123") - .create(); - } - public SiteUser 테스트_어드민() { return siteUserFixtureBuilder.siteUser() .email("admin@example.com") diff --git a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java index c919abd47..51324d9db 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java @@ -3,13 +3,16 @@ import com.example.solidconnection.custom.exception.CustomException; import com.example.solidconnection.s3.S3Service; import com.example.solidconnection.s3.UploadedFileUrlResponse; +import com.example.solidconnection.siteuser.domain.AuthType; import com.example.solidconnection.siteuser.domain.SiteUser; import com.example.solidconnection.siteuser.dto.MyPageResponse; import com.example.solidconnection.siteuser.fixture.SiteUserFixture; +import com.example.solidconnection.siteuser.fixture.SiteUserFixtureBuilder; import com.example.solidconnection.siteuser.repository.LikedUniversityRepository; import com.example.solidconnection.siteuser.repository.SiteUserRepository; import com.example.solidconnection.support.TestContainerSpringBootTest; import com.example.solidconnection.type.ImgType; +import com.example.solidconnection.type.Role; import com.example.solidconnection.university.domain.LikedUniversity; import com.example.solidconnection.university.dto.UniversityInfoForApplyPreviewResponse; import com.example.solidconnection.university.fixture.UniversityInfoForApplyFixture; @@ -59,6 +62,9 @@ class MyPageServiceTest { @Autowired private UniversityInfoForApplyFixture universityInfoForApplyFixture; + @Autowired + private SiteUserFixtureBuilder siteUserFixtureBuilder; + private SiteUser 테스트_유저; @BeforeEach @@ -132,7 +138,7 @@ class 프로필_이미지_수정_테스트 { @Test void 프로필을_처음_수정하는_것이_아니라면_이전_이미지를_삭제한다() { // given - SiteUser 커스텀_프로필_테스트_유저 = siteUserFixture.커스텀_프로필_테스트_유저(); + SiteUser 커스텀_프로필_테스트_유저 = createSiteUserWithCustomProfile(); MockMultipartFile imageFile = createValidImageFile(); given(s3Service.uploadFile(any(), eq(ImgType.PROFILE))) .willReturn(new UploadedFileUrlResponse("newProfileImageUrl")); @@ -172,11 +178,10 @@ void setUp() { @Test void 중복된_닉네임으로_변경하면_예외_응답을_반환한다() { // given - SiteUser 중복_닉네임_테스트_유저 = siteUserFixture.중복_닉네임_테스트_유저(); - MockMultipartFile imageFile = createValidImageFile(); + SiteUser existingUser = siteUserFixture.테스트_유저(1, "existing nickname"); // when & then - assertThatCode(() -> myPageService.updateMyPageInfo(테스트_유저, imageFile, 중복_닉네임_테스트_유저.getNickname())) + assertThatCode(() -> myPageService.updateMyPageInfo(테스트_유저, null, existingUser.getNickname())) .isInstanceOf(CustomException.class) .hasMessage(NICKNAME_ALREADY_EXISTED.getMessage()); } @@ -222,4 +227,15 @@ private String createExpectedErrorMessage(LocalDateTime modifiedAt) { ); return CAN_NOT_CHANGE_NICKNAME_YET.getMessage() + " : " + formatLastModifiedAt; } + + public SiteUser createSiteUserWithCustomProfile() { + return siteUserFixtureBuilder.siteUser() + .email("customProfile@example.com") + .authType(AuthType.EMAIL) + .nickname("커스텀프로필") + .profileImageUrl("profile/profileImageUrl") + .role(Role.MENTEE) + .password("customPassword123") + .create(); + } } From 86de87938afaa8f07389701a4609b94b92d24627 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sun, 18 May 2025 12:43:33 +0900 Subject: [PATCH 11/15] =?UTF-8?q?refactor:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=9C=A0=EC=A0=80=20=EB=A9=94=EC=84=9C=EB=93=9C=EB=AA=85=20?= =?UTF-8?q?=EC=82=AC=EC=9A=A9=EC=9E=90()=EB=A1=9C=20=ED=86=B5=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/AdminGpaScoreServiceTest.java | 12 ++--- .../AdminLanguageTestScoreServiceTest.java | 12 ++--- .../auth/service/AuthServiceTest.java | 8 +-- .../auth/service/EmailSignInServiceTest.java | 6 +-- .../auth/service/SignInServiceTest.java | 14 +++--- .../post/service/PostCommandServiceTest.java | 50 ++++++++++++------- .../post/service/PostLikeServiceTest.java | 36 ++++++++----- .../post/service/PostQueryServiceTest.java | 26 +++++++--- .../PostLikeCountConcurrencyTest.java | 6 +-- .../PostViewCountConcurrencyTest.java | 14 +++--- .../concurrency/ThunderingHerdTest.java | 10 ++-- .../resolver/AuthorizedUserResolverTest.java | 6 +-- .../aspect/AdminAuthorizationAspectTest.java | 8 +-- .../SiteUserAuthenticationProviderTest.java | 10 ++-- .../SiteUserDetailsServiceTest.java | 14 +++--- .../userdetails/SiteUserDetailsTest.java | 6 +-- .../score/service/ScoreServiceTest.java | 26 +++++----- .../siteuser/fixture/SiteUserFixture.java | 14 +++--- .../repository/SiteUserRepositoryTest.java | 8 +-- .../siteuser/service/MyPageServiceTest.java | 40 +++++++-------- .../siteuser/service/SiteUserServiceTest.java | 6 +-- .../service/UniversityLikeServiceTest.java | 30 +++++------ .../UniversityRecommendServiceTest.java | 20 ++++---- 23 files changed, 210 insertions(+), 172 deletions(-) diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java index 5da233a2f..fc7735d86 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java @@ -47,12 +47,12 @@ class AdminGpaScoreServiceTest extends BaseIntegrationTest { @BeforeEach void setUp() { - SiteUser 테스트_유저_1 = siteUserFixture.테스트_유저(1, "test1"); - SiteUser 테스트_유저_2 = siteUserFixture.테스트_유저(2, "test2"); - SiteUser 테스트_유저_3 = siteUserFixture.테스트_유저(3, "test3"); - gpaScore3 = createGpaScore(테스트_유저_3, VerifyStatus.REJECTED); - gpaScore2 = createGpaScore(테스트_유저_2, VerifyStatus.PENDING); - gpaScore1 = createGpaScore(테스트_유저_1, VerifyStatus.PENDING); + SiteUser user1 = siteUserFixture.사용자(1, "test1"); + SiteUser user2 = siteUserFixture.사용자(2, "test2"); + SiteUser user3 = siteUserFixture.사용자(3, "test3"); + gpaScore3 = createGpaScore(user3, VerifyStatus.REJECTED); + gpaScore2 = createGpaScore(user2, VerifyStatus.PENDING); + gpaScore1 = createGpaScore(user1, VerifyStatus.PENDING); } @Nested diff --git a/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java b/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java index 17691e703..edf34670b 100644 --- a/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java @@ -48,12 +48,12 @@ class AdminLanguageTestScoreServiceTest extends BaseIntegrationTest { @BeforeEach void setUp() { - SiteUser 테스트_유저_1 = siteUserFixture.테스트_유저(1, "test1"); - SiteUser 테스트_유저_2 = siteUserFixture.테스트_유저(2, "test2"); - SiteUser 테스트_유저_3 = siteUserFixture.테스트_유저(3, "test3"); - languageTestScore3 = createLanguageTestScore(테스트_유저_3, VerifyStatus.REJECTED); - languageTestScore2 = createLanguageTestScore(테스트_유저_2, VerifyStatus.PENDING); - languageTestScore1 = createLanguageTestScore(테스트_유저_1, VerifyStatus.PENDING); + SiteUser user1 = siteUserFixture.사용자(1, "test1"); + SiteUser user2 = siteUserFixture.사용자(2, "test2"); + SiteUser user3 = siteUserFixture.사용자(3, "test3"); + languageTestScore3 = createLanguageTestScore(user3, VerifyStatus.REJECTED); + languageTestScore2 = createLanguageTestScore(user2, VerifyStatus.PENDING); + languageTestScore1 = createLanguageTestScore(user1, VerifyStatus.PENDING); } @Nested diff --git a/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java index 2c9050a50..cb0ffbb96 100644 --- a/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java @@ -56,18 +56,18 @@ class AuthServiceTest { @Test void 탈퇴한다() { // given - SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); - Subject subject = authTokenProvider.toSubject(테스트_유저); + SiteUser user = siteUserFixture.사용자(); + Subject subject = authTokenProvider.toSubject(user); AccessToken accessToken = authTokenProvider.generateAccessToken(subject); // todo: #296 // when - authService.quit(테스트_유저, accessToken.token()); + authService.quit(user, accessToken.token()); // then LocalDate tomorrow = LocalDate.now().plusDays(1); String refreshTokenKey = TokenType.REFRESH.addPrefix(subject.value()); assertAll( - () -> assertThat(테스트_유저.getQuitedAt()).isEqualTo(tomorrow), + () -> assertThat(user.getQuitedAt()).isEqualTo(tomorrow), () -> assertThat(redisTemplate.opsForValue().get(refreshTokenKey)).isNull(), () -> assertThat(authTokenProvider.isTokenBlacklisted(accessToken.token())).isTrue() ); diff --git a/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java index c83a95b77..4a98de6ce 100644 --- a/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java @@ -31,8 +31,8 @@ class EmailSignInServiceTest { // given String email = "testEmail"; String rawPassword = "testPassword"; - SiteUser siteUser = siteUserFixture.테스트_유저(email, rawPassword); - EmailSignInRequest signInRequest = new EmailSignInRequest(siteUser.getEmail(), rawPassword); + SiteUser user = siteUserFixture.사용자(email, rawPassword); + EmailSignInRequest signInRequest = new EmailSignInRequest(user.getEmail(), rawPassword); // when SignInResponse signInResponse = emailSignInService.signIn(signInRequest); @@ -62,7 +62,7 @@ class 로그인에_실패한다 { void 비밀번호가_일치하지_않으면_예외_응답을_반환한다() { // given String email = "testEmail"; - siteUserFixture.테스트_유저(email, "testPassword"); + siteUserFixture.사용자(email, "testPassword"); EmailSignInRequest signInRequest = new EmailSignInRequest(email, "틀린비밀번호"); // when & then diff --git a/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java b/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java index f71f1f1da..51eee236c 100644 --- a/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java +++ b/src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java @@ -34,19 +34,19 @@ class SignInServiceTest { @Autowired private SiteUserFixture siteUserFixture; - private SiteUser 테스트_유저; + private SiteUser user; private String subject; @BeforeEach void setUp() { - 테스트_유저 = siteUserFixture.테스트_유저(); - subject = 테스트_유저.getId().toString(); + user = siteUserFixture.사용자(); + subject = user.getId().toString(); } @Test void 성공적으로_로그인한다() { // when - SignInResponse signInResponse = signInService.signIn(테스트_유저); + SignInResponse signInResponse = signInService.signIn(user); // then String accessTokenSubject = JwtUtils.parseSubject(signInResponse.accessToken(), jwtProperties.secret()); @@ -61,12 +61,12 @@ void setUp() { @Test void 탈퇴한_이력이_있으면_초기화한다() { // given - 테스트_유저.setQuitedAt(LocalDate.now().minusDays(1)); + user.setQuitedAt(LocalDate.now().minusDays(1)); // when - signInService.signIn(테스트_유저); + signInService.signIn(user); // then - assertThat(테스트_유저.getQuitedAt()).isNull(); + assertThat(user.getQuitedAt()).isNull(); } } diff --git a/src/test/java/com/example/solidconnection/community/post/service/PostCommandServiceTest.java b/src/test/java/com/example/solidconnection/community/post/service/PostCommandServiceTest.java index 328a1dc41..d3931008a 100644 --- a/src/test/java/com/example/solidconnection/community/post/service/PostCommandServiceTest.java +++ b/src/test/java/com/example/solidconnection/community/post/service/PostCommandServiceTest.java @@ -15,11 +15,13 @@ import com.example.solidconnection.s3.UploadedFileUrlResponse; import com.example.solidconnection.service.RedisService; import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.integration.BaseIntegrationTest; import com.example.solidconnection.type.ImgType; import com.example.solidconnection.type.PostCategory; import com.example.solidconnection.util.RedisUtils; import jakarta.transaction.Transactional; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -63,6 +65,16 @@ class PostCommandServiceTest extends BaseIntegrationTest { @Autowired private PostImageRepository postImageRepository; + @Autowired + private SiteUserFixture siteUserFixture; + + private SiteUser user1; + + @BeforeEach + void setUp() { + user1 = siteUserFixture.사용자(1, "test1"); + } + @Nested class 게시글_생성_테스트 { @@ -78,7 +90,7 @@ class 게시글_생성_테스트 { // when PostCreateResponse response = postCommandService.createPost( - 테스트유저_1, + user1, request, imageFiles ); @@ -107,7 +119,7 @@ class 게시글_생성_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.createPost(테스트유저_1, request, imageFiles)) + postCommandService.createPost(user1, request, imageFiles)) .isInstanceOf(CustomException.class) .hasMessage(INVALID_POST_CATEGORY.getMessage()); } @@ -120,7 +132,7 @@ class 게시글_생성_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.createPost(테스트유저_1, request, imageFiles)) + postCommandService.createPost(user1, request, imageFiles)) .isInstanceOf(CustomException.class) .hasMessage(INVALID_POST_CATEGORY.getMessage()); } @@ -133,7 +145,7 @@ class 게시글_생성_테스트 { // when & then assertThatThrownBy(() -> - postCommandService.createPost(테스트유저_1, request, imageFiles)) + postCommandService.createPost(user1, request, imageFiles)) .isInstanceOf(CustomException.class) .hasMessage(CAN_NOT_UPLOAD_MORE_THAN_FIVE_IMAGES.getMessage()); } @@ -148,7 +160,7 @@ class 게시글_수정_테스트 { // given String originImageUrl = "origin-image-url"; String expectedImageUrl = "update-image-url"; - Post testPost = createPost(자유게시판, 테스트유저_1, originImageUrl); + Post testPost = createPost(자유게시판, user1, originImageUrl); PostUpdateRequest request = createPostUpdateRequest(); List imageFiles = List.of(createImageFile()); @@ -157,7 +169,7 @@ class 게시글_수정_테스트 { // when PostUpdateResponse response = postCommandService.updatePost( - 테스트유저_1, + user1, testPost.getId(), request, imageFiles @@ -180,14 +192,15 @@ class 게시글_수정_테스트 { @Test void 다른_사용자의_게시글을_수정하면_예외_응답을_반환한다() { // given - Post testPost = createPost(자유게시판, 테스트유저_1, "origin-image-url"); + SiteUser user2 = siteUserFixture.사용자(2, "test2"); + Post testPost = createPost(자유게시판, user1, "origin-image-url"); PostUpdateRequest request = createPostUpdateRequest(); List imageFiles = List.of(); // when & then assertThatThrownBy(() -> postCommandService.updatePost( - 테스트유저_2, + user2, testPost.getId(), request, imageFiles @@ -199,14 +212,14 @@ class 게시글_수정_테스트 { @Test void 질문_게시글을_수정하면_예외_응답을_반환한다() { // given - Post testPost = createQuestionPost(자유게시판, 테스트유저_1, "origin-image-url"); + Post testPost = createQuestionPost(자유게시판, user1, "origin-image-url"); PostUpdateRequest request = createPostUpdateRequest(); List imageFiles = List.of(); // when & then assertThatThrownBy(() -> postCommandService.updatePost( - 테스트유저_1, + user1, testPost.getId(), request, imageFiles @@ -218,14 +231,14 @@ class 게시글_수정_테스트 { @Test void 이미지를_5개_초과하여_수정하면_예외_응답을_반환한다() { // given - Post testPost = createPost(자유게시판, 테스트유저_1, "origin-image-url"); + Post testPost = createPost(자유게시판, user1, "origin-image-url"); PostUpdateRequest request = createPostUpdateRequest(); List imageFiles = createSixImageFiles(); // when & then assertThatThrownBy(() -> postCommandService.updatePost( - 테스트유저_1, + user1, testPost.getId(), request, imageFiles @@ -242,13 +255,13 @@ class 게시글_삭제_테스트 { void 게시글을_성공적으로_삭제한다() { // given String originImageUrl = "origin-image-url"; - Post testPost = createPost(자유게시판, 테스트유저_1, originImageUrl); + Post testPost = createPost(자유게시판, user1, originImageUrl); String viewCountKey = redisUtils.getPostViewCountRedisKey(testPost.getId()); redisService.increaseViewCount(viewCountKey); // when PostDeleteResponse response = postCommandService.deletePostById( - 테스트유저_1, + user1, testPost.getId() ); @@ -264,12 +277,13 @@ class 게시글_삭제_테스트 { @Test void 다른_사용자의_게시글을_삭제하면_예외_응답을_반환한다() { // given - Post testPost = createPost(자유게시판, 테스트유저_1, "origin-image-url"); + SiteUser user2 = siteUserFixture.사용자(2, "test2"); + Post testPost = createPost(자유게시판, user1, "origin-image-url"); // when & then assertThatThrownBy(() -> postCommandService.deletePostById( - 테스트유저_2, + user2, testPost.getId() )) .isInstanceOf(CustomException.class) @@ -279,12 +293,12 @@ class 게시글_삭제_테스트 { @Test void 질문_게시글을_삭제하면_예외_응답을_반환한다() { // given - Post testPost = createQuestionPost(자유게시판, 테스트유저_1, "origin-image-url"); + Post testPost = createQuestionPost(자유게시판, user1, "origin-image-url"); // when & then assertThatThrownBy(() -> postCommandService.deletePostById( - 테스트유저_1, + user1, testPost.getId() )) .isInstanceOf(CustomException.class) diff --git a/src/test/java/com/example/solidconnection/community/post/service/PostLikeServiceTest.java b/src/test/java/com/example/solidconnection/community/post/service/PostLikeServiceTest.java index 23fa6bf50..30026e46a 100644 --- a/src/test/java/com/example/solidconnection/community/post/service/PostLikeServiceTest.java +++ b/src/test/java/com/example/solidconnection/community/post/service/PostLikeServiceTest.java @@ -8,8 +8,10 @@ import com.example.solidconnection.community.post.repository.PostLikeRepository; import com.example.solidconnection.community.post.repository.PostRepository; import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.integration.BaseIntegrationTest; import com.example.solidconnection.type.PostCategory; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; @@ -33,18 +35,28 @@ class PostLikeServiceTest extends BaseIntegrationTest { @Autowired private PostLikeRepository postLikeRepository; + @Autowired + private SiteUserFixture siteUserFixture; + + private SiteUser user; + + @BeforeEach + void setUp() { + user = siteUserFixture.사용자(1, "test1"); + } + @Nested class 게시글_좋아요_테스트 { @Test void 게시글을_성공적으로_좋아요한다() { // given - Post testPost = createPost(자유게시판, 테스트유저_1); + Post testPost = createPost(자유게시판, user); long beforeLikeCount = testPost.getLikeCount(); // when PostLikeResponse response = postLikeService.likePost( - 테스트유저_1, + user, testPost.getId() ); @@ -54,20 +66,20 @@ class 게시글_좋아요_테스트 { () -> assertThat(response.likeCount()).isEqualTo(beforeLikeCount + 1), () -> assertThat(response.isLiked()).isTrue(), () -> assertThat(likedPost.getLikeCount()).isEqualTo(beforeLikeCount + 1), - () -> assertThat(postLikeRepository.findPostLikeByPostAndSiteUser(likedPost, 테스트유저_1)).isPresent() + () -> assertThat(postLikeRepository.findPostLikeByPostAndSiteUser(likedPost, user)).isPresent() ); } @Test void 이미_좋아요한_게시글을_다시_좋아요하면_예외_응답을_반환한다() { // given - Post testPost = createPost(자유게시판, 테스트유저_1); - postLikeService.likePost(테스트유저_1, testPost.getId()); + Post testPost = createPost(자유게시판, user); + postLikeService.likePost(user, testPost.getId()); // when & then assertThatThrownBy(() -> postLikeService.likePost( - 테스트유저_1, + user, testPost.getId() )) .isInstanceOf(CustomException.class) @@ -81,13 +93,13 @@ class 게시글_좋아요_취소_테스트 { @Test void 게시글_좋아요를_성공적으로_취소한다() { // given - Post testPost = createPost(자유게시판, 테스트유저_1); - PostLikeResponse beforeResponse = postLikeService.likePost(테스트유저_1, testPost.getId()); + Post testPost = createPost(자유게시판, user); + PostLikeResponse beforeResponse = postLikeService.likePost(user, testPost.getId()); long beforeLikeCount = beforeResponse.likeCount(); // when PostDislikeResponse response = postLikeService.dislikePost( - 테스트유저_1, + user, testPost.getId() ); @@ -97,19 +109,19 @@ class 게시글_좋아요_취소_테스트 { () -> assertThat(response.likeCount()).isEqualTo(beforeLikeCount - 1), () -> assertThat(response.isLiked()).isFalse(), () -> assertThat(unlikedPost.getLikeCount()).isEqualTo(beforeLikeCount - 1), - () -> assertThat(postLikeRepository.findPostLikeByPostAndSiteUser(unlikedPost, 테스트유저_1)).isEmpty() + () -> assertThat(postLikeRepository.findPostLikeByPostAndSiteUser(unlikedPost, user)).isEmpty() ); } @Test void 좋아요하지_않은_게시글을_좋아요_취소하면_예외_응답을_반환한다() { // given - Post testPost = createPost(자유게시판, 테스트유저_1); + Post testPost = createPost(자유게시판, user); // when & then assertThatThrownBy(() -> postLikeService.dislikePost( - 테스트유저_1, + user, testPost.getId() )) .isInstanceOf(CustomException.class) diff --git a/src/test/java/com/example/solidconnection/community/post/service/PostQueryServiceTest.java b/src/test/java/com/example/solidconnection/community/post/service/PostQueryServiceTest.java index fc7926698..67212e014 100644 --- a/src/test/java/com/example/solidconnection/community/post/service/PostQueryServiceTest.java +++ b/src/test/java/com/example/solidconnection/community/post/service/PostQueryServiceTest.java @@ -13,10 +13,12 @@ import com.example.solidconnection.community.post.repository.PostImageRepository; import com.example.solidconnection.service.RedisService; import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.siteuser.fixture.SiteUserFixture; import com.example.solidconnection.support.integration.BaseIntegrationTest; import com.example.solidconnection.type.BoardCode; import com.example.solidconnection.type.PostCategory; import com.example.solidconnection.util.RedisUtils; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.DisplayName; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -48,6 +50,16 @@ class PostQueryServiceTest extends BaseIntegrationTest { @Autowired private PostImageRepository postImageRepository; + @Autowired + private SiteUserFixture siteUserFixture; + + private SiteUser user; + + @BeforeEach + void setUp() { + user = siteUserFixture.사용자(1, "test1"); + } + @Test void 게시판_코드와_카테고리로_게시글_목록을_조회한다() { // given @@ -103,15 +115,15 @@ class PostQueryServiceTest extends BaseIntegrationTest { // given String expectedImageUrl = "test-image-url"; List imageUrls = List.of(expectedImageUrl); - Post testPost = createPost(자유게시판, 테스트유저_1, expectedImageUrl); - List comments = createComments(testPost, 테스트유저_1, List.of("첫번째 댓글", "두번째 댓글")); + Post testPost = createPost(자유게시판, user, expectedImageUrl); + List comments = createComments(testPost, user, List.of("첫번째 댓글", "두번째 댓글")); - String validateKey = redisUtils.getValidatePostViewCountRedisKey(테스트유저_1.getId(), testPost.getId()); + String validateKey = redisUtils.getValidatePostViewCountRedisKey(user.getId(), testPost.getId()); String viewCountKey = redisUtils.getPostViewCountRedisKey(testPost.getId()); // when PostFindResponse response = postQueryService.findPostById( - 테스트유저_1, + user, testPost.getId() ); @@ -128,9 +140,9 @@ class PostQueryServiceTest extends BaseIntegrationTest { () -> assertThat(response.postFindBoardResponse().code()).isEqualTo(자유게시판.getCode()), () -> assertThat(response.postFindBoardResponse().koreanName()).isEqualTo(자유게시판.getKoreanName()), - () -> assertThat(response.postFindSiteUserResponse().id()).isEqualTo(테스트유저_1.getId()), - () -> assertThat(response.postFindSiteUserResponse().nickname()).isEqualTo(테스트유저_1.getNickname()), - () -> assertThat(response.postFindSiteUserResponse().profileImageUrl()).isEqualTo(테스트유저_1.getProfileImageUrl()), + () -> assertThat(response.postFindSiteUserResponse().id()).isEqualTo(user.getId()), + () -> assertThat(response.postFindSiteUserResponse().nickname()).isEqualTo(user.getNickname()), + () -> assertThat(response.postFindSiteUserResponse().profileImageUrl()).isEqualTo(user.getProfileImageUrl()), () -> assertThat(response.postFindPostImageResponses()) .hasSize(imageUrls.size()) diff --git a/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java b/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java index 9e3c3eb9c..4f2ddf687 100644 --- a/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/PostLikeCountConcurrencyTest.java @@ -52,14 +52,14 @@ class PostLikeCountConcurrencyTest { private Post post; private Board board; - private SiteUser 테스트_유저; + private SiteUser user; @BeforeEach void setUp() { board = createBoard(); boardRepository.save(board); - 테스트_유저 = siteUserFixture.테스트_유저(); - post = createPost(board, 테스트_유저); + user = siteUserFixture.사용자(); + post = createPost(board, user); postRepository.save(post); } diff --git a/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java b/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java index 74746e92c..6c1a0e18f 100644 --- a/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/PostViewCountConcurrencyTest.java @@ -52,14 +52,14 @@ class PostViewCountConcurrencyTest { private Post post; private Board board; - private SiteUser 테스트_유저; + private SiteUser user; @BeforeEach void setUp() { board = createBoard(); boardRepository.save(board); - 테스트_유저 = siteUserFixture.테스트_유저(); - post = createPost(board, 테스트_유저); + user = siteUserFixture.사용자(); + post = createPost(board, user); postRepository.save(post); } @@ -85,7 +85,7 @@ private Post createPost(Board board, SiteUser siteUser) { @Test void 게시글을_조회할_때_조회수_동시성_문제를_해결한다() throws InterruptedException { - redisService.deleteKey(redisUtils.getValidatePostViewCountRedisKey(테스트_유저.getId(), post.getId())); + redisService.deleteKey(redisUtils.getValidatePostViewCountRedisKey(user.getId(), post.getId())); ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE); CountDownLatch doneSignal = new CountDownLatch(THREAD_NUMS); @@ -115,7 +115,7 @@ private Post createPost(Board board, SiteUser siteUser) { @Test void 게시글을_조회할_때_조회수_조작_문제를_해결한다() throws InterruptedException { - redisService.deleteKey(redisUtils.getValidatePostViewCountRedisKey(테스트_유저.getId(), post.getId())); + redisService.deleteKey(redisUtils.getValidatePostViewCountRedisKey(user.getId(), post.getId())); ExecutorService executorService = Executors.newFixedThreadPool(THREAD_POOL_SIZE); CountDownLatch doneSignal = new CountDownLatch(THREAD_NUMS); @@ -123,7 +123,7 @@ private Post createPost(Board board, SiteUser siteUser) { for (int i = 0; i < THREAD_NUMS; i++) { executorService.submit(() -> { try { - boolean isFirstTime = redisService.isPresent(redisUtils.getValidatePostViewCountRedisKey(테스트_유저.getId(), post.getId())); + boolean isFirstTime = redisService.isPresent(redisUtils.getValidatePostViewCountRedisKey(user.getId(), post.getId())); if (isFirstTime) { redisService.increaseViewCount(redisUtils.getPostViewCountRedisKey(post.getId())); } @@ -136,7 +136,7 @@ private Post createPost(Board board, SiteUser siteUser) { for (int i = 0; i < THREAD_NUMS; i++) { executorService.submit(() -> { try { - boolean isFirstTime = redisService.isPresent(redisUtils.getValidatePostViewCountRedisKey(테스트_유저.getId(), post.getId())); + boolean isFirstTime = redisService.isPresent(redisUtils.getValidatePostViewCountRedisKey(user.getId(), post.getId())); if (isFirstTime) { redisService.increaseViewCount(redisUtils.getPostViewCountRedisKey(post.getId())); } diff --git a/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java b/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java index d5c2fb327..d2cadca65 100644 --- a/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java +++ b/src/test/java/com/example/solidconnection/concurrency/ThunderingHerdTest.java @@ -34,11 +34,11 @@ class ThunderingHerdTest { private int THREAD_NUMS = 1000; private int THREAD_POOL_SIZE = 200; private int TIMEOUT_SECONDS = 10; - private SiteUser 테스트_유저; + private SiteUser user; @BeforeEach public void setUp() { - 테스트_유저 = siteUserFixture.테스트_유저(); + user = siteUserFixture.사용자(); } @Test @@ -54,9 +54,9 @@ public void setUp() { executorService.submit(() -> { try { List tasks = Arrays.asList( - () -> applicationQueryService.getApplicants(테스트_유저, "", ""), - () -> applicationQueryService.getApplicants(테스트_유저, "ASIA", ""), - () -> applicationQueryService.getApplicants(테스트_유저, "", "추오") + () -> applicationQueryService.getApplicants(user, "", ""), + () -> applicationQueryService.getApplicants(user, "ASIA", ""), + () -> applicationQueryService.getApplicants(user, "", "추오") ); Collections.shuffle(tasks); tasks.forEach(Runnable::run); diff --git a/src/test/java/com/example/solidconnection/custom/resolver/AuthorizedUserResolverTest.java b/src/test/java/com/example/solidconnection/custom/resolver/AuthorizedUserResolverTest.java index ac230f9a0..e0c1a006f 100644 --- a/src/test/java/com/example/solidconnection/custom/resolver/AuthorizedUserResolverTest.java +++ b/src/test/java/com/example/solidconnection/custom/resolver/AuthorizedUserResolverTest.java @@ -39,8 +39,8 @@ void setUp() { @Test void security_context_에_저장된_인증된_사용자를_반환한다() { // given - SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); - Authentication authentication = createAuthenticationWithUser(테스트_유저); + SiteUser user = siteUserFixture.사용자(); + Authentication authentication = createAuthenticationWithUser(user); SecurityContextHolder.getContext().setAuthentication(authentication); MethodParameter parameter = mock(MethodParameter.class); @@ -52,7 +52,7 @@ void setUp() { SiteUser resolveSiteUser = (SiteUser) authorizedUserResolver.resolveArgument(parameter, null, null, null); // then - assertThat(resolveSiteUser).isEqualTo(테스트_유저); + assertThat(resolveSiteUser).isEqualTo(user); } @Nested diff --git a/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java b/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java index 911b21fd1..38d13c372 100644 --- a/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java +++ b/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java @@ -41,10 +41,10 @@ class AdminAuthorizationAspectTest { @Test void 일반_사용자가_어드민_전용_메소드에_접근하면_예외_응답을_반환한다() { // given - SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); + SiteUser user = siteUserFixture.사용자(); // when & then - assertThatCode(() -> testService.adminOnlyMethod(테스트_유저)) + assertThatCode(() -> testService.adminOnlyMethod(user)) .isInstanceOf(CustomException.class) .hasMessage(ACCESS_DENIED.getMessage()); } @@ -52,11 +52,11 @@ class AdminAuthorizationAspectTest { @Test void 어드민_어노테이션이_없는_메소드는_모두_접근_가능하다() { // given - SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); + SiteUser user = siteUserFixture.사용자(); SiteUser 테스트_어드민 = siteUserFixture.테스트_어드민(); // when - boolean menteeResponse = testService.publicMethod(테스트_유저); + boolean menteeResponse = testService.publicMethod(user); boolean adminResponse = testService.publicMethod(테스트_어드민); // then diff --git a/src/test/java/com/example/solidconnection/custom/security/provider/SiteUserAuthenticationProviderTest.java b/src/test/java/com/example/solidconnection/custom/security/provider/SiteUserAuthenticationProviderTest.java index 76a0db5f4..b8999e3f5 100644 --- a/src/test/java/com/example/solidconnection/custom/security/provider/SiteUserAuthenticationProviderTest.java +++ b/src/test/java/com/example/solidconnection/custom/security/provider/SiteUserAuthenticationProviderTest.java @@ -38,11 +38,11 @@ class SiteUserAuthenticationProviderTest { @Autowired private SiteUserFixture siteUserFixture; - private SiteUser 테스트_유저; + private SiteUser user; @BeforeEach void setUp() { - 테스트_유저 = siteUserFixture.테스트_유저(); + user = siteUserFixture.사용자(); } @Test @@ -61,7 +61,7 @@ void setUp() { @Test void 유효한_토큰이면_정상적으로_인증_정보를_반환한다() { // given - String token = createValidToken(테스트_유저.getId()); + String token = createValidToken(user.getId()); SiteUserAuthentication auth = new SiteUserAuthentication(token); // when @@ -103,7 +103,7 @@ class 예외_응답을_반환하다 { @Test void 유효한_토큰이지만_해당되는_사용자가_없으면_예외_응답을_반환한다() { // given - long notExistingUserId = 테스트_유저.getId() + 100; + long notExistingUserId = user.getId() + 100; String token = createValidToken(notExistingUserId); SiteUserAuthentication auth = new SiteUserAuthentication(token); @@ -125,7 +125,7 @@ private String createValidToken(long id) { private String createExpiredToken() { return Jwts.builder() - .setSubject(String.valueOf(테스트_유저.getId())) + .setSubject(String.valueOf(user.getId())) .setIssuedAt(new Date()) .setExpiration(new Date(System.currentTimeMillis() - 1000)) .signWith(SignatureAlgorithm.HS256, jwtProperties.secret()) diff --git a/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsServiceTest.java b/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsServiceTest.java index 75eeeafad..718732a44 100644 --- a/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsServiceTest.java +++ b/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsServiceTest.java @@ -34,8 +34,8 @@ class SiteUserDetailsServiceTest { @Test void 사용자_인증_정보를_반환한다() { // given - SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); - String username = getUserName(테스트_유저); + SiteUser user = siteUserFixture.사용자(); + String username = getUserName(user); // when SiteUserDetails userDetails = (SiteUserDetails) userDetailsService.loadUserByUsername(username); @@ -43,7 +43,7 @@ class SiteUserDetailsServiceTest { // then assertAll( () -> assertThat(userDetails.getUsername()).isEqualTo(username), - () -> assertThat(userDetails.getSiteUser()).extracting("id").isEqualTo(테스트_유저.getId()) + () -> assertThat(userDetails.getSiteUser()).extracting("id").isEqualTo(user.getId()) ); } @@ -75,10 +75,10 @@ class 예외_응답을_반환한다 { @Test void 탈퇴한_사용자이면_예외_응답을_반환한다() { // given - SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); - 테스트_유저.setQuitedAt(LocalDate.now()); - siteUserRepository.save(테스트_유저); - String username = getUserName(테스트_유저); + SiteUser user = siteUserFixture.사용자(); + user.setQuitedAt(LocalDate.now()); + siteUserRepository.save(user); + String username = getUserName(user); // when & then assertThatCode(() -> userDetailsService.loadUserByUsername(username)) diff --git a/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsTest.java b/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsTest.java index 86cd0506b..6fe9b6d69 100644 --- a/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsTest.java +++ b/src/test/java/com/example/solidconnection/custom/security/userdetails/SiteUserDetailsTest.java @@ -22,8 +22,8 @@ class SiteUserDetailsTest { @Test void 사용자_권한을_정상적으로_반환한다() { // given - SiteUser 테스트_유저 = siteUserFixture.테스트_유저(); - SiteUserDetails siteUserDetails = new SiteUserDetails(테스트_유저); + SiteUser user = siteUserFixture.사용자(); + SiteUserDetails siteUserDetails = new SiteUserDetails(user); // when Collection authorities = siteUserDetails.getAuthorities(); @@ -31,6 +31,6 @@ class SiteUserDetailsTest { // then assertThat(authorities) .extracting("authority") - .containsExactly("ROLE_" + 테스트_유저.getRole().name()); + .containsExactly("ROLE_" + user.getRole().name()); } } diff --git a/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java b/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java index b4ca53d0e..27ed7a617 100644 --- a/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java +++ b/src/test/java/com/example/solidconnection/score/service/ScoreServiceTest.java @@ -55,23 +55,23 @@ class ScoreServiceTest extends BaseIntegrationTest { @Autowired private SiteUserFixture siteUserFixture; - private SiteUser 테스트_유저; + private SiteUser user; @BeforeEach void setUp() { - 테스트_유저 = siteUserFixture.테스트_유저(); + user = siteUserFixture.사용자(); } @Test void GPA_점수_상태를_조회한다() { // given List scores = List.of( - createGpaScore(테스트_유저, 3.5, 4.5), - createGpaScore(테스트_유저, 3.8, 4.5) + createGpaScore(user, 3.5, 4.5), + createGpaScore(user, 3.8, 4.5) ); // when - GpaScoreStatusesResponse response = scoreService.getGpaScoreStatus(테스트_유저); + GpaScoreStatusesResponse response = scoreService.getGpaScoreStatus(user); // then assertThat(response.gpaScoreStatusResponseList()) @@ -86,7 +86,7 @@ void setUp() { @Test void GPA_점수가_없는_경우_빈_리스트를_반환한다() { // when - GpaScoreStatusesResponse response = scoreService.getGpaScoreStatus(테스트_유저); + GpaScoreStatusesResponse response = scoreService.getGpaScoreStatus(user); // then assertThat(response.gpaScoreStatusResponseList()).isEmpty(); @@ -96,13 +96,13 @@ void setUp() { void 어학_시험_점수_상태를_조회한다() { // given List scores = List.of( - createLanguageTestScore(테스트_유저, LanguageTestType.TOEIC, "100"), - createLanguageTestScore(테스트_유저, LanguageTestType.TOEFL_IBT, "7.5") + createLanguageTestScore(user, LanguageTestType.TOEIC, "100"), + createLanguageTestScore(user, LanguageTestType.TOEFL_IBT, "7.5") ); - siteUserRepository.save(테스트_유저); + siteUserRepository.save(user); // when - LanguageTestScoreStatusesResponse response = scoreService.getLanguageTestScoreStatus(테스트_유저); + LanguageTestScoreStatusesResponse response = scoreService.getLanguageTestScoreStatus(user); // then assertThat(response.languageTestScoreStatusResponseList()) @@ -117,7 +117,7 @@ void setUp() { @Test void 어학_시험_점수가_없는_경우_빈_리스트를_반환한다() { // when - LanguageTestScoreStatusesResponse response = scoreService.getLanguageTestScoreStatus(테스트_유저); + LanguageTestScoreStatusesResponse response = scoreService.getLanguageTestScoreStatus(user); // then assertThat(response.languageTestScoreStatusResponseList()).isEmpty(); @@ -132,7 +132,7 @@ void setUp() { given(s3Service.uploadFile(file, ImgType.GPA)).willReturn(new UploadedFileUrlResponse(fileUrl)); // when - long scoreId = scoreService.submitGpaScore(테스트_유저, request, file); + long scoreId = scoreService.submitGpaScore(user, request, file); GpaScore savedScore = gpaScoreRepository.findById(scoreId).orElseThrow(); // then @@ -154,7 +154,7 @@ void setUp() { given(s3Service.uploadFile(file, ImgType.LANGUAGE_TEST)).willReturn(new UploadedFileUrlResponse(fileUrl)); // when - long scoreId = scoreService.submitLanguageTestScore(테스트_유저, request, file); + long scoreId = scoreService.submitLanguageTestScore(user, request, file); LanguageTestScore savedScore = languageTestScoreRepository.findById(scoreId).orElseThrow(); // then diff --git a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java index 3e50bfb6c..e84df05bc 100644 --- a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java +++ b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java @@ -12,18 +12,18 @@ public class SiteUserFixture { private final SiteUserFixtureBuilder siteUserFixtureBuilder; - public SiteUser 테스트_유저() { + public SiteUser 사용자() { return siteUserFixtureBuilder.siteUser() .email("test@example.com") .authType(AuthType.EMAIL) - .nickname("테스트유저") + .nickname("사용자") .profileImageUrl("profileImageUrl") .role(Role.MENTEE) .password("password123") .create(); } - public SiteUser 테스트_유저(int index, String nickname) { + public SiteUser 사용자(int index, String nickname) { return siteUserFixtureBuilder.siteUser() .email("test" + index + "@example.com") .authType(AuthType.EMAIL) @@ -34,22 +34,22 @@ public class SiteUserFixture { .create(); } - public SiteUser 테스트_유저(String email, AuthType authType) { + public SiteUser 사용자(String email, AuthType authType) { return siteUserFixtureBuilder.siteUser() .email(email) .authType(authType) - .nickname("테스트유저") + .nickname("사용자") .profileImageUrl("profileImageUrl") .role(Role.MENTEE) .password("password123") .create(); } - public SiteUser 테스트_유저(String email, String password) { + public SiteUser 사용자(String email, String password) { return siteUserFixtureBuilder.siteUser() .email(email) .authType(AuthType.EMAIL) - .nickname("테스트유저") + .nickname("사용자") .profileImageUrl("profileImageUrl") .role(Role.MENTEE) .password(password) diff --git a/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java b/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java index 1f213e904..bedbecc61 100644 --- a/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java @@ -26,20 +26,20 @@ class 이메일과_인증_유형이_동일한_사용자는_저장할_수_없다 @Test void 이메일과_인증_유형이_동일한_사용자를_저장하면_예외_응답을_반환한다() { // given - siteUserFixture.테스트_유저("email", AuthType.KAKAO); + siteUserFixture.사용자("email", AuthType.KAKAO); // when, then - assertThatCode(() -> siteUserFixture.테스트_유저("email", AuthType.KAKAO)) + assertThatCode(() -> siteUserFixture.사용자("email", AuthType.KAKAO)) .isInstanceOf(DataIntegrityViolationException.class); } @Test void 이메일이_같더라도_인증_유형이_다른_사용자는_정상_저장한다() { // given - siteUserFixture.테스트_유저("email", AuthType.KAKAO); + siteUserFixture.사용자("email", AuthType.KAKAO); // when, then - assertThatCode(() -> siteUserFixture.테스트_유저("email", AuthType.APPLE)) + assertThatCode(() -> siteUserFixture.사용자("email", AuthType.APPLE)) .doesNotThrowAnyException(); } } diff --git a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java index 51324d9db..4f5d86ebc 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java @@ -65,28 +65,28 @@ class MyPageServiceTest { @Autowired private SiteUserFixtureBuilder siteUserFixtureBuilder; - private SiteUser 테스트_유저; + private SiteUser user; @BeforeEach void setUp() { - 테스트_유저 = siteUserFixture.테스트_유저(); + user = siteUserFixture.사용자(); } @Test void 마이페이지_정보를_조회한다() { // given - int likedUniversityCount = createLikedUniversities(테스트_유저); + int likedUniversityCount = createLikedUniversities(user); // when - MyPageResponse response = myPageService.getMyPageInfo(테스트_유저); + MyPageResponse response = myPageService.getMyPageInfo(user); // then Assertions.assertAll( - () -> assertThat(response.nickname()).isEqualTo(테스트_유저.getNickname()), - () -> assertThat(response.profileImageUrl()).isEqualTo(테스트_유저.getProfileImageUrl()), - () -> assertThat(response.role()).isEqualTo(테스트_유저.getRole()), - () -> assertThat(response.email()).isEqualTo(테스트_유저.getEmail()), - () -> assertThat(response.likedPostCount()).isEqualTo(테스트_유저.getPostLikeList().size()), + () -> assertThat(response.nickname()).isEqualTo(user.getNickname()), + () -> assertThat(response.profileImageUrl()).isEqualTo(user.getProfileImageUrl()), + () -> assertThat(response.role()).isEqualTo(user.getRole()), + () -> assertThat(response.email()).isEqualTo(user.getEmail()), + () -> assertThat(response.likedPostCount()).isEqualTo(user.getPostLikeList().size()), () -> assertThat(response.likedUniversityCount()).isEqualTo(likedUniversityCount) ); } @@ -94,10 +94,10 @@ void setUp() { @Test void 관심_대학교_목록을_조회한다() { // given - int likedUniversityCount = createLikedUniversities(테스트_유저); + int likedUniversityCount = createLikedUniversities(user); // when - List response = myPageService.getWishUniversity(테스트_유저); + List response = myPageService.getWishUniversity(user); // then assertThat(response).hasSize(likedUniversityCount); @@ -115,10 +115,10 @@ class 프로필_이미지_수정_테스트 { .willReturn(new UploadedFileUrlResponse(expectedUrl)); // when - myPageService.updateMyPageInfo(테스트_유저, imageFile, "newNickname"); + myPageService.updateMyPageInfo(user, imageFile, "newNickname"); // then - assertThat(테스트_유저.getProfileImageUrl()).isEqualTo(expectedUrl); + assertThat(user.getProfileImageUrl()).isEqualTo(expectedUrl); } @Test @@ -129,7 +129,7 @@ class 프로필_이미지_수정_테스트 { .willReturn(new UploadedFileUrlResponse("newProfileImageUrl")); // when - myPageService.updateMyPageInfo(테스트_유저, imageFile, "newNickname"); + myPageService.updateMyPageInfo(user, imageFile, "newNickname"); // then then(s3Service).should(never()).deleteExProfile(any()); @@ -167,10 +167,10 @@ void setUp() { String newNickname = "newNickname"; // when - myPageService.updateMyPageInfo(테스트_유저, imageFile, newNickname); + myPageService.updateMyPageInfo(user, imageFile, newNickname); // then - SiteUser updatedUser = siteUserRepository.findById(테스트_유저.getId()).get(); + SiteUser updatedUser = siteUserRepository.findById(user.getId()).get(); assertThat(updatedUser.getNicknameModifiedAt()).isNotNull(); assertThat(updatedUser.getNickname()).isEqualTo(newNickname); } @@ -178,10 +178,10 @@ void setUp() { @Test void 중복된_닉네임으로_변경하면_예외_응답을_반환한다() { // given - SiteUser existingUser = siteUserFixture.테스트_유저(1, "existing nickname"); + SiteUser existingUser = siteUserFixture.사용자(1, "existing nickname"); // when & then - assertThatCode(() -> myPageService.updateMyPageInfo(테스트_유저, null, existingUser.getNickname())) + assertThatCode(() -> myPageService.updateMyPageInfo(user, null, existingUser.getNickname())) .isInstanceOf(CustomException.class) .hasMessage(NICKNAME_ALREADY_EXISTED.getMessage()); } @@ -191,10 +191,10 @@ void setUp() { // given MockMultipartFile imageFile = createValidImageFile(); LocalDateTime modifiedAt = LocalDateTime.now().minusDays(MIN_DAYS_BETWEEN_NICKNAME_CHANGES - 1); - 테스트_유저.setNicknameModifiedAt(modifiedAt); + user.setNicknameModifiedAt(modifiedAt); // when & then - assertThatCode(() -> myPageService.updateMyPageInfo(테스트_유저, imageFile, "nickname12")) + assertThatCode(() -> myPageService.updateMyPageInfo(user, imageFile, "nickname12")) .isInstanceOf(CustomException.class) .hasMessage(createExpectedErrorMessage(modifiedAt)); } 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 d4ab2f27c..665fb11da 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/SiteUserServiceTest.java @@ -22,11 +22,11 @@ class SiteUserServiceTest { @Autowired private SiteUserFixture siteUserFixture; - private SiteUser 테스트_유저; + private SiteUser user; @BeforeEach void setUp() { - 테스트_유저 = siteUserFixture.테스트_유저(); + user = siteUserFixture.사용자(); } @Nested @@ -35,7 +35,7 @@ class 닉네임_중복_검사 { @Test void 존재하는_닉네임이면_true를_반환한다() { // when - NicknameExistsResponse response = siteUserService.checkNicknameExists(테스트_유저.getNickname()); + NicknameExistsResponse response = siteUserService.checkNicknameExists(user.getNickname()); // then assertThat(response.exists()).isTrue(); diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityLikeServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityLikeServiceTest.java index 429b2a020..7f970108a 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityLikeServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityLikeServiceTest.java @@ -41,12 +41,12 @@ class UniversityLikeServiceTest { @Autowired private UniversityInfoForApplyFixture universityInfoForApplyFixture; - private SiteUser 테스트_유저; + private SiteUser user; private UniversityInfoForApply 괌대학_A_지원_정보; @BeforeEach void setUp() { - 테스트_유저 = siteUserFixture.테스트_유저(); + user = siteUserFixture.사용자(); 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); } @@ -56,13 +56,13 @@ class 대학_좋아요를_등록한다 { @Test void 성공적으로_좋아요를_등록한다() { // when - LikeResultResponse response = universityLikeService.likeUniversity(테스트_유저, 괌대학_A_지원_정보.getId()); + LikeResultResponse response = universityLikeService.likeUniversity(user, 괌대학_A_지원_정보.getId()); // then assertAll( () -> assertThat(response.result()).isEqualTo(LIKE_SUCCESS_MESSAGE), () -> assertThat(likedUniversityRepository.findBySiteUserAndUniversityInfoForApply( - 테스트_유저, 괌대학_A_지원_정보 + user, 괌대학_A_지원_정보 )).isPresent() ); } @@ -70,10 +70,10 @@ class 대학_좋아요를_등록한다 { @Test void 이미_좋아요한_대학이면_예외_응답을_반환한다() { // given - saveLikedUniversity(테스트_유저, 괌대학_A_지원_정보); + saveLikedUniversity(user, 괌대학_A_지원_정보); // when & then - assertThatCode(() -> universityLikeService.likeUniversity(테스트_유저, 괌대학_A_지원_정보.getId())) + assertThatCode(() -> universityLikeService.likeUniversity(user, 괌대학_A_지원_정보.getId())) .isInstanceOf(CustomException.class) .hasMessage(ALREADY_LIKED_UNIVERSITY.getMessage()); } @@ -85,16 +85,16 @@ class 대학_좋아요를_취소한다 { @Test void 성공적으로_좋아요를_취소한다() { // given - saveLikedUniversity(테스트_유저, 괌대학_A_지원_정보); + saveLikedUniversity(user, 괌대학_A_지원_정보); // when - LikeResultResponse response = universityLikeService.cancelLikeUniversity(테스트_유저, 괌대학_A_지원_정보.getId()); + LikeResultResponse response = universityLikeService.cancelLikeUniversity(user, 괌대학_A_지원_정보.getId()); // then assertAll( () -> assertThat(response.result()).isEqualTo(LIKE_CANCELED_MESSAGE), () -> assertThat(likedUniversityRepository.findBySiteUserAndUniversityInfoForApply( - 테스트_유저, 괌대학_A_지원_정보 + user, 괌대학_A_지원_정보 )).isEmpty() ); } @@ -102,7 +102,7 @@ class 대학_좋아요를_취소한다 { @Test void 좋아요하지_않은_대학이면_예외_응답을_반환한다() { // when & then - assertThatCode(() -> universityLikeService.cancelLikeUniversity(테스트_유저, 괌대학_A_지원_정보.getId())) + assertThatCode(() -> universityLikeService.cancelLikeUniversity(user, 괌대학_A_지원_정보.getId())) .isInstanceOf(CustomException.class) .hasMessage(NOT_LIKED_UNIVERSITY.getMessage()); } @@ -114,7 +114,7 @@ class 대학_좋아요를_취소한다 { Long invalidUniversityId = 9999L; // when & then - assertThatCode(() -> universityLikeService.likeUniversity(테스트_유저, invalidUniversityId)) + assertThatCode(() -> universityLikeService.likeUniversity(user, invalidUniversityId)) .isInstanceOf(CustomException.class) .hasMessage(UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND.getMessage()); } @@ -122,10 +122,10 @@ class 대학_좋아요를_취소한다 { @Test void 좋아요한_대학인지_확인한다() { // given - saveLikedUniversity(테스트_유저, 괌대학_A_지원_정보); + saveLikedUniversity(user, 괌대학_A_지원_정보); // when - IsLikeResponse response = universityLikeService.getIsLiked(테스트_유저, 괌대학_A_지원_정보.getId()); + IsLikeResponse response = universityLikeService.getIsLiked(user, 괌대학_A_지원_정보.getId()); // then assertThat(response.isLike()).isTrue(); @@ -134,7 +134,7 @@ class 대학_좋아요를_취소한다 { @Test void 좋아요하지_않은_대학인지_확인한다() { // when - IsLikeResponse response = universityLikeService.getIsLiked(테스트_유저, 괌대학_A_지원_정보.getId()); + IsLikeResponse response = universityLikeService.getIsLiked(user, 괌대학_A_지원_정보.getId()); // then assertThat(response.isLike()).isFalse(); @@ -146,7 +146,7 @@ class 대학_좋아요를_취소한다 { Long invalidUniversityId = 9999L; // when & then - assertThatCode(() -> universityLikeService.getIsLiked(테스트_유저, invalidUniversityId)) + assertThatCode(() -> universityLikeService.getIsLiked(user, invalidUniversityId)) .isInstanceOf(CustomException.class) .hasMessage(UNIVERSITY_INFO_FOR_APPLY_NOT_FOUND.getMessage()); } diff --git a/src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java b/src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java index c77b06f5c..ffacab33f 100644 --- a/src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java +++ b/src/test/java/com/example/solidconnection/university/service/UniversityRecommendServiceTest.java @@ -51,7 +51,7 @@ class UniversityRecommendServiceTest { @Autowired private UniversityInfoForApplyFixture universityInfoForApplyFixture; - private SiteUser 테스트_유저; + private SiteUser user; private UniversityInfoForApply 괌대학_A_지원_정보; private UniversityInfoForApply 괌대학_B_지원_정보; private UniversityInfoForApply 네바다주립대학_라스베이거스_지원_정보; @@ -61,7 +61,7 @@ class UniversityRecommendServiceTest { @BeforeEach void setUp() { - 테스트_유저 = siteUserFixture.테스트_유저(); + user = siteUserFixture.사용자(); 괌대학_A_지원_정보 = universityInfoForApplyFixture.괌대학_A_지원_정보(); 괌대학_B_지원_정보 = universityInfoForApplyFixture.괌대학_B_지원_정보(); 네바다주립대학_라스베이거스_지원_정보 = universityInfoForApplyFixture.네바다주립대학_라스베이거스_지원_정보(); @@ -78,10 +78,10 @@ void setUp() { @Test void 관심_지역_설정한_사용자의_맞춤_추천_대학을_조회한다() { // given - interestedRegionRepository.save(new InterestedRegion(테스트_유저, regionFixture.영미권())); + interestedRegionRepository.save(new InterestedRegion(user, regionFixture.영미권())); // when - UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(테스트_유저); + UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(user); // then assertThat(response.recommendedUniversities()) @@ -97,10 +97,10 @@ void setUp() { @Test void 관심_국가_설정한_사용자의_맞춤_추천_대학을_조회한다() { // given - interestedCountyRepository.save(new InterestedCountry(테스트_유저, countryFixture.덴마크())); + interestedCountyRepository.save(new InterestedCountry(user, countryFixture.덴마크())); // when - UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(테스트_유저); + UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(user); // then assertThat(response.recommendedUniversities()) @@ -114,11 +114,11 @@ void setUp() { @Test void 관심_지역과_국가_모두_설정한_사용자의_맞춤_추천_대학을_조회한다() { // given - interestedRegionRepository.save(new InterestedRegion(테스트_유저, regionFixture.영미권())); - interestedCountyRepository.save(new InterestedCountry(테스트_유저, countryFixture.덴마크())); + interestedRegionRepository.save(new InterestedRegion(user, regionFixture.영미권())); + interestedCountyRepository.save(new InterestedCountry(user, countryFixture.덴마크())); // when - UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(테스트_유저); + UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(user); // then assertThat(response.recommendedUniversities()) @@ -136,7 +136,7 @@ void setUp() { @Test void 관심사_미설정_사용자는_일반_추천_대학을_조회한다() { // when - UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(테스트_유저); + UniversityRecommendsResponse response = universityRecommendService.getPersonalRecommends(user); // then assertThat(response.recommendedUniversities()) From 0d0690406c3a215b779d409a6eab5c88660e80b2 Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sun, 18 May 2025 12:45:44 +0900 Subject: [PATCH 12/15] =?UTF-8?q?refactor:=20=ED=85=8C=EC=8A=A4=ED=8A=B8?= =?UTF-8?q?=20=EC=96=B4=EB=93=9C=EB=AF=BC=20=EB=A9=94=EC=84=9C=EB=93=9C?= =?UTF-8?q?=EB=AA=85=20=EA=B4=80=EB=A6=AC=EC=9E=90()=EB=A1=9C=20=ED=86=B5?= =?UTF-8?q?=EC=9D=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../security/aspect/AdminAuthorizationAspectTest.java | 8 ++++---- .../solidconnection/siteuser/fixture/SiteUserFixture.java | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java b/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java index 38d13c372..b733acceb 100644 --- a/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java +++ b/src/test/java/com/example/solidconnection/custom/security/aspect/AdminAuthorizationAspectTest.java @@ -29,10 +29,10 @@ class AdminAuthorizationAspectTest { @Test void 어드민_사용자는_어드민_전용_메소드에_접근할_수_있다() { // given - SiteUser 테스트_어드민 = siteUserFixture.테스트_어드민(); + SiteUser admin = siteUserFixture.관리자(); // when - boolean response = testService.adminOnlyMethod(테스트_어드민); + boolean response = testService.adminOnlyMethod(admin); // then assertThat(response).isTrue(); @@ -53,11 +53,11 @@ class AdminAuthorizationAspectTest { void 어드민_어노테이션이_없는_메소드는_모두_접근_가능하다() { // given SiteUser user = siteUserFixture.사용자(); - SiteUser 테스트_어드민 = siteUserFixture.테스트_어드민(); + SiteUser admin = siteUserFixture.관리자(); // when boolean menteeResponse = testService.publicMethod(user); - boolean adminResponse = testService.publicMethod(테스트_어드민); + boolean adminResponse = testService.publicMethod(admin); // then assertThat(menteeResponse).isTrue(); diff --git a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java index e84df05bc..000b7bc48 100644 --- a/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java +++ b/src/test/java/com/example/solidconnection/siteuser/fixture/SiteUserFixture.java @@ -56,11 +56,11 @@ public class SiteUserFixture { .create(); } - public SiteUser 테스트_어드민() { + public SiteUser 관리자() { return siteUserFixtureBuilder.siteUser() .email("admin@example.com") .authType(AuthType.EMAIL) - .nickname("테스트어드민") + .nickname("관리자") .profileImageUrl("profileImageUrl") .role(Role.ADMIN) .password("admin123") From 65dfc470a8191016786ef6c5a583510c9163691c Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Sun, 18 May 2025 12:50:10 +0900 Subject: [PATCH 13/15] =?UTF-8?q?refactor:=20Repository=20=ED=85=8C?= =?UTF-8?q?=EC=8A=A4=ED=8A=B8=EB=8A=94=20fixture=20=EB=8C=80=EC=8B=A0=20en?= =?UTF-8?q?tity=20=EC=82=AC=EC=9A=A9=ED=95=98=EB=8F=84=EB=A1=9D=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../repository/SiteUserRepositoryTest.java | 37 +++++++++++++------ 1 file changed, 25 insertions(+), 12 deletions(-) diff --git a/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java b/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java index bedbecc61..c3d9d240e 100644 --- a/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/repository/SiteUserRepositoryTest.java @@ -1,9 +1,10 @@ package com.example.solidconnection.siteuser.repository; import com.example.solidconnection.siteuser.domain.AuthType; -import com.example.solidconnection.siteuser.fixture.SiteUserFixture; -import com.example.solidconnection.support.TestContainerSpringBootTest; -import org.junit.jupiter.api.DisplayName; +import com.example.solidconnection.siteuser.domain.SiteUser; +import com.example.solidconnection.support.TestContainerDataJpaTest; +import com.example.solidconnection.type.PreparationStatus; +import com.example.solidconnection.type.Role; import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.beans.factory.annotation.Autowired; @@ -11,14 +12,11 @@ import static org.assertj.core.api.Assertions.assertThatCode; -// @TestContainerDataJpaTest + @Import 쓰기 vs @TestContainerSpringBootTest 검토 필요 -@TestContainerSpringBootTest -//@Import({SiteUserFixture.class, SiteUserFixtureBuilder.class, PasswordEncoder.class}) -@DisplayName("유저 레포지토리 테스트") +@TestContainerDataJpaTest class SiteUserRepositoryTest { @Autowired - private SiteUserFixture siteUserFixture; + private SiteUserRepository siteUserRepository; @Nested class 이메일과_인증_유형이_동일한_사용자는_저장할_수_없다 { @@ -26,21 +24,36 @@ class 이메일과_인증_유형이_동일한_사용자는_저장할_수_없다 @Test void 이메일과_인증_유형이_동일한_사용자를_저장하면_예외_응답을_반환한다() { // given - siteUserFixture.사용자("email", AuthType.KAKAO); + SiteUser user1 = createSiteUser("email", AuthType.KAKAO); + SiteUser user2 = createSiteUser("email", AuthType.KAKAO); + siteUserRepository.save(user1); // when, then - assertThatCode(() -> siteUserFixture.사용자("email", AuthType.KAKAO)) + assertThatCode(() -> siteUserRepository.save(user2)) .isInstanceOf(DataIntegrityViolationException.class); } @Test void 이메일이_같더라도_인증_유형이_다른_사용자는_정상_저장한다() { // given - siteUserFixture.사용자("email", AuthType.KAKAO); + SiteUser user1 = createSiteUser("email", AuthType.KAKAO); + SiteUser user2 = createSiteUser("email", AuthType.APPLE); + siteUserRepository.save(user1); // when, then - assertThatCode(() -> siteUserFixture.사용자("email", AuthType.APPLE)) + assertThatCode(() -> siteUserRepository.save(user2)) .doesNotThrowAnyException(); } } + + private SiteUser createSiteUser(String email, AuthType authType) { + return new SiteUser( + email, + "nickname", + "profileImageUrl", + PreparationStatus.CONSIDERING, + Role.MENTEE, + authType + ); + } } From 75f6294f2a2dd4a52fd08707b57857a4b315102d Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Mon, 19 May 2025 12:09:51 +0900 Subject: [PATCH 14/15] =?UTF-8?q?refactor:=20=EC=BB=A4=EC=8A=A4=ED=85=80?= =?UTF-8?q?=20=ED=94=84=EB=A1=9C=ED=95=84=20=EC=82=AC=EC=9A=A9=EC=9E=90?= =?UTF-8?q?=EB=A1=9C=20=EC=9D=B4=EB=A6=84=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/MyPageServiceTest.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java index 4f5d86ebc..d683a3e7e 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java @@ -138,16 +138,16 @@ class 프로필_이미지_수정_테스트 { @Test void 프로필을_처음_수정하는_것이_아니라면_이전_이미지를_삭제한다() { // given - SiteUser 커스텀_프로필_테스트_유저 = createSiteUserWithCustomProfile(); + SiteUser 커스텀_프로필_사용자 = createSiteUserWithCustomProfile(); MockMultipartFile imageFile = createValidImageFile(); given(s3Service.uploadFile(any(), eq(ImgType.PROFILE))) .willReturn(new UploadedFileUrlResponse("newProfileImageUrl")); // when - myPageService.updateMyPageInfo(커스텀_프로필_테스트_유저, imageFile, "newNickname"); + myPageService.updateMyPageInfo(커스텀_프로필_사용자, imageFile, "newNickname"); // then - then(s3Service).should().deleteExProfile(커스텀_프로필_테스트_유저); + then(s3Service).should().deleteExProfile(커스텀_프로필_사용자); } } From a4f5d17862b4b05f36d56aa6b5003734521dc2cf Mon Sep 17 00:00:00 2001 From: Gyuhyeok99 <126947828+Gyuhyeok99@users.noreply.github.com> Date: Mon, 19 May 2025 12:12:04 +0900 Subject: [PATCH 15/15] =?UTF-8?q?refactor:=20=EC=BB=A4=EC=8A=A4=ED=85=80?= =?UTF-8?q?=20=ED=94=84=EB=A1=9C=ED=95=84=20=EC=83=9D=EC=84=B1=20=ED=95=A8?= =?UTF-8?q?=EC=88=98=20private=EB=A1=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/MyPageServiceTest.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java index d683a3e7e..1c5680d33 100644 --- a/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java +++ b/src/test/java/com/example/solidconnection/siteuser/service/MyPageServiceTest.java @@ -228,7 +228,7 @@ private String createExpectedErrorMessage(LocalDateTime modifiedAt) { return CAN_NOT_CHANGE_NICKNAME_YET.getMessage() + " : " + formatLastModifiedAt; } - public SiteUser createSiteUserWithCustomProfile() { + private SiteUser createSiteUserWithCustomProfile() { return siteUserFixtureBuilder.siteUser() .email("customProfile@example.com") .authType(AuthType.EMAIL)