From 8c1133bb8c7ff1c219e461e35ccd86d26636cc8c Mon Sep 17 00:00:00 2001 From: lzh Date: Tue, 20 Jan 2026 18:10:59 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E6=B5=8B=E8=AF=95?= =?UTF-8?q?=E7=94=A8=E4=BE=8B=E5=A4=B1=E8=B4=A5=E5=B9=B6=E5=AE=8C=E5=96=84?= =?UTF-8?q?=E6=B5=8B=E8=AF=95=E8=A6=86=E7=9B=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../service/fsm/OrderStateMachineTest.java | 7 +++- .../service/order/OpsOrderServiceTest.java | 38 ++++++++++++++++--- 2 files changed, 38 insertions(+), 7 deletions(-) diff --git a/viewsh-module-ops/viewsh-module-ops-biz/src/test/java/com/viewsh/module/ops/service/fsm/OrderStateMachineTest.java b/viewsh-module-ops/viewsh-module-ops-biz/src/test/java/com/viewsh/module/ops/service/fsm/OrderStateMachineTest.java index 030531f..2667e76 100644 --- a/viewsh-module-ops/viewsh-module-ops-biz/src/test/java/com/viewsh/module/ops/service/fsm/OrderStateMachineTest.java +++ b/viewsh-module-ops/viewsh-module-ops-biz/src/test/java/com/viewsh/module/ops/service/fsm/OrderStateMachineTest.java @@ -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 diff --git a/viewsh-module-ops/viewsh-module-ops-biz/src/test/java/com/viewsh/module/ops/service/order/OpsOrderServiceTest.java b/viewsh-module-ops/viewsh-module-ops-biz/src/test/java/com/viewsh/module/ops/service/order/OpsOrderServiceTest.java index e84e8ad..c95125f 100644 --- a/viewsh-module-ops/viewsh-module-ops-biz/src/test/java/com/viewsh/module/ops/service/order/OpsOrderServiceTest.java +++ b/viewsh-module-ops/viewsh-module-ops-biz/src/test/java/com/viewsh/module/ops/service/order/OpsOrderServiceTest.java @@ -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()); + } + }