| | | 1 | | namespace Nabs.Tests.Fixtures; |
| | | 2 | | |
| | | 3 | | public abstract class ConfigurationTestFixtureBase( |
| | | 4 | | IMessageSink diagnosticMessageSink) |
| | 3 | 5 | | : TestFixtureBase(diagnosticMessageSink) |
| | | 6 | | { |
| | | 7 | | public IConfigurationRoot ConfigurationRoot { get; private set; } = default!; |
| | | 8 | | public IServiceProvider ServiceProvider { get; private set; } = default!; |
| | | 9 | | public IServiceScope ServiceScope { get; private set; } = default!; |
| | | 10 | | |
| | | 11 | | protected virtual void ConfigureConfiguration(IConfigurationBuilder configurationBuilder) |
| | | 12 | | { |
| | | 13 | | |
| | 3 | 14 | | } |
| | | 15 | | |
| | | 16 | | protected virtual void ConfigureServices(IServiceCollection services) |
| | | 17 | | { |
| | 2 | 18 | | } |
| | | 19 | | |
| | | 20 | | public override void Initialise() |
| | | 21 | | { |
| | 3 | 22 | | var superTestFixtureAssembly = GetType().Assembly; |
| | | 23 | | |
| | 3 | 24 | | var configurationBuilder = new ConfigurationBuilder(); |
| | 3 | 25 | | configurationBuilder |
| | 3 | 26 | | .AddJsonFile("appsettings.json", false) |
| | 3 | 27 | | .AddUserSecrets(superTestFixtureAssembly, true); |
| | | 28 | | |
| | 3 | 29 | | ConfigureConfiguration(configurationBuilder); |
| | 3 | 30 | | ConfigurationRoot = configurationBuilder.Build(); |
| | | 31 | | |
| | 3 | 32 | | var services = new ServiceCollection(); |
| | | 33 | | |
| | 3 | 34 | | ConfigureServices(services); |
| | | 35 | | |
| | 3 | 36 | | ServiceProvider = services |
| | 3 | 37 | | .BuildServiceProvider( |
| | 3 | 38 | | new ServiceProviderOptions |
| | 3 | 39 | | { |
| | 3 | 40 | | ValidateScopes = true, |
| | 3 | 41 | | ValidateOnBuild = true |
| | 3 | 42 | | }); |
| | | 43 | | |
| | 3 | 44 | | ServiceScope = ServiceProvider |
| | 3 | 45 | | .GetRequiredService<IServiceScopeFactory>() |
| | 3 | 46 | | .CreateScope(); |
| | 3 | 47 | | } |
| | | 48 | | } |