Skip to content

Commit

Permalink
feat: review 완료 시 reviewCount 증가 기능 구현 (#721)
Browse files Browse the repository at this point in the history
* feat: review 완료 시 reviewCount 증가 기능 구현

* test: reviewCount 증가로직 테스트 구현

* refactor: 리뷰수 증가 로직을 RunnerPost 안으로 옮김
  • Loading branch information
cookienc authored Feb 19, 2024
1 parent be6041a commit 8281ea6
Show file tree
Hide file tree
Showing 11 changed files with 85 additions and 6 deletions.
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

0 comments on commit 8281ea6

Please sign in to comment.