MCPcopy Create free account
hub / github.com/cv/pi-ssh-remote / createMockExtensionAPI

Function createMockExtensionAPI

tests/test-utils.ts:98–150  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

96
97// Mock ExtensionAPI factory
98export 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

Calls

no outgoing calls

Tested by

no test coverage detected