()
| 32 | * ``` |
| 33 | */ |
| 34 | export function createMockSocket(): IMockSocket { |
| 35 | const eventHandlers: Record<string, ((...args: any[]) => any)[]> = {} |
| 36 | |
| 37 | const socket = { |
| 38 | id: `socket-${generateRandomString(8)}`, |
| 39 | connected: true, |
| 40 | disconnected: false, |
| 41 | |
| 42 | // Core methods |
| 43 | emit: vi.fn((event: string, ..._args: any[]) => { |
| 44 | return socket |
| 45 | }), |
| 46 | |
| 47 | on: vi.fn((event: string, handler: (...args: any[]) => any) => { |
| 48 | if (!eventHandlers[event]) { |
| 49 | eventHandlers[event] = [] |
| 50 | } |
| 51 | eventHandlers[event].push(handler) |
| 52 | return socket |
| 53 | }), |
| 54 | |
| 55 | once: vi.fn((event: string, handler: (...args: any[]) => any) => { |
| 56 | if (!eventHandlers[event]) { |
| 57 | eventHandlers[event] = [] |
| 58 | } |
| 59 | eventHandlers[event].push(handler) |
| 60 | return socket |
| 61 | }), |
| 62 | |
| 63 | off: vi.fn((event: string, handler?: (...args: any[]) => any) => { |
| 64 | if (handler && eventHandlers[event]) { |
| 65 | eventHandlers[event] = eventHandlers[event].filter((h) => h !== handler) |
| 66 | } else { |
| 67 | delete eventHandlers[event] |
| 68 | } |
| 69 | return socket |
| 70 | }), |
| 71 | |
| 72 | connect: vi.fn(() => { |
| 73 | socket.connected = true |
| 74 | socket.disconnected = false |
| 75 | return socket |
| 76 | }), |
| 77 | |
| 78 | disconnect: vi.fn(() => { |
| 79 | socket.connected = false |
| 80 | socket.disconnected = true |
| 81 | return socket |
| 82 | }), |
| 83 | |
| 84 | // Room methods |
| 85 | join: vi.fn((_room: string) => socket), |
| 86 | leave: vi.fn((_room: string) => socket), |
| 87 | |
| 88 | // Utility methods for testing |
| 89 | _handlers: eventHandlers, |
| 90 | |
| 91 | _trigger: (event: string, ...args: any[]) => { |
nothing calls this directly
no test coverage detected