Files
vegasco/tests/Vegasco.Server.Api.Tests.Integration/PostgresRespawner.cs

41 lines
944 B
C#
Raw Normal View History

2024-08-17 16:38:40 +02:00
using Npgsql;
using Respawn;
using System.Data.Common;
namespace Vegasco.Server.Api.Tests.Integration;
2024-08-17 16:38:40 +02:00
internal sealed class PostgresRespawner : IDisposable
{
private readonly DbConnection _connection;
private readonly Respawner _respawner;
private PostgresRespawner(Respawner respawner, DbConnection connection)
{
_respawner = respawner;
_connection = connection;
}
public static async Task<PostgresRespawner> CreateAsync(string connectionString)
{
DbConnection connection = new NpgsqlConnection(connectionString);
await connection.OpenAsync();
2025-06-24 19:28:55 +02:00
Respawner respawner = await Respawner.CreateAsync(connection,
2024-08-17 16:38:40 +02:00
new RespawnerOptions
{
SchemasToInclude = ["public"],
DbAdapter = DbAdapter.Postgres
});
return new PostgresRespawner(respawner, connection);
}
public async Task ResetDatabaseAsync()
{
await _respawner.ResetAsync(_connection);
}
public void Dispose()
{
_connection.Dispose();
}
}