11import { describe , expect , it } from 'vitest'
22import {
3- desktopToolTurn ,
3+ desktopToolSession ,
44 stopAllDesktopTools ,
55 stopDesktopTools ,
66} from '@/app/workspace/[workspaceId]/home/hooks/desktop-tool-lifetimes'
77
88describe ( 'desktop tool leases' , ( ) => {
99 it ( 'cancels every running tool of the stopped turn and no other turn' , ( ) => {
10- const first = desktopToolTurn ( 'turn-a' ) . lease ( )
11- const second = desktopToolTurn ( 'turn-a' ) . lease ( )
12- const other = desktopToolTurn ( 'turn-b' ) . lease ( )
10+ const first = desktopToolSession ( ) . turn ( 'turn-a' ) . lease ( )
11+ const second = desktopToolSession ( ) . turn ( 'turn-a' ) . lease ( )
12+ const other = desktopToolSession ( ) . turn ( 'turn-b' ) . lease ( )
1313
1414 stopDesktopTools ( 'turn-a' , 'user_stop' )
1515
@@ -21,9 +21,10 @@ describe('desktop tool leases', () => {
2121 } )
2222
2323 it ( 'keeps a turn reachable by Stop while any of its tools still runs' , ( ) => {
24- const settled = desktopToolTurn ( 'turn-c' ) . lease ( )
25- const running = desktopToolTurn ( 'turn-c' ) . lease ( )
26- for ( let turn = 0 ; turn < 500 ; turn ++ ) desktopToolTurn ( `busy-${ turn } ` ) . lease ( ) . release ( )
24+ const settled = desktopToolSession ( ) . turn ( 'turn-c' ) . lease ( )
25+ const running = desktopToolSession ( ) . turn ( 'turn-c' ) . lease ( )
26+ for ( let turn = 0 ; turn < 500 ; turn ++ )
27+ desktopToolSession ( ) . turn ( `busy-${ turn } ` ) . lease ( ) . release ( )
2728
2829 settled . release ( )
2930 settled . release ( )
@@ -33,11 +34,11 @@ describe('desktop tool leases', () => {
3334 } )
3435
3536 it ( 'gives a turn whose tools all settled a fresh lifetime for its next tool' , ( ) => {
36- const settled = desktopToolTurn ( 'turn-d' ) . lease ( )
37+ const settled = desktopToolSession ( ) . turn ( 'turn-d' ) . lease ( )
3738 settled . release ( )
3839 stopDesktopTools ( 'turn-d' , 'user_stop' )
3940
40- const next = desktopToolTurn ( 'turn-d' ) . lease ( )
41+ const next = desktopToolSession ( ) . turn ( 'turn-d' ) . lease ( )
4142
4243 expect ( settled . signal . aborted ) . toBe ( false )
4344 expect ( next . signal ) . not . toBe ( settled . signal )
@@ -46,9 +47,9 @@ describe('desktop tool leases', () => {
4647 } )
4748
4849 it ( 'does not let a tool that settles after Stop release a newer lease on the turn' , ( ) => {
49- const stopped = desktopToolTurn ( 'turn-e' ) . lease ( )
50+ const stopped = desktopToolSession ( ) . turn ( 'turn-e' ) . lease ( )
5051 stopDesktopTools ( 'turn-e' , 'user_stop' )
51- const next = desktopToolTurn ( 'turn-e' ) . lease ( )
52+ const next = desktopToolSession ( ) . turn ( 'turn-e' ) . lease ( )
5253
5354 stopped . release ( )
5455 stopDesktopTools ( 'turn-e' , 'user_stop' )
@@ -57,8 +58,8 @@ describe('desktop tool leases', () => {
5758 } )
5859
5960 it ( 'cancels the running tools of every turn when the session ends' , ( ) => {
60- const first = desktopToolTurn ( 'turn-f' ) . lease ( )
61- const second = desktopToolTurn ( 'turn-g' ) . lease ( )
61+ const first = desktopToolSession ( ) . turn ( 'turn-f' ) . lease ( )
62+ const second = desktopToolSession ( ) . turn ( 'turn-g' ) . lease ( )
6263
6364 stopAllDesktopTools ( 'signed_out' )
6465
@@ -69,21 +70,25 @@ describe('desktop tool leases', () => {
6970 second . release ( )
7071 } )
7172
72- it ( 'cancels a tool a turn of the ended session starts after sign-out' , ( ) => {
73- const turn = desktopToolTurn ( 'turn-h' )
73+ it ( 'cancels tools of a surface mounted before sign-out, even on a stream it reads later' , ( ) => {
74+ const surface = desktopToolSession ( )
75+ const running = surface . turn ( 'turn-h' )
7476 stopAllDesktopTools ( 'signed_out' )
7577
76- const late = turn . lease ( )
78+ const late = running . lease ( )
79+ const reconnected = surface . turn ( 'turn-j' ) . lease ( )
7780
7881 expect ( late . signal . aborted ) . toBe ( true )
7982 expect ( late . signal . reason ) . toBe ( 'signed_out' )
83+ expect ( reconnected . signal . aborted ) . toBe ( true )
8084 late . release ( )
85+ reconnected . release ( )
8186 } )
8287
83- it ( 'runs the tools of a turn started after the session ended' , ( ) => {
88+ it ( 'runs the tools of a surface mounted after the session ended' , ( ) => {
8489 stopAllDesktopTools ( 'signed_out' )
8590
86- const next = desktopToolTurn ( 'turn-i' ) . lease ( )
91+ const next = desktopToolSession ( ) . turn ( 'turn-i' ) . lease ( )
8792
8893 expect ( next . signal . aborted ) . toBe ( false )
8994 next . release ( )
0 commit comments