From 71eeab55012afc6b282d7571f6689c188b1de1a1 Mon Sep 17 00:00:00 2001 From: Miseong Kim Date: Fri, 17 Nov 2023 16:37:09 +0900 Subject: [PATCH] =?UTF-8?q?test:=20=ED=85=8C=EC=8A=A4=ED=8A=B8=20=EC=BD=94?= =?UTF-8?q?=EB=93=9C=20=EC=88=98=EC=A0=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../goalroom/GoalRoomCreateService.java | 9 ++++- .../GoalRoomCreateIntegrationTest.java | 39 ++----------------- .../service/GoalRoomCreateServiceTest.java | 8 ++-- 3 files changed, 15 insertions(+), 41 deletions(-) diff --git a/backend/kirikiri/src/main/java/co/kirikiri/service/goalroom/GoalRoomCreateService.java b/backend/kirikiri/src/main/java/co/kirikiri/service/goalroom/GoalRoomCreateService.java index ccdc6966..7e34b03e 100644 --- a/backend/kirikiri/src/main/java/co/kirikiri/service/goalroom/GoalRoomCreateService.java +++ b/backend/kirikiri/src/main/java/co/kirikiri/service/goalroom/GoalRoomCreateService.java @@ -118,11 +118,11 @@ private Member findMemberByIdentifier(final String memberIdentifier) { public void join(final String identifier, final Long goalRoomId) { final Member member = findMemberByIdentifier(identifier); - final GoalRoom goalRoom = findGoalRoomById(goalRoomId); + final GoalRoom goalRoom = findGoalRoomByIdWithPessimisticLock(goalRoomId); goalRoom.join(member); } - private GoalRoom findGoalRoomById(final Long goalRoomId) { + private GoalRoom findGoalRoomByIdWithPessimisticLock(final Long goalRoomId) { return goalRoomRepository.findGoalRoomByIdWithPessimisticLock(goalRoomId) .orElseThrow(() -> new NotFoundException("존재하지 않는 골룸입니다. goalRoomId = " + goalRoomId)); } @@ -139,6 +139,11 @@ public Long addGoalRoomTodo(final Long goalRoomId, final String identifier, return goalRoom.findLastGoalRoomTodo().getId(); } + private GoalRoom findGoalRoomById(final Long goalRoomId) { + return goalRoomRepository.findById(goalRoomId) + .orElseThrow(() -> new NotFoundException("존재하지 않는 골룸입니다. goalRoomId = " + goalRoomId)); + } + private void checkGoalRoomCompleted(final GoalRoom goalRoom) { if (goalRoom.isCompleted()) { throw new BadRequestException("이미 종료된 골룸입니다."); diff --git a/backend/kirikiri/src/test/java/co/kirikiri/integration/GoalRoomCreateIntegrationTest.java b/backend/kirikiri/src/test/java/co/kirikiri/integration/GoalRoomCreateIntegrationTest.java index 7c9b5efd..b1f92246 100644 --- a/backend/kirikiri/src/test/java/co/kirikiri/integration/GoalRoomCreateIntegrationTest.java +++ b/backend/kirikiri/src/test/java/co/kirikiri/integration/GoalRoomCreateIntegrationTest.java @@ -50,14 +50,14 @@ import io.restassured.common.mapper.TypeRef; import io.restassured.response.ExtractableResponse; import io.restassured.response.Response; -import org.junit.jupiter.api.Test; -import org.springframework.http.HttpHeaders; -import org.springframework.http.HttpStatus; -import org.springframework.mock.web.MockMultipartFile; import java.io.IOException; import java.time.temporal.ChronoUnit; import java.util.Collections; import java.util.List; +import org.junit.jupiter.api.Test; +import org.springframework.http.HttpHeaders; +import org.springframework.http.HttpStatus; +import org.springframework.mock.web.MockMultipartFile; class GoalRoomCreateIntegrationTest extends InitIntegrationTest { @@ -290,37 +290,6 @@ class GoalRoomCreateIntegrationTest extends InitIntegrationTest { ); } - @Test - void 모집_중이지_않은_골룸에_참가_요청을_보내면_예외가_발생한다() throws IOException { - //given - final Long 기본_로드맵_아이디 = 로드맵_생성(기본_로드맵_생성_요청, 기본_로그인_토큰); - final RoadmapResponse 로드맵_응답 = 로드맵을_아이디로_조회하고_응답객체를_반환한다(기본_로드맵_아이디); - - final List 골룸_노드_별_기간_요청 = List.of( - new GoalRoomRoadmapNodeRequest(로드맵_응답.content().nodes().get(0).id(), 정상적인_골룸_노드_인증_횟수, 오늘, 십일_후)); - final GoalRoomCreateRequest 골룸_생성_요청 = new GoalRoomCreateRequest(기본_로드맵_아이디, 정상적인_골룸_이름, 정상적인_골룸_제한_인원, - 골룸_노드_별_기간_요청); - final Long 골룸_아이디 = 골룸을_생성하고_아이디를_반환한다(골룸_생성_요청, 기본_로그인_토큰); - 골룸을_시작한다(기본_로그인_토큰, 골룸_아이디); - - final MemberJoinRequest 팔로워_회원_가입_요청 = new MemberJoinRequest("identifier2", "paswword2@", - "follower", GenderType.FEMALE, DEFAULT_EMAIL); - final LoginRequest 팔로워_로그인_요청 = new LoginRequest(팔로워_회원_가입_요청.identifier(), 팔로워_회원_가입_요청.password()); - 회원가입(팔로워_회원_가입_요청); - final String 팔로워_액세스_토큰 = String.format(BEARER_TOKEN_FORMAT, 로그인(팔로워_로그인_요청).accessToken()); - - //when - final ExtractableResponse 참가_요청에_대한_응답 = 골룸_참가_요청(골룸_아이디, 팔로워_액세스_토큰); - - //then - final String 예외_메시지 = 참가_요청에_대한_응답.asString(); - - assertAll( - () -> assertThat(참가_요청에_대한_응답.statusCode()).isEqualTo(HttpStatus.BAD_REQUEST.value()), - () -> assertThat(예외_메시지).contains("모집 중이지 않은 골룸에는 참여할 수 없습니다.") - ); - } - @Test void 인증_피드_등록을_요청한다() throws IOException { //given diff --git a/backend/kirikiri/src/test/java/co/kirikiri/service/GoalRoomCreateServiceTest.java b/backend/kirikiri/src/test/java/co/kirikiri/service/GoalRoomCreateServiceTest.java index d11168c8..b409f8dd 100644 --- a/backend/kirikiri/src/test/java/co/kirikiri/service/GoalRoomCreateServiceTest.java +++ b/backend/kirikiri/src/test/java/co/kirikiri/service/GoalRoomCreateServiceTest.java @@ -252,7 +252,7 @@ static void setUp() { when(memberRepository.findByIdentifier(any())) .thenReturn(Optional.of(follower)); - when(goalRoomRepository.findById(anyLong())) + when(goalRoomRepository.findGoalRoomByIdWithPessimisticLock(anyLong())) .thenReturn(Optional.of(goalRoom)); //when @@ -282,7 +282,7 @@ static void setUp() { when(memberRepository.findByIdentifier(any())) .thenReturn(Optional.of(follower)); - when(goalRoomRepository.findById(anyLong())) + when(goalRoomRepository.findGoalRoomByIdWithPessimisticLock(anyLong())) .thenReturn(Optional.empty()); //when, then @@ -304,7 +304,7 @@ static void setUp() { when(memberRepository.findByIdentifier(any())) .thenReturn(Optional.of(follower)); - when(goalRoomRepository.findById(anyLong())) + when(goalRoomRepository.findGoalRoomByIdWithPessimisticLock(anyLong())) .thenReturn(Optional.of(goalRoom)); //when, then @@ -326,7 +326,7 @@ static void setUp() { when(memberRepository.findByIdentifier(any())) .thenReturn(Optional.of(follower)); - when(goalRoomRepository.findById(anyLong())) + when(goalRoomRepository.findGoalRoomByIdWithPessimisticLock(anyLong())) .thenReturn(Optional.of(goalRoom)); //when, then