using Npgsql;
namespace Azaion.Missions.E2E.Fixtures;
///
/// Generic seed-applying fixture. Concrete child tasks (AZ-577 onward) supply
/// a that exposes the inline SQL or named SQL
/// file from _docs/02_document/tests/test-data.md ยง Seed Data Sets.
///
public abstract class DbSeedFixture : IDisposable where TSeed : ISeedSpec, new()
{
public DbSeedFixture()
{
DbResetFixture.ResetDatabase(TestEnvironment.DbSideChannel);
Apply(new TSeed());
}
public void Dispose() { /* Cleanup handled by next fixture's reset. */ }
private static void Apply(ISeedSpec seed)
{
using var conn = new NpgsqlConnection(TestEnvironment.DbSideChannel);
conn.Open();
using var cmd = conn.CreateCommand();
cmd.CommandText = seed.Sql;
cmd.ExecuteNonQuery();
}
}
public interface ISeedSpec
{
string Name { get; }
string Sql { get; }
}