< Summary

Information
Class: TestUtilities.FakeLoggerAssertions.FakeLoggerDoesNotContainAssertion<T>
Assembly: TestUtilities
File(s): /home/runner/work/KicktippAi/KicktippAi/src/TestUtilities/FakeLoggerAssertions/FakeLoggerDoesNotContainAssertion.cs
Line coverage
92%
Covered lines: 13
Uncovered lines: 1
Coverable lines: 14
Total lines: 45
Line coverage: 92.8%
Branch coverage
100%
Covered branches: 2
Total branches: 2
Branch coverage: 100%
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

Metrics

MethodBranch coverage Crap Score Cyclomatic complexity Line coverage
.ctor(...)100%11100%
CheckAsync(...)100%2288.89%
GetExpectation()100%11100%

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/TestUtilities/FakeLoggerAssertions/FakeLoggerDoesNotContainAssertion.cs

#LineLine coverage
 1using Microsoft.Extensions.Logging;
 2using Microsoft.Extensions.Logging.Testing;
 3using TUnit.Assertions.Core;
 4
 5namespace TestUtilities.FakeLoggerAssertions;
 6
 7/// <summary>
 8/// Asserts that a FakeLogger does NOT contain a log entry at the specified level with the specified content.
 9/// </summary>
 10public class FakeLoggerDoesNotContainAssertion<T> : Assertion<FakeLogger<T>>
 11{
 12    private readonly LogLevel _logLevel;
 13    private readonly string _messageContent;
 14
 15    public FakeLoggerDoesNotContainAssertion(AssertionContext<FakeLogger<T>> context, LogLevel logLevel, string messageC
 116        : base(context)
 17    {
 118        _logLevel = logLevel;
 119        _messageContent = messageContent;
 120    }
 21
 22    protected override Task<AssertionResult> CheckAsync(EvaluationMetadata<FakeLogger<T>> metadata)
 23    {
 124        var actualValue = metadata.Value;
 25
 126        if (actualValue is null)
 27        {
 028            return Task.FromResult(AssertionResult.Failed("logger was null"));
 29        }
 30
 131        var logs = actualValue.Collector.GetSnapshot();
 132        var matchingLogs = logs.Where(l => l.Level == _logLevel && l.Message.Contains(_messageContent)).ToList();
 33
 134        if (!matchingLogs.Any())
 35        {
 136            return Task.FromResult(AssertionResult.Passed);
 37        }
 38
 139        return Task.FromResult(AssertionResult.Failed(
 140            $"{matchingLogs.Count} matching log(s) were found"));
 41    }
 42
 43    protected override string GetExpectation()
 144        => $"to NOT contain a log at level {_logLevel} with message containing \"{_messageContent}\"";
 45}