public void When_DoSomeWork_With_OnlineDevice_Expect_WorkToBeCalled()
        {
            //Arrange
            var workerService = WorkerServiceMockFactory.CreateMock(WorkerServiceReturnValue);
            var service       = CreateDeviceService(DeviceStatus.Online, workerService);

            //Act
            var returnedString = service.DoSomethingComplex(DefaultTime);

            //Assert
            Assert.Equal(WorkerServiceReturnValue, returnedString);
            workerService.Verify(mock => mock.DoSomeWork(), Times.Once);
        }
        public async Task When_DoSomeWorkAsync_With_OfflineDevice_Expect_DeviceOfflineString()
        {
            //Arrange
            var workerService = WorkerServiceMockFactory.CreateMock(WorkerServiceReturnValue);
            var service       = CreateDeviceService(DeviceStatus.Offline, workerService);

            //Act
            var returnedString = await service.DoSomethingComplexAsync(DefaultTime);

            //Assert
            Assert.Equal(DeviceService.DeviceOfflineString, returnedString);
            workerService.Verify(mock => mock.DoSomeWorkAsync(), Times.Never);
        }
        private DeviceService CreateDeviceService(DeviceStatus deviceStatus, Mock <IWorkerService> workerService = null)
        {
            var settingOptionsMonitor = OptionsMonitorMockFactory.CreateMockOptionsMonitor(CreateDefaultSettingsOption());

            var dateProvider         = CreateDateProvider();
            var deviceStatusProvider = DeviceStatusProviderFactory.CreateMock(deviceStatus);

            if (workerService == null)
            {
                workerService = WorkerServiceMockFactory.CreateMock(WorkerServiceReturnValue);
            }

            return(new DeviceService(settingOptionsMonitor, dateProvider, deviceStatusProvider.Object, workerService.Object));
        }