@@ -227,6 +227,58 @@ public async Task DoesNotTakeDownAvailablePackages()
227227 . Verify ( ps => ps . UpdatePackageStatusAsync ( Package , PackageStatus . FailedValidation , It . IsAny < bool > ( ) ) , Times . Never ( ) ) ;
228228 }
229229
230+ [ Theory ]
231+ [ InlineData ( 2 , 1 , 0 , ValidationStatus . Incomplete , PackageStatus . Validating ) ]
232+ [ InlineData ( 2 , 1 , 1 , ValidationStatus . Incomplete , PackageStatus . Available ) ]
233+ [ InlineData ( 3 , 2 , 0 , ValidationStatus . Incomplete , PackageStatus . Validating ) ]
234+ [ InlineData ( 3 , 2 , 1 , ValidationStatus . Incomplete , PackageStatus . Validating ) ]
235+ [ InlineData ( 3 , 2 , 2 , ValidationStatus . Incomplete , PackageStatus . Available ) ]
236+ [ InlineData ( 2 , 1 , 0 , ValidationStatus . Failed , PackageStatus . FailedValidation ) ]
237+ [ InlineData ( 3 , 2 , 0 , ValidationStatus . Failed , PackageStatus . FailedValidation ) ]
238+ [ InlineData ( 3 , 2 , 1 , ValidationStatus . Failed , PackageStatus . FailedValidation ) ]
239+ public async Task PrefersDbOverConfigurationForDeterminingSuccess (
240+ int numConfiguredValidators ,
241+ int numDbValidators ,
242+ int numSucceededValidators ,
243+ ValidationStatus notSucceededStatus ,
244+ PackageStatus expectedStatus )
245+ {
246+ for ( int cfgValidatorIndex = 0 ; cfgValidatorIndex < numConfiguredValidators ; ++ cfgValidatorIndex )
247+ {
248+ Configuration . Validations . Add ( new ValidationConfigurationItem
249+ {
250+ Name = "validation" + cfgValidatorIndex ,
251+ FailAfter = TimeSpan . FromDays ( 1 ) ,
252+ RequiredValidations = new List < string > { }
253+ } ) ;
254+ }
255+
256+ for ( int dbValidatorIndex = 0 ; dbValidatorIndex < numDbValidators ; ++ dbValidatorIndex )
257+ {
258+ ValidationSet . PackageValidations . Add ( new PackageValidation
259+ {
260+ Type = "validation" + dbValidatorIndex ,
261+ ValidationStatus = dbValidatorIndex < numSucceededValidators ? ValidationStatus . Succeeded : notSucceededStatus
262+ } ) ;
263+ }
264+
265+ var processor = CreateProcessor ( ) ;
266+ await processor . ProcessValidationOutcomeAsync ( ValidationSet , Package ) ;
267+
268+ if ( expectedStatus != PackageStatus . Validating )
269+ {
270+ PackageServiceMock
271+ . Verify ( ps => ps . UpdatePackageStatusAsync ( Package , expectedStatus , true ) , Times . Once ( ) ) ;
272+ PackageServiceMock
273+ . Verify ( ps => ps . UpdatePackageStatusAsync ( It . IsAny < Package > ( ) , It . IsAny < PackageStatus > ( ) , It . IsAny < bool > ( ) ) , Times . Once ( ) ) ;
274+ }
275+ else
276+ {
277+ PackageServiceMock
278+ . Verify ( ps => ps . UpdatePackageStatusAsync ( It . IsAny < Package > ( ) , It . IsAny < PackageStatus > ( ) , It . IsAny < bool > ( ) ) , Times . Never ( ) ) ;
279+ }
280+ }
281+
230282 public ValidationOutcomeProcessorFacts ( )
231283 {
232284 PackageServiceMock = new Mock < ICorePackageService > ( ) ;
0 commit comments