Skip to content

Commit 692cc65

Browse files
committed
[EA3-211] refactor: StudyManagementServiceTest 트랜잭션 제거
1 parent 2a895d4 commit 692cc65

File tree

1 file changed

+21
-17
lines changed

1 file changed

+21
-17
lines changed

src/test/java/grep/neogulcoder/domain/study/service/StudyManagementServiceTest.java

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,8 @@
1212
import org.junit.jupiter.api.DisplayName;
1313
import org.junit.jupiter.api.Test;
1414
import org.springframework.beans.factory.annotation.Autowired;
15+
import org.springframework.boot.test.context.SpringBootTest;
16+
import org.springframework.test.context.ActiveProfiles;
1517
import org.springframework.transaction.annotation.Propagation;
1618
import org.springframework.transaction.annotation.Transactional;
1719

@@ -25,6 +27,8 @@
2527
import static grep.neogulcoder.domain.study.enums.StudyMemberRole.MEMBER;
2628
import static org.assertj.core.api.Assertions.assertThat;
2729

30+
@ActiveProfiles("test")
31+
@SpringBootTest
2832
class StudyManagementServiceTest extends IntegrationTestSupport {
2933

3034
@Autowired
@@ -45,10 +49,6 @@ class StudyManagementServiceTest extends IntegrationTestSupport {
4549
@Autowired
4650
private StudyManagementServiceFacade studyManagementServiceFacade;
4751

48-
private Long userId1;
49-
private Long userId2;
50-
private Long userId3;
51-
private Study study;
5252
private Long studyId;
5353

5454
@BeforeEach
@@ -57,39 +57,41 @@ void init() {
5757
User user2 = createUser("test2");
5858
User user3 = createUser("test3");
5959
userRepository.saveAll(List.of(user1, user2, user3));
60-
userId1 = user1.getId();
61-
userId2 = user2.getId();
62-
userId3 = user3.getId();
6360

64-
study = createStudy("스터디", LocalDateTime.parse("2025-09-05T20:20:20"), LocalDateTime.parse("2025-09-28T20:20:20"));
61+
Study study = createStudy("스터디", LocalDateTime.parse("2025-09-05T20:20:20"), LocalDateTime.parse("2025-09-28T20:20:20"));
6562
studyRepository.save(study);
6663
studyId = study.getId();
6764

68-
StudyMember studyLeader = createStudyLeader(study, userId1);
69-
StudyMember studyMember1 = createStudyMember(study, userId2);
65+
StudyMember member1 = createStudyLeader(study, user1.getId());
66+
StudyMember member2 = createStudyMember(study, user2.getId());
7067
study.increaseMemberCount();
71-
StudyMember studyMember2 = createStudyMember(study, userId3);
68+
StudyMember member3 = createStudyMember(study, user3.getId());
7269
study.increaseMemberCount();
7370

74-
studyMemberRepository.saveAll(List.of(studyLeader, studyMember1, studyMember2));
7571
studyRepository.save(study);
76-
77-
em.clear();
72+
studyMemberRepository.saveAll(List.of(member1, member2, member3));
7873
}
7974

8075
@DisplayName("2명의 멤버가 스터디를 동시에 탈퇴합니다.")
8176
@Transactional(propagation = Propagation.NOT_SUPPORTED)
8277
@Test
8378
void leaveStudy() throws InterruptedException {
8479
// given
85-
final int threads = 2;
80+
Study study = studyRepository.findById(studyId)
81+
.orElseThrow();
82+
System.out.println(study.getCurrentCount());
83+
84+
int threads = 2;
8685
ExecutorService executorService = Executors.newFixedThreadPool(threads);
8786
CountDownLatch countDownLatch = new CountDownLatch(threads);
8887

89-
List<Long> targetUserIds = List.of(userId2, userId3);
88+
List<Long> memberIds = studyMemberRepository.findFetchStudyByStudyId(studyId)
89+
.stream().filter(studyMember -> studyMember.getRole().equals(MEMBER))
90+
.map(StudyMember::getUserId)
91+
.toList();
9092

9193
// when
92-
for (Long targetUserId : targetUserIds) {
94+
for (Long targetUserId : memberIds) {
9395
executorService.submit(() -> {
9496
try {
9597
studyManagementServiceFacade.leaveStudyWithRetry(studyId, targetUserId);
@@ -105,6 +107,8 @@ void leaveStudy() throws InterruptedException {
105107

106108
//then
107109
Study findStudy = studyRepository.findById(studyId).orElseThrow();
110+
System.out.println(findStudy.getCurrentCount());
111+
System.out.println("leaveStudyWithRetry 실행 (studyId={}, userId={})");
108112
assertThat(findStudy.getCurrentCount()).isEqualTo(1);
109113
}
110114

0 commit comments

Comments
 (0)