Skip to content

Commit 98b2000

Browse files
committed
test(review): 리뷰 생성 기능 테스트
1 parent e5ce817 commit 98b2000

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed
Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
package com.somemore.review.service;
2+
3+
import static com.somemore.global.exception.ExceptionMessage.REVIEW_ALREADY_EXISTS;
4+
import static com.somemore.global.exception.ExceptionMessage.REVIEW_RESTRICTED_TO_ATTENDED;
5+
import static com.somemore.volunteerapply.domain.ApplyStatus.APPROVED;
6+
import static org.assertj.core.api.Assertions.assertThat;
7+
import static org.assertj.core.api.Assertions.assertThatThrownBy;
8+
import static org.junit.jupiter.api.Assertions.*;
9+
10+
import com.somemore.IntegrationTestSupport;
11+
import com.somemore.global.exception.BadRequestException;
12+
import com.somemore.global.exception.ExceptionMessage;
13+
import com.somemore.review.domain.Review;
14+
import com.somemore.review.dto.request.ReviewCreateRequestDto;
15+
import com.somemore.review.repository.ReviewRepository;
16+
import com.somemore.review.repository.ReviewRepositoryImpl;
17+
import com.somemore.volunteerapply.domain.ApplyStatus;
18+
import com.somemore.volunteerapply.domain.VolunteerApply;
19+
import com.somemore.volunteerapply.repository.VolunteerApplyRepository;
20+
import java.util.Optional;
21+
import java.util.UUID;
22+
import org.junit.jupiter.api.DisplayName;
23+
import org.junit.jupiter.api.Test;
24+
import org.springframework.beans.factory.annotation.Autowired;
25+
import org.springframework.transaction.annotation.Transactional;
26+
27+
@Transactional
28+
class CreateReviewServiceTest extends IntegrationTestSupport {
29+
30+
@Autowired
31+
private CreateReviewService createReviewService;
32+
33+
@Autowired
34+
private ReviewRepository reviewRepository;
35+
36+
@Autowired
37+
private VolunteerApplyRepository volunteerApplyRepository;
38+
39+
@DisplayName("리뷰 생성")
40+
@Test
41+
void createReview() {
42+
// given
43+
UUID volunteerId = UUID.randomUUID();
44+
Long recruitId = 200L;
45+
VolunteerApply apply = VolunteerApply.builder()
46+
.volunteerId(volunteerId)
47+
.recruitBoardId(200L)
48+
.status(APPROVED)
49+
.attended(true)
50+
.build();
51+
volunteerApplyRepository.save(apply);
52+
53+
ReviewCreateRequestDto requestDto = ReviewCreateRequestDto.builder()
54+
.recruitBoardId(recruitId)
55+
.title("리뷰 제목")
56+
.content("리뷰 내용")
57+
.build();
58+
59+
// when
60+
Long reviewId = createReviewService.createReview(requestDto, volunteerId, "");
61+
62+
// then
63+
Optional<Review> findReview = reviewRepository.findById(reviewId);
64+
assertThat(findReview).isPresent();
65+
assertThat(findReview.get().getId()).isEqualTo(reviewId);
66+
}
67+
68+
@DisplayName("참석하지 않은 봉사 활동에 대해 리뷰를 생성하면 에러가 발생한다")
69+
@Test
70+
void createReviewWhenNotCompleted() {
71+
// given
72+
UUID volunteerId = UUID.randomUUID();
73+
Long recruitId = 200L;
74+
VolunteerApply apply = VolunteerApply.builder()
75+
.volunteerId(volunteerId)
76+
.recruitBoardId(200L)
77+
.status(APPROVED)
78+
.attended(false)
79+
.build();
80+
volunteerApplyRepository.save(apply);
81+
82+
ReviewCreateRequestDto requestDto = ReviewCreateRequestDto.builder()
83+
.recruitBoardId(recruitId)
84+
.title("리뷰 제목")
85+
.content("리뷰 내용")
86+
.build();
87+
88+
// when
89+
// then
90+
assertThatThrownBy(
91+
() -> createReviewService.createReview(requestDto, volunteerId, "")
92+
).isInstanceOf(BadRequestException.class)
93+
.hasMessage(REVIEW_RESTRICTED_TO_ATTENDED.getMessage());
94+
}
95+
96+
@DisplayName("이미 작성한 봉사 활동에 대해 리뷰를 생성하면 에러가 발생한다")
97+
@Test
98+
void createReviewWhenExistsReview() {
99+
// given
100+
UUID volunteerId = UUID.randomUUID();
101+
Long recruitId = 200L;
102+
VolunteerApply apply = VolunteerApply.builder()
103+
.volunteerId(volunteerId)
104+
.recruitBoardId(200L)
105+
.status(APPROVED)
106+
.attended(false)
107+
.build();
108+
volunteerApplyRepository.save(apply);
109+
110+
Review review = Review.builder()
111+
.volunteerApplyId(apply.getId())
112+
.volunteerId(volunteerId)
113+
.title("리뷰 제목")
114+
.content("리뷰 내용")
115+
.imgUrl("")
116+
.build();
117+
118+
reviewRepository.save(review);
119+
120+
ReviewCreateRequestDto requestDto = ReviewCreateRequestDto.builder()
121+
.recruitBoardId(recruitId)
122+
.title("리뷰 제목")
123+
.content("리뷰 내용")
124+
.build();
125+
126+
// when
127+
// then
128+
assertThatThrownBy(
129+
() -> createReviewService.createReview(requestDto, volunteerId, "")
130+
).isInstanceOf(BadRequestException.class)
131+
.hasMessage(REVIEW_ALREADY_EXISTS.getMessage());
132+
}
133+
134+
}

0 commit comments

Comments
 (0)