public async Task CheckSensorsAndAlarmsTest()
    {
        var sensorRepository = A.Fake <ISensorRepository>();

        A.CallTo(() => sensorRepository.GetAllAsync()).Returns(new[] { new Sensor("test", SensorType.Temperature)
                                                                       {
                                                                           Min = 5, Max = 10, LastSeen = DateTimeOffset.UtcNow.AddMinutes(-10)
                                                                       } });
        var sensorAlarmRepository = A.Fake <ISensorAlarmRepository>();

        A.CallTo(() => sensorAlarmRepository.GetBySensorBoxIdAndSensorTypeAndStatusAsync("test", SensorType.Temperature, AlarmStatus.Dead)).Returns((SensorAlarm?)null);

        var service = new SensorValidationService(sensorRepository, sensorAlarmRepository, A.Fake <ILogger <SensorValidationService> >());

        await service.CheckSensorsAndAlarmsAsync();

        A.CallTo(() => sensorAlarmRepository.InsertAsync(A <SensorAlarm> .That.Matches(a => a.Status == AlarmStatus.Dead))).MustHaveHappened();
    }
    public async Task CheckObsoleteAlarmsResultsNullTest()
    {
        var sensorRepository = A.Fake <ISensorRepository>();

        A.CallTo(() => sensorRepository.GetAllAsync()).Returns(new[] { new Sensor("test", SensorType.Temperature)
                                                                       {
                                                                           Min = 5, Max = 10, LastSeen = DateTimeOffset.UtcNow
                                                                       } });
        var sensorAlarmRepository = A.Fake <ISensorAlarmRepository>();

        A.CallTo(() => sensorAlarmRepository.GetBySensorBoxIdAndSensorTypeAndStatusAsync("test", SensorType.Temperature, AlarmStatus.Dead)).Returns((SensorAlarm?)null);

        var service = new SensorValidationService(sensorRepository, sensorAlarmRepository, A.Fake <ILogger <SensorValidationService> >());

        await service.CheckSensorsAndAlarmsAsync();

        A.CallTo(() => sensorAlarmRepository.DeleteAsync(A <SensorAlarm> ._)).MustNotHaveHappened();
    }
    public async Task ValidateAggregatedDataAsyncTest()
    {
        var sensorRepository = A.Fake <ISensorRepository>();

        A.CallTo(() => sensorRepository.GetByBoxIdAndTypeAsync("test", SensorType.Temperature)).Returns(new Sensor("test", SensorType.Temperature)
        {
            Min = 5, Max = 10, LastSeen = DateTimeOffset.UtcNow.AddMinutes(-10)
        });
        var sensorAlarmRepository = A.Fake <ISensorAlarmRepository>();

        A.CallTo(() => sensorAlarmRepository.GetBySensorBoxIdAndSensorTypeAndStatusAsync("test", SensorType.Temperature, AlarmStatus.InvalidData)).Returns((SensorAlarm?)null);

        var service = new SensorValidationService(sensorRepository, sensorAlarmRepository, A.Fake <ILogger <SensorValidationService> >());

        await service.ValidateSensorDataAsync(new AggregatedSensorData { SensorBoxId = "test", AggregationType = AggregationType.Max, SensorType = SensorType.Temperature, Value = 4 });

        A.CallTo(() => sensorAlarmRepository.InsertAsync(A <SensorAlarm> .That.Matches(a => a.Status == AlarmStatus.InvalidData))).MustHaveHappened();

        await service.ValidateSensorDataAsync(new AggregatedSensorData { SensorBoxId = "test", AggregationType = AggregationType.Max, SensorType = SensorType.Temperature, Value = 11 });

        A.CallTo(() => sensorAlarmRepository.InsertAsync(A <SensorAlarm> .That.Matches(a => a.Status == AlarmStatus.InvalidData))).MustHaveHappened();
    }