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" ;
@@ -31,21 +31,21 @@ type TasksPanelClient = Pick<
3131 | "getHost"
3232> ;
3333
34- type MockClient = { [ K in keyof TasksPanelClient ] : ReturnType < typeof vi . fn > } ;
34+ type MockClient = { [ K in keyof TasksPanelClient ] : Mock < TasksPanelClient [ K ] > } ;
3535
3636function createClient ( baseUrl = "https://coder.example.com" ) : MockClient {
3737 return {
3838 getTasks : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
3939 getTask : vi . fn ( ) ,
40- getTaskLogs : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
40+ getTaskLogs : vi . fn ( ) . mockResolvedValue ( { logs : [ ] } ) ,
4141 createTask : vi . fn ( ) ,
4242 deleteTask : vi . fn ( ) . mockResolvedValue ( undefined ) ,
4343 getTemplates : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
4444 getTemplateVersionPresets : vi . fn ( ) . mockResolvedValue ( [ ] ) ,
4545 startWorkspace : vi . fn ( ) . mockResolvedValue ( undefined ) ,
4646 stopWorkspace : vi . fn ( ) . mockResolvedValue ( undefined ) ,
4747 getHost : vi . fn ( ) . mockReturnValue ( baseUrl ) ,
48- } ;
48+ } as MockClient ;
4949}
5050
5151interface ApiDef {
@@ -247,9 +247,9 @@ describe("TasksPanel", () => {
247247 it ( "returns task with logs" , async ( ) => {
248248 const h = createHarness ( ) ;
249249 h . client . getTask . mockResolvedValue ( task ( ) ) ;
250- h . client . getTaskLogs . mockResolvedValue ( [
251- logEntry ( { content : "Starting" } ) ,
252- ] ) ;
250+ h . client . getTaskLogs . mockResolvedValue ( {
251+ logs : [ logEntry ( { content : "Starting" } ) ] ,
252+ } ) ;
253253
254254 const res = await h . request ( TasksApi . getTaskDetails , {
255255 taskId : "task-1" ,
@@ -306,7 +306,7 @@ describe("TasksPanel", () => {
306306 h . client . getTask . mockResolvedValue (
307307 task ( { current_state : { timestamp : "" , state, message : "" , uri : "" } } ) ,
308308 ) ;
309- h . client . getTaskLogs . mockResolvedValue ( [ logEntry ( ) ] ) ;
309+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ logEntry ( ) ] } ) ;
310310
311311 await h . request ( TasksApi . getTaskDetails , { taskId : "task-1" } ) ;
312312 await h . request ( TasksApi . getTaskDetails , { taskId : "task-1" } ) ;
@@ -475,7 +475,7 @@ describe("TasksPanel", () => {
475475 describe ( "downloadLogs" , ( ) => {
476476 it ( "saves logs to file" , async ( ) => {
477477 const h = createHarness ( ) ;
478- h . client . getTaskLogs . mockResolvedValue ( [ logEntry ( ) ] ) ;
478+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ logEntry ( ) ] } ) ;
479479 const saveUri = vscode . Uri . file ( "/downloads/logs.txt" ) ;
480480 vi . mocked ( vscode . window . showSaveDialog ) . mockResolvedValue ( saveUri ) ;
481481 h . ui . setResponse ( `Logs saved to ${ saveUri . fsPath } ` , "Open File" ) ;
@@ -494,7 +494,7 @@ describe("TasksPanel", () => {
494494
495495 it ( "does not open file when notification is dismissed" , async ( ) => {
496496 const h = createHarness ( ) ;
497- h . client . getTaskLogs . mockResolvedValue ( [ logEntry ( ) ] ) ;
497+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ logEntry ( ) ] } ) ;
498498 const saveUri = vscode . Uri . file ( "/downloads/logs.txt" ) ;
499499 vi . mocked ( vscode . window . showSaveDialog ) . mockResolvedValue ( saveUri ) ;
500500 h . ui . setResponse ( `Logs saved to ${ saveUri . fsPath } ` , undefined ) ;
@@ -513,7 +513,7 @@ describe("TasksPanel", () => {
513513
514514 it ( "shows warning when no logs" , async ( ) => {
515515 const h = createHarness ( ) ;
516- h . client . getTaskLogs . mockResolvedValue ( [ ] ) ;
516+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ ] } ) ;
517517
518518 const res = await h . request ( TasksApi . downloadLogs , {
519519 taskId : "task-1" ,
@@ -545,7 +545,7 @@ describe("TasksPanel", () => {
545545
546546 it ( "does nothing when user cancels" , async ( ) => {
547547 const h = createHarness ( ) ;
548- h . client . getTaskLogs . mockResolvedValue ( [ logEntry ( ) ] ) ;
548+ h . client . getTaskLogs . mockResolvedValue ( { logs : [ logEntry ( ) ] } ) ;
549549 vi . mocked ( vscode . window . showSaveDialog ) . mockResolvedValue ( undefined ) ;
550550
551551 const res = await h . request ( TasksApi . downloadLogs , {
0 commit comments