using Microsoft.AspNetCore.Hosting;
using Microsoft.AspNetCore.Mvc.Testing;
namespace TeamUp.IntegrationTests;
///
/// Drives the real web host against the test container, in Development so
/// migrations apply on startup and the OpenAPI document is mapped.
///
public sealed class TeamUpWebFactory(
string connectionString,
IReadOnlyDictionary? settings = null) : WebApplicationFactory
{
/// Operator key the test host accepts for builtin management (/index, /sync).
public const string PlatformAdminKey = "test-admin-key";
protected override void ConfigureWebHost(IWebHostBuilder builder)
{
builder.UseEnvironment("Development");
builder.UseSetting("ConnectionStrings:Postgres", connectionString);
builder.UseSetting("Database:ApplyMigrationsOnStartup", "true");
builder.UseSetting("OpenTelemetry:OtlpEndpoint", string.Empty);
builder.UseSetting("Skills:AdminKey", PlatformAdminKey);
if (settings is not null)
{
foreach (var (key, value) in settings)
{
builder.UseSetting(key, value);
}
}
}
}