fix: resolve TypeScript type errors in test files

- Add vitest/globals to tsconfig.json types array to provide type
  definitions for global test functions (describe, it, expect, vi)
- Fix vi.fn type parameter in useDirectorySettings.test.tsx from
  <[], Promise<string>> to <() => Promise<string>>
- Remove unused setMcpConfig import from MSW handlers
- Add type assertions for mock.calls access in McpFormModal tests
  to resolve union type inference issues

This ensures pnpm typecheck passes without errors while maintaining
test functionality with vitest globals: true configuration.
This commit is contained in:
Jason
2025-10-27 13:29:12 +08:00
parent d064cb8555
commit bfab1d0ccb
4 changed files with 6 additions and 6 deletions

View File

@@ -203,7 +203,7 @@ const renderForm = (props?: Partial<React.ComponentProps<typeof McpFormModal>>)
fireEvent.click(screen.getByText("common.add")); fireEvent.click(screen.getByText("common.add"));
await waitFor(() => expect(onSave).toHaveBeenCalledTimes(1)); await waitFor(() => expect(onSave).toHaveBeenCalledTimes(1));
const [id, payload, options] = onSave.mock.calls[0]; const [id, payload, options] = (onSave as any).mock.calls[0];
expect(id).toBe("my-server"); expect(id).toBe("my-server");
expect(payload).toMatchObject({ expect(payload).toMatchObject({
id: "my-server", id: "my-server",
@@ -281,7 +281,7 @@ command = "run"
fireEvent.click(screen.getByText("common.add")); fireEvent.click(screen.getByText("common.add"));
await waitFor(() => expect(onSave).toHaveBeenCalledTimes(1)); await waitFor(() => expect(onSave).toHaveBeenCalledTimes(1));
const [id, payload] = onSave.mock.calls[0]; const [id, payload] = (onSave as any).mock.calls[0];
expect(id).toBe("demo"); expect(id).toBe("demo");
expect(payload.server).toEqual({ type: "stdio", command: "run" }); expect(payload.server).toEqual({ type: "stdio", command: "run" });
expect(toastErrorMock).not.toHaveBeenCalled(); expect(toastErrorMock).not.toHaveBeenCalled();
@@ -342,7 +342,7 @@ type = "stdio"
fireEvent.click(screen.getByText("common.save")); fireEvent.click(screen.getByText("common.save"));
await waitFor(() => expect(onSave).toHaveBeenCalledTimes(1)); await waitFor(() => expect(onSave).toHaveBeenCalledTimes(1));
const [id, entry, options] = onSave.mock.calls[0]; const [id, entry, options] = (onSave as any).mock.calls[0];
expect(id).toBe("existing"); expect(id).toBe("existing");
expect(entry.server.command).toBe("updated"); expect(entry.server.command).toBe("updated");
expect(entry.enabled).toBe(true); expect(entry.enabled).toBe(true);

View File

@@ -7,7 +7,7 @@ const getAppConfigDirOverrideMock = vi.hoisted(() => vi.fn());
const getConfigDirMock = vi.hoisted(() => vi.fn()); const getConfigDirMock = vi.hoisted(() => vi.fn());
const selectConfigDirectoryMock = vi.hoisted(() => vi.fn()); const selectConfigDirectoryMock = vi.hoisted(() => vi.fn());
const setAppConfigDirOverrideMock = vi.hoisted(() => vi.fn()); const setAppConfigDirOverrideMock = vi.hoisted(() => vi.fn());
const homeDirMock = vi.hoisted(() => vi.fn<[], Promise<string>>()); const homeDirMock = vi.hoisted(() => vi.fn<() => Promise<string>>());
const joinMock = vi.hoisted(() => vi.fn(async (...segments: string[]) => segments.join("/"))); const joinMock = vi.hoisted(() => vi.fn(async (...segments: string[]) => segments.join("/")));
const toastErrorMock = vi.hoisted(() => vi.fn()); const toastErrorMock = vi.hoisted(() => vi.fn());

View File

@@ -16,7 +16,6 @@ import {
getAppConfigDirOverride, getAppConfigDirOverride,
setAppConfigDirOverrideState, setAppConfigDirOverrideState,
getMcpConfig, getMcpConfig,
setMcpConfig,
setMcpServerEnabled, setMcpServerEnabled,
upsertMcpServer, upsertMcpServer,
deleteMcpServer, deleteMcpServer,

View File

@@ -17,7 +17,8 @@
"baseUrl": ".", "baseUrl": ".",
"paths": { "paths": {
"@/*": ["src/*"] "@/*": ["src/*"]
} },
"types": ["vitest/globals"]
}, },
"include": ["src/**/*", "tests/**/*"], "include": ["src/**/*", "tests/**/*"],
"references": [{ "path": "./tsconfig.node.json" }] "references": [{ "path": "./tsconfig.node.json" }]