package com.zy.asrs.task.handler; import com.zy.asrs.entity.BasCrnp; import com.zy.asrs.entity.LocDetl; import com.zy.asrs.entity.LocMast; import com.zy.asrs.service.BasCrnpService; import com.zy.asrs.service.LocDetlService; import com.zy.asrs.service.LocMastService; import com.zy.asrs.service.WorkService; import com.zy.asrs.service.WrkMastService; import com.zy.asrs.task.support.AutoFrontLocMoveSettings; 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.util.Arrays; import java.util.Collections; import static org.mockito.ArgumentMatchers.any; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.when; @ExtendWith(MockitoExtension.class) class AutoFrontLocMoveHandlerTest { @InjectMocks private AutoFrontLocMoveHandler handler; @Mock private BasCrnpService basCrnpService; @Mock private WrkMastService wrkMastService; @Mock private LocMastService locMastService; @Mock private LocDetlService locDetlService; @Mock private WorkService workService; @Test void shouldCreateMoveTaskForFirstFrontEmptyLoc() { AutoFrontLocMoveSettings settings = new AutoFrontLocMoveSettings(); settings.setEnabled(true); settings.setUserId(9527L); AutoFrontLocMoveSettings.Rule rule = new AutoFrontLocMoveSettings.Rule(); rule.setCrnNo(1); rule.setFrontRowList(Arrays.asList(1, 2)); settings.setRules(Collections.singletonList(rule)); BasCrnp basCrnp = new BasCrnp(); basCrnp.setCrnNo(1); basCrnp.setInEnable("Y"); basCrnp.setOutEnable("Y"); basCrnp.setCrnSts(3); basCrnp.setCrnErr(0L); when(basCrnpService.selectById(1)).thenReturn(basCrnp); when(wrkMastService.selectList(any())).thenReturn(Collections.emptyList()); LocMast targetLoc = buildLoc("0101010", 1, "O"); LocMast incompatibleSource = buildLoc("0105010", 5, "F"); incompatibleSource.setWhsType(2L); LocMast compatibleSource = buildLoc("0106010", 6, "F"); when(locMastService.selectList(any())) .thenReturn(Collections.singletonList(targetLoc)) .thenReturn(Arrays.asList(incompatibleSource, compatibleSource)); LocDetl locDetl = new LocDetl(); locDetl.setLocNo(compatibleSource.getLocNo()); locDetl.setFrozen(0); when(locDetlService.selectList(any())).thenReturn(Collections.singletonList(locDetl)); doNothing().when(workService).locMove(compatibleSource.getLocNo(), targetLoc.getLocNo(), 9527L); handler.start(settings); verify(workService).locMove(compatibleSource.getLocNo(), targetLoc.getLocNo(), 9527L); } private LocMast buildLoc(String locNo, Integer row, String locSts) { LocMast locMast = new LocMast(); locMast.setLocNo(locNo); locMast.setCrnNo(1); locMast.setRow1(row); locMast.setBay1(1); locMast.setLev1(1); locMast.setGro1(1); locMast.setWhsType(1L); locMast.setLocType1((short) 1); locMast.setLocType2((short) 1); locMast.setLocType3((short) 1); locMast.setOutEnable("Y"); locMast.setLocSts(locSts); locMast.setFrozen(0); return locMast; } }