Skip to content

Commit e522f4d

Browse files
committed
IntroducedIntroduced GetConfigurationFiles() virtual method to let developers use more than one appsettings.xYZ.json file #75
1 parent 1c31c01 commit e522f4d

File tree

1 file changed

+19
-9
lines changed

1 file changed

+19
-9
lines changed

src/Abstracts/TestBedFixture.cs

Lines changed: 19 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,9 @@
22
using Microsoft.Extensions.DependencyInjection;
33
using Microsoft.Extensions.Logging;
44
using System;
5+
using System.Collections.Generic;
56
using System.IO;
7+
using System.Linq;
68
using System.Threading.Tasks;
79
using Xunit.Abstractions;
810
using Xunit.Microsoft.DependencyInjection.Logging;
@@ -49,24 +51,32 @@ public T GetService<T>(ITestOutputHelper testOutputHelper)
4951
protected abstract string GetConfigurationFile();
5052
protected abstract void AddServices(IServiceCollection services, IConfiguration configuration);
5153

54+
protected virtual IEnumerable<string> GetConfigurationFiles()
55+
{
56+
yield return GetConfigurationFile();
57+
}
58+
5259
protected virtual ILoggingBuilder AddLoggingProvider(ILoggingBuilder loggingBuilder, ILoggerProvider loggerProvider)
5360
=> loggingBuilder.AddProvider(loggerProvider);
5461

5562
private IConfigurationRoot GetConfigurationRoot()
5663
{
57-
var configurationFile = GetConfigurationFile();
58-
64+
var configurationFiles = GetConfigurationFiles();
5965
return
60-
!string.IsNullOrEmpty(configurationFile)
61-
? GetConfigurationRoot(configurationFile)
66+
configurationFiles.All(c => !string.IsNullOrEmpty(c))
67+
? GetConfigurationRoot(configurationFiles)
6268
: default;
6369
}
6470

65-
private IConfigurationRoot GetConfigurationRoot(string configurationFile) =>
66-
new ConfigurationBuilder()
67-
.SetBasePath(Directory.GetCurrentDirectory())
68-
.AddJsonFile(configurationFile)
69-
.Build();
71+
private IConfigurationRoot GetConfigurationRoot(IEnumerable<string> configurationFiles)
72+
{
73+
var builder = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory());
74+
foreach(var configurationFile in configurationFiles)
75+
{
76+
builder.AddJsonFile(configurationFile);
77+
}
78+
return builder.Build();
79+
}
7080

7181
protected virtual void Dispose(bool disposing)
7282
{

0 commit comments

Comments
 (0)