yanderong
4 天以前 7617d46abee2950b7336e3379f8c7a564939cb54
ruoyi-service/ruoyi-order/src/test/java/com/ruoyi/order/service/impl/TVinChargingOrderAppletServiceTest.java
@@ -7,8 +7,10 @@
import com.ruoyi.common.core.web.page.PageInfo;
import com.ruoyi.system.api.model.LoginUserApplet;
import com.ruoyi.common.security.service.TokenService;
import com.ruoyi.order.api.model.TVinChargingOrder;
import com.ruoyi.order.dto.MyVinChargingOrderList;
import com.ruoyi.order.mapper.TVinChargingOrderMapper;
import com.ruoyi.order.util.mongodb.service.UploadRealTimeMonitoringDataService;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
@@ -17,11 +19,15 @@
import org.mockito.junit.jupiter.MockitoExtension;
import org.springframework.test.util.ReflectionTestUtils;
import java.math.BigDecimal;
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.mockito.ArgumentMatchers.anyList;
import static org.mockito.ArgumentMatchers.anyLong;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.Mockito.never;
import static org.mockito.Mockito.verify;
@@ -42,6 +48,8 @@
    private SiteClient siteClient;
    @Mock
    private ChargingGunClient chargingGunClient;
    @Mock
    private UploadRealTimeMonitoringDataService monitoringDataService;
    @BeforeEach
    void setUp() {
@@ -53,19 +61,20 @@
        LoginUserApplet loginUser = new LoginUserApplet();
        loginUser.setUserId(88L);
        when(tokenService.getLoginUserApplet()).thenReturn(loginUser);
        when(vinManagementClient.getVinIdsByApppUserId(88L)).thenReturn(R.ok(Arrays.asList(11L, 22L)));
        when(mapper.countAppletOrders(Arrays.asList(11L, 22L))).thenReturn(1L);
        when(vinManagementClient.getVinIdsByAppUserId(88L)).thenReturn(R.ok(Arrays.asList(11L, 22L)));
        when(mapper.countAppletOrders(88L, Arrays.asList(11L, 22L))).thenReturn(1L);
        MyVinChargingOrderList order = new MyVinChargingOrderList();
        order.setId(1001L);
        when(mapper.pageAppletOrders(Arrays.asList(11L, 22L), 10L, 10L))
        when(mapper.pageAppletOrders(88L, Arrays.asList(11L, 22L), 10L, 10L))
                .thenReturn(Collections.singletonList(order));
        PageInfo<MyVinChargingOrderList> result = service.pageAppletOrders(2, 10);
        assertEquals(1L, result.getTotal());
        assertEquals(1001L, result.getRecords().get(0).getId());
        verify(vinManagementClient).getVinIdsByApppUserId(88L);
        verify(mapper).pageAppletOrders(Arrays.asList(11L, 22L), 10L, 10L);
        verify(vinManagementClient).getVinIdsByAppUserId(88L);
        verify(mapper).countAppletOrders(88L, Arrays.asList(11L, 22L));
        verify(mapper).pageAppletOrders(88L, Arrays.asList(11L, 22L), 10L, 10L);
    }
    @Test
@@ -73,13 +82,71 @@
        LoginUserApplet loginUser = new LoginUserApplet();
        loginUser.setUserId(88L);
        when(tokenService.getLoginUserApplet()).thenReturn(loginUser);
        when(vinManagementClient.getVinIdsByApppUserId(88L)).thenReturn(R.ok(Collections.emptyList()));
        when(vinManagementClient.getVinIdsByAppUserId(88L)).thenReturn(R.ok(Collections.emptyList()));
        PageInfo<MyVinChargingOrderList> result = service.pageAppletOrders(1, 10);
        assertEquals(0L, result.getTotal());
        assertEquals(0, result.getRecords().size());
        verify(mapper, never()).countAppletOrders(anyList());
        verify(mapper, never()).pageAppletOrders(anyList(), eq(0L), eq(10L));
        verify(mapper, never()).countAppletOrders(anyLong(), anyList());
        verify(mapper, never()).pageAppletOrders(anyLong(), anyList(), eq(0L), eq(10L));
    }
    @Test
    void returnsVinDetailWithRequiredFeeFieldsForOwner() {
        LoginUserApplet loginUser = new LoginUserApplet();
        loginUser.setUserId(88L);
        when(tokenService.getLoginUserApplet()).thenReturn(loginUser);
        when(vinManagementClient.getVinIdsByAppUserId(88L)).thenReturn(R.ok(Collections.singletonList(11L)));
        TVinChargingOrder order = new TVinChargingOrder();
        order.setId(1001L);
        order.setVinId(11L);
        order.setAppUserId(88L);
        order.setCode("VD_1001");
        order.setOrderAmount(new BigDecimal("18.50"));
        order.setElectrovalence(new BigDecimal("12.30"));
        order.setServiceCharge(new BigDecimal("6.20"));
        when(mapper.selectById(1001L)).thenReturn(order);
        when(mapper.accountingStrategyList(1001L)).thenReturn(Collections.emptyList());
        when(monitoringDataService.getDataByOrderCode("VD_1001")).thenReturn(Collections.emptyList());
        Map<String, Object> result = service.appletDetail(1001L);
        assertEquals("1001", result.get("id"));
        assertEquals(new BigDecimal("18.50"), result.get("orderAmount"));
        assertEquals(new BigDecimal("12.30"), result.get("electricMoney"));
        assertEquals(new BigDecimal("6.20"), result.get("serviceMoney"));
    }
    @Test
    void returnsEmptyDetailWhenVinIsNotBoundToCurrentUser() {
        LoginUserApplet loginUser = new LoginUserApplet();
        loginUser.setUserId(88L);
        when(tokenService.getLoginUserApplet()).thenReturn(loginUser);
        when(vinManagementClient.getVinIdsByAppUserId(88L)).thenReturn(R.ok(Collections.singletonList(22L)));
        TVinChargingOrder order = new TVinChargingOrder();
        order.setId(1001L);
        order.setVinId(11L);
        when(mapper.selectById(1001L)).thenReturn(order);
        assertTrue(service.appletDetail(1001L).isEmpty());
        verify(mapper, never()).accountingStrategyList(1001L);
    }
    @Test
    void returnsEmptyDetailWhenVinReboundAndOrderBelongsToPreviousUser() {
        LoginUserApplet loginUser = new LoginUserApplet();
        loginUser.setUserId(88L);
        when(tokenService.getLoginUserApplet()).thenReturn(loginUser);
        // VIN 11 当前绑定用户 88,但该订单是换绑前用户 99 下单的,不能查看
        when(vinManagementClient.getVinIdsByAppUserId(88L)).thenReturn(R.ok(Collections.singletonList(11L)));
        TVinChargingOrder order = new TVinChargingOrder();
        order.setId(1001L);
        order.setVinId(11L);
        order.setAppUserId(99L);
        when(mapper.selectById(1001L)).thenReturn(order);
        assertTrue(service.appletDetail(1001L).isEmpty());
        verify(mapper, never()).accountingStrategyList(1001L);
    }
}