PlanTempusApp/Tests/TestFixture.cs

97 lines
2.9 KiB
C#
Raw Normal View History

2025-01-03 16:21:03 +00:00
using System;
using System.Diagnostics;
using Autofac;
using Core.ModuleRegistry;
using Microsoft.ApplicationInsights;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Logging;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace Tests
{
2025-01-26 22:57:27 +01:00
/// <summary>
/// Act as base class for tests. Avoids duplication of test setup code
/// </summary>
[TestClass]
public abstract partial class TestFixture
{
protected IContainer Container { get; private set; }
protected ContainerBuilder ContainerBuilder { get; private set; }
[AssemblyInitialize]
public static void AssemblySetup(TestContext tc)
{
Trace.Listeners.Add(new TextWriterTraceListener(Console.Out));
var envConfiguration = new ConfigurationBuilder()
.AddEnvironmentVariables()
.Build();
}
public virtual IConfigurationRoot Configuration()
{
2025-01-30 18:03:24 +01:00
IConfigurationBuilder configBuilder = Core.Configurations.SmartConfigManager.AppConfigBuilder("appsettings.dev.json");
2025-01-26 22:57:27 +01:00
IConfigurationRoot configuration = configBuilder.Build();
return configuration;
}
/// <summary>
/// Should not be overriden. Rather override PreArrangeAll to setup data needed for a test class.
/// Override PrebuildContainer with a method that does nothing to prevent early build of IOC container
/// </summary>
[TestInitialize]
public void Setup()
{
CreateContainerBuilder();
Container = ContainerBuilder.Build();
Insight.Database.Providers.PostgreSQL.PostgreSQLInsightDbProvider.RegisterProvider();
}
protected virtual void CreateContainerBuilder()
{
IConfigurationRoot configuration = Configuration();
var builder = new ContainerBuilder();
builder.RegisterInstance(new LoggerFactory())
.As<ILoggerFactory>();
builder.RegisterGeneric(typeof(Logger<>))
.As(typeof(ILogger<>))
.SingleInstance();
builder.RegisterModule(new Core.ModuleRegistry.DbPostgreSqlModule
{
ConnectionString = configuration.GetConnectionString("ptdb")
});
builder.RegisterModule(new Core.ModuleRegistry.TelemetryModule
{
TelemetryConfig = configuration.GetSection("ApplicationInsights").Get<Core.ModuleRegistry.TelemetryConfig>()
});
ContainerBuilder = builder;
}
[TestCleanup]
public void CleanUp()
{
Trace.Flush();
var telemetryClient = Container.Resolve<TelemetryClient>();
telemetryClient.Flush();
if (Container != null)
{
Container.Dispose();
Container = null;
}
}
}
2025-01-03 16:21:03 +00:00
}