Skip to content

Commit c4626fd

Browse files
authored
refactor: 유저 관련 통합 테스트 데이터 fixture 메서드로 변경 (#319)
* feat: SiteUserFixture에 유저 생성 메서드 추가 * refactor: 대학 관련 테스트 유저 데이터 Fixture 메서드로 변경 * refactor: 유저 관련 테스트 유저 데이터 Fixture 메서드로 변경 * refactor: 점수 관련 테스트 유저 데이터 Fixture 메서드로 변경 * refactor: 동시성 관련 테스트 유저 데이터 Fixture 메서드로 변경 * refactor: 인증 관련 테스트 유저 데이터 Fixture 메서드로 변경 * refactor: 어드민 관련 테스트 유저 데이터 Fixture 메서드로 변경 * refactor: 커스텀 관련 테스트 유저 데이터 Fixture 메서드로 변경 * refactor: SiteUserFixtureBuilder에서 비밀번호 인코딩 처리 통일 * refactor: 재사용성 없는 fixture 제거 * refactor: 테스트 유저 메서드명 사용자()로 통일 * refactor: 테스트 어드민 메서드명 관리자()로 통일 * refactor: Repository 테스트는 fixture 대신 entity 사용하도록 변경 * refactor: 커스텀 프로필 사용자로 이름 변경 * refactor: 커스텀 프로필 생성 함수 private로 변경
1 parent 8a84535 commit c4626fd

23 files changed

+464
-522
lines changed

src/test/java/com/example/solidconnection/admin/service/AdminGpaScoreServiceTest.java

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99
import com.example.solidconnection.score.domain.GpaScore;
1010
import com.example.solidconnection.score.repository.GpaScoreRepository;
1111
import com.example.solidconnection.siteuser.domain.SiteUser;
12-
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
12+
import com.example.solidconnection.siteuser.fixture.SiteUserFixture;
1313
import com.example.solidconnection.support.integration.BaseIntegrationTest;
14-
import com.example.solidconnection.type.PreparationStatus;
15-
import com.example.solidconnection.type.Role;
1614
import com.example.solidconnection.type.VerifyStatus;
1715
import org.junit.jupiter.api.BeforeEach;
1816
import org.junit.jupiter.api.DisplayName;
@@ -38,26 +36,23 @@ class AdminGpaScoreServiceTest extends BaseIntegrationTest {
3836
private AdminGpaScoreService adminGpaScoreService;
3937

4038
@Autowired
41-
private SiteUserRepository siteUserRepository;
39+
private GpaScoreRepository gpaScoreRepository;
4240

4341
@Autowired
44-
private GpaScoreRepository gpaScoreRepository;
42+
private SiteUserFixture siteUserFixture;
4543

46-
private SiteUser siteUser1;
47-
private SiteUser siteUser2;
48-
private SiteUser siteUser3;
4944
private GpaScore gpaScore1;
5045
private GpaScore gpaScore2;
5146
private GpaScore gpaScore3;
5247

5348
@BeforeEach
5449
void setUp() {
55-
siteUser1 = createSiteUser(1, "test1");
56-
siteUser2 = createSiteUser(2, "test2");
57-
siteUser3 = createSiteUser(3, "test3");
58-
gpaScore3 = createGpaScore(siteUser3, VerifyStatus.REJECTED);
59-
gpaScore2 = createGpaScore(siteUser2, VerifyStatus.PENDING);
60-
gpaScore1 = createGpaScore(siteUser1, VerifyStatus.PENDING);
50+
SiteUser user1 = siteUserFixture.사용자(1, "test1");
51+
SiteUser user2 = siteUserFixture.사용자(2, "test2");
52+
SiteUser user3 = siteUserFixture.사용자(3, "test3");
53+
gpaScore3 = createGpaScore(user3, VerifyStatus.REJECTED);
54+
gpaScore2 = createGpaScore(user2, VerifyStatus.PENDING);
55+
gpaScore1 = createGpaScore(user1, VerifyStatus.PENDING);
6156
}
6257

6358
@Nested
@@ -209,17 +204,6 @@ class GPA_점수_검증_및_수정 {
209204
}
210205
}
211206

212-
private SiteUser createSiteUser(int index, String nickname) {
213-
SiteUser siteUser = new SiteUser(
214-
"test" + index + " @example.com",
215-
nickname,
216-
"profileImageUrl",
217-
PreparationStatus.CONSIDERING,
218-
Role.MENTEE
219-
);
220-
return siteUserRepository.save(siteUser);
221-
}
222-
223207
private GpaScore createGpaScore(SiteUser siteUser, VerifyStatus status) {
224208
GpaScore gpaScore = new GpaScore(
225209
new Gpa(4.0, 4.5, "/gpa-report.pdf"),

src/test/java/com/example/solidconnection/admin/service/AdminLanguageTestScoreServiceTest.java

Lines changed: 9 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,8 @@
99
import com.example.solidconnection.score.domain.LanguageTestScore;
1010
import com.example.solidconnection.score.repository.LanguageTestScoreRepository;
1111
import com.example.solidconnection.siteuser.domain.SiteUser;
12-
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
12+
import com.example.solidconnection.siteuser.fixture.SiteUserFixture;
1313
import com.example.solidconnection.support.integration.BaseIntegrationTest;
14-
import com.example.solidconnection.type.PreparationStatus;
15-
import com.example.solidconnection.type.Role;
1614
import com.example.solidconnection.type.VerifyStatus;
1715
import org.junit.jupiter.api.BeforeEach;
1816
import org.junit.jupiter.api.DisplayName;
@@ -39,26 +37,23 @@ class AdminLanguageTestScoreServiceTest extends BaseIntegrationTest {
3937
private AdminLanguageTestScoreService adminLanguageTestScoreService;
4038

4139
@Autowired
42-
private SiteUserRepository siteUserRepository;
40+
private LanguageTestScoreRepository languageTestScoreRepository;
4341

4442
@Autowired
45-
private LanguageTestScoreRepository languageTestScoreRepository;
43+
private SiteUserFixture siteUserFixture;
4644

47-
private SiteUser siteUser1;
48-
private SiteUser siteUser2;
49-
private SiteUser siteUser3;
5045
private LanguageTestScore languageTestScore1;
5146
private LanguageTestScore languageTestScore2;
5247
private LanguageTestScore languageTestScore3;
5348

5449
@BeforeEach
5550
void setUp() {
56-
siteUser1 = createSiteUser(1, "test1");
57-
siteUser2 = createSiteUser(2, "test2");
58-
siteUser3 = createSiteUser(3, "test3");
59-
languageTestScore3 = createLanguageTestScore(siteUser3, VerifyStatus.REJECTED);
60-
languageTestScore2 = createLanguageTestScore(siteUser2, VerifyStatus.PENDING);
61-
languageTestScore1 = createLanguageTestScore(siteUser1, VerifyStatus.PENDING);
51+
SiteUser user1 = siteUserFixture.사용자(1, "test1");
52+
SiteUser user2 = siteUserFixture.사용자(2, "test2");
53+
SiteUser user3 = siteUserFixture.사용자(3, "test3");
54+
languageTestScore3 = createLanguageTestScore(user3, VerifyStatus.REJECTED);
55+
languageTestScore2 = createLanguageTestScore(user2, VerifyStatus.PENDING);
56+
languageTestScore1 = createLanguageTestScore(user1, VerifyStatus.PENDING);
6257
}
6358

6459
@Nested
@@ -219,17 +214,6 @@ class 어학점수_검증_및_수정 {
219214
}
220215
}
221216

222-
private SiteUser createSiteUser(int index, String nickname) {
223-
SiteUser siteUser = new SiteUser(
224-
"test" + index + " @example.com",
225-
nickname,
226-
"profileImageUrl",
227-
PreparationStatus.CONSIDERING,
228-
Role.MENTEE
229-
);
230-
return siteUserRepository.save(siteUser);
231-
}
232-
233217
private LanguageTestScore createLanguageTestScore(SiteUser siteUser, VerifyStatus status) {
234218
LanguageTestScore languageTestScore = new LanguageTestScore(
235219
new LanguageTest(TOEIC, "500", "/toeic-report.pdf"),

src/test/java/com/example/solidconnection/auth/service/AuthServiceTest.java

Lines changed: 7 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@
55
import com.example.solidconnection.auth.dto.ReissueResponse;
66
import com.example.solidconnection.custom.exception.CustomException;
77
import com.example.solidconnection.siteuser.domain.SiteUser;
8-
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
8+
import com.example.solidconnection.siteuser.fixture.SiteUserFixture;
99
import com.example.solidconnection.support.TestContainerSpringBootTest;
10-
import com.example.solidconnection.type.PreparationStatus;
11-
import com.example.solidconnection.type.Role;
1210
import org.junit.jupiter.api.DisplayName;
1311
import org.junit.jupiter.api.Nested;
1412
import org.junit.jupiter.api.Test;
@@ -33,10 +31,10 @@ class AuthServiceTest {
3331
private AuthTokenProvider authTokenProvider;
3432

3533
@Autowired
36-
private SiteUserRepository siteUserRepository;
34+
private RedisTemplate<String, String> redisTemplate;
3735

3836
@Autowired
39-
private RedisTemplate<String, String> redisTemplate;
37+
private SiteUserFixture siteUserFixture;
4038

4139
@Test
4240
void 로그아웃한다() {
@@ -58,18 +56,18 @@ class AuthServiceTest {
5856
@Test
5957
void 탈퇴한다() {
6058
// given
61-
SiteUser siteUser = createSiteUser();
62-
Subject subject = authTokenProvider.toSubject(siteUser);
59+
SiteUser user = siteUserFixture.사용자();
60+
Subject subject = authTokenProvider.toSubject(user);
6361
AccessToken accessToken = authTokenProvider.generateAccessToken(subject); // todo: #296
6462

6563
// when
66-
authService.quit(siteUser, accessToken.token());
64+
authService.quit(user, accessToken.token());
6765

6866
// then
6967
LocalDate tomorrow = LocalDate.now().plusDays(1);
7068
String refreshTokenKey = TokenType.REFRESH.addPrefix(subject.value());
7169
assertAll(
72-
() -> assertThat(siteUser.getQuitedAt()).isEqualTo(tomorrow),
70+
() -> assertThat(user.getQuitedAt()).isEqualTo(tomorrow),
7371
() -> assertThat(redisTemplate.opsForValue().get(refreshTokenKey)).isNull(),
7472
() -> assertThat(authTokenProvider.isTokenBlacklisted(accessToken.token())).isTrue()
7573
);
@@ -105,15 +103,4 @@ class 토큰을_재발급한다 {
105103
.hasMessage(REFRESH_TOKEN_EXPIRED.getMessage());
106104
}
107105
}
108-
109-
private SiteUser createSiteUser() {
110-
SiteUser siteUser = new SiteUser(
111-
"test@example.com",
112-
"nickname",
113-
"profileImageUrl",
114-
PreparationStatus.CONSIDERING,
115-
Role.MENTEE
116-
);
117-
return siteUserRepository.save(siteUser);
118-
}
119106
}

src/test/java/com/example/solidconnection/auth/service/EmailSignInServiceTest.java

Lines changed: 5 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,14 @@
44
import com.example.solidconnection.auth.dto.SignInResponse;
55
import com.example.solidconnection.custom.exception.CustomException;
66
import com.example.solidconnection.custom.exception.ErrorCode;
7-
import com.example.solidconnection.siteuser.domain.AuthType;
87
import com.example.solidconnection.siteuser.domain.SiteUser;
9-
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
8+
import com.example.solidconnection.siteuser.fixture.SiteUserFixture;
109
import com.example.solidconnection.support.TestContainerSpringBootTest;
11-
import com.example.solidconnection.type.PreparationStatus;
12-
import com.example.solidconnection.type.Role;
1310
import org.assertj.core.api.Assertions;
1411
import org.junit.jupiter.api.DisplayName;
1512
import org.junit.jupiter.api.Nested;
1613
import org.junit.jupiter.api.Test;
1714
import org.springframework.beans.factory.annotation.Autowired;
18-
import org.springframework.security.crypto.password.PasswordEncoder;
1915

2016
import static org.assertj.core.api.Assertions.assertThatCode;
2117
import static org.junit.jupiter.api.Assertions.assertAll;
@@ -28,19 +24,15 @@ class EmailSignInServiceTest {
2824
private EmailSignInService emailSignInService;
2925

3026
@Autowired
31-
private SiteUserRepository siteUserRepository;
32-
33-
@Autowired
34-
private PasswordEncoder passwordEncoder;
27+
private SiteUserFixture siteUserFixture;
3528

3629
@Test
3730
void 로그인에_성공한다() {
3831
// given
3932
String email = "testEmail";
4033
String rawPassword = "testPassword";
41-
SiteUser siteUser = createSiteUser(email, rawPassword);
42-
siteUserRepository.save(siteUser);
43-
EmailSignInRequest signInRequest = new EmailSignInRequest(siteUser.getEmail(), rawPassword);
34+
SiteUser user = siteUserFixture.사용자(email, rawPassword);
35+
EmailSignInRequest signInRequest = new EmailSignInRequest(user.getEmail(), rawPassword);
4436

4537
// when
4638
SignInResponse signInResponse = emailSignInService.signIn(signInRequest);
@@ -70,8 +62,7 @@ class 로그인에_실패한다 {
7062
void 비밀번호가_일치하지_않으면_예외_응답을_반환한다() {
7163
// given
7264
String email = "testEmail";
73-
SiteUser siteUser = createSiteUser(email, "testPassword");
74-
siteUserRepository.save(siteUser);
65+
siteUserFixture.사용자(email, "testPassword");
7566
EmailSignInRequest signInRequest = new EmailSignInRequest(email, "틀린비밀번호");
7667

7768
// when & then
@@ -80,17 +71,4 @@ class 로그인에_실패한다 {
8071
.hasMessageContaining(ErrorCode.USER_NOT_FOUND.getMessage());
8172
}
8273
}
83-
84-
private SiteUser createSiteUser(String email, String rawPassword) {
85-
String encodedPassword = passwordEncoder.encode(rawPassword);
86-
return new SiteUser(
87-
email,
88-
"nickname",
89-
"profileImageUrl",
90-
PreparationStatus.CONSIDERING,
91-
Role.MENTEE,
92-
AuthType.EMAIL,
93-
encodedPassword
94-
);
95-
}
9674
}

src/test/java/com/example/solidconnection/auth/service/SignInServiceTest.java

Lines changed: 10 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,8 @@
44
import com.example.solidconnection.auth.dto.SignInResponse;
55
import com.example.solidconnection.config.security.JwtProperties;
66
import com.example.solidconnection.siteuser.domain.SiteUser;
7-
import com.example.solidconnection.siteuser.repository.SiteUserRepository;
7+
import com.example.solidconnection.siteuser.fixture.SiteUserFixture;
88
import com.example.solidconnection.support.TestContainerSpringBootTest;
9-
import com.example.solidconnection.type.PreparationStatus;
10-
import com.example.solidconnection.type.Role;
119
import com.example.solidconnection.util.JwtUtils;
1210
import org.junit.jupiter.api.BeforeEach;
1311
import org.junit.jupiter.api.DisplayName;
@@ -31,28 +29,24 @@ class SignInServiceTest {
3129
private JwtProperties jwtProperties;
3230

3331
@Autowired
34-
private AuthTokenProvider authTokenProvider;
35-
36-
@Autowired
37-
private SiteUserRepository siteUserRepository;
32+
private RedisTemplate<String, String> redisTemplate;
3833

3934
@Autowired
40-
private RedisTemplate<String, String> redisTemplate;
35+
private SiteUserFixture siteUserFixture;
4136

42-
private SiteUser siteUser;
37+
private SiteUser user;
4338
private String subject;
4439

4540
@BeforeEach
4641
void setUp() {
47-
siteUser = createSiteUser();
48-
siteUserRepository.save(siteUser);
49-
subject = siteUser.getId().toString();
42+
user = siteUserFixture.사용자();
43+
subject = user.getId().toString();
5044
}
5145

5246
@Test
5347
void 성공적으로_로그인한다() {
5448
// when
55-
SignInResponse signInResponse = signInService.signIn(siteUser);
49+
SignInResponse signInResponse = signInService.signIn(user);
5650

5751
// then
5852
String accessTokenSubject = JwtUtils.parseSubject(signInResponse.accessToken(), jwtProperties.secret());
@@ -67,23 +61,12 @@ void setUp() {
6761
@Test
6862
void 탈퇴한_이력이_있으면_초기화한다() {
6963
// given
70-
siteUser.setQuitedAt(LocalDate.now().minusDays(1));
71-
siteUserRepository.save(siteUser);
64+
user.setQuitedAt(LocalDate.now().minusDays(1));
7265

7366
// when
74-
signInService.signIn(siteUser);
67+
signInService.signIn(user);
7568

7669
// then
77-
assertThat(siteUser.getQuitedAt()).isNull();
78-
}
79-
80-
private SiteUser createSiteUser() {
81-
return new SiteUser(
82-
"test@example.com",
83-
"nickname",
84-
"profileImageUrl",
85-
PreparationStatus.CONSIDERING,
86-
Role.MENTEE
87-
);
70+
assertThat(user.getQuitedAt()).isNull();
8871
}
8972
}

0 commit comments

Comments
 (0)