diff --git a/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java b/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java index 04bc838..780cff5 100644 --- a/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java +++ b/src/main/java/com/target/devicemanager/common/DeviceAvailabilityService.java @@ -111,14 +111,14 @@ public DeviceHealth findDevStatus(String devName) { switch (devName){ case "flatbedscanner": if(deviceAvailabilitySingleton.getScannerManager() != null) { - healthStatus = deviceAvailabilitySingleton.getScannerManager().getStatus().get(0).getHealthStatus(); + healthStatus = deviceAvailabilitySingleton.getScannerManager().getScannerHealthStatus("FLATBED"); } else { LOGGER.trace("Failed to Connect to " + devName); } break; case "handscanner": if(deviceAvailabilitySingleton.getScannerManager() != null) { - healthStatus = deviceAvailabilitySingleton.getScannerManager().getStatus().get(1).getHealthStatus(); + healthStatus = deviceAvailabilitySingleton.getScannerManager().getScannerHealthStatus("HANDHELD"); } else { LOGGER.trace("Failed to Connect to " + devName); } @@ -150,7 +150,6 @@ public DeviceHealth findDevStatus(String devName) { return healthStatus; } - public void subscribeToDeviceError(SseEmitter sseEmitter) throws IOException { sseEmitter.onCompletion(() -> this.deviceErrorClientList.remove(sseEmitter)); sseEmitter.onTimeout(() -> this.deviceErrorClientList.remove(sseEmitter)); diff --git a/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java b/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java index 6589a75..d1c18b2 100644 --- a/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java +++ b/src/main/java/com/target/devicemanager/components/scanner/ScannerManager.java @@ -214,6 +214,15 @@ public List getStatus() { } } + public DeviceHealth getScannerHealthStatus(String scannerName) { + for(DeviceHealthResponse deviceHealthResponse: getStatus()) { + if(deviceHealthResponse.getDeviceName().equals(scannerName)) { + return deviceHealthResponse.getHealthStatus(); + } + } + return new DeviceHealthResponse(scannerName, DeviceHealth.NOTREADY).getHealthStatus(); + } + private void disableScanners() throws InterruptedException { LOGGER.trace("disableScanners(in)"); List> taskList = new ArrayList<>(); diff --git a/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java b/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java index 00d3967..07405f1 100644 --- a/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java +++ b/src/test/java/com/target/devicemanager/common/DeviceAvailabilityServiceTest.java @@ -74,31 +74,29 @@ void Test_findDevStatus_Scale() { @Test void Test_findDevStatus_FlatbedScanner() { //arrange - List devReady = new ArrayList<>(); - devReady.add(new DeviceHealthResponse("Flatbed", DeviceHealth.READY)); - devReady.add(new DeviceHealthResponse("HandScanner", DeviceHealth.READY)); + DeviceHealth expected = new DeviceHealthResponse("FLATBED", DeviceHealth.NOTREADY).getHealthStatus(); + deviceAvailabilitySingleton.setScannerManager(mockScannerManager); + when(deviceAvailabilitySingleton.getScannerManager().getScannerHealthStatus("FLATBED")).thenReturn(expected); //act - deviceAvailabilitySingleton.setScannerManager(mockScannerManager); + DeviceHealth actual = deviceAvailabilityService.findDevStatus("flatbedscanner"); //assert - when(deviceAvailabilitySingleton.getScannerManager().getStatus()).thenReturn(devReady); - assertEquals(DeviceHealth.READY, deviceAvailabilityService.findDevStatus("flatbedscanner")); + assertEquals(expected, actual); } @Test void Test_findDevStatus_HandScanner() { //arrange - List devReady = new ArrayList<>(); - devReady.add(new DeviceHealthResponse("Flatbed", DeviceHealth.READY)); - devReady.add(new DeviceHealthResponse("HandScanner", DeviceHealth.READY)); + DeviceHealth expected = new DeviceHealthResponse("HANDHELD", DeviceHealth.READY).getHealthStatus(); + deviceAvailabilitySingleton.setScannerManager(mockScannerManager); + when(deviceAvailabilitySingleton.getScannerManager().getScannerHealthStatus("HANDHELD")).thenReturn(expected); //act - deviceAvailabilitySingleton.setScannerManager(mockScannerManager); + DeviceHealth actual = deviceAvailabilityService.findDevStatus("handscanner"); //assert - when(deviceAvailabilitySingleton.getScannerManager().getStatus()).thenReturn(devReady); - assertEquals(DeviceHealth.READY, deviceAvailabilityService.findDevStatus("handscanner")); + assertEquals(expected, actual); } @Test diff --git a/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java b/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java index 4b3484a..12557a8 100644 --- a/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java +++ b/src/test/java/com/target/devicemanager/components/scanner/ScannerManagerTest.java @@ -13,6 +13,7 @@ import org.junit.jupiter.api.Test; import org.junit.jupiter.api.extension.ExtendWith; import org.mockito.Mock; +import org.mockito.Mockito; import org.mockito.junit.jupiter.MockitoExtension; import org.mockito.junit.jupiter.MockitoSettings; import org.mockito.quality.Strictness; @@ -108,7 +109,7 @@ public void testInitialize() { reconnectResults = new ArrayList<>(); reconnectResults.add(mockFuture); scannerManager = new ScannerManager(scannerDevices, mockScannerLock); - scannerManagerCache = new ScannerManager(scannerDevices, mockScannerLock, mockCacheManager, mockExecutor, reconnectResults, true); + scannerManagerCache = Mockito.spy(new ScannerManager(scannerDevices, mockScannerLock, mockCacheManager, mockExecutor, reconnectResults, true)); } @Test @@ -555,4 +556,48 @@ public void getStatus_WhenCacheNull_WhenDeviceOnline() { //assert assertEquals(expectedList.toString(), deviceHealthResponseList.toString()); } + + @Test + void getScannerHealthStatus_FlatbedScanner() { + //arrange + List devReady = new ArrayList<>(); + devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); + devReady.add(new DeviceHealthResponse("HANDHELD", DeviceHealth.READY)); + Mockito.doReturn(devReady).when(scannerManagerCache).getStatus(); + + //act + DeviceHealth actual = scannerManagerCache.getScannerHealthStatus("HANDHELD"); + + //assert + assertEquals(DeviceHealth.READY, actual); + } + + @Test + void getScannerHealthStatus_HandScanner() { + //arrange + List devReady = new ArrayList<>(); + devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); + devReady.add(new DeviceHealthResponse("HANDHELD", DeviceHealth.READY)); + Mockito.doReturn(devReady).when(scannerManagerCache).getStatus(); + + //act + DeviceHealth actual = scannerManagerCache.getScannerHealthStatus("HANDHELD"); + + //assert + assertEquals(DeviceHealth.READY, actual); + } + + @Test + void getScannerHealthStatus_HandheldScanner_missing() { + //arrange + List devReady = new ArrayList<>(); + devReady.add(new DeviceHealthResponse("FLATBED", DeviceHealth.READY)); + Mockito.doReturn(devReady).when(scannerManagerCache).getStatus(); + + //act + DeviceHealth actual = scannerManagerCache.getScannerHealthStatus("HANDHELD"); + + //assert + assertEquals(DeviceHealth.NOTREADY, actual); + } }