@@ -116,8 +116,12 @@ public async Task DoesNotReEnqueueProcessingIfValidationSetTimesOut()
116116 . Verify ( x => x . DeletePackageForValidationSetAsync ( It . IsAny < PackageValidationSet > ( ) ) , Times . Never ) ;
117117 }
118118
119- [ Fact ]
120- public async Task SendsValidatingTooLongMessageOnce ( )
119+ [ Theory ]
120+ [ InlineData ( PackageStatus . Available , false ) ]
121+ [ InlineData ( PackageStatus . Deleted , false ) ]
122+ [ InlineData ( PackageStatus . Validating , true ) ]
123+ [ InlineData ( PackageStatus . FailedValidation , false ) ]
124+ public async Task SendsValidatingTooLongMessageOnlyIfPackageIsInValidatingState ( PackageStatus packageStatus , bool shouldSend )
121125 {
122126 const int postponeMinutes = 1 ;
123127
@@ -130,6 +134,8 @@ public async Task SendsValidatingTooLongMessageOnce()
130134 ValidationSet . Created = DateTime . UtcNow - TimeSpan . FromMinutes ( 21 ) ;
131135 ValidationSet . Updated = DateTime . UtcNow - TimeSpan . FromMinutes ( 15 ) ;
132136
137+ PackageValidatingEntity . EntityRecord . PackageStatusKey = packageStatus ;
138+
133139 ValidationStorageServiceMock
134140 . Setup ( s => s . UpdateValidationSetAsync ( It . IsAny < PackageValidationSet > ( ) ) )
135141 . Callback < PackageValidationSet > ( s => s . Updated = DateTime . UtcNow )
@@ -143,14 +149,28 @@ public async Task SendsValidatingTooLongMessageOnce()
143149 var processor = CreateProcessor ( ) ;
144150 await processor . ProcessValidationOutcomeAsync ( ValidationSet , PackageValidatingEntity , ProcessorStats ) ;
145151
146- TelemetryServiceMock
147- . Verify ( t => t . TrackSentValidationTakingTooLongMessage ( Package . PackageRegistration . Id , Package . NormalizedVersion , ValidationSet . ValidationTrackingId ) , Times . Once ) ;
148- MessageServiceMock
149- . Verify ( m => m . SendValidationTakingTooLongMessage ( Package ) , Times . Once ) ;
150- ValidationEnqueuerMock
151- . Verify ( ve => ve . StartValidationAsync ( It . IsAny < PackageValidationMessageData > ( ) , It . IsAny < DateTimeOffset > ( ) ) , Times . Once ) ;
152- PackageFileServiceMock
153- . Verify ( x => x . DeletePackageForValidationSetAsync ( It . IsAny < PackageValidationSet > ( ) ) , Times . Never ) ;
152+ if ( shouldSend )
153+ {
154+ TelemetryServiceMock
155+ . Verify ( t => t . TrackSentValidationTakingTooLongMessage ( Package . PackageRegistration . Id , Package . NormalizedVersion , ValidationSet . ValidationTrackingId ) , Times . Once ) ;
156+ MessageServiceMock
157+ . Verify ( m => m . SendValidationTakingTooLongMessage ( Package ) , Times . Once ) ;
158+ ValidationEnqueuerMock
159+ . Verify ( ve => ve . StartValidationAsync ( It . IsAny < PackageValidationMessageData > ( ) , It . IsAny < DateTimeOffset > ( ) ) , Times . Once ) ;
160+ PackageFileServiceMock
161+ . Verify ( x => x . DeletePackageForValidationSetAsync ( It . IsAny < PackageValidationSet > ( ) ) , Times . Never ) ;
162+ }
163+ else
164+ {
165+ TelemetryServiceMock
166+ . Verify ( t => t . TrackSentValidationTakingTooLongMessage ( Package . PackageRegistration . Id , Package . NormalizedVersion , ValidationSet . ValidationTrackingId ) , Times . Never ) ;
167+ MessageServiceMock
168+ . Verify ( m => m . SendValidationTakingTooLongMessage ( Package ) , Times . Never ) ;
169+ ValidationEnqueuerMock
170+ . Verify ( ve => ve . StartValidationAsync ( It . IsAny < PackageValidationMessageData > ( ) , It . IsAny < DateTimeOffset > ( ) ) , Times . Once ) ;
171+ PackageFileServiceMock
172+ . Verify ( x => x . DeletePackageForValidationSetAsync ( It . IsAny < PackageValidationSet > ( ) ) , Times . Never ) ;
173+ }
154174
155175 TelemetryServiceMock . ResetCalls ( ) ;
156176 MessageServiceMock . ResetCalls ( ) ;
0 commit comments