@@ -416,8 +416,9 @@ describe("MembershipManager", () => {
416416 await manager . leave ( ) ;
417417 expect ( client . _unstable_sendScheduledDelayedEvent ) . toHaveBeenLastCalledWith ( "id" ) ;
418418 expect ( client . sendStateEvent ) . toHaveBeenCalled ( ) ;
419+ expect ( manager . delayId ) . toBe ( undefined ) ;
419420 } ) ;
420- it ( "send leave event when leave is called and resolving delayed leave fails" , async ( ) => {
421+ it ( "send leave event when leave is called and resolving delayed leave fails unknown error " , async ( ) => {
421422 const manager = new MembershipManager ( { } , room , client , callSession ) ;
422423 manager . join ( [ focus ] ) ;
423424 await vi . advanceTimersByTimeAsync ( 1 ) ;
@@ -431,6 +432,27 @@ describe("MembershipManager", () => {
431432 { } ,
432433 "_@alice:example.org_AAAAAAA_m.call" ,
433434 ) ;
435+ // If there is a unknown error, we do not reset the delayId
436+ // The delayed event might still be around and we track it.
437+ expect ( manager . delayId ) . not . toBe ( undefined ) ;
438+ } ) ;
439+ it ( "send leave event when leave is called and resolving delayed leave fails not found error" , async ( ) => {
440+ const manager = new MembershipManager ( { } , room , client , callSession ) ;
441+ manager . join ( [ focus ] ) ;
442+ await vi . advanceTimersByTimeAsync ( 1 ) ;
443+ ( client . _unstable_sendScheduledDelayedEvent as Mock < any > ) . mockRejectedValue (
444+ new MatrixError ( { errcode : "M_NOT_FOUND" } , 404 ) ,
445+ ) ;
446+ await manager . leave ( ) ;
447+
448+ // We send a normal leave event since we failed using sendScheduledDelayedEvent.
449+ expect ( client . sendStateEvent ) . toHaveBeenLastCalledWith (
450+ room . roomId ,
451+ "org.matrix.msc3401.call.member" ,
452+ { } ,
453+ "_@alice:example.org_AAAAAAA_m.call" ,
454+ ) ;
455+ expect ( manager . delayId ) . toBe ( undefined ) ;
434456 } ) ;
435457 it ( "does nothing if not joined" , async ( ) => {
436458 const manager = new MembershipManager ( { } , room , client , callSession ) ;
0 commit comments