Skip to content

Commit d3d76cc

Browse files
committed
Associated the "optional" boolean flag with each app settings file #105
1 parent f68cd4e commit d3d76cc

File tree

3 files changed

+22
-13
lines changed

3 files changed

+22
-13
lines changed
Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,4 @@
1-
using Microsoft.Extensions.Configuration;
2-
using Microsoft.Extensions.DependencyInjection;
3-
using System.Collections.Generic;
4-
using System.Threading.Tasks;
5-
using Xunit.Microsoft.DependencyInjection.Abstracts;
6-
using Xunit.Microsoft.DependencyInjection.ExampleTests.Services;
7-
8-
namespace Xunit.Microsoft.DependencyInjection.ExampleTests.Fixtures;
1+
namespace Xunit.Microsoft.DependencyInjection.ExampleTests.Fixtures;
92

103
public class TestFixture : TestBedFixture
114
{
@@ -17,8 +10,14 @@ protected override void AddServices(IServiceCollection services, IConfiguration?
1710
protected override ValueTask DisposeAsyncCore()
1811
=> new();
1912

13+
[Obsolete]
2014
protected override IEnumerable<string> GetConfigurationFiles()
2115
{
2216
yield return "appsettings.json";
2317
}
18+
19+
protected override IEnumerable<TestAppSettings> GetTestAppSettings()
20+
{
21+
yield return new() { Filename = "appsettings.json", IsOptional = false };
22+
}
2423
}

src/Abstracts/TestBedFixture.cs

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -40,25 +40,28 @@ public IServiceProvider GetServiceProvider(ITestOutputHelper testOutputHelper)
4040
=> GetServiceProvider(testOutputHelper).GetService<T>();
4141

4242
protected abstract void AddServices(IServiceCollection services, IConfiguration? configuration);
43+
44+
[Obsolete("This method is deprecated. Please override and use GetTestAppSettings() method instead.", true)]
4345
protected abstract IEnumerable<string> GetConfigurationFiles();
46+
protected abstract IEnumerable<TestAppSettings> GetTestAppSettings();
4447

4548
protected virtual ILoggingBuilder AddLoggingProvider(ILoggingBuilder loggingBuilder, ILoggerProvider loggerProvider)
4649
=> loggingBuilder.AddProvider(loggerProvider);
4750

4851
private IConfigurationRoot? GetConfigurationRoot()
4952
{
50-
var configurationFiles = GetConfigurationFiles();
53+
var testAppSettings = GetTestAppSettings();
5154
return
52-
configurationFiles.All(c => !string.IsNullOrEmpty(c))
53-
? GetConfigurationRoot(configurationFiles)
55+
testAppSettings.All(setting => !string.IsNullOrEmpty(setting.Filename))
56+
? GetConfigurationRoot(testAppSettings)
5457
: default;
5558
}
5659

57-
private IConfigurationRoot GetConfigurationRoot(IEnumerable<string> configurationFiles)
60+
private IConfigurationRoot GetConfigurationRoot(IEnumerable<TestAppSettings> configurationFiles)
5861
{
5962
foreach (var configurationFile in configurationFiles)
6063
{
61-
ConfigurationBuilder.AddJsonFile(configurationFile);
64+
ConfigurationBuilder.AddJsonFile(configurationFile.Filename, optional: configurationFile.IsOptional);
6265
}
6366
ConfigurationBuilder.AddEnvironmentVariables();
6467
return ConfigurationBuilder.Build();

src/TestAppSettings.cs

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
namespace Xunit.Microsoft.DependencyInjection;
2+
3+
public class TestAppSettings
4+
{
5+
public string? Filename { get; set; }
6+
public bool IsOptional { get; set; } = false;
7+
}

0 commit comments

Comments
 (0)