public Task Run(IEnumerable<Turbine> turbines, CancellationToken token)
{
var disabledTurbines = turbines.Where(x => x.ControlMode == AviationLightControlMode.Disabled).ToList();
_logger.LogInformation("{0} turbine(s) are in Disabled control mode", disabledTurbines.Count);
if (!disabledTurbines.Any())
{
return Task.CompletedTask;
}
var disabledIntensitySetPoints = disabledTurbines.Select(GetIntensitySetPoint);
_setPointWriter.UpdateIntensitySetPoint(disabledIntensitySetPoints);
return Task.CompletedTask;
}
[Test]
public async Task Run_DisabledTurbinesExist_UpdateIntensitySetPointCalled()
{
// Arrange
var logger = Substitute.For<ILogger<Mediator>>();
var setPointWriter = Substitute.For<ISetPointWriter>();
var turbine1 = new Turbine { ControlMode = AviationLightControlMode.Disabled, CommunicationId = 1,IsRim = false};
var turbine2 = new Turbine { ControlMode = AviationLightControlMode.TimeOfDay, CommunicationId = 2,IsRim = false};
var turbines = new List<Turbine> { turbine1, turbine2 };
var cancellationToken = new CancellationToken();
var handlerTask = new DisabledHandlerTask(logger, setPointWriter);
var receivedArguments = new List<IEnumerable<IntensitySetpoint>>();
setPointWriter.UpdateIntensitySetPoint(Arg.Do<IEnumerable<IntensitySetpoint>>(arguments =>
{
receivedArguments.Add(arguments);
}));
// Act
await handlerTask.Run(turbines, cancellationToken);
//Assert
Assert.IsTrue(receivedArguments.Count==1);
Assert.IsTrue(receivedArguments.First().Any(item => item is { CommunicationId: 1, IntensityValue: 0 }));
}
I need to verify the log message and i'm using Nsubstitue and NUnit for unit test