Files
workavia-calendar-front/__test__/features/websocket/utils/setupWebsocket.ts
T
lethemanh cadfa70e60 #708 apply strictier linting rules (#717)
* #708 apply strictier linting rules and fix simple eslint bugs

* #708 fix eslint errors relate to promise

* #708 fix eslint import/no-extraneous-dependencies

* #708 fix eslint errors of react-hook

* #708 enable eslint check for typescript

---------

Co-authored-by: lethemanh <lethemanh@lethemanhs-MacBook-Pro.local>
2026-04-01 17:15:10 +02:00

36 lines
1010 B
TypeScript

export function setupWebsocket() {
const originalWebSocket = global.WebSocket
const webSocketInstances: any[] = []
const mockWebSocket = jest.fn().mockImplementation((url: string) => {
const ws = {
url,
readyState: WebSocket.CONNECTING,
addEventListener: jest.fn(),
removeEventListener: jest.fn(),
send: jest.fn(),
close: jest.fn(),
_listeners: {} as Record<string, Function[]>
}
ws.addEventListener.mockImplementation((event, handler) => {
ws._listeners[event] ??= []
ws._listeners[event].push(handler)
})
ws.removeEventListener.mockImplementation((event, handler) => {
ws._listeners[event] =
ws._listeners[event]?.filter(h => h !== handler) ?? []
})
webSocketInstances.push(ws)
return ws
})
global.WebSocket = mockWebSocket as any
const cleanup = () => {
global.WebSocket = originalWebSocket
webSocketInstances.length = 0
}
return { webSocketInstances, mockWebSocket, cleanup }
}