Junjie
昨天 ef776e9fd5e4f64e4ad09a3faa12fb7bb646c79c
src/test/java/com/zy/asrs/controller/StationControllerTest.java
@@ -4,8 +4,12 @@
import com.zy.asrs.domain.param.StationCommandMoveParam;
import com.zy.asrs.entity.BasDevp;
import com.zy.asrs.service.BasDevpService;
import com.zy.core.dispatch.StationCommandDispatchResult;
import com.zy.core.dispatch.StationCommandDispatcher;
import com.zy.core.cache.SlaveConnection;
import com.zy.core.enums.SlaveType;
import com.zy.core.enums.StationCommandType;
import com.zy.core.model.command.StationCommand;
import com.zy.core.thread.StationThread;
import org.junit.jupiter.api.Test;
import org.springframework.test.util.ReflectionTestUtils;
@@ -13,12 +17,21 @@
import java.util.Collections;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertThrows;
import static org.mockito.ArgumentMatchers.any;
import static org.mockito.ArgumentMatchers.eq;
import static org.mockito.ArgumentMatchers.same;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;
class StationControllerTest {
    @Test
    void controller_noLongerKeepsDispatcherFallbackHelper() {
        assertThrows(NoSuchMethodException.class,
                () -> StationController.class.getDeclaredMethod("getStationCommandDispatcher"));
    }
    @Test
    void commandClearPath_callsThreadClearPath() {
@@ -48,4 +61,39 @@
            SlaveConnection.remove(SlaveType.Devp, 1);
        }
    }
    @Test
    void commandMove_dispatchesViaStationCommandDispatcher() {
        StationController controller = new StationController();
        BasDevpService basDevpService = mock(BasDevpService.class);
        StationThread stationThread = mock(StationThread.class);
        StationCommandDispatcher dispatcher = mock(StationCommandDispatcher.class);
        StationCommand command = new StationCommand();
        ReflectionTestUtils.setField(controller, "basDevpService", basDevpService);
        ReflectionTestUtils.setField(controller, "stationCommandDispatcher", dispatcher);
        BasDevp basDevp = new BasDevp();
        basDevp.setStationList("[{\"deviceNo\":1,\"stationId\":145}]");
        when(basDevpService.list(any(com.baomidou.mybatisplus.core.conditions.Wrapper.class)))
                .thenReturn(Collections.singletonList(basDevp));
        when(stationThread.getCommand(StationCommandType.MOVE, 10335, 145, 188, 0)).thenReturn(command);
        when(dispatcher.dispatch(1, command, "station-controller", "manual-move"))
                .thenReturn(StationCommandDispatchResult.accepted("accepted", 1, "station-controller", "manual-move"));
        StationCommandMoveParam param = new StationCommandMoveParam();
        param.setStationId(145);
        param.setTaskNo(10335);
        param.setTargetStationId(188);
        SlaveConnection.put(SlaveType.Devp, 1, stationThread);
        try {
            R result = controller.commandMove(param);
            assertEquals(200, result.get("code"));
            verify(dispatcher).dispatch(eq(1), same(command), eq("station-controller"), eq("manual-move"));
        } finally {
            SlaveConnection.remove(SlaveType.Devp, 1);
        }
    }
}