Files
jsmr/JSMR.Tests/Fixtures/CreatorSearchProviderFixture.cs
Brian Bicknell abd5a81e3e
Some checks failed
ci / build-test (push) Failing after 8m39s
Improved performance of integration tests.
2025-11-02 13:56:34 -05:00

69 lines
1.9 KiB
C#

using JSMR.Infrastructure.Data;
using Microsoft.EntityFrameworkCore;
namespace JSMR.Tests.Fixtures;
public class CreatorSearchProviderFixture : MariaDbFixture
{
protected override async Task OnInitializedAsync(AppDbContext context)
{
await SeedAsync(context);
}
private static async Task SeedAsync(AppDbContext context)
{
if (await context.Tags.AnyAsync())
return;
context.Creators.AddRange(
new() { CreatorId = 1, Name = "John Smith" },
new() { CreatorId = 2, Name = "John Doe", Favorite = true },
new() { CreatorId = 3, Name = "Jane Doe", Blacklisted = true }
);
await context.SaveChangesAsync();
}
}
public sealed class CreatorSearchProviderFixture2(MariaDbContainerFixture container) : IAsyncLifetime
{
public AppDbContext? DbContext { get; private set; }
public async ValueTask InitializeAsync()
{
//DbContext = await MariaTestDb.CreateIsolatedAsync(
// container.RootConnectionString,
// seed: SeedAsync);
var newDb = $"t_{DateTime.UtcNow:yyyyMMddHHmmss}_{Guid.NewGuid():N}";
DbContext = await MariaDbClone.CloneFromTemplateAsync(
container.RootConnectionString,
container.TemplateDbName,
newDbName: newDb,
seed: SeedAsync);
}
private static async Task SeedAsync(AppDbContext context)
{
if (await context.Tags.AnyAsync())
return;
context.Creators.AddRange(
new() { CreatorId = 1, Name = "John Smith" },
new() { CreatorId = 2, Name = "John Doe", Favorite = true },
new() { CreatorId = 3, Name = "Jane Doe", Blacklisted = true }
);
await context.SaveChangesAsync();
}
public async ValueTask DisposeAsync()
{
if (DbContext is not null)
{
await DbContext.DisposeAsync();
}
}
}