Skip to content
Original file line number Diff line number Diff line change
Expand Up @@ -9,20 +9,14 @@

namespace Microsoft.Testing.Platform.UnitTests;

internal interface IExtensionLoggerProvider : ILoggerProvider, IExtension;

internal interface IInitializableLoggerProvider : ILoggerProvider, IAsyncInitializableExtension;

internal interface IInitializableExtensionLoggerProvider : ILoggerProvider, IExtension, IAsyncInitializableExtension;

[TestClass]
public sealed class LoggingManagerTests
{
private readonly Mock<IServiceProvider> _mockServiceProvider = new();
private readonly Mock<IMonitor> _mockMonitor = new();

public LoggingManagerTests()
=> _mockMonitor.Setup(x => x.Lock(It.IsAny<object>())).Returns(new Mock<IDisposable>().Object);
=> _mockMonitor.Setup(m => m.Lock(It.IsAny<object>())).Returns(new Mock<IDisposable>().Object);

[TestMethod]
public async Task BuildAsync_WithNoProviders_ReturnsFactoryThatCreatesLogger()
Expand Down Expand Up @@ -129,7 +123,10 @@ public async Task BuildAsync_WithNonExtensionInitializableProvider_CallsInitiali
}

[TestMethod]
public async Task BuildAsync_PassesLogLevelAndServiceProviderToFactory()
[DataRow(LogLevel.Trace)]
[DataRow(LogLevel.Warning)]
[DataRow(LogLevel.Critical)]
public async Task BuildAsync_PassesLogLevelAndServiceProviderToFactory(LogLevel level)
{
LogLevel capturedLogLevel = LogLevel.None;
IServiceProvider? capturedServiceProvider = null;
Expand All @@ -138,16 +135,16 @@ public async Task BuildAsync_PassesLogLevelAndServiceProviderToFactory()
mockProvider.Setup(p => p.CreateLogger(It.IsAny<string>())).Returns(new Mock<ILogger>().Object);

LoggingManager manager = new();
manager.AddProvider((level, sp) =>
manager.AddProvider((l, sp) =>
{
capturedLogLevel = level;
capturedLogLevel = l;
capturedServiceProvider = sp;
return mockProvider.Object;
});

_ = await manager.BuildAsync(_mockServiceProvider.Object, LogLevel.Warning, _mockMonitor.Object);
_ = await manager.BuildAsync(_mockServiceProvider.Object, level, _mockMonitor.Object);

Assert.AreEqual(LogLevel.Warning, capturedLogLevel);
Assert.AreEqual(level, capturedLogLevel);
Assert.AreSame(_mockServiceProvider.Object, capturedServiceProvider);
}

Expand Down