@@ -166,6 +166,8 @@ describe("generateRepositoryDetails", () => {
166166 activeRepositories : 2 ,
167167 detailRequests : 2 ,
168168 detailFailures : 0 ,
169+ missingRepoSkips : 0 ,
170+ missingRepoSkipNames : [ ] ,
169171 generatedRecords : 2
170172 } ) ;
171173
@@ -329,6 +331,34 @@ describe("generateRepositoryDetails", () => {
329331 expect ( result . metrics . patPolicyFailures ) . toBe ( 0 ) ;
330332 } ) ;
331333
334+ it ( "routes missing GraphQL aliases in batch path to missingRepoSkips" , async ( ) => {
335+ const configPath = path . join ( outputRoot , "criteria-batch-missing-alias.json" ) ;
336+ const outputPath = path . join ( outputRoot , "details-batch-missing-alias.json" ) ;
337+ await writeFile ( configPath , JSON . stringify ( [ { topic : "powerplatform" , searchLimit : 3 } ] ) , "utf8" ) ;
338+
339+ const missingAliasError = Object . assign ( new Error ( "GraphQL response missing alias 'repo1' for owner/missing" ) , {
340+ isMissingAlias : true as const
341+ } ) ;
342+
343+ const result = await generateRepositoryDetails ( {
344+ configPath,
345+ outputPath,
346+ schemaPath,
347+ provider : new BatchFakeProvider (
348+ { powerplatform : [ searchRepository ( "owner/ok" ) , searchRepository ( "owner/missing" ) ] } ,
349+ { "owner/ok" : repositoryDetails ( 20 ) , "owner/missing" : missingAliasError }
350+ ) ,
351+ now : new Date ( "2026-01-01T00:00:00Z" ) ,
352+ workflowRunId : "test-run"
353+ } ) ;
354+
355+ expect ( result . records . map ( ( r ) => r . fullName ) ) . toEqual ( [ "owner/ok" ] ) ;
356+ expect ( result . metrics . missingRepoSkips ) . toBe ( 1 ) ;
357+ expect ( result . metrics . missingRepoSkipNames ) . toEqual ( [ "owner/missing" ] ) ;
358+ expect ( result . metrics . detailFailures ) . toBe ( 0 ) ;
359+ expect ( result . metrics . warnings . join ( "\n" ) ) . toContain ( "owner/missing" ) ;
360+ } ) ;
361+
332362 it ( "routes PAT-policy errors in batch path to patPolicyFailures" , async ( ) => {
333363 const configPath = path . join ( outputRoot , "criteria-batch-pat.json" ) ;
334364 const outputPath = path . join ( outputRoot , "details-batch-pat.json" ) ;
0 commit comments