@@ -348,6 +348,53 @@ describe("SessionService", () => {
348348 // Access private map to verify it's cleared
349349 expect ( ( ) => service . reset ( ) ) . not . toThrow ( ) ;
350350 } ) ;
351+
352+ it ( "unsubscribes from all active subscriptions" , async ( ) => {
353+ const service = getSessionService ( ) ;
354+
355+ // Setup: create mocks for subscriptions
356+ const eventUnsubscribe = vi . fn ( ) ;
357+ const permissionUnsubscribe = vi . fn ( ) ;
358+ mockTrpcAgent . onSessionEvent . subscribe . mockReturnValue ( {
359+ unsubscribe : eventUnsubscribe ,
360+ } ) ;
361+ mockTrpcAgent . onPermissionRequest . subscribe . mockReturnValue ( {
362+ unsubscribe : permissionUnsubscribe ,
363+ } ) ;
364+
365+ // Setup: create a task run to trigger subscription creation
366+ const createTaskRunMock = vi . fn ( ) . mockResolvedValue ( { id : "run-456" } ) ;
367+ mockAuthStore . useAuthStore . getState . mockReturnValue ( {
368+ oauthAccessToken : "test-token" ,
369+ cloudRegion : "us" ,
370+ projectId : 123 ,
371+ client : {
372+ createTaskRun : createTaskRunMock ,
373+ appendTaskRunLog : vi . fn ( ) ,
374+ } ,
375+ } ) ;
376+ mockTrpcAgent . start . mutate . mockResolvedValue ( {
377+ channel : "test-channel" ,
378+ configOptions : [ ] ,
379+ } ) ;
380+
381+ // Connect to task (this creates subscriptions)
382+ await service . connectToTask ( {
383+ task : createMockTask ( { id : "task-456" } ) ,
384+ repoPath : "/repo" ,
385+ } ) ;
386+
387+ // Verify subscriptions were created
388+ expect ( mockTrpcAgent . onSessionEvent . subscribe ) . toHaveBeenCalled ( ) ;
389+ expect ( mockTrpcAgent . onPermissionRequest . subscribe ) . toHaveBeenCalled ( ) ;
390+
391+ // Reset the service
392+ service . reset ( ) ;
393+
394+ // Verify unsubscribe was called for both subscriptions
395+ expect ( eventUnsubscribe ) . toHaveBeenCalled ( ) ;
396+ expect ( permissionUnsubscribe ) . toHaveBeenCalled ( ) ;
397+ } ) ;
351398 } ) ;
352399
353400 describe ( "sendPrompt" , ( ) => {
0 commit comments