()
| 96 | |
| 97 | // Mock ExtensionAPI factory |
| 98 | export const createMockExtensionAPI = () => { |
| 99 | const registeredTools: Map<string, any> = new Map(); |
| 100 | const registeredCommands: Map<string, any> = new Map(); |
| 101 | const registeredFlags: Map<string, any> = new Map(); |
| 102 | const eventHandlers: Map<string, ((...args: any[]) => any)[]> = new Map(); |
| 103 | const appendedEntries: any[] = []; |
| 104 | let execMock = jest.fn(); |
| 105 | |
| 106 | const api = { |
| 107 | registerTool: jest.fn((tool: any) => { |
| 108 | registeredTools.set(tool.name, tool); |
| 109 | }), |
| 110 | registerCommand: jest.fn((name: string, options: any) => { |
| 111 | registeredCommands.set(name, options); |
| 112 | }), |
| 113 | registerFlag: jest.fn((name: string, options: any) => { |
| 114 | registeredFlags.set(name, { ...options, value: undefined }); |
| 115 | }), |
| 116 | registerShortcut: jest.fn(), |
| 117 | registerMessageRenderer: jest.fn(), |
| 118 | on: jest.fn((event: string, handler: (...args: any[]) => any) => { |
| 119 | if (!eventHandlers.has(event)) { |
| 120 | eventHandlers.set(event, []); |
| 121 | } |
| 122 | eventHandlers.get(event)!.push(handler); |
| 123 | }), |
| 124 | appendEntry: jest.fn((customType: string, data: any) => { |
| 125 | appendedEntries.push({ customType, data }); |
| 126 | }), |
| 127 | exec: jest.fn((...args: any[]) => execMock(...args)), |
| 128 | getFlag: jest.fn((name: string) => registeredFlags.get(name)?.value), |
| 129 | setActiveTools: jest.fn(), |
| 130 | getActiveTools: jest.fn(() => ["read", "bash", "edit", "write"]), |
| 131 | getAllTools: jest.fn(() => ["read", "bash", "edit", "write"]), |
| 132 | sendMessage: jest.fn(), |
| 133 | sendUserMessage: jest.fn(), |
| 134 | events: { |
| 135 | on: jest.fn(), |
| 136 | emit: jest.fn(), |
| 137 | off: jest.fn(), |
| 138 | }, |
| 139 | _registeredTools: registeredTools, |
| 140 | _registeredCommands: registeredCommands, |
| 141 | _registeredFlags: registeredFlags, |
| 142 | _eventHandlers: eventHandlers, |
| 143 | _appendedEntries: appendedEntries, |
| 144 | _setExecMock: (mock: jest.Mock) => { |
| 145 | execMock = mock; |
| 146 | }, |
| 147 | }; |
| 148 | |
| 149 | return api; |
| 150 | }; |
| 151 | |
| 152 | // Load extension function |
| 153 | // eslint-disable-next-line @typescript-eslint/no-require-imports |
no outgoing calls
no test coverage detected