< Summary

Information
Class: TestUtilities.FakeLoggerAssertions.FakeLoggerContainsAssertion<T>
Assembly: TestUtilities
File(s): /home/runner/work/KicktippAi/KicktippAi/src/TestUtilities/FakeLoggerAssertions/FakeLoggerContainsAssertion.cs
Line coverage
100%
Covered lines: 1
Uncovered lines: 0
Coverable lines: 1
Total lines: 46
Line coverage: 100%
Branch coverage
N/A
Covered branches: 0
Total branches: 0
Branch coverage: N/A
Method coverage

Feature is only available for sponsors

Upgrade to PRO version

File(s)

/home/runner/work/KicktippAi/KicktippAi/src/TestUtilities/FakeLoggerAssertions/FakeLoggerContainsAssertion.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 contains a log entry at the specified level with the specified content.
 9/// </summary>
 10public class FakeLoggerContainsAssertion<T> : Assertion<FakeLogger<T>>
 11{
 12    private readonly LogLevel _logLevel;
 13    private readonly string _messageContent;
 14
 15    public FakeLoggerContainsAssertion(AssertionContext<FakeLogger<T>> context, LogLevel logLevel, string messageContent
 16        : base(context)
 17    {
 18        _logLevel = logLevel;
 19        _messageContent = messageContent;
 20    }
 21
 22    protected override Task<AssertionResult> CheckAsync(EvaluationMetadata<FakeLogger<T>> metadata)
 23    {
 24        var actualValue = metadata.Value;
 25
 26        if (actualValue is null)
 27        {
 28            return Task.FromResult(AssertionResult.Failed("logger was null"));
 29        }
 30
 31        var logs = actualValue.Collector.GetSnapshot();
 32        var matchingLogs = logs.Where(l => l.Level == _logLevel && l.Message.Contains(_messageContent));
 33
 34        if (matchingLogs.Any())
 35        {
 36            return Task.FromResult(AssertionResult.Passed);
 37        }
 38
 139        var actualLogs = string.Join(", ", logs.Select(l => $"[{l.Level}] {l.Message}"));
 40        return Task.FromResult(AssertionResult.Failed(
 41            $"no matching log found. Actual logs: {actualLogs}"));
 42    }
 43
 44    protected override string GetExpectation()
 45        => $"to contain a log at level {_logLevel} with message containing \"{_messageContent}\"";
 46}

Methods/Properties