fix: 修复测试用例失败并完善测试覆盖

This commit is contained in:
lzh
2026-01-20 18:10:59 +08:00
parent 50452bec00
commit 8c1133bb8c
2 changed files with 38 additions and 7 deletions

View File

@@ -1,5 +1,6 @@
package com.viewsh.module.ops.service.fsm;
import com.viewsh.module.ops.core.event.OrderEventPublisher;
import com.viewsh.module.ops.dal.dataobject.workorder.OpsOrderDO;
import com.viewsh.module.ops.dal.mysql.workorder.OpsOrderMapper;
import com.viewsh.module.ops.enums.OperatorTypeEnum;
@@ -34,6 +35,9 @@ public class OrderStateMachineTest {
@Mock
private OpsOrderEventService eventService;
@Mock
private OrderEventPublisher eventPublisher;
private OpsOrderDO testOrder;
@BeforeEach
@@ -227,9 +231,10 @@ public class OrderStateMachineTest {
// Then
assertNotNull(allowedTransitions);
assertEquals(2, allowedTransitions.size());
assertEquals(3, allowedTransitions.size());
assertTrue(allowedTransitions.contains(WorkOrderStatusEnum.DISPATCHED));
assertTrue(allowedTransitions.contains(WorkOrderStatusEnum.CANCELLED));
assertTrue(allowedTransitions.contains(WorkOrderStatusEnum.QUEUED));
}
@Test

View File

@@ -105,12 +105,13 @@ public class OpsOrderServiceTest {
// Then
assertNotNull(orderId);
verify(opsOrderMapper, times(1)).insert((OpsOrderDO) any());
verify(orderStateMachine, times(1)).transition(
// createOrder does not use state machine transition, it sets status directly
verify(orderStateMachine, never()).transition(
any(OpsOrderDO.class),
eq(WorkOrderStatusEnum.PENDING),
eq(OperatorTypeEnum.SYSTEM),
eq(null),
eq("创建工单")
any(WorkOrderStatusEnum.class),
any(OperatorTypeEnum.class),
any(),
anyString()
);
}
@@ -227,7 +228,7 @@ public class OpsOrderServiceTest {
// Then
verify(orderStateMachine, times(1)).transition(
eq(testOrder),
eq(WorkOrderStatusEnum.PENDING),
eq(WorkOrderStatusEnum.DISPATCHED),
eq(OperatorTypeEnum.ADMIN),
eq(1002L),
eq("张师傅负责该区域")
@@ -375,4 +376,29 @@ public class OpsOrderServiceTest {
verify(orderLifecycleManager, never()).cancelOrder(anyLong(), anyLong(), any(OperatorTypeEnum.class), anyString());
}
@Test
void testAssignOrder_FromQueuedStatus_Success() {
// Given
testOrder.setStatus(WorkOrderStatusEnum.QUEUED.getStatus());
OpsOrderAssignReqDTO assignReq = new OpsOrderAssignReqDTO();
assignReq.setOrderId(1L);
assignReq.setAssigneeId(2001L);
assignReq.setRemark("从队列分配");
when(opsOrderMapper.selectById(1L)).thenReturn(testOrder);
// When
assertDoesNotThrow(() -> opsOrderService.assignOrder(assignReq, OperatorTypeEnum.ADMIN, 1002L));
// Then
verify(orderStateMachine, times(1)).transition(
eq(testOrder),
eq(WorkOrderStatusEnum.DISPATCHED),
eq(OperatorTypeEnum.ADMIN),
eq(1002L),
eq("从队列分配")
);
assertEquals(2001L, testOrder.getAssigneeId());
}
}