@@ -961,6 +961,77 @@ it.effect("loads Forgejo pull request references from files and commits views",
961961 ) ,
962962) ;
963963
964+ it . effect ( "finds a merged Forgejo pull request whose head branch was deleted" , ( ) =>
965+ Effect . gen ( function * ( ) {
966+ const provider = yield * ForgejoSourceControlProvider . make ;
967+ const found = yield * provider . listChangeRequests ( {
968+ cwd : "/repo" ,
969+ headSelector : "feature" ,
970+ state : "merged" ,
971+ } ) ;
972+ assert . deepStrictEqual (
973+ found . map ( ( pr ) => [ pr . number , pr . headRefName ] ) ,
974+ [ [ 7 , "feature" ] ] ,
975+ ) ;
976+ } ) . pipe (
977+ Effect . provide (
978+ Layer . mergeAll (
979+ Layer . succeed ( FileSystem . FileSystem , FileSystem . makeNoop ( { } ) ) ,
980+ TestSourceControlHost . layer ( { process : { } } ) ,
981+ Layer . mock ( ForgejoCli . ForgejoCli ) ( {
982+ resolveRepository : ( ) =>
983+ Effect . succeed ( {
984+ login : "work" ,
985+ repository : "maria/project" ,
986+ baseUrl : "https://forgejo.test" ,
987+ } ) ,
988+ api : ( input ) => {
989+ const repo = { full_name : "maria/project" , owner : { login : "maria" } } ;
990+ const page = new URLSearchParams ( input . path . split ( "?" ) [ 1 ] ) . get ( "page" ) ;
991+ return encodeJsonEffect (
992+ page === "1"
993+ ? [
994+ {
995+ number : 7 ,
996+ title : "Merged feature" ,
997+ html_url : "https://forgejo.test/maria/project/pulls/7" ,
998+ state : "closed" ,
999+ merged : true ,
1000+ merged_at : "2026-10-12T00:00:00Z" ,
1001+ base : { ref : "main" , label : "main" , sha : "base" , repo } ,
1002+ head : { ref : "refs/pull/7/head" , label : "feature" , sha : "head" , repo } ,
1003+ } ,
1004+ {
1005+ number : 8 ,
1006+ title : "Merged from a deleted fork" ,
1007+ html_url : "https://forgejo.test/maria/project/pulls/8" ,
1008+ state : "closed" ,
1009+ merged : true ,
1010+ merged_at : "2026-10-11T00:00:00Z" ,
1011+ base : { ref : "main" , label : "main" , sha : "base" , repo } ,
1012+ head : { ref : "refs/pull/8/head" , label : "feature" , sha : "fork" , repo : null } ,
1013+ } ,
1014+ {
1015+ number : 9 ,
1016+ title : "AGit topic" ,
1017+ html_url : "https://forgejo.test/maria/project/pulls/9" ,
1018+ state : "closed" ,
1019+ merged : true ,
1020+ merged_at : "2026-10-10T00:00:00Z" ,
1021+ flow : 1 ,
1022+ base : { ref : "main" , label : "main" , sha : "base" , repo } ,
1023+ head : { ref : "refs/pull/9/head" , label : "feature" , sha : "topic" , repo } ,
1024+ } ,
1025+ ]
1026+ : [ ] ,
1027+ ) . pipe ( Effect . orDie , Effect . map ( processOutput ) ) ;
1028+ } ,
1029+ } ) ,
1030+ ) ,
1031+ ) ,
1032+ ) ,
1033+ ) ;
1034+
9641035it . effect (
9651036 "loads Forgejo reactions on comments, reviews and inline threads and resolves review mutations" ,
9661037 ( ) => {
0 commit comments