package com.tourguide.modules.review.service; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tourguide.modules.order.mapper.TourOrderMapper; import com.tourguide.modules.review.dto.GuideRatingResponse; import com.tourguide.modules.review.entity.OrderReview; import com.tourguide.modules.review.mapper.OrderReviewMapper; import com.tourguide.modules.user.entity.GuideUser; import com.tourguide.modules.user.mapper.GuideUserMapper; import org.junit.jupiter.api.Test; import java.math.BigDecimal; import java.time.LocalDate; import java.time.LocalDateTime; import java.util.Collections; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.mock; import static org.mockito.Mockito.when; class OrderReviewServiceTest { @Test void guideRatingsShouldReturnGuideScoreAndVisibleReviewPage() { OrderReviewMapper reviewMapper = mock(OrderReviewMapper.class); TourOrderMapper orderMapper = mock(TourOrderMapper.class); GuideUserMapper guideUserMapper = mock(GuideUserMapper.class); OrderReviewService reviewService = new OrderReviewService(reviewMapper, orderMapper, guideUserMapper); GuideUser guide = new GuideUser(); guide.setId(12L); guide.setStatus(1); guide.setRating(new BigDecimal("4.80")); when(guideUserMapper.selectById(12L)).thenReturn(guide); OrderReview review = new OrderReview(); review.setId(21L); review.setGuideId(12L); review.setScore(new BigDecimal("5.0")); review.setContent("讲解专业"); review.setReviewedAt(LocalDateTime.of(2026, 7, 29, 10, 30)); review.setStatus(1); when(reviewMapper.selectPage(any(Page.class), any())).thenAnswer(invocation -> { Page requestedPage = invocation.getArgument(0); requestedPage.setRecords(Collections.singletonList(review)); requestedPage.setTotal(1); return requestedPage; }); GuideRatingResponse response = reviewService.guideRatings( 12L, LocalDate.of(2026, 7, 29), 0, 200); assertThat(response.getScore()).isEqualByComparingTo("4.80"); assertThat(response.getPageNum()).isEqualTo(1); assertThat(response.getPageSize()).isEqualTo(100); assertThat(response.getTotal()).isEqualTo(1); assertThat(response.getRows()).hasSize(1); assertThat(response.getRows().get(0).getDateText()).isEqualTo("2026年7月29日"); assertThat(response.getRows().get(0).getComment()).isEqualTo("讲解专业"); assertThat(response.getRows().get(0).getImages()).isEmpty(); } }