using DotNet.Testcontainers.Builders; using JSMR.Tests.Fixtures; using JSMR.Tests.Ingestion; using Testcontainers.MariaDb; [assembly: AssemblyFixture(typeof(MariaDbContainerFixture))] namespace JSMR.Tests.Fixtures; public sealed class MariaDbContainerFixture : IAsyncLifetime { const int MajorVersion = 10; const int MinorVersion = 11; const int Build = 6; private MariaDbContainer _container = default!; public string RootConnectionString { get; private set; } = default!; public string TemplateDbName { get; } = "jsmr_template"; public async ValueTask InitializeAsync() { _container = new MariaDbBuilder() .WithImage($"mariadb:{MajorVersion}.{MinorVersion}.{Build}") .WithEnvironment("MARIADB_ROOT_PASSWORD", "rootpw") .WithUsername("root") .WithPassword("rootpw") .WithWaitStrategy(Wait.ForUnixContainer().UntilInternalTcpPortIsAvailable(3306)) .Build(); await _container.StartAsync(); RootConnectionString = _container.GetConnectionString(); // Build the template ONCE with EF + your existing seed await MariaDbClone.CreateTemplateAsync( RootConnectionString, TemplateDbName); } public async ValueTask DisposeAsync() => await _container.DisposeAsync(); }