@@ -777,6 +777,45 @@ describe("TriggerChatTransport", function () {
777777 expect ( stream ) . toBeNull ( ) ;
778778 } ) ;
779779
780+ it ( "returns null on repeated inactive cleanup failures without onError callback" , async function ( ) {
781+ const runStore = new AlwaysFailCleanupDeleteRunStore ( ) ;
782+ runStore . set ( {
783+ chatId : "chat-inactive-delete-always-no-onerror" ,
784+ runId : "run_inactive_delete_always_no_onerror" ,
785+ publicAccessToken : "pk_inactive_delete_always_no_onerror" ,
786+ streamKey : "chat-stream" ,
787+ lastEventId : "10-0" ,
788+ isActive : false ,
789+ } ) ;
790+
791+ const transport = new TriggerChatTransport ( {
792+ task : "chat-task" ,
793+ stream : "chat-stream" ,
794+ accessToken : "pk_trigger" ,
795+ runStore,
796+ } ) ;
797+
798+ let fetchCalls = 0 ;
799+ ( transport as any ) . fetchRunStream = async function fetchRunStream ( ) {
800+ fetchCalls += 1 ;
801+ throw new Error ( "unexpected reconnect fetch" ) ;
802+ } ;
803+
804+ const firstReconnect = await transport . reconnectToStream ( {
805+ chatId : "chat-inactive-delete-always-no-onerror" ,
806+ } ) ;
807+ const secondReconnect = await transport . reconnectToStream ( {
808+ chatId : "chat-inactive-delete-always-no-onerror" ,
809+ } ) ;
810+
811+ expect ( firstReconnect ) . toBeNull ( ) ;
812+ expect ( secondReconnect ) . toBeNull ( ) ;
813+ expect ( fetchCalls ) . toBe ( 0 ) ;
814+ expect ( runStore . get ( "chat-inactive-delete-always-no-onerror" ) ) . toMatchObject ( {
815+ isActive : false ,
816+ } ) ;
817+ } ) ;
818+
780819 it ( "returns null when inactive reconnect string cleanup delete fails without onError callback" , async function ( ) {
781820 const runStore = new FailingCleanupDeleteValueRunStore ( "cleanup delete string failure" ) ;
782821 runStore . set ( {
0 commit comments