Skip to content

Commit

Permalink
[BE] refactor: 단건 리뷰 조회 시 리뷰어 정보 삭제, 리뷰 작성 시점 추가 (#65)
Browse files Browse the repository at this point in the history
* refactor: 리뷰 조회 시 리뷰 생성 시각 추가, 리뷰어 정보 삭제

* fix: 테스트 어노테이션 활성화 및 수정

* chore: 테스트 클래스 패키지 이동

* refactor: 불필요한 given절 제거
  • Loading branch information
donghoony authored Jul 23, 2024
1 parent 1de814b commit 78ea2b8
Show file tree
Hide file tree
Showing 6 changed files with 28 additions and 30 deletions.
8 changes: 7 additions & 1 deletion backend/src/main/java/reviewme/review/domain/Review.java
Original file line number Diff line number Diff line change
@@ -1,12 +1,14 @@
package reviewme.review.domain;

import jakarta.persistence.Column;
import jakarta.persistence.Entity;
import jakarta.persistence.GeneratedValue;
import jakarta.persistence.GenerationType;
import jakarta.persistence.Id;
import jakarta.persistence.JoinColumn;
import jakarta.persistence.ManyToOne;
import jakarta.persistence.Table;
import java.time.LocalDateTime;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.NoArgsConstructor;
Expand All @@ -31,8 +33,12 @@ public class Review {
@JoinColumn(name = "reviewer_group_id", nullable = false)
private ReviewerGroup reviewerGroup;

public Review(Member reviewer, ReviewerGroup reviewerGroup) {
@Column(name = "created_at", nullable = false)
private LocalDateTime createdAt;

public Review(Member reviewer, ReviewerGroup reviewerGroup, LocalDateTime createdAt) {
this.reviewer = reviewer;
this.reviewerGroup = reviewerGroup;
this.createdAt = createdAt;
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package reviewme.review.dto.response;

import io.swagger.v3.oas.annotations.media.Schema;
import java.time.LocalDateTime;
import java.util.List;
import reviewme.keyword.dto.response.KeywordResponse;
import reviewme.member.dto.response.MemberResponse;
import reviewme.member.dto.response.ReviewerGroupResponse;

@Schema(description = "리뷰 응답")
Expand All @@ -12,10 +12,8 @@ public record ReviewResponse(
@Schema(description = "리뷰 ID")
long id,

// LocalDateTime createdAt,

@Schema(description = "리뷰어")
MemberResponse reviewer,
@Schema(description = "리뷰 생성 시각")
LocalDateTime createdAt,

@Schema(description = "리뷰어 그룹")
ReviewerGroupResponse reviewerGroup,
Expand Down
14 changes: 5 additions & 9 deletions backend/src/main/java/reviewme/review/service/ReviewService.java
Original file line number Diff line number Diff line change
Expand Up @@ -56,8 +56,8 @@ public Long createReview(CreateReviewRequest request) {
throw new ReviewAlreadySubmittedException();
}
validateIsDeadlinePassed(reviewerGroup);
Review review = reviewRepository.save(new Review(reviewer, reviewerGroup));

Review review = reviewRepository.save(new Review(reviewer, reviewerGroup, LocalDateTime.now()));

List<ReviewContent> contents = request.contents()
.stream()
Expand All @@ -83,13 +83,9 @@ private void validateIsDeadlinePassed(ReviewerGroup reviewerGroup) {

public ReviewResponse findReview(long id) {
Review review = reviewRepository.getReviewById(id);

// todo: 모든 리뷰는 기본적으로 익명이므로, 이것을 리턴하면 안된다! ReviewReponse에서 MemberResponse 자체를 없애야 한다.
Member member = memberRepository.getMemberById(review.getReviewer().getId());
MemberResponse memberResponse = new MemberResponse(member.getId(), member.getName());

ReviewerGroup reviewerGroup = reviewerGroupRepository.getReviewerGroupById(review.getReviewerGroup().getId());
ReviewerGroup reviewerGroup = review.getReviewerGroup();
Member reviewee = reviewerGroup.getReviewee();

ReviewerGroupResponse reviewerGroupResponse = new ReviewerGroupResponse(
reviewerGroup.getId(),
reviewerGroup.getGroupName(),
Expand Down Expand Up @@ -117,7 +113,7 @@ public ReviewResponse findReview(long id) {

return new ReviewResponse(
review.getId(),
memberResponse,
review.getCreatedAt(),
reviewerGroupResponse,
reviewContentResponse,
keywordResponses
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static reviewme.fixture.KeywordFixture.회의를_이끌어요;
import static reviewme.fixture.ReviewerGroupFixture.리뷰_그룹;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -44,7 +45,7 @@ class ReviewKeywordRepositoryTest {
Member sancho = memberRepository.save(new Member("산초", "sancho"));
Member kirby = memberRepository.save(new Member("커비", "kirby"));
ReviewerGroup group = reviewerGroupRepository.save(리뷰_그룹.create(sancho));
Review review = reviewRepository.save(new Review(kirby, group));
Review review = reviewRepository.save(new Review(kirby, group, LocalDateTime.now()));
List<ReviewKeyword> reviewKeywords = Stream.of(꼼꼼하게_기록해요, 회의를_이끌어요, 의견을__조율해요)
.map(KeywordFixture::create)
.map(keywordRepository::save)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import static reviewme.fixture.KeywordFixture.회의를_이끌어요;
import static reviewme.fixture.ReviewerGroupFixture.리뷰_그룹;

import java.time.LocalDateTime;
import java.util.List;
import java.util.stream.Stream;
import org.junit.jupiter.api.Test;
Expand Down Expand Up @@ -50,7 +51,7 @@ class ReviewKeywordServiceTest {
Member sancho = memberRepository.save(new Member("산초", "sancho"));
Member kirby = memberRepository.save(new Member("커비", "kirby"));
ReviewerGroup group = reviewerGroupRepository.save(리뷰_그룹.create(sancho));
Review review = reviewRepository.save(new Review(kirby, group));
Review review = reviewRepository.save(new Review(kirby, group, LocalDateTime.now()));

List<Keyword> keywords = Stream.of(꼼꼼하게_기록해요, 회의를_이끌어요, 의견을__조율해요)
.map(KeywordFixture::create)
Expand All @@ -72,7 +73,7 @@ class ReviewKeywordServiceTest {
Member sancho = memberRepository.save(new Member("산초", "sancho"));
Member kirby = memberRepository.save(new Member("커비", "kirby"));
ReviewerGroup group = reviewerGroupRepository.save(리뷰_그룹.create(sancho));
Review review = reviewRepository.save(new Review(kirby, group));
Review review = reviewRepository.save(new Review(kirby, group, LocalDateTime.now()));

List<Keyword> keywords = Stream.of(꼼꼼하게_기록해요, 회의를_이끌어요, 의견을__조율해요)
.map(KeywordFixture::create)
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package reviewme.review;
package reviewme.review.service;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.assertThatThrownBy;
Expand Down Expand Up @@ -27,7 +27,6 @@
import reviewme.review.exception.ReviewAlreadySubmittedException;
import reviewme.review.repository.ReviewContentRepository;
import reviewme.review.repository.ReviewRepository;
import reviewme.review.service.ReviewService;
import reviewme.support.ServiceTest;

@ServiceTest
Expand Down Expand Up @@ -94,7 +93,7 @@ class ReviewServiceTest {
Member reviewee = memberRepository.save(new Member("아루", "aru"));
memberRepository.save(new Member("산초", "sancho"));
ReviewerGroup reviewerGroup = reviewerGroupRepository.save(리뷰_그룹.create(reviewee));
Review review = reviewRepository.save(new Review(reviewer, reviewerGroup));
Review review = reviewRepository.save(new Review(reviewer, reviewerGroup, LocalDateTime.now()));

// when
ReviewResponse response = reviewService.findReview(review.getId());
Expand Down Expand Up @@ -139,28 +138,25 @@ class ReviewServiceTest {
List.of()
);

reviewRepository.save(new Review(reviewer, reviewerGroup));
reviewRepository.save(new Review(reviewer, reviewerGroup, LocalDateTime.now()));

// when, then
assertThatThrownBy(() -> reviewService.createReview(createReviewRequest))
.isInstanceOf(ReviewAlreadySubmittedException.class);
}


@Test
void 데드라인이_지난_리뷰그룹에_대해_리뷰를_작성하려하면_예외가_발생한다() {
// given
memberRepository.save(new Member("산초", "sancho"));
Member reviewee = memberRepository.save(new Member("아루", "aru"));
LocalDateTime createdAt = LocalDateTime.now().minusDays(7).minusMinutes(1);
reviewerGroupRepository.save(
ReviewerGroup reviewerGroup = reviewerGroupRepository.save(
new ReviewerGroup(reviewee, "그룹A", "그룹 설명", createdAt)
);
Keyword keyword = keywordRepository.save(new Keyword("꼼꼼해요"));

CreateReviewContentRequest contentRequest = new CreateReviewContentRequest(
1L, "소프트스킬이 어떤가요?", "소통을 잘해요"
);
githubReviewerGroupRepository.save(new GithubReviewerGroup("sancho", reviewerGroup));
CreateReviewRequest createReviewRequest = new CreateReviewRequest(
1L, 1L, List.of(contentRequest), List.of(keyword.getId())
1L, 1L, List.of(), List.of()
);

// when, then
Expand Down

0 comments on commit 78ea2b8

Please sign in to comment.