public async Task GivenMultipleChangeFeedEntries_WhenProcessed_ThenEachChangeFeedEntryShouldBeProcessed() { ChangeFeedEntry[] changeFeeds = new[] { ChangeFeedGenerator.Generate(1), ChangeFeedGenerator.Generate(2), ChangeFeedGenerator.Generate(3), }; _changeFeedRetrieveService.RetrieveChangeFeedAsync(0, DefaultCancellationToken).Returns(changeFeeds); await ExecuteProcessAsync(); await _fhirTransactionPipeline.ReceivedWithAnyArgs(3).ProcessAsync(default, default);
/// <inheritdoc/> public async Task ProcessAsync(TimeSpan pollIntervalDuringCatchup, CancellationToken cancellationToken) { SyncState state = await _syncStateService.GetSyncStateAsync(cancellationToken); while (true) { // Retrieve the change feed for any changes. IReadOnlyList <ChangeFeedEntry> changeFeedEntries = await _changeFeedRetrieveService.RetrieveChangeFeedAsync( state.SyncedSequence, cancellationToken); if (!changeFeedEntries.Any()) { _logger.LogInformation("No new DICOM events to process."); return; } long maxSequence = changeFeedEntries[^ 1].Sequence;