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(); }