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

[BE] refactor: 단건 리뷰 조회 시 리뷰어 정보 삭제, 리뷰 작성 시점 추가 #65

Merged
merged 5 commits into from
Jul 23, 2024
Merged
Show file tree
Hide file tree
Changes from 4 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
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()));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

validateIsDeadlinePassed(reviewerGroup) 내부에서 LocalDateTime.now()을 통해 데드라인을 검증하고 있는데요.
LocalDateTime.now()를 두 번 사용하는 것 보다 변수로 뽑아서 사용하는 것은 어떨까요?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

추후 수정 하겠읍니다.. 🥹


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 All @@ -24,7 +24,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 @@ -96,7 +95,7 @@ class ReviewServiceTest {
"그룹 설명",
LocalDateTime.of(2024, 1, 1, 1, 1))
);
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 @@ -151,28 +150,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