Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: review 완료 시 reviewCount 증가 기능 구현 #721

Merged
merged 3 commits into from
Feb 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -120,6 +120,10 @@ public void updateCompany(final Company company) {
this.member.updateCompany(company);
}

public void increaseReviewCount() {
this.reviewCount.increase();
}

@Override
public boolean equals(final Object o) {
if (this == o) return true;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,4 +24,8 @@ public class ReviewCount {
public ReviewCount(final int value) {
this.value = value;
}

public void increase() {
value += 1;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -210,6 +210,7 @@ public void addAllRunnerPostTags(final List<RunnerPostTag> postTags) {

public void finishReview() {
updateReviewStatus(ReviewStatus.DONE);
this.supporter.increaseReviewCount();
}

public void finishFeedback() {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@
import touch.baton.domain.runnerpost.command.service.dto.RunnerPostApplicantCreateRequest;
import touch.baton.domain.runnerpost.command.service.dto.RunnerPostCreateRequest;
import touch.baton.domain.runnerpost.command.service.dto.RunnerPostUpdateRequest;
import touch.baton.domain.runnerpost.query.repository.RunnerPostQueryRepository;
import touch.baton.domain.tag.command.RunnerPostTag;
import touch.baton.domain.tag.command.Tag;
import touch.baton.domain.tag.command.repository.TagCommandRepository;
Expand All @@ -34,6 +35,7 @@
public class RunnerPostCommandService {

private final RunnerPostCommandRepository runnerPostCommandRepository;
private final RunnerPostQueryRepository runnerPostQueryRepository;
private final TagCommandRepository tagCommandRepository;
private final SupporterCommandRepository supporterCommandRepository;
private final SupporterRunnerPostCommandRepository supporterRunnerPostCommandRepository;
Expand Down Expand Up @@ -125,7 +127,7 @@ public Long createRunnerPostApplicant(final Supporter supporter,
}

public void updateRunnerPostReviewStatusDone(final Long runnerPostId, final Supporter supporter) {
final RunnerPost foundRunnerPost = runnerPostCommandRepository.findById(runnerPostId)
final RunnerPost foundRunnerPost = runnerPostQueryRepository.joinSupporterByRunnerPostId(runnerPostId)
.orElseThrow(() -> new RunnerPostBusinessException("해당 식별자의 러너 게시글이 존재하지 않습니다."));

if (Objects.isNull(foundRunnerPost.getSupporter())) {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
package touch.baton.domain.member.vo;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import touch.baton.domain.member.command.vo.ReviewCount;

import static org.assertj.core.api.Assertions.assertThat;

class ReviewCountTest {

@DisplayName("increaseCount가 호출 되면 value가 1 증가한다.")
@Test
void increaseCount() {
// given
final int initialValue = 0;
final ReviewCount reviewCount = new ReviewCount(initialValue);

// when
reviewCount.increase();

// then
assertThat(reviewCount.getValue()).isEqualTo(initialValue + 1);
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package touch.baton.domain.runnerpost;

import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Nested;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -71,11 +72,16 @@ class RunnerPostTest {
.runnerTechnicalTags(RunnerTechnicalTagsFixture.create(new ArrayList<>()))
.build();

private final Supporter supporter = Supporter.builder()
.reviewCount(new ReviewCount(10))
.member(supporterMember)
.supporterTechnicalTags(new SupporterTechnicalTags(new ArrayList<>()))
.build();
private Supporter supporter;

@BeforeEach
void setUp() {
supporter = Supporter.builder()
.reviewCount(new ReviewCount(10))
.member(supporterMember)
.supporterTechnicalTags(new SupporterTechnicalTags(new ArrayList<>()))
.build();
}

@DisplayName("runnerPostTags 전체를 추가할 수 있다.")
@Test
Expand Down Expand Up @@ -584,4 +590,34 @@ void fail_same_to_same(final ReviewStatus reviewStatus) {
.isInstanceOf(RunnerPostDomainException.class);
}
}

@DisplayName("리뷰완료가 되면 ReviewStatus가 Done으로 바뀌고 리뷰를 작성한 ReviewCount가 1 증가한다.")
@Test
void finishReview() {
// given
final ReviewCount originReviewCount = new ReviewCount(supporter.getReviewCount().getValue());
final RunnerPost runnerPost = RunnerPost.builder()
.title(new Title("러너가 작성하는 리뷰 요청 게시글의 테스트 제목입니다."))
.implementedContents(new ImplementedContents("안녕하세요. 테스트 내용입니다."))
.curiousContents(new CuriousContents("궁금한 점입니다."))
.postscriptContents(new PostscriptContents("잘 부탁드립니다."))
.pullRequestUrl(new PullRequestUrl("https://github.com"))
.deadline(new Deadline(LocalDateTime.now().plusHours(100)))
.watchedCount(new WatchedCount(0))
.reviewStatus(ReviewStatus.IN_PROGRESS)
.isReviewed(IsReviewed.notReviewed())
.runner(runner)
.supporter(supporter)
.runnerPostTags(new RunnerPostTags(new ArrayList<>()))
.build();

// when
runnerPost.finishReview();

// then
assertAll(
() -> assertThat(runnerPost.getReviewStatus()).isEqualTo(ReviewStatus.DONE),
() -> assertThat(supporter.getReviewCount()).isEqualTo(new ReviewCount(originReviewCount.getValue() + 1))
);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ class RunnerPostCommandServiceCreateTest extends ServiceTestConfig {
void setUp() {
runnerPostCommandService = new RunnerPostCommandService(
runnerPostCommandRepository,
runnerPostQueryRepository,
tagCommandRepository,
supporterCommandRepository,
supporterRunnerPostCommandRepository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ class RunnerPostCommandServiceDeleteTest extends ServiceTestConfig {
void setUp() {
runnerPostCommandService = new RunnerPostCommandService(
runnerPostCommandRepository,
runnerPostQueryRepository,
tagCommandRepository,
supporterCommandRepository,
supporterRunnerPostCommandRepository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ class RunnerPostCommandServiceEventTest extends ServiceTestConfig {
void setUp() {
runnerPostCommandService = new RunnerPostCommandService(
runnerPostCommandRepository,
runnerPostQueryRepository,
tagCommandRepository,
supporterCommandRepository,
supporterRunnerPostCommandRepository,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
import touch.baton.domain.member.command.Member;
import touch.baton.domain.member.command.Runner;
import touch.baton.domain.member.command.Supporter;
import touch.baton.domain.member.command.vo.ReviewCount;
import touch.baton.domain.runnerpost.command.RunnerPost;
import touch.baton.domain.runnerpost.command.exception.RunnerPostBusinessException;
import touch.baton.domain.runnerpost.command.exception.RunnerPostDomainException;
Expand Down Expand Up @@ -43,6 +44,7 @@ class RunnerPostCommandServiceUpdateTest extends ServiceTestConfig {
void setUp() {
runnerPostCommandService = new RunnerPostCommandService(
runnerPostCommandRepository,
runnerPostQueryRepository,
tagCommandRepository,
supporterCommandRepository,
supporterRunnerPostCommandRepository,
Expand Down Expand Up @@ -143,6 +145,7 @@ void updateRunnerPostReviewStatusDone() {
// given
final IsReviewed isReviewed = IsReviewed.notReviewed();
final RunnerPost targetRunnerPost = runnerPostQueryRepository.save(RunnerPostFixture.createWithSupporter(runner, assignedSupporter, IN_PROGRESS, isReviewed));
final ReviewCount originalReviewCount = new ReviewCount(assignedSupporter.getReviewCount().getValue());

// when
runnerPostCommandService.updateRunnerPostReviewStatusDone(targetRunnerPost.getId(), assignedSupporter);
Expand All @@ -152,6 +155,7 @@ void updateRunnerPostReviewStatusDone() {
assertThat(maybeRunnerPost).isPresent();
final RunnerPost actualRunnerPost = maybeRunnerPost.get();
assertThat(actualRunnerPost.getReviewStatus()).isEqualTo(ReviewStatus.DONE);
assertThat(assignedSupporter.getReviewCount()).isEqualTo(new ReviewCount(originalReviewCount.getValue() + 1));
}

@DisplayName("없는 게시글의 상태를 리뷰 완료로 변경할 수 없다.")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -35,6 +35,7 @@ class RunnerPostUpdateApplicantCancelationServiceTest extends ServiceTestConfig
void setUp() {
runnerPostCommandService = new RunnerPostCommandService(
runnerPostCommandRepository,
runnerPostQueryRepository,
tagCommandRepository,
supporterCommandRepository,
supporterRunnerPostCommandRepository,
Expand Down
Loading