First commit. Include junk from template to remove
This commit is contained in:
62
tests/Application.FunctionalTests/SqlServerTestDatabase.cs
Normal file
62
tests/Application.FunctionalTests/SqlServerTestDatabase.cs
Normal file
@@ -0,0 +1,62 @@
|
||||
using System.Data.Common;
|
||||
using Hutopy.Infrastructure.Data;
|
||||
using Microsoft.Data.SqlClient;
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using Microsoft.Extensions.Configuration;
|
||||
using Respawn;
|
||||
|
||||
namespace Hutopy.Application.FunctionalTests;
|
||||
|
||||
public class SqlServerTestDatabase : ITestDatabase
|
||||
{
|
||||
private readonly string _connectionString = null!;
|
||||
private SqlConnection _connection = null!;
|
||||
private Respawner _respawner = null!;
|
||||
|
||||
public SqlServerTestDatabase()
|
||||
{
|
||||
var configuration = new ConfigurationBuilder()
|
||||
.AddJsonFile("appsettings.json")
|
||||
.AddEnvironmentVariables()
|
||||
.Build();
|
||||
|
||||
var connectionString = configuration.GetConnectionString("DefaultConnection");
|
||||
|
||||
Guard.Against.Null(connectionString);
|
||||
|
||||
_connectionString = connectionString;
|
||||
}
|
||||
|
||||
public async Task InitialiseAsync()
|
||||
{
|
||||
_connection = new SqlConnection(_connectionString);
|
||||
|
||||
var options = new DbContextOptionsBuilder<ApplicationDbContext>()
|
||||
.UseSqlServer(_connectionString)
|
||||
.Options;
|
||||
|
||||
var context = new ApplicationDbContext(options);
|
||||
|
||||
context.Database.Migrate();
|
||||
|
||||
_respawner = await Respawner.CreateAsync(_connectionString, new RespawnerOptions
|
||||
{
|
||||
TablesToIgnore = new Respawn.Graph.Table[] { "__EFMigrationsHistory" }
|
||||
});
|
||||
}
|
||||
|
||||
public DbConnection GetConnection()
|
||||
{
|
||||
return _connection;
|
||||
}
|
||||
|
||||
public async Task ResetAsync()
|
||||
{
|
||||
await _respawner.ResetAsync(_connectionString);
|
||||
}
|
||||
|
||||
public async Task DisposeAsync()
|
||||
{
|
||||
await _connection.DisposeAsync();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user