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 com.tourguide.modules.user.service.GuideAutoDisableService;
|
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, mock(GuideAutoDisableService.class));
|
|
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<OrderReview> 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();
|
}
|
}
|