test: add unit tests for OrderStateMachine
This commit is contained in:
@@ -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
|
||||
@@ -245,4 +250,28 @@ public class OrderStateMachineTest {
|
||||
assertTrue(allowedTransitions.isEmpty()); // 终态,无后续转换
|
||||
}
|
||||
|
||||
@Test
|
||||
void testTransition_SameStatus_NoOp() {
|
||||
// Given
|
||||
testOrder.setStatus(WorkOrderStatusEnum.PENDING.getStatus());
|
||||
|
||||
// When
|
||||
assertDoesNotThrow(() -> {
|
||||
orderStateMachine.transition(
|
||||
testOrder,
|
||||
WorkOrderStatusEnum.PENDING,
|
||||
OperatorTypeEnum.SYSTEM,
|
||||
null,
|
||||
"重复操作"
|
||||
);
|
||||
});
|
||||
|
||||
// Then
|
||||
// 验证没有任何数据库或事件操作被触发
|
||||
verify(opsOrderMapper, never()).updateById((OpsOrderDO) any());
|
||||
verify(eventService, never()).recordEvent(
|
||||
anyLong(), anyString(), anyString(), anyString(), anyString(), any(), anyString()
|
||||
);
|
||||
verify(eventPublisher, never()).publishStateChanged(any());
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user