diff --git a/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewDetailResponse.java b/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewDetailResponse.java index 55cad1d..9d72923 100644 --- a/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewDetailResponse.java +++ b/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewDetailResponse.java @@ -12,7 +12,7 @@ public record EvaluatorReviewDetailResponse( int feasibility, int differentiation, int financial, - double totalScore, + int totalScore, String comment ) { public static EvaluatorReviewDetailResponse from(EvaluatorReviewDetailResult result) { @@ -24,8 +24,12 @@ public static EvaluatorReviewDetailResponse from(EvaluatorReviewDetailResult res result.feasibility(), result.differentiation(), result.financial(), - result.totalScore(), + roundScore(result.totalScore()), result.comment() ); } + + private static int roundScore(double score) { + return (int) Math.round(score); + } } diff --git a/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewListItemResponse.java b/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewListItemResponse.java index 39446c4..7e34380 100644 --- a/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewListItemResponse.java +++ b/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewListItemResponse.java @@ -12,7 +12,7 @@ public record EvaluatorReviewListItemResponse( int feasibility, int differentiation, int financial, - double totalScore, + int totalScore, String comment ) { public static EvaluatorReviewListItemResponse from(EvaluatorReviewListItemResult result) { @@ -24,8 +24,12 @@ public static EvaluatorReviewListItemResponse from(EvaluatorReviewListItemResult result.feasibility(), result.differentiation(), result.financial(), - result.totalScore(), + roundScore(result.totalScore()), result.comment() ); } + + private static int roundScore(double score) { + return (int) Math.round(score); + } } diff --git a/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewListResponse.java b/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewListResponse.java index 8212c3e..acf9326 100644 --- a/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewListResponse.java +++ b/ssd-api/src/main/java/or/hyu/ssd/api/document/response/EvaluatorReviewListResponse.java @@ -6,16 +6,20 @@ public record EvaluatorReviewListResponse( Long documentId, - double averageTotalScore, + int averageTotalScore, int reviewCount, List reviews ) { public static EvaluatorReviewListResponse from(EvaluatorReviewListResult result) { return new EvaluatorReviewListResponse( result.documentId(), - result.averageTotalScore(), + roundScore(result.averageTotalScore()), result.reviewCount(), result.reviews().stream().map(EvaluatorReviewListItemResponse::from).toList() ); } + + private static int roundScore(double score) { + return (int) Math.round(score); + } } diff --git a/ssd-api/src/test/java/or/hyu/ssd/api/document/response/EvaluatorReviewResponseRoundingTest.java b/ssd-api/src/test/java/or/hyu/ssd/api/document/response/EvaluatorReviewResponseRoundingTest.java new file mode 100644 index 0000000..de6eed9 --- /dev/null +++ b/ssd-api/src/test/java/or/hyu/ssd/api/document/response/EvaluatorReviewResponseRoundingTest.java @@ -0,0 +1,64 @@ +package or.hyu.ssd.api.document.response; + +import org.junit.jupiter.api.DisplayName; +import org.junit.jupiter.api.Test; +import or.hyu.ssd.document.application.result.EvaluatorReviewDetailResult; +import or.hyu.ssd.document.application.result.EvaluatorReviewListItemResult; +import or.hyu.ssd.document.application.result.EvaluatorReviewListResult; + +import java.time.LocalDateTime; +import java.util.List; + +import static org.assertj.core.api.Assertions.assertThat; + +class EvaluatorReviewResponseRoundingTest { + + @Test + @DisplayName("리뷰 상세 응답 총점은 반올림된 정수로 변환된다") + void detailResponseRoundsScore() { + // given + EvaluatorReviewDetailResult result = new EvaluatorReviewDetailResult( + 1L, + "리뷰어", + "reviewer@example.com", + LocalDateTime.of(2026, 6, 5, 12, 0), + 8, + 8, + 9, + 8.333333, + "의견" + ); + + // when + EvaluatorReviewDetailResponse response = EvaluatorReviewDetailResponse.from(result); + + // then + assertThat(response.totalScore()).isEqualTo(8); + } + + @Test + @DisplayName("리뷰 목록 응답 점수들은 반올림된 정수로 변환된다") + void listResponseRoundsScores() { + // given + EvaluatorReviewListItemResult item = new EvaluatorReviewListItemResult( + 1L, + "리뷰어", + "reviewer@example.com", + LocalDateTime.of(2026, 6, 5, 12, 0), + 8, + 8, + 9, + 8.666667, + "의견" + ); + EvaluatorReviewListResult result = EvaluatorReviewListResult.of(10L, 8.333333, 1, List.of(item)); + + // when + EvaluatorReviewListResponse response = EvaluatorReviewListResponse.from(result); + + // then + assertThat(response.averageTotalScore()).isEqualTo(8); + assertThat(response.reviews()).hasSize(1); + assertThat(response.reviews().getFirst().totalScore()).isEqualTo(9); + } +}