From 67799f89da64aa0ffe272ecccf92017b21c4907c Mon Sep 17 00:00:00 2001 From: Molecule AI Frontend Engineer Date: Sat, 18 Apr 2026 00:43:55 +0000 Subject: [PATCH] =?UTF-8?q?fix(canvas):=20resolve=20TS=20errors=20in=20tes?= =?UTF-8?q?t=20fixtures=20=E2=80=94=20budgetLimit=20and=20AuthGate=20mock?= =?UTF-8?q?=20types?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add budgetLimit: null to WorkspaceNodeData fixtures in canvas-capabilities, canvas-events, canvas-events-pan, and canvas.test.ts (inline objects) - Add budget_limit: null to WorkspaceData fixtures in canvas-topology, canvas.test.ts makeWS, and ProvisioningTimeout.test.tsx - Fix AuthGate.test.tsx TS2348: cast vi.fn() mocks to explicit call signatures inside vi.mock() factories (Procedure | Constructable issue) - npx tsc --noEmit: 0 errors; 689/689 tests passing Co-Authored-By: Claude Sonnet 4.6 --- canvas/src/components/__tests__/AuthGate.test.tsx | 8 +++++--- .../src/components/__tests__/ProvisioningTimeout.test.tsx | 1 + canvas/src/store/__tests__/canvas-capabilities.test.ts | 1 + canvas/src/store/__tests__/canvas-events-pan.test.ts | 1 + canvas/src/store/__tests__/canvas-events.test.ts | 1 + canvas/src/store/__tests__/canvas-topology.test.ts | 1 + canvas/src/store/__tests__/canvas.test.ts | 4 ++++ 7 files changed, 14 insertions(+), 3 deletions(-) diff --git a/canvas/src/components/__tests__/AuthGate.test.tsx b/canvas/src/components/__tests__/AuthGate.test.tsx index 7f581769..75f2d4d0 100644 --- a/canvas/src/components/__tests__/AuthGate.test.tsx +++ b/canvas/src/components/__tests__/AuthGate.test.tsx @@ -19,12 +19,14 @@ beforeEach(() => { }); vi.mock("@/lib/auth", () => ({ - fetchSession: (...args: unknown[]) => mockFetchSession(...args), - redirectToLogin: (...args: unknown[]) => mockRedirectToLogin(...args), + // Cast required: vi.fn() returns Mock which TypeScript + // won't call directly inside a factory closure (TS2348). Cast to Function resolves it. + fetchSession: (...args: unknown[]) => (mockFetchSession as unknown as (...a: unknown[]) => unknown)(...args), + redirectToLogin: (...args: unknown[]) => (mockRedirectToLogin as unknown as (...a: unknown[]) => unknown)(...args), })); vi.mock("@/lib/tenant", () => ({ - getTenantSlug: (...args: unknown[]) => mockGetTenantSlug(...args), + getTenantSlug: (...args: unknown[]) => (mockGetTenantSlug as unknown as (...a: unknown[]) => unknown)(...args), })); // Import after mocks are set up diff --git a/canvas/src/components/__tests__/ProvisioningTimeout.test.tsx b/canvas/src/components/__tests__/ProvisioningTimeout.test.tsx index 432954aa..f1c5b150 100644 --- a/canvas/src/components/__tests__/ProvisioningTimeout.test.tsx +++ b/canvas/src/components/__tests__/ProvisioningTimeout.test.tsx @@ -28,6 +28,7 @@ function makeWS(overrides: Partial & { id: string }): WorkspaceDa y: 0, collapsed: false, runtime: "", + budget_limit: null, ...overrides, }; } diff --git a/canvas/src/store/__tests__/canvas-capabilities.test.ts b/canvas/src/store/__tests__/canvas-capabilities.test.ts index 5b128fa3..001d6e75 100644 --- a/canvas/src/store/__tests__/canvas-capabilities.test.ts +++ b/canvas/src/store/__tests__/canvas-capabilities.test.ts @@ -22,6 +22,7 @@ function makeNodeData(overrides: Partial = {}): WorkspaceNode currentTask: "", needsRestart: false, runtime: "", + budgetLimit: null, ...overrides, }; } diff --git a/canvas/src/store/__tests__/canvas-events-pan.test.ts b/canvas/src/store/__tests__/canvas-events-pan.test.ts index cca7c945..77c687fc 100644 --- a/canvas/src/store/__tests__/canvas-events-pan.test.ts +++ b/canvas/src/store/__tests__/canvas-events-pan.test.ts @@ -34,6 +34,7 @@ function makeNode( currentTask: "", needsRestart: false, runtime: "", + budgetLimit: null, ...overrides, }, }; diff --git a/canvas/src/store/__tests__/canvas-events.test.ts b/canvas/src/store/__tests__/canvas-events.test.ts index e945fd56..54be70e6 100644 --- a/canvas/src/store/__tests__/canvas-events.test.ts +++ b/canvas/src/store/__tests__/canvas-events.test.ts @@ -31,6 +31,7 @@ function makeNode( currentTask: "", needsRestart: false, runtime: "", + budgetLimit: null, ...overrides, }, }; diff --git a/canvas/src/store/__tests__/canvas-topology.test.ts b/canvas/src/store/__tests__/canvas-topology.test.ts index 8a2877d2..7ca1d950 100644 --- a/canvas/src/store/__tests__/canvas-topology.test.ts +++ b/canvas/src/store/__tests__/canvas-topology.test.ts @@ -24,6 +24,7 @@ function makeWS(overrides: Partial & { id: string }): WorkspaceDa y: 0, collapsed: false, runtime: "", + budget_limit: null, ...overrides, }; } diff --git a/canvas/src/store/__tests__/canvas.test.ts b/canvas/src/store/__tests__/canvas.test.ts index 6a5c2ce6..8e0675f1 100644 --- a/canvas/src/store/__tests__/canvas.test.ts +++ b/canvas/src/store/__tests__/canvas.test.ts @@ -27,6 +27,7 @@ function makeWS(overrides: Partial & { id: string }): WorkspaceDa y: 0, collapsed: false, runtime: "", + budget_limit: null, ...overrides, }; } @@ -172,6 +173,7 @@ describe("summarizeWorkspaceCapabilities", () => { currentTask: "Reviewing docs", needsRestart: false, runtime: "claude-code", + budgetLimit: null, }); expect(summary.runtime).toBe("claude-code"); @@ -197,6 +199,7 @@ describe("summarizeWorkspaceCapabilities", () => { currentTask: " ", needsRestart: false, runtime: "", + budgetLimit: null, }); expect(summary.runtime).toBeNull(); @@ -554,6 +557,7 @@ describe("context menu", () => { currentTask: "", needsRestart: false, runtime: "", + budgetLimit: null, }, };