using JSMR.Application.Scanning.Contracts; using JSMR.Application.Scanning.Ports; using JSMR.Infrastructure.Common.Time; using JSMR.Infrastructure.Data; using JSMR.Infrastructure.Ingestion; using JSMR.Tests.Fixtures; using NSubstitute; namespace JSMR.Tests.Ingestion.Japanese; public abstract class IngestionTestsBase(MariaDbContainerFixture container) { protected async Task GetAppDbContextAsync() { return await MariaTestDb.CreateIsolatedAsync( container.RootConnectionString, seed: VoiceWorkIngestionSeedData.SeedAsync); } protected static async Task UpsertAsync(AppDbContext dbContext, DateTime dateTime, VoiceWorkIngest[] ingests) { IClock clock = Substitute.For(); clock.UtcNow.Returns(new DateTimeOffset(dateTime)); TokyoTimeProvider timeProvider = new(clock); VoiceWorkUpdater updater = new(dbContext, timeProvider); return await updater.UpsertAsync(ingests, TestContext.Current.CancellationToken); } }