using Microsoft.EntityFrameworkCore; using Microsoft.Extensions.DependencyInjection; using Strata.ApiLib.Core.Cors.Extensions; using Strata.ApiLib.Core.StrataAuthentication.Bootstrappers; using Strata.Configuration.Client.DependencyInjection.ConsoleApps; using Strata.ContinuousImprovement.Biz.Configurations; using Strata.ContinuousImprovement.Biz.DbContexts; using Strata.ContinuousImprovement.Biz.StrategicOpportunities; using System.Diagnostics; using System.Diagnostics.CodeAnalysis; namespace Strata.ContinuousImprovement.Biz.Test.Integration { [ExcludeFromCodeCoverage] public static class ServiceCollectionFactory { private static readonly Guid DevMaster = new("54409f55-5ddf-4748-8222-9ccfb04fb4f5"); private static readonly Guid SeleniumAutomationDatabase = new("6bcd9090-3446-4cc1-b1aa-38afae76a1c6"); private static readonly Guid SeleniumAutomationRefreshed4Master = new("feb7a099-8b2a-436c-9aba-0f853c8c60c9"); private static readonly string IntegrationTesting = $"ci_{DateTime.Now:yyyyMMdd}_{Guid.NewGuid():N}"; public static IServiceCollection Create() { var services = new ServiceCollection(); var jazzDbGuid = Debugger.IsAttached ? SeleniumAutomationRefreshed4Master : SeleniumAutomationDatabase; try { var configuration = StrataConfigurationFactory.GetConfiguration(); services.AddSingleton(configuration); services.AddStrataAuthentication(configuration); services.AddStrataCors(configuration); services.AddContinuousImprovementServices(configuration, IntegrationTesting); services.AddAsyncDbContextFactory(options => { options .WithConnectionString((provider, token) => provider.GetConnectionStringFromSmc(jazzDbGuid, token)) .WithDbContextOptions((connectionString, provider, builder) => builder.UseSqlServer(connectionString, options => { options.CommandTimeout(300); })); }); services.AddScoped(); services.AddLogging(); } catch (Exception) { throw; } return services; } } }