Verify Logger Message in Unit Test case

34 views Asked by At
    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

0

There are 0 answers