package com.zy.core.plugin.store; import com.zy.asrs.entity.BasDevp; import com.zy.core.model.CommandResponse; import com.zy.core.model.StationObjModel; import com.zy.core.model.command.StationCommand; import com.zy.core.model.protocol.StationProtocol; import com.zy.core.thread.StationThread; import org.junit.jupiter.api.Test; import java.util.List; import java.util.Map; import static org.junit.jupiter.api.Assertions.assertEquals; class StoreInTaskPolicyTest { private final StoreInTaskPolicy policy = context -> true; @Test void onApplyFailed_propagatesWarningToBackStation() { StationProtocol barcodeStation = new StationProtocol(); barcodeStation.setStationId(102); StationProtocol backStation = new StationProtocol(); backStation.setStationId(101); StationThread stationThread = new FixedStationThread(Map.of( 102, barcodeStation, 101, backStation )); StationObjModel backStationModel = new StationObjModel(); backStationModel.setStationId(101); StationObjModel barcodeStationModel = new StationObjModel(); barcodeStationModel.setStationId(102); barcodeStationModel.setBackStation(backStationModel); StoreInTaskContext context = new StoreInTaskContext(new BasDevp(), stationThread, barcodeStationModel, barcodeStation); InTaskApplyResult result = new InTaskApplyResult(); result.setMessage("WMS异常"); policy.onApplyFailed(context, result); assertEquals("请求入库失败,WMS返回=WMS异常", barcodeStation.getSystemWarning()); assertEquals("请求入库失败,WMS返回=WMS异常", backStation.getSystemWarning()); } private static class FixedStationThread implements StationThread { private final Map statusMap; private FixedStationThread(Map statusMap) { this.statusMap = statusMap; } @Override public List getStatus() { return List.copyOf(statusMap.values()); } @Override public Map getStatusMap() { return statusMap; } @Override public StationCommand getCommand(com.zy.core.enums.StationCommandType commandType, Integer taskNo, Integer stationId, Integer targetStationId, Integer palletSize) { return null; } @Override public boolean clearPath(Integer taskNo) { return false; } @Override public CommandResponse sendCommand(StationCommand command) { return null; } @Override public CommandResponse sendOriginCommand(String address, short[] data) { return null; } @Override public byte[] readOriginCommand(String address, int length) { return new byte[0]; } @Override public void run() { } @Override public boolean connect() { return true; } @Override public void close() { } } }