69 lines
1.9 KiB
C#
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();
|
|
}
|
|
}
|
|
} |