1- import { beforeEach , describe , expect , it , vi } from "vitest" ;
1+ import { beforeEach , describe , expect , it , vi , type Mock } from "vitest" ;
22import * as vscode from "vscode" ;
33
44import { TasksPanel } from "@/webviews/tasks/tasksPanel" ;
@@ -44,13 +44,13 @@ type TasksPanelClient = Pick<
4444 | "getHost"
4545> ;
4646
47- type MockClient = { [ K in keyof TasksPanelClient ] : ReturnType < typeof vi . fn > } ;
47+ type MockClient = { [ K in keyof TasksPanelClient ] : Mock < TasksPanelClient [ K ] > } ;
4848
4949function createClient ( baseUrl = "https://coder.example.com" ) : MockClient {
5050 return {
5151 getTasks : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
5252 getTask : vi . fn ( ) ,
53- getTaskLogs : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
53+ getTaskLogs : vi . fn ( ) . mockResolvedValue ( { logs : [ ] } ) ,
5454 createTask : vi . fn ( ) ,
5555 deleteTask : vi . fn ( ) . mockResolvedValue ( undefined ) ,
5656 getTemplates : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
@@ -59,7 +59,7 @@ function createClient(baseUrl = "https://coder.example.com"): MockClient {
5959 stopWorkspace : vi . fn ( ) . mockResolvedValue ( undefined ) ,
6060 sendTaskInput : vi . fn ( ) . mockResolvedValue ( undefined ) ,
6161 getHost : vi . fn ( ) . mockReturnValue ( baseUrl ) ,
62- } ;
62+ } as MockClient ;
6363}
6464
6565interface Harness {
@@ -268,9 +268,9 @@ describe("TasksPanel", () => {
268268 it ( "returns task with logs" , async ( ) => {
269269 const h = createHarness ( ) ;
270270 h . client . getTask . mockResolvedValue ( task ( ) ) ;
271- h . client . getTaskLogs . mockResolvedValue ( [
272- logEntry ( { content : "Starting" } ) ,
273- ] ) ;
271+ h . client . getTaskLogs . mockResolvedValue ( {
272+ logs : [ logEntry ( { content : "Starting" } ) ] ,
273+ } ) ;
274274
275275 const res = await h . request ( TasksApi . getTaskDetails , {
276276 taskId : "task-1" ,
@@ -319,7 +319,7 @@ describe("TasksPanel", () => {
319319 h . client . getTask . mockResolvedValue (
320320 task ( { current_state : { timestamp : "" , state, message : "" , uri : "" } } ) ,
321321 ) ;
322- h . client . getTaskLogs . mockResolvedValue ( [ logEntry ( ) ] ) ;
322+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ logEntry ( ) ] } ) ;
323323
324324 await h . request ( TasksApi . getTaskDetails , { taskId : "task-1" } ) ;
325325 await h . request ( TasksApi . getTaskDetails , { taskId : "task-1" } ) ;
@@ -574,7 +574,7 @@ describe("TasksPanel", () => {
574574 describe ( "downloadLogs" , ( ) => {
575575 it ( "saves logs to file" , async ( ) => {
576576 const h = createHarness ( ) ;
577- h . client . getTaskLogs . mockResolvedValue ( [ logEntry ( ) ] ) ;
577+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ logEntry ( ) ] } ) ;
578578 const saveUri = vscode . Uri . file ( "/downloads/logs.txt" ) ;
579579 vi . mocked ( vscode . window . showSaveDialog ) . mockResolvedValue ( saveUri ) ;
580580 h . ui . setResponse ( `Logs saved to ${ saveUri . fsPath } ` , "Open File" ) ;
@@ -593,7 +593,7 @@ describe("TasksPanel", () => {
593593
594594 it ( "does not open file when notification is dismissed" , async ( ) => {
595595 const h = createHarness ( ) ;
596- h . client . getTaskLogs . mockResolvedValue ( [ logEntry ( ) ] ) ;
596+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ logEntry ( ) ] } ) ;
597597 const saveUri = vscode . Uri . file ( "/downloads/logs.txt" ) ;
598598 vi . mocked ( vscode . window . showSaveDialog ) . mockResolvedValue ( saveUri ) ;
599599 h . ui . setResponse ( `Logs saved to ${ saveUri . fsPath } ` , undefined ) ;
@@ -612,7 +612,7 @@ describe("TasksPanel", () => {
612612
613613 it ( "shows warning when no logs" , async ( ) => {
614614 const h = createHarness ( ) ;
615- h . client . getTaskLogs . mockResolvedValue ( [ ] ) ;
615+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ ] } ) ;
616616
617617 const res = await h . request ( TasksApi . downloadLogs , {
618618 taskId : "task-1" ,
@@ -644,7 +644,7 @@ describe("TasksPanel", () => {
644644
645645 it ( "does nothing when user cancels" , async ( ) => {
646646 const h = createHarness ( ) ;
647- h . client . getTaskLogs . mockResolvedValue ( [ logEntry ( ) ] ) ;
647+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ logEntry ( ) ] } ) ;
648648 vi . mocked ( vscode . window . showSaveDialog ) . mockResolvedValue ( undefined ) ;
649649
650650 const res = await h . request ( TasksApi . downloadLogs , {
0 commit comments