liujie
2026-08-21 a7c8a8f6055e1a03414f2227d12ff2e87ec52d41
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
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();
    }
}