@@ -52,14 +52,20 @@ const mockTaskHistory: HistoryItem[] = [
5252]
5353
5454describe ( "useTaskSearch" , ( ) => {
55+ let showAllWorkspacesTasks = false
56+ const setShowAllWorkspacesTasks = vi . fn ( ) . mockImplementation ( ( value ) => {
57+ showAllWorkspacesTasks = value
58+ } )
59+
5560 beforeEach ( ( ) => {
5661 vi . clearAllMocks ( )
57- mockUseExtensionState . mockReturnValue ( {
62+ showAllWorkspacesTasks = false
63+ mockUseExtensionState . mockImplementation ( ( ) => ( {
5864 taskHistory : mockTaskHistory ,
5965 cwd : "/workspace/project1" ,
60- showAllWorkspacesTasks : false ,
61- setShowAllWorkspacesTasks : vi . fn ( ) ,
62- } as any )
66+ showAllWorkspacesTasks,
67+ setShowAllWorkspacesTasks,
68+ } ) )
6369 } )
6470
6571 it ( "returns all tasks by default" , ( ) => {
@@ -78,22 +84,24 @@ describe("useTaskSearch", () => {
7884 } )
7985
8086 it ( "shows all workspaces when showAllWorkspacesTasks is true" , ( ) => {
81- const { result } = renderHook ( ( ) => useTaskSearch ( ) )
87+ const { result, rerender } = renderHook ( ( ) => useTaskSearch ( ) )
8288
8389 act ( ( ) => {
8490 result . current . setShowAllWorkspacesTasks ( true )
8591 } )
92+ rerender ( )
8693
8794 expect ( result . current . tasks ) . toHaveLength ( 3 )
8895 expect ( result . current . showAllWorkspacesTasks ) . toBe ( true )
8996 } )
9097
9198 it ( "sorts by newest by default" , ( ) => {
92- const { result } = renderHook ( ( ) => useTaskSearch ( ) )
99+ const { result, rerender } = renderHook ( ( ) => useTaskSearch ( ) )
93100
94101 act ( ( ) => {
95102 result . current . setShowAllWorkspacesTasks ( true )
96103 } )
104+ rerender ( )
97105
98106 expect ( result . current . sortOption ) . toBe ( "newest" )
99107 expect ( result . current . tasks [ 0 ] . id ) . toBe ( "task-2" ) // Feb 17
@@ -102,38 +110,41 @@ describe("useTaskSearch", () => {
102110 } )
103111
104112 it ( "sorts by oldest" , ( ) => {
105- const { result } = renderHook ( ( ) => useTaskSearch ( ) )
113+ const { result, rerender } = renderHook ( ( ) => useTaskSearch ( ) )
106114
107115 act ( ( ) => {
108116 result . current . setShowAllWorkspacesTasks ( true )
109117 result . current . setSortOption ( "oldest" )
110118 } )
119+ rerender ( )
111120
112121 expect ( result . current . tasks [ 0 ] . id ) . toBe ( "task-3" ) // Feb 15
113122 expect ( result . current . tasks [ 1 ] . id ) . toBe ( "task-1" ) // Feb 16
114123 expect ( result . current . tasks [ 2 ] . id ) . toBe ( "task-2" ) // Feb 17
115124 } )
116125
117126 it ( "sorts by most expensive" , ( ) => {
118- const { result } = renderHook ( ( ) => useTaskSearch ( ) )
127+ const { result, rerender } = renderHook ( ( ) => useTaskSearch ( ) )
119128
120129 act ( ( ) => {
121130 result . current . setShowAllWorkspacesTasks ( true )
122131 result . current . setSortOption ( "mostExpensive" )
123132 } )
133+ rerender ( )
124134
125135 expect ( result . current . tasks [ 0 ] . id ) . toBe ( "task-3" ) // $0.05
126136 expect ( result . current . tasks [ 1 ] . id ) . toBe ( "task-2" ) // $0.02
127137 expect ( result . current . tasks [ 2 ] . id ) . toBe ( "task-1" ) // $0.01
128138 } )
129139
130140 it ( "sorts by most tokens" , ( ) => {
131- const { result } = renderHook ( ( ) => useTaskSearch ( ) )
141+ const { result, rerender } = renderHook ( ( ) => useTaskSearch ( ) )
132142
133143 act ( ( ) => {
134144 result . current . setShowAllWorkspacesTasks ( true )
135145 result . current . setSortOption ( "mostTokens" )
136146 } )
147+ rerender ( )
137148
138149 // task-2: 200 + 100 + 25 + 10 = 335 tokens
139150 // task-3: 150 + 75 = 225 tokens
@@ -246,16 +257,19 @@ describe("useTaskSearch", () => {
246257 } ,
247258 ] as HistoryItem [ ]
248259
249- mockUseExtensionState . mockReturnValue ( {
260+ mockUseExtensionState . mockImplementation ( ( ) => ( {
250261 taskHistory : incompleteTaskHistory ,
251262 cwd : "/workspace/project1" ,
252- } as any )
263+ showAllWorkspacesTasks,
264+ setShowAllWorkspacesTasks,
265+ } ) )
253266
254- const { result } = renderHook ( ( ) => useTaskSearch ( ) )
267+ const { result, rerender } = renderHook ( ( ) => useTaskSearch ( ) )
255268
256269 act ( ( ) => {
257270 result . current . setShowAllWorkspacesTasks ( true )
258271 } )
272+ rerender ( )
259273
260274 // Should only include tasks with both ts and task content
261275 expect ( result . current . tasks ) . toHaveLength ( 3 )
0 commit comments