Skip to content

Commit ccfcfee

Browse files
authored
Merge pull request #45 from csf-dev/43-mandatory-logging
Resolve #43 - Logging is no longer mandatory
2 parents 6240be0 + f57f391 commit ccfcfee

3 files changed

Lines changed: 35 additions & 1 deletion

File tree

CSF.Extensions.WebDriver.Tests/Factories/WebDriverFactoryIntegrationTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ IConfiguration GetConfiguration()
5050

5151
public class FakeWebDriverFactory : ICreatesWebDriverFromOptions
5252
{
53-
public WebDriverAndOptions GetWebDriver(WebDriverCreationOptions options, Action<DriverOptions> supplementaryConfiguration = null)
53+
public WebDriverAndOptions GetWebDriver(WebDriverCreationOptions options, Action<DriverOptions>? supplementaryConfiguration = null)
5454
{
5555
return new(Mock.Of<IWebDriver>(), Mock.Of<DriverOptions>());
5656
}
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
using CSF.Extensions.WebDriver.Factories;
2+
using Microsoft.Extensions.DependencyInjection;
3+
4+
namespace CSF.Extensions.WebDriver;
5+
6+
[TestFixture,Parallelizable]
7+
public class ServiceCollectionExtensionsTests
8+
{
9+
[Test,AutoMoqData]
10+
public void AddWebDriverFactoryWithoutOptionsPatternShouldNotCrashWhenResolvingBecauseOfMissingLogging()
11+
{
12+
var services = new ServiceCollection();
13+
services.AddWebDriverFactoryWithoutOptionsPattern();
14+
var serviceProvider = services.BuildServiceProvider();
15+
16+
Assert.That(serviceProvider.GetRequiredService<ICreatesWebDriverFromOptions>, Throws.Nothing);
17+
}
18+
}

CSF.Extensions.WebDriver/ServiceCollectionExtensions.cs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
using System;
2+
using System.Linq;
23
using Castle.DynamicProxy;
34
using CSF.Extensions.WebDriver.Factories;
45
using CSF.Extensions.WebDriver.Identification;
56
using CSF.Extensions.WebDriver.Proxies;
67
using CSF.Extensions.WebDriver.Quirks;
78
using Microsoft.Extensions.Configuration;
89
using Microsoft.Extensions.DependencyInjection;
10+
using Microsoft.Extensions.Logging;
11+
using Microsoft.Extensions.Logging.Abstractions;
912
using Microsoft.Extensions.Options;
1013

1114
namespace CSF.Extensions.WebDriver
@@ -164,6 +167,8 @@ public static IServiceCollection AddWebDriverFactoryWithoutOptionsPattern(this I
164167
services.AddTransient<IdentificationAugmenter>();
165168
services.AddTransient<UnproxyingAugmenter>();
166169

170+
AddLoggingIfNotAlreadyAdded(services);
171+
167172
return services;
168173
}
169174

@@ -241,6 +246,17 @@ static Func<IServiceProvider, IConfigureOptions<WebDriverCreationOptionsCollecti
241246
return ActivatorUtilities.CreateInstance<WebDriverCreationConfigureOptions>(services, configSection, configureOptions);
242247
};
243248
}
249+
250+
static IServiceCollection AddLoggingIfNotAlreadyAdded(IServiceCollection services)
251+
{
252+
if(services.Any(s => s.ServiceType == typeof(ILoggerFactory)))
253+
return services;
254+
255+
services.AddTransient<ILoggerFactory, NullLoggerFactory>();
256+
services.AddTransient(typeof(ILogger<>), typeof(NullLogger<>));
257+
258+
return services;
259+
}
244260
}
245261
}
246262

0 commit comments

Comments
 (0)