public async Task ScheduleInThePastTriggersFeedingAsync() { var now = DateTime.Parse("2020/04/01 10:00:00"); var future = DateTime.Parse("2020/04/01 09:50:00"); _mocker .Setup <ISchedulingEngine, Task <DateTime?> >(e => e.CalculateNextSlotAsync(DefaultFeedingManager.ScheduleName, now.Date)) .Returns(Task.FromResult <DateTime?>(future)) .Verifiable(); var sensorMock = _mocker.GetMock <IDigitalSensor>(); var slot = _mocker.GetSlotWithSensor("dummy-42", sensorMock); slot.BypassSensor = true; var manager = _mocker.CreateInstance <DefaultFeedingManager>(); manager.Slots = new[] { slot }; var result = await manager.TryScheduledFeedAsync(now); _mocker.VerifyAll(); Assert.True(result.Succeeded); Assert.NotNull(result.SlotUsed); }
public void GetsNextSlotForSingleClosedSlot() { var sensor = _mocker.GetMock <IDigitalSensor>(); var slot = _mocker.GetSlotWithSensor("dummy", sensor); sensor.Setup(s => s.Read()) .Returns(true) .Verifiable(); var manager = _mocker.CreateInstance <DefaultFeedingManager>(); manager.Slots = new[] { slot }; var result = manager.NextFeedingSlot(); sensor.VerifyAll(); Assert.Equal(slot, result); }