liujie
2026-09-09 39f6fca28e3f78abe48f08e474ec011abb990b36
backend/src/test/java/com/tourguide/modules/review/service/OrderReviewServiceTest.java
@@ -1,6 +1,10 @@
package com.tourguide.modules.review.service;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.MybatisConfiguration;
import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
import org.apache.ibatis.builder.MapperBuilderAssistant;
import com.tourguide.modules.order.mapper.TourOrderMapper;
import com.tourguide.modules.review.dto.GuideRatingResponse;
import com.tourguide.modules.review.entity.OrderReview;
@@ -18,9 +22,20 @@
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.verify;
import static org.mockito.Mockito.when;
import org.mockito.ArgumentCaptor;
class OrderReviewServiceTest {
    private static boolean tableInfoInitialized;
    private static void initializeTableInfo() {
        if (!tableInfoInitialized) {
            TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), OrderReview.class);
            tableInfoInitialized = true;
        }
    }
    @Test
    void guideRatingsShouldReturnGuideScoreAndVisibleReviewPage() {
        OrderReviewMapper reviewMapper = mock(OrderReviewMapper.class);
@@ -62,4 +77,21 @@
        assertThat(response.getRows().get(0).getComment()).isEqualTo("讲解专业");
        assertThat(response.getRows().get(0).getImages()).isEmpty();
    }
    @Test
    void pageShouldFilterReviewsByVisitorId() {
        initializeTableInfo();
        OrderReviewMapper reviewMapper = mock(OrderReviewMapper.class);
        OrderReviewService reviewService = new OrderReviewService(
                reviewMapper, mock(TourOrderMapper.class), mock(GuideUserMapper.class),
                mock(GuideAutoDisableService.class));
        when(reviewMapper.selectPage(any(Page.class), any())).thenAnswer(invocation -> invocation.getArgument(0));
        reviewService.page(1, 10, null, 42L, null, null, null, null, null);
        ArgumentCaptor<LambdaQueryWrapper<OrderReview>> queryCaptor = ArgumentCaptor.forClass(LambdaQueryWrapper.class);
        verify(reviewMapper).selectPage(any(Page.class), queryCaptor.capture());
        queryCaptor.getValue().getSqlSegment();
        assertThat(queryCaptor.getValue().getParamNameValuePairs().values()).contains(42L);
    }
}