package com.tourguide.modules.order.service; import com.baomidou.mybatisplus.core.MybatisConfiguration; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.baomidou.mybatisplus.core.metadata.TableInfoHelper; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.tourguide.modules.order.entity.TourOrder; import com.tourguide.modules.order.mapper.TourOrderMapper; import com.tourguide.modules.review.entity.OrderReview; import com.tourguide.modules.review.mapper.OrderReviewMapper; import org.apache.ibatis.builder.MapperBuilderAssistant; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.mockito.ArgumentCaptor; 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.verify; import static org.mockito.Mockito.when; class MiniTourOrderServiceTest { private TourOrderMapper orderMapper; private OrderReviewMapper reviewMapper; private MiniTourOrderService orderService; @BeforeEach void setUp() { initializeTableInfo(); orderMapper = mock(TourOrderMapper.class); reviewMapper = mock(OrderReviewMapper.class); orderService = new MiniTourOrderService(orderMapper, reviewMapper); } @Test void reviewedOrderQueryShouldOnlyIncludeVisibleReviews() { TourOrder order = new TourOrder(); order.setId(1L); order.setVisitorId(7L); order.setStatus("COMPLETED"); Page page = new Page<>(1, 10); page.setRecords(Collections.singletonList(order)); page.setTotal(1); when(orderMapper.selectPage(any(Page.class), any())).thenReturn(page); when(reviewMapper.selectList(any())).thenReturn(Collections.emptyList()); orderService.page(7L, "completed", 1, 10); ArgumentCaptor> queryCaptor = ArgumentCaptor.forClass(LambdaQueryWrapper.class); verify(reviewMapper).selectList(queryCaptor.capture()); assertThat(queryCaptor.getValue().getSqlSegment()).contains("status"); } private static void initializeTableInfo() { if (TableInfoHelper.getTableInfo(TourOrder.class) == null) { TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), TourOrder.class); } if (TableInfoHelper.getTableInfo(OrderReview.class) == null) { TableInfoHelper.initTableInfo(new MapperBuilderAssistant(new MybatisConfiguration(), ""), OrderReview.class); } } }