blob: 96d44e9af498173ceaf8600d50647a112582556a [file] [log] [blame]
package com.example.g8backend.service;
import com.example.g8backend.entity.Comment;
import com.example.g8backend.mapper.CommentMapper;
import com.example.g8backend.service.impl.CommentServiceImpl;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import java.util.Arrays;
import java.util.List;
import static org.junit.jupiter.api.Assertions.*;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.Mockito.*;
@ExtendWith(SpringExtension.class)
@DisplayName("评论服务测试")
class CommentServiceTest {
@Mock
private CommentMapper commentMapper;
@InjectMocks
private CommentServiceImpl commentService;
private Comment testComment;
@BeforeEach
void setUp() {
MockitoAnnotations.openMocks(this);
testComment = createTestComment();
}
private Comment createTestComment() {
Comment comment = new Comment();
comment.setCommentId(1L);
comment.setPostId(1L);
comment.setUserId(1L);
comment.setContent("测试评论内容");
return comment;
}
@Test
@DisplayName("获取评论-根据帖子ID返回评论列表")
void getCommentsByPostId_ShouldReturnComments() {
// Arrange
List<Comment> expectedComments = Arrays.asList(testComment);
when(commentMapper.findTopLevelCommentsByPostId(1L)).thenReturn(expectedComments);
// Act
List<Comment> result = commentService.getCommentsByPostId(1L);
// Assert
assertNotNull(result);
assertFalse(result.isEmpty());
assertEquals(testComment.getCommentId(), result.get(0).getCommentId());
verify(commentMapper).findTopLevelCommentsByPostId(1L);
}
@Test
@DisplayName("删除评论-成功")
void deleteComment_ShouldSucceed() {
// Arrange
when(commentMapper.deleteById(1L)).thenReturn(1);
// Act
boolean result = commentService.deleteComment(1L);
// Assert
assertTrue(result);
verify(commentMapper).deleteById(1L);
}
@Test
@DisplayName("获取评论-没有评论")
void getCommentsByPostId_WhenNoComments_ShouldReturnEmptyList() {
// Arrange
when(commentMapper.findTopLevelCommentsByPostId(999L)).thenReturn(Arrays.asList());
// Act
List<Comment> result = commentService.getCommentsByPostId(999L);
// Assert
assertNotNull(result);
assertTrue(result.isEmpty());
verify(commentMapper).findTopLevelCommentsByPostId(999L);
}
@Test
@DisplayName("获取评论-根据父评论ID返回子评论")
void getReplies_ShouldReturnReplies() {
// Arrange
List<Comment> expectedReplies = Arrays.asList(testComment);
when(commentMapper.findRepliesByParentCommentId(1L)).thenReturn(expectedReplies);
// Act
List<Comment> result = commentService.getReplies(1L, 5);
// Assert
assertNotNull(result);
assertFalse(result.isEmpty());
assertEquals(testComment.getCommentId(), result.get(0).getCommentId());
verify(commentMapper).findRepliesByParentCommentId(1L);
}
}