public async Task ReEnqueuesProcessingIfNotAllComplete() { const int postponeMinutes = 1; AddValidation("validation1", ValidationStatus.Incomplete); Configuration.ValidationMessageRecheckPeriod = TimeSpan.FromMinutes(postponeMinutes); PackageValidationMessageData messageData = null; DateTimeOffset postponeTill = DateTimeOffset.MinValue; ValidationEnqueuerMock .Setup(ve => ve.StartValidationAsync(It.IsAny <PackageValidationMessageData>(), It.IsAny <DateTimeOffset>())) .Returns(Task.FromResult(0)) .Callback <PackageValidationMessageData, DateTimeOffset>((pv, pt) => { messageData = pv; postponeTill = pt; }); var processor = CreateProcessor(); var startTime = DateTimeOffset.Now; await processor.ProcessValidationOutcomeAsync(ValidationSet, Package); ValidationEnqueuerMock .Verify(ve => ve.StartValidationAsync(It.IsAny <PackageValidationMessageData>(), It.IsAny <DateTimeOffset>()), Times.Once()); Assert.NotNull(messageData); Assert.Equal(ValidationSet.ValidationTrackingId, messageData.ValidationTrackingId); Assert.Equal(ValidationSet.PackageId, messageData.PackageId); Assert.Equal(Package.Version, messageData.PackageVersion); Assert.Equal(postponeMinutes, (postponeTill - startTime).TotalMinutes, 0); }
public async Task ReEnqueuesProcessingIfNotAllComplete() { const int postponeMinutes = 1; AddValidation("validation1", ValidationStatus.Incomplete); Configuration.ValidationMessageRecheckPeriod = TimeSpan.FromMinutes(postponeMinutes); Configuration.TimeoutValidationSetAfter = TimeSpan.FromDays(1); PackageValidationMessageData messageData = null; DateTimeOffset postponeTill = DateTimeOffset.MinValue; ValidationEnqueuerMock .Setup(ve => ve.SendMessageAsync(It.IsAny <PackageValidationMessageData>(), It.IsAny <DateTimeOffset>())) .Returns(Task.FromResult(0)) .Callback <PackageValidationMessageData, DateTimeOffset>((pv, pt) => { messageData = pv; postponeTill = pt; }); var processor = CreateProcessor(); var startTime = DateTimeOffset.Now; await processor.ProcessValidationOutcomeAsync(ValidationSet, PackageValidatingEntity, ProcessorStats, ScheduleNextCheck); ValidationStorageServiceMock .Verify(s => s.UpdateValidationSetAsync(ValidationSet), Times.Once); ValidationEnqueuerMock .Verify(ve => ve.SendMessageAsync(It.IsAny <PackageValidationMessageData>(), It.IsAny <DateTimeOffset>()), Times.Once()); PackageStateProcessorMock.Verify( x => x.SetStatusAsync(It.IsAny <PackageValidatingEntity>(), It.IsAny <PackageValidationSet>(), It.IsAny <PackageStatus>()), Times.Never); PackageFileServiceMock.Verify( x => x.DeletePackageForValidationSetAsync(It.IsAny <PackageValidationSet>()), Times.Never); Assert.NotNull(messageData); Assert.Equal(PackageValidationMessageType.ProcessValidationSet, messageData.Type); Assert.Equal(ValidationSet.ValidationTrackingId, messageData.ProcessValidationSet.ValidationTrackingId); Assert.Equal(ValidationSet.PackageId, messageData.ProcessValidationSet.PackageId); Assert.Equal(Package.NormalizedVersion, messageData.ProcessValidationSet.PackageVersion); Assert.Equal(ValidationSet.ValidatingType, messageData.ProcessValidationSet.ValidatingType); Assert.Equal(ValidationSet.PackageKey, messageData.ProcessValidationSet.EntityKey); Assert.Equal(postponeMinutes, (postponeTill - startTime).TotalMinutes, 0); Assert.Equal(ValidationSetStatus.InProgress, ValidationSet.ValidationSetStatus); }