Skip to content

Commit c789545

Browse files
committed
feat: enhance mode management by mocking ModeManager and adding context for custom modes
1 parent f768787 commit c789545

File tree

1 file changed

+33
-0
lines changed

1 file changed

+33
-0
lines changed

src/core/tools/__tests__/newTaskTool.spec.ts

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,32 @@ vi.mock("vscode", () => ({
1515
vi.mock("../../../shared/modes", () => ({
1616
getModeBySlug: vi.fn(),
1717
defaultModeSlug: "ask",
18+
modes: [
19+
{
20+
slug: "code",
21+
name: "Code Mode",
22+
roleDefinition: "Test role definition",
23+
groups: ["command", "read", "edit"],
24+
},
25+
{ slug: "ask", name: "Ask Mode", roleDefinition: "Test role definition", groups: ["command", "read", "edit"] },
26+
],
27+
}))
28+
29+
// Mock ModeManager - must be hoisted before newTaskTool import
30+
const mockValidateModeSwitch = vi.fn().mockResolvedValue({ isValid: true })
31+
const mockGetEnabledModes = vi.fn().mockResolvedValue([
32+
{ slug: "code", name: "Code Mode" },
33+
{ slug: "ask", name: "Ask Mode" },
34+
])
35+
36+
vi.mock("../../services/ModeManager", () => ({
37+
ModeManager: vi.fn().mockImplementation((context, customModesManager) => {
38+
console.log("Mock ModeManager constructor called with:", { context, customModesManager })
39+
return {
40+
validateModeSwitch: mockValidateModeSwitch,
41+
getEnabledModes: mockGetEnabledModes,
42+
}
43+
}),
1844
}))
1945

2046
vi.mock("../../prompts/responses", () => ({
@@ -79,6 +105,13 @@ const mockCline = {
79105
getState: vi.fn(() => ({ customModes: [], mode: "ask" })),
80106
handleModeSwitch: vi.fn(),
81107
createTask: mockCreateTask,
108+
context: {
109+
globalState: { get: vi.fn(), update: vi.fn() },
110+
workspaceState: { get: vi.fn(), update: vi.fn() },
111+
},
112+
customModesManager: {
113+
getCustomModes: vi.fn().mockResolvedValue([]),
114+
},
82115
})),
83116
},
84117
}

0 commit comments

Comments
 (0)