feat(ops): refactor-order-operations
This commit is contained in:
@@ -0,0 +1,203 @@
|
||||
package com.viewsh.module.ops.environment.service.cleanorder;
|
||||
|
||||
import com.viewsh.module.ops.dal.dataobject.workorder.OpsOrderDO;
|
||||
import com.viewsh.module.ops.dal.dataobject.workorder.OpsOrderCleanExtDO;
|
||||
import com.viewsh.module.ops.dal.mysql.workorder.OpsOrderCleanExtMapper;
|
||||
import com.viewsh.module.ops.enums.PriorityEnum;
|
||||
import com.viewsh.module.ops.enums.WorkOrderStatusEnum;
|
||||
import com.viewsh.module.ops.service.OrderDetailVO;
|
||||
import com.viewsh.module.ops.service.OrderSummaryVO;
|
||||
import org.junit.jupiter.api.BeforeEach;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.junit.jupiter.api.extension.ExtendWith;
|
||||
import org.mockito.InjectMocks;
|
||||
import org.mockito.Mock;
|
||||
import org.mockito.junit.jupiter.MockitoExtension;
|
||||
|
||||
import java.time.LocalDateTime;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.*;
|
||||
import static org.mockito.Mockito.*;
|
||||
|
||||
/**
|
||||
* 保洁工单扩展查询处理器测试
|
||||
*
|
||||
* @author lzh
|
||||
*/
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
class CleanOrderExtQueryHandlerTest {
|
||||
|
||||
@Mock
|
||||
private OpsOrderCleanExtMapper cleanExtMapper;
|
||||
|
||||
@InjectMocks
|
||||
private CleanOrderExtQueryHandler handler;
|
||||
|
||||
private OpsOrderDO testOrder;
|
||||
private OpsOrderCleanExtDO testCleanExt;
|
||||
|
||||
@BeforeEach
|
||||
void setUp() {
|
||||
// 初始化测试工单
|
||||
testOrder = OpsOrderDO.builder()
|
||||
.id(1L)
|
||||
.orderCode("CLEAN-20250119-0001")
|
||||
.orderType("CLEAN")
|
||||
.status(WorkOrderStatusEnum.PENDING.getStatus())
|
||||
.title("2楼电梯厅保洁")
|
||||
.priority(PriorityEnum.P2.getPriority())
|
||||
.areaId(100L)
|
||||
.location("2楼电梯厅")
|
||||
.createTime(LocalDateTime.now())
|
||||
.build();
|
||||
|
||||
// 初始化测试扩展信息
|
||||
testCleanExt = OpsOrderCleanExtDO.builder()
|
||||
.id(1L)
|
||||
.opsOrderId(1L)
|
||||
.isAuto(1)
|
||||
.expectedDuration(30)
|
||||
.cleaningType("DEEP")
|
||||
.difficultyLevel(3)
|
||||
.arrivedTime(LocalDateTime.now().minusHours(1))
|
||||
.completedTime(LocalDateTime.now())
|
||||
.totalPauseSeconds(120)
|
||||
.build();
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSupports_ReturnsTrueForClean() {
|
||||
// When & Then
|
||||
assertTrue(handler.supports("CLEAN"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testSupports_ReturnsFalseForOtherTypes() {
|
||||
// When & Then
|
||||
assertFalse(handler.supports("SECURITY"));
|
||||
assertFalse(handler.supports("FACILITIES"));
|
||||
assertFalse(handler.supports("SERVICE"));
|
||||
assertFalse(handler.supports(null));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEnrichWithExtInfo_ExistingExt_FillsExtInfo() {
|
||||
// Given
|
||||
when(cleanExtMapper.selectByOpsOrderId(1L)).thenReturn(testCleanExt);
|
||||
OrderSummaryVO vo = OrderSummaryVO.builder()
|
||||
.id(1L)
|
||||
.orderCode("CLEAN-20250119-0001")
|
||||
.orderType("CLEAN")
|
||||
.build();
|
||||
|
||||
// When
|
||||
handler.enrichWithExtInfo(vo, 1L);
|
||||
|
||||
// Then
|
||||
assertNotNull(vo.getExtInfo());
|
||||
assertEquals(true, vo.getExtInfo().get("isAuto"));
|
||||
assertEquals(30, vo.getExtInfo().get("expectedDuration"));
|
||||
assertEquals("DEEP", vo.getExtInfo().get("cleaningType"));
|
||||
assertEquals(3, vo.getExtInfo().get("difficultyLevel"));
|
||||
assertNotNull(vo.getExtInfo().get("arrivedTime"));
|
||||
assertNotNull(vo.getExtInfo().get("completedTime"));
|
||||
assertEquals(120, vo.getExtInfo().get("totalPauseSeconds"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEnrichWithExtInfo_NoExistingExt_EmptyExtInfo() {
|
||||
// Given
|
||||
when(cleanExtMapper.selectByOpsOrderId(1L)).thenReturn(null);
|
||||
OrderSummaryVO vo = OrderSummaryVO.builder()
|
||||
.id(1L)
|
||||
.orderCode("CLEAN-20250119-0001")
|
||||
.orderType("CLEAN")
|
||||
.build();
|
||||
|
||||
// When
|
||||
handler.enrichWithExtInfo(vo, 1L);
|
||||
|
||||
// Then
|
||||
assertNotNull(vo.getExtInfo());
|
||||
assertTrue(vo.getExtInfo().isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testEnrichWithExtInfo_IsAutoZero_FillsAsFalse() {
|
||||
// Given
|
||||
testCleanExt.setIsAuto(0);
|
||||
when(cleanExtMapper.selectByOpsOrderId(1L)).thenReturn(testCleanExt);
|
||||
OrderSummaryVO vo = OrderSummaryVO.builder()
|
||||
.id(1L)
|
||||
.orderCode("CLEAN-20250119-0001")
|
||||
.orderType("CLEAN")
|
||||
.build();
|
||||
|
||||
// When
|
||||
handler.enrichWithExtInfo(vo, 1L);
|
||||
|
||||
// Then
|
||||
assertEquals(false, vo.getExtInfo().get("isAuto"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuildDetailVO_ExistingExt_ReturnsDetailedVO() {
|
||||
// Given
|
||||
when(cleanExtMapper.selectByOpsOrderId(1L)).thenReturn(testCleanExt);
|
||||
|
||||
// When
|
||||
OrderDetailVO vo = handler.buildDetailVO(testOrder);
|
||||
|
||||
// Then: 验证基础字段
|
||||
assertEquals(1L, vo.getId());
|
||||
assertEquals("CLEAN-20250119-0001", vo.getOrderCode());
|
||||
assertEquals("CLEAN", vo.getOrderType());
|
||||
assertEquals("2楼电梯厅保洁", vo.getTitle());
|
||||
assertEquals(PriorityEnum.P2.getPriority(), vo.getPriority());
|
||||
assertEquals(WorkOrderStatusEnum.PENDING.getStatus(), vo.getStatus());
|
||||
assertEquals(100L, vo.getAreaId());
|
||||
assertEquals("2楼电梯厅", vo.getLocation());
|
||||
|
||||
// 验证扩展字段
|
||||
assertNotNull(vo.getExtInfo());
|
||||
assertEquals(true, vo.getExtInfo().get("isAuto"));
|
||||
assertEquals(30, vo.getExtInfo().get("expectedDuration"));
|
||||
assertEquals("DEEP", vo.getExtInfo().get("cleaningType"));
|
||||
assertEquals(3, vo.getExtInfo().get("difficultyLevel"));
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuildDetailVO_NoExistingExt_ReturnsVOWithEmptyExtInfo() {
|
||||
// Given
|
||||
when(cleanExtMapper.selectByOpsOrderId(1L)).thenReturn(null);
|
||||
|
||||
// When
|
||||
OrderDetailVO vo = handler.buildDetailVO(testOrder);
|
||||
|
||||
// Then: 基础字段仍然存在
|
||||
assertEquals(1L, vo.getId());
|
||||
assertEquals("CLEAN-20250119-0001", vo.getOrderCode());
|
||||
|
||||
// 扩展信息为空Map
|
||||
assertNotNull(vo.getExtInfo());
|
||||
assertTrue(vo.getExtInfo().isEmpty());
|
||||
}
|
||||
|
||||
@Test
|
||||
void testBuildDetailVO_IncludesAllExtFields() {
|
||||
// Given
|
||||
testCleanExt.setPauseStartTime(LocalDateTime.now().minusMinutes(30));
|
||||
testCleanExt.setPauseEndTime(LocalDateTime.now().minusMinutes(28));
|
||||
when(cleanExtMapper.selectByOpsOrderId(1L)).thenReturn(testCleanExt);
|
||||
|
||||
// When
|
||||
OrderDetailVO vo = handler.buildDetailVO(testOrder);
|
||||
|
||||
// Then: 验证所有扩展字段都被包含
|
||||
assertNotNull(vo.getExtInfo().get("arrivedTime"));
|
||||
assertNotNull(vo.getExtInfo().get("completedTime"));
|
||||
assertNotNull(vo.getExtInfo().get("pauseStartTime"));
|
||||
assertNotNull(vo.getExtInfo().get("pauseEndTime"));
|
||||
assertNotNull(vo.getExtInfo().get("totalPauseSeconds"));
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user