@@ -957,10 +957,10 @@ describe("PR review-state workflow", () => {
957957 expect ( result . addLabels ) . toHaveBeenCalledWith ( expect . objectContaining ( { labels : [ "has-conflicts" ] } ) )
958958 } )
959959
960- it ( "does not tag a PR awaiting maintainer while mergeability is unknown" , async ( ) => {
960+ it ( "preserves the current state while mergeability is unknown" , async ( ) => {
961961 const result = await runWorkflow ( {
962962 eventName : "push" ,
963- labels : [ "awaiting-maintainer" ] ,
963+ labels : [ "awaiting-maintainer" , "coderabbit-review-active" ] ,
964964 mergeabilitySequence : [
965965 { mergeable : null , mergeableState : "unknown" } ,
966966 { mergeable : null , mergeableState : "unknown" } ,
@@ -975,9 +975,35 @@ describe("PR review-state workflow", () => {
975975 ] ,
976976 } )
977977
978- expect ( result . removeLabel ) . toHaveBeenCalledWith ( expect . objectContaining ( { name : "awaiting-maintainer" } ) )
978+ expect ( result . removeLabel ) . not . toHaveBeenCalledWith ( expect . objectContaining ( { name : "awaiting-maintainer" } ) )
979+ expect ( result . removeLabel ) . toHaveBeenCalledWith ( expect . objectContaining ( { name : "coderabbit-review-active" } ) )
979980 expect ( result . addLabels ) . not . toHaveBeenCalledWith ( expect . objectContaining ( { labels : [ "awaiting-maintainer" ] } ) )
980981 expect ( latestGateStatus ( result ) ?. description ) . toContain ( "calculating mergeability" )
982+ expect ( latestGuide ( result ) ) . toContain ( "calculating mergeability" )
983+ } )
984+
985+ it ( "preserves the current state when pending mergeability metadata cannot be updated" , async ( ) => {
986+ const result = await runWorkflow ( {
987+ eventName : "push" ,
988+ labels : [ "awaiting-maintainer" , "coderabbit-review-active" ] ,
989+ mergeabilitySequence : [
990+ { mergeable : null , mergeableState : "unknown" } ,
991+ { mergeable : null , mergeableState : "unknown" } ,
992+ ] ,
993+ removeLabelStatus : 500 ,
994+ reviews : [
995+ {
996+ login : "coderabbitai[bot]" ,
997+ type : "Bot" ,
998+ state : "APPROVED" ,
999+ submittedAt : REVIEWED_AT ,
1000+ } ,
1001+ ] ,
1002+ } )
1003+
1004+ expect ( result . removeLabel ) . toHaveBeenCalledWith ( expect . objectContaining ( { name : "coderabbit-review-active" } ) )
1005+ expect ( result . removeLabel ) . not . toHaveBeenCalledWith ( expect . objectContaining ( { name : "awaiting-maintainer" } ) )
1006+ expect ( result . setFailed ) . toHaveBeenCalledWith ( expect . stringContaining ( "Remove label failed" ) )
9811007 } )
9821008
9831009 it ( "routes CodeRabbit change requests back to the author" , async ( ) => {
0 commit comments