diff --git a/src/main/java/com/jisungin/application/comment/CommentFindAllResponse.java b/src/main/java/com/jisungin/application/comment/CommentFindAllResponse.java index 44e03ae..fbf9d97 100644 --- a/src/main/java/com/jisungin/application/comment/CommentFindAllResponse.java +++ b/src/main/java/com/jisungin/application/comment/CommentFindAllResponse.java @@ -62,7 +62,7 @@ private static List extractCommentImages(List commentImage return Optional.ofNullable(commentImages) .orElseGet(ArrayList::new) .stream() - .map(CommentImage::getImageUrl) + .map(commentImage -> commentImage != null ? commentImage.getImageUrl() : null) .toList(); } diff --git a/src/main/java/com/jisungin/application/comment/CommentService.java b/src/main/java/com/jisungin/application/comment/CommentService.java index d585174..8edf287 100644 --- a/src/main/java/com/jisungin/application/comment/CommentService.java +++ b/src/main/java/com/jisungin/application/comment/CommentService.java @@ -63,8 +63,6 @@ public CommentResponse writeComment(CommentCreateServiceRequest request, Long ta request.getImageUrls().stream() .map(url -> CommentImage.createImages(comment, url)) .forEach(commentImageRepository::save); - } else { - commentImageRepository.save(CommentImage.createImages(comment, "")); } List imageUrls = commentImageRepository.findByCommentIdWithImageUrl(comment.getId()); @@ -83,7 +81,8 @@ public PageResponse findAllComments(Long talkRoomId) { Long totalCount = commentRepository.commentTotalCount(talkRoom.getId()); - return PageResponse.of(findComment.size(), totalCount, CommentFindAllResponse.toList(findComment, commentImages)); + return PageResponse.of(findComment.size(), totalCount, + CommentFindAllResponse.toList(findComment, commentImages)); } @Transactional diff --git a/src/test/java/com/jisungin/application/comment/CommentServiceTest.java b/src/test/java/com/jisungin/application/comment/CommentServiceTest.java index ee5634d..9629e08 100644 --- a/src/test/java/com/jisungin/application/comment/CommentServiceTest.java +++ b/src/test/java/com/jisungin/application/comment/CommentServiceTest.java @@ -117,7 +117,7 @@ void writeComment() { // then assertThat(response) .extracting("content", "userName", "imageUrls") - .contains("의견 남기기", "user@gmail.com", List.of("")); + .contains("의견 남기기", "user@gmail.com", List.of()); } @Test @@ -580,6 +580,49 @@ void findAllCommentsWithImage() { ); } + @Test + @DisplayName("의견을 조회할 때 이미지도 같이 조회 된다.(2)") + void findAllCommentsWithImage2() { + // given + User user = userRepository.save(createUser()); + Book book = bookRepository.save(createBook()); + TalkRoom talkRoom = talkRoomRepository.save(createTalkRoom(book, user)); + + createTalkRoomRole(talkRoom); + + List comments = IntStream.range(1, 6) + .mapToObj(i -> Comment.builder() + .talkRoom(talkRoom) + .user(user) + .content("의견 " + i) + .registeredDateTime(LocalDateTime.now()) + .build()) + .toList(); + + for (int i = 0; i < 5; i++) { + commentRepository.save(comments.get(i)); + } + + CommentImage images = CommentImage.createImages(comments.get(0), "이미지 1"); + + commentImageRepository.save(images); + + // when + PageResponse result = commentService.findAllComments(talkRoom.getId()); + + // then + assertThat(result.getTotalCount()).isEqualTo(5L); + assertThat(result.getQueryResponse()).hasSize(5) + .extracting("content", "commentImages") + .containsExactly( + tuple("의견 5", List.of()), + tuple("의견 4", List.of()), + tuple("의견 3", List.of()), + tuple("의견 2", List.of()), + tuple("의견 1", List.of("이미지 1")) + ); + } + private static Comment createComment(User user, TalkRoom talkRoom) { return Comment.builder() .content("의견")