From 0f3ab894bc594f57f60efba404af5ae999fd58d2 Mon Sep 17 00:00:00 2001
From: Junjie <fallin.jie@qq.com>
Date: 星期三, 01 四月 2026 09:47:11 +0800
Subject: [PATCH] #Test fix

---
 src/test/java/com/zy/asrs/task/WrkAnalysisStationArrivalScannerTest.java |  123 ++++++++++++++++++++++++++++++++++++++---
 1 files changed, 114 insertions(+), 9 deletions(-)

diff --git a/src/test/java/com/zy/asrs/task/WrkAnalysisStationArrivalScannerTest.java b/src/test/java/com/zy/asrs/task/WrkAnalysisStationArrivalScannerTest.java
index 076d862..95f7e18 100644
--- a/src/test/java/com/zy/asrs/task/WrkAnalysisStationArrivalScannerTest.java
+++ b/src/test/java/com/zy/asrs/task/WrkAnalysisStationArrivalScannerTest.java
@@ -25,6 +25,7 @@
 
 import static org.mockito.ArgumentMatchers.any;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.never;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
 
@@ -44,15 +45,8 @@
                 stationOperateProcessUtils
         );
 
-        WrkMast wrkMast = new WrkMast();
-        wrkMast.setWrkNo(1001);
-        wrkMast.setIoType(1);
-        wrkMast.setWrkSts(WrkStsType.INBOUND_STATION_RUN.sts);
-        wrkMast.setStaNo(12);
-
-        BasStation basStation = new BasStation();
-        basStation.setStationId(12);
-        basStation.setDeviceNo(3);
+        WrkMast wrkMast = inboundWrkMast(1001, 12);
+        BasStation basStation = station(12, 3);
 
         when(wrkMastService.list(any(QueryWrapper.class))).thenReturn(List.of(wrkMast));
         when(basStationService.getOne(any())).thenReturn(basStation);
@@ -75,6 +69,117 @@
         verify(wrkAnalysisService).completeInboundStationRun(any(WrkMast.class), any(Date.class));
     }
 
+    @Test
+    void scanInboundStationArrival_completesTaskWhenProtocolMatchesCurrentTask() {
+        WrkMastService wrkMastService = mock(WrkMastService.class);
+        BasStationService basStationService = mock(BasStationService.class);
+        WrkAnalysisService wrkAnalysisService = mock(WrkAnalysisService.class);
+        StationOperateProcessUtils stationOperateProcessUtils = mock(StationOperateProcessUtils.class);
+
+        WrkAnalysisStationArrivalScanner scanner = new WrkAnalysisStationArrivalScanner(
+                wrkMastService,
+                basStationService,
+                wrkAnalysisService,
+                stationOperateProcessUtils
+        );
+
+        WrkMast wrkMast = inboundWrkMast(1002, 15);
+        BasStation basStation = station(15, 5);
+
+        when(wrkMastService.list(any(QueryWrapper.class))).thenReturn(List.of(wrkMast));
+        when(basStationService.getOne(any())).thenReturn(basStation);
+        when(wrkAnalysisService.completeInboundStationRun(any(WrkMast.class), any(Date.class))).thenReturn(true);
+
+        ArrivalAwareStationThread stationThread = new ArrivalAwareStationThread(false);
+        StationProtocol stationProtocol = new StationProtocol();
+        stationProtocol.setStationId(15);
+        stationProtocol.setTaskNo(1002);
+        stationProtocol.setLoading(true);
+        stationThread.putStatus(stationProtocol);
+
+        SlaveConnection.put(SlaveType.Devp, 5, stationThread);
+        try {
+            scanner.scanInboundStationArrival();
+        } finally {
+            SlaveConnection.remove(SlaveType.Devp, 5);
+        }
+
+        verify(wrkAnalysisService).completeInboundStationRun(any(WrkMast.class), any(Date.class));
+    }
+
+    @Test
+    void scanInboundStationArrival_skipsWhenArrivalWasNotObserved() {
+        WrkMastService wrkMastService = mock(WrkMastService.class);
+        BasStationService basStationService = mock(BasStationService.class);
+        WrkAnalysisService wrkAnalysisService = mock(WrkAnalysisService.class);
+        StationOperateProcessUtils stationOperateProcessUtils = mock(StationOperateProcessUtils.class);
+
+        WrkAnalysisStationArrivalScanner scanner = new WrkAnalysisStationArrivalScanner(
+                wrkMastService,
+                basStationService,
+                wrkAnalysisService,
+                stationOperateProcessUtils
+        );
+
+        WrkMast wrkMast = inboundWrkMast(1003, 18);
+        BasStation basStation = station(18, 8);
+
+        when(wrkMastService.list(any(QueryWrapper.class))).thenReturn(List.of(wrkMast));
+        when(basStationService.getOne(any())).thenReturn(basStation);
+
+        ArrivalAwareStationThread stationThread = new ArrivalAwareStationThread(false);
+        StationProtocol stationProtocol = new StationProtocol();
+        stationProtocol.setStationId(18);
+        stationProtocol.setTaskNo(9999);
+        stationProtocol.setLoading(true);
+        stationThread.putStatus(stationProtocol);
+
+        SlaveConnection.put(SlaveType.Devp, 8, stationThread);
+        try {
+            scanner.scanInboundStationArrival();
+        } finally {
+            SlaveConnection.remove(SlaveType.Devp, 8);
+        }
+
+        verify(wrkAnalysisService, never()).completeInboundStationRun(any(WrkMast.class), any(Date.class));
+    }
+
+    @Test
+    void scanOutboundStationFlow_triggersStationOperateProcessSteps() {
+        WrkMastService wrkMastService = mock(WrkMastService.class);
+        BasStationService basStationService = mock(BasStationService.class);
+        WrkAnalysisService wrkAnalysisService = mock(WrkAnalysisService.class);
+        StationOperateProcessUtils stationOperateProcessUtils = mock(StationOperateProcessUtils.class);
+
+        WrkAnalysisStationArrivalScanner scanner = new WrkAnalysisStationArrivalScanner(
+                wrkMastService,
+                basStationService,
+                wrkAnalysisService,
+                stationOperateProcessUtils
+        );
+
+        scanner.scanOutboundStationFlow();
+
+        verify(stationOperateProcessUtils).stationOutExecuteFinish();
+        verify(stationOperateProcessUtils).checkTaskToComplete();
+    }
+
+    private WrkMast inboundWrkMast(int wrkNo, int stationId) {
+        WrkMast wrkMast = new WrkMast();
+        wrkMast.setWrkNo(wrkNo);
+        wrkMast.setIoType(1);
+        wrkMast.setWrkSts(WrkStsType.INBOUND_STATION_RUN.sts);
+        wrkMast.setStaNo(stationId);
+        return wrkMast;
+    }
+
+    private BasStation station(int stationId, int deviceNo) {
+        BasStation basStation = new BasStation();
+        basStation.setStationId(stationId);
+        basStation.setDeviceNo(deviceNo);
+        return basStation;
+    }
+
     private static class ArrivalAwareStationThread implements StationThread {
 
         private final boolean recentArrival;

--
Gitblit v1.9.1