|
- using Microsoft.AspNetCore.Hosting;
- using Microsoft.AspNetCore.Mvc.Testing;
- using Microsoft.Data.Sqlite;
-
- namespace CartWise.Web.Tests;
-
- public class CartWiseWebApplicationFactory : WebApplicationFactory<Program>
- {
- private readonly string _dbPath = Path.Combine(Path.GetTempPath(), $"cartwise-tests-{Guid.NewGuid():N}.db");
-
- protected override void ConfigureWebHost(IWebHostBuilder builder)
- {
- builder.UseEnvironment("Development");
- builder.UseSetting("ConnectionStrings:DefaultConnection", $"Data Source={_dbPath}");
- }
-
- protected override void Dispose(bool disposing)
- {
- base.Dispose(disposing);
-
- if (!disposing)
- {
- return;
- }
-
- // Release SQLite's pooled native handles before deleting the temp file, or the delete fails while the
- // process still holds the file open.
- SqliteConnection.ClearAllPools();
-
- foreach (var path in new[] { _dbPath, $"{_dbPath}-shm", $"{_dbPath}-wal" })
- {
- if (File.Exists(path))
- {
- File.Delete(path);
- }
- }
- }
- }
|