using Microsoft.Data.Sqlite;
using Microsoft.EntityFrameworkCore;
using WishNinja.Data;
namespace WishNinja.Tests;
///
/// An backed by a single shared in-memory SQLite
/// connection, so data written by one context is visible to the next. Dispose to tear down.
///
public sealed class TestDb : IDbContextFactory, IDisposable
{
private readonly SqliteConnection _connection;
private readonly DbContextOptions _options;
public TestDb()
{
_connection = new SqliteConnection("DataSource=:memory:");
_connection.Open();
_options = new DbContextOptionsBuilder()
.UseSqlite(_connection)
.Options;
using var ctx = CreateDbContext();
ctx.Database.EnsureCreated();
}
public ApplicationDbContext CreateDbContext() => new(_options);
public void Dispose() => _connection.Dispose();
}