using System; using System.Threading; using System.Threading.Tasks; using ComplianceNFs.Service; using ComplianceNFs.Core.Application; using ComplianceNFs.Core.Entities; using Microsoft.Extensions.Logging; using Moq; using Xunit; namespace ComplianceNFs.Infrastructure.Tests { public class WorkerTests { [Fact] public async Task ExecuteAsync_StartsIngestionAndOrchestratesWorkflow() { // Arrange var loggerMock = new Mock>(); var ingestionMock = new Mock(); var matchingMock = new Mock(); var complianceMock = new Mock(); var notificationMock = new Mock(); var archivingMock = new Mock(); var worker = new Worker( loggerMock.Object, ingestionMock.Object, matchingMock.Object, complianceMock.Object, notificationMock.Object, archivingMock.Object ); var cts = new CancellationTokenSource(); cts.CancelAfter(100); // Cancel quickly for test // Act var task = worker.StartAsync(cts.Token); await Task.Delay(200); // Give it time to start // Assert ingestionMock.Verify(i => i.IngestAsync(), Times.Once); } } }