@@ -226,6 +226,64 @@ describe('github', () => {
226226 ) ;
227227 expect ( createRelease . mock . calls [ 0 ] [ 0 ] ) . not . toHaveProperty ( 'previous_tag_name' ) ;
228228 } ) ;
229+
230+ it ( 'passes discussion_category_name when finalizing a release' , async ( ) => {
231+ const updateRelease = vi . fn ( async ( ) => ( {
232+ data : {
233+ id : 1 ,
234+ upload_url : 'test' ,
235+ html_url : 'test' ,
236+ tag_name : 'v1.0.0' ,
237+ name : 'v1.0.0' ,
238+ body : 'test' ,
239+ target_commitish : 'main' ,
240+ draft : false ,
241+ prerelease : false ,
242+ assets : [ ] ,
243+ } ,
244+ } ) ) ;
245+
246+ const releaser = new GitHubReleaser ( {
247+ rest : {
248+ repos : {
249+ generateReleaseNotes : vi . fn ( ) ,
250+ createRelease : vi . fn ( ) ,
251+ updateRelease,
252+ getReleaseByTag : vi . fn ( ) ,
253+ listReleaseAssets : vi . fn ( ) ,
254+ deleteReleaseAsset : vi . fn ( ) ,
255+ deleteRelease : vi . fn ( ) ,
256+ updateReleaseAsset : vi . fn ( ) ,
257+ listReleases : {
258+ endpoint : {
259+ merge : vi . fn ( ) ,
260+ } ,
261+ } ,
262+ } ,
263+ } ,
264+ paginate : {
265+ iterator : vi . fn ( ) ,
266+ } ,
267+ request : vi . fn ( ) ,
268+ } as any ) ;
269+
270+ await releaser . finalizeRelease ( {
271+ owner : 'owner' ,
272+ repo : 'repo' ,
273+ release_id : 1 ,
274+ make_latest : 'legacy' ,
275+ discussion_category_name : 'Announcements' ,
276+ } ) ;
277+
278+ expect ( updateRelease ) . toHaveBeenCalledWith ( {
279+ owner : 'owner' ,
280+ repo : 'repo' ,
281+ release_id : 1 ,
282+ draft : false ,
283+ make_latest : 'legacy' ,
284+ discussion_category_name : 'Announcements' ,
285+ } ) ;
286+ } ) ;
229287 } ) ;
230288
231289 describe ( 'finalizeRelease input_draft behavior' , ( ) => {
@@ -309,10 +367,49 @@ describe('github', () => {
309367 owner : 'owner' ,
310368 repo : 'repo' ,
311369 release_id : release . id ,
370+ make_latest : undefined ,
371+ discussion_category_name : undefined ,
312372 } ) ;
313373 }
314374 } ) ;
315375
376+ it ( 'passes discussion_category_name through when finalizing a draft release' , async ( ) => {
377+ const finalizeReleaseSpy = vi . fn ( async ( ) => ( { data : finalizedRelease } ) ) ;
378+
379+ const releaser : Releaser = {
380+ getReleaseByTag : ( ) => Promise . reject ( 'Not implemented' ) ,
381+ createRelease : ( ) => Promise . reject ( 'Not implemented' ) ,
382+ updateRelease : ( ) => Promise . reject ( 'Not implemented' ) ,
383+ finalizeRelease : finalizeReleaseSpy ,
384+ allReleases : async function * ( ) {
385+ throw new Error ( 'Not implemented' ) ;
386+ } ,
387+ listReleaseAssets : ( ) => Promise . reject ( 'Not implemented' ) ,
388+ deleteReleaseAsset : ( ) => Promise . reject ( 'Not implemented' ) ,
389+ deleteRelease : ( ) => Promise . reject ( 'Not implemented' ) ,
390+ updateReleaseAsset : ( ) => Promise . reject ( 'Not implemented' ) ,
391+ uploadReleaseAsset : ( ) => Promise . reject ( 'Not implemented' ) ,
392+ } ;
393+
394+ await finalizeRelease (
395+ {
396+ ...config ,
397+ input_draft : false ,
398+ input_discussion_category_name : 'Announcements' ,
399+ } ,
400+ releaser ,
401+ draftRelease ,
402+ ) ;
403+
404+ expect ( finalizeReleaseSpy ) . toHaveBeenCalledWith ( {
405+ owner : 'owner' ,
406+ repo : 'repo' ,
407+ release_id : draftRelease . id ,
408+ make_latest : undefined ,
409+ discussion_category_name : 'Announcements' ,
410+ } ) ;
411+ } ) ;
412+
316413 it ( 'deletes a newly created draft when tag creation is blocked by repository rules' , async ( ) => {
317414 const finalizeReleaseSpy = vi . fn ( async ( ) => {
318415 throw {
0 commit comments